Здравствуй всезнающий ALL :)
Имею систему Debian 2.6.32 и DVB карту с двумя или четырьмя тюнерами.
Каждый тюнер нужно закрепить за конкретным номером.Проблема в том, что для UDEV эти устройства абсолютно одинаковые, так как физически это одно PCI-e устройство.
Теоретически, с помощью ENV можно было бы их пронумеровать по порядку.
В интернете нашел небольшой пример на эту темуhttp://www.mythtv.org/wiki/Device_Filenames_and_udev#Example...
# Create a symlinks for both tuners of Kworld device
SUBSYSTEM=="dvb", ATTRS{idVendor}=="1b80", ATTRS{idProduct}=="e399", ENV{kworld}!="two", ENV{kworld}="two", PROGRAM="/bin/sh -c 'K=%k; K=$${K#dvb}; printf dvb/adapter_kw1/%%s $${K#*.}'", SYMLINK+="%c"
SUBSYSTEM=="dvb", ATTRS{idVendor}=="1b80", ATTRS{idProduct}=="e399", ENV{kworld}=="two", ENV{kworld}="one", PROGRAM="/bin/sh -c 'K=%k; K=$${K#dvb}; printf dvb/adapter_kw2/%%s $${K#*.}'", SYMLINK+="%c"
В целом данный пример работает, но я не хочу создавать симлинки.
Я хочу иметь конкретное устройство под видом /dev/dvb/adapterXНо строки типа нижеследующих, эффекта почему-то не имеют.
SUBSYSTEM=="dvb", KERNELS=="0000:04:00.0", ENV{kworld}!="two", ENV{kworld}="one", PROGRAM="/bin/sh -c 'K=%k; K=$${K#dvb}; printf dvb/adapter1/%%s $${K#*.}'", NAME="%c", GROUP="video"
SUBSYSTEM=="dvb", KERNELS=="0000:04:00.0", ENV{kworld}=="two", ENV{kworld}="one", PROGRAM="/bin/sh -c 'K=%k; K=$${K#dvb}; printf dvb/adapter2/%%s $${K#*.}'", NAME="%c", GROUP="video"
Кто что думает по этому поводу?
Как привязать карты?
Была у нас подобная заморочка на двухголовых DVB-картах. Тоже воевали со знакомым. :)
Вот Вам вариант, как проблема была решена (товарищем):
cat /etc/udev/rules.d/70-netap-dvb.rules
SUBSYSTEM=="dvb", ACTION=="add", ENV{DEVPATH}=="*0000:05:00.0*", NAME="dvb/adapter0$env{DVB_ADAPTER_NUM}/$env{DVB_DEVICE_TYPE}$env{DVB_DEVICE_NUM}"
SUBSYSTEM=="dvb", ACTION=="add", ENV{DEVPATH}=="*0000:04:00.0*", NAME="dvb/adapter1$env{DVB_ADAPTER_NUM}/$env{DVB_DEVICE_TYPE}$env{DVB_DEVICE_NUM}"
SUBSYSTEM=="dvb", ACTION=="add", ENV{DEVPATH}=="*0000:06:00.0*", NAME="dvb/adapter2$env{DVB_ADAPTER_NUM}/$env{DVB_DEVICE_TYPE}$env{DVB_DEVICE_NUM}"
Довольно необычное решение...
Можете пояснить..
Это решение для трех двухголовых кард?
Так как значение ENV{DEVPATH}=="*0000:05:00.0*" очень похоже на "адрес" карты в слоте ...P.S. Завтра попробую.
> Была у нас подобная заморочка на двухголовых DVB-картах. Тоже воевали со знакомым.
> :)
> Вот Вам вариант, как проблема была решена (товарищем):
> cat /etc/udev/rules.d/70-netap-dvb.rules
> SUBSYSTEM=="dvb", ACTION=="add", ENV{DEVPATH}=="*0000:05:00.0*", NAME="dvb/adapter0$env{DVB_ADAPTER_NUM}/$env{DVB_DEVICE_TYPE}$env{DVB_DEVICE_NUM}"
> SUBSYSTEM=="dvb", ACTION=="add", ENV{DEVPATH}=="*0000:04:00.0*", NAME="dvb/adapter1$env{DVB_ADAPTER_NUM}/$env{DVB_DEVICE_TYPE}$env{DVB_DEVICE_NUM}"
> SUBSYSTEM=="dvb", ACTION=="add", ENV{DEVPATH}=="*0000:06:00.0*", NAME="dvb/adapter2$env{DVB_ADAPTER_NUM}/$env{DVB_DEVICE_TYPE}$env{DVB_DEVICE_NUM}"
> Довольно необычное решение...
> Можете пояснить..
> Это решение для трех двухголовых кард?
> Так как значение ENV{DEVPATH}=="*0000:05:00.0*" очень похоже на "адрес" карты в слотеЧестно говоря - сейчас уже не смогу. :) Отошел от IPTV где-то с год назад. Попросил просто товарища дать решение - вот он конфиг мне и скинул. А карты были тогда 2-головые.
> Довольно необычное решение...
> Можете пояснить..
> Это решение для трех двухголовых кард?
> Так как значение ENV{DEVPATH}=="*0000:05:00.0*" очень похоже на "адрес" карты в слоте ...да, верно. это для трех нетаповских карт, у которых две головы. по идее, будет работать и на других двухголовых.
В linux имена устройств зависят от порядка их инициализации. В данном варианте мы создаём свои отдельные имена.поскольку карточки никто не переставляет местами, такое решение работает. более извращённые варианты - завязываться на serial number продуктов или же на mac-адреса. но в данном случае это не надо.
>[оверквотинг удален]
>> Можете пояснить..
>> Это решение для трех двухголовых кард?
>> Так как значение ENV{DEVPATH}=="*0000:05:00.0*" очень похоже на "адрес" карты в слоте ...
> да, верно. это для трех нетаповских карт, у которых две головы. по
> идее, будет работать и на других двухголовых.
> В linux имена устройств зависят от порядка их инициализации. В данном варианте
> мы создаём свои отдельные имена.
> поскольку карточки никто не переставляет местами, такое решение работает. более извращённые
> варианты - завязываться на serial number продуктов или же на mac-адреса.
> но в данном случае это не надо.Я попробовал в лоб ваше предложение, но к сожалению то ли он не заработало, то ли не мой случай.
Сейчас у меня следующий набор карт:
1 PCI-e 1x - TBS6928
2 PCI-e 16x - NVIDIA 6800
3 PCI-e 1x - TBS 6984 (с 4 тюнерами)
4 PCI-e 1x - TBS 6280 (с 2 тюнерами)
5. PCI - SkyStar HD2
6. PCI - SkyStar HD2
7. PCI - SkyStar HD2Соответственно все те что одноголовые, без проблем расставляются по местам.
Главное не забыть закоментировать строчку в /lib/udev/rules.d/50-udev-default.rules
"KERNEL=="dvb" ....."А вот с двух головыми наблюдается небольшая чехарда.
Ваш пример, как я понимаю отлавливает адрес на PCI шине и привязывает его к номеру устройства. А вот работы с двух головостью я не нахожу.
Если у вас три двух головые карты, то в системе получается шесть адаптеров.
Если первая карта претендует на adapter0, вторая на adapter1 и третья на adapter2, то какие номера получают вторые головы этих адаптеров?
И еще вопрос, какие свои имена вы создаете? adapter0-2?
P.S. Сегодня выработал более менее устойчивые правила на базе MAJOR и MINOR. Но было бы интересно понять ваши, так как в лоб они у меня не работают :(
# ls -l /dev/dvb/
total 0
drwxr-xr-x 2 root root 140 2012-06-30 03:05 adapter0
drwxr-xr-x 2 root root 140 2012-06-30 03:05 adapter02
drwxr-xr-x 2 root root 140 2012-06-30 03:05 adapter03
drwxr-xr-x 2 root root 140 2012-06-30 03:05 adapter1
drwxr-xr-x 2 root root 140 2012-06-30 03:05 adapter10
drwxr-xr-x 2 root root 140 2012-06-30 03:05 adapter11
drwxr-xr-x 2 root root 140 2012-06-30 03:05 adapter2
drwxr-xr-x 2 root root 140 2012-06-30 03:05 adapter24
drwxr-xr-x 2 root root 140 2012-06-30 03:05 adapter25
drwxr-xr-x 2 root root 140 2012-06-30 03:05 adapter3
drwxr-xr-x 2 root root 140 2012-06-30 03:05 adapter4
drwxr-xr-x 2 root root 140 2012-06-30 03:05 adapter5
drwxr-xr-x 2 root root 120 2012-06-30 03:05 adapter6
drwxr-xr-x 2 root root 120 2012-06-30 03:05 adapter7
drwxr-xr-x 2 root root 120 2012-06-30 03:05 adapter8
соотв-но, обращаться надо к adapter02, adapter03 итд.
>[оверквотинг удален]
> drwxr-xr-x 2 root root 140 2012-06-30 03:05 adapter2
> drwxr-xr-x 2 root root 140 2012-06-30 03:05 adapter24
> drwxr-xr-x 2 root root 140 2012-06-30 03:05 adapter25
> drwxr-xr-x 2 root root 140 2012-06-30 03:05 adapter3
> drwxr-xr-x 2 root root 140 2012-06-30 03:05 adapter4
> drwxr-xr-x 2 root root 140 2012-06-30 03:05 adapter5
> drwxr-xr-x 2 root root 120 2012-06-30 03:05 adapter6
> drwxr-xr-x 2 root root 120 2012-06-30 03:05 adapter7
> drwxr-xr-x 2 root root 120 2012-06-30 03:05 adapter8
> соотв-но, обращаться надо к adapter02, adapter03 итд.Все, понял вашу логику. Если я правильно все понял, то по сути, для меня, это те же SYMLINK...
Кстати, а остальные адаптеры, это что за карты?
> Кстати, а остальные адаптеры, это что за карты?http://www.mystique-tv.de/en/product-overview/tv-karten/dvb-...
>> Кстати, а остальные адаптеры, это что за карты?
> http://www.mystique-tv.de/en/product-overview/tv-karten/dvb-...Печально, но ни мои методы, ни ваши, на 100% не подходят :(
Одна из моих двухголовых карт, все время прыгает.
То она 7 и 9 адаптеры, то 8 и 9.И ноды при этом иногда меняются :(