URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID1
Нить номер: 93530
[ Назад ]

Исходное сообщение
"UDEV и двухголовые 'одинаковые' устройства."

Отправлено Kompik , 03-Июл-12 12:34 
Здравствуй всезнающий 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"


Кто что думает по этому поводу?
Как привязать карты?


Содержание

Сообщения в этом обсуждении
"UDEV и двухголовые 'одинаковые' устройства."
Отправлено Дядя_Федор , 03-Июл-12 16:20 
Была у нас подобная заморочка на двухголовых 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}"


"UDEV и двухголовые 'одинаковые' устройства."
Отправлено Kompik , 03-Июл-12 18:50 
Довольно необычное решение...
Можете пояснить..
Это решение для трех двухголовых кард?
Так как значение 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}"


"UDEV и двухголовые 'одинаковые' устройства."
Отправлено Дядя_Федор , 04-Июл-12 15:05 
> Довольно необычное решение...
> Можете пояснить..
> Это решение для трех двухголовых кард?
> Так как значение ENV{DEVPATH}=="*0000:05:00.0*" очень похоже на "адрес" карты в слоте

Честно говоря - сейчас уже не смогу. :) Отошел от IPTV где-то с год назад. Попросил просто товарища дать решение - вот он конфиг мне и скинул. А карты были тогда 2-головые.


"UDEV и двухголовые 'одинаковые' устройства."
Отправлено ragus , 04-Июл-12 15:51 
> Довольно необычное решение...
> Можете пояснить..
> Это решение для трех двухголовых кард?
> Так как значение ENV{DEVPATH}=="*0000:05:00.0*" очень похоже на "адрес" карты в слоте ...

да, верно. это для трех нетаповских карт, у которых две головы. по идее, будет работать и на других двухголовых.
В linux имена устройств зависят от порядка их инициализации. В данном варианте мы создаём свои отдельные имена.

поскольку карточки никто не переставляет местами, такое решение работает. более извращённые варианты - завязываться на serial number продуктов или же на mac-адреса. но в данном случае это не надо.


"UDEV и двухголовые 'одинаковые' устройства."
Отправлено Kompik , 04-Июл-12 16:47 
>[оверквотинг удален]
>> Можете пояснить..
>> Это решение для трех двухголовых кард?
>> Так как значение 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. Но было бы интересно понять ваши, так как в лоб они у меня не работают :(


"UDEV и двухголовые 'одинаковые' устройства."
Отправлено ragus , 04-Июл-12 16:53 

# 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 итд.


"UDEV и двухголовые 'одинаковые' устройства."
Отправлено Kompik , 04-Июл-12 16:59 

>[оверквотинг удален]
> 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...

Кстати, а остальные адаптеры, это что за карты?


"UDEV и двухголовые 'одинаковые' устройства."
Отправлено ragus , 04-Июл-12 17:52 

> Кстати, а остальные адаптеры, это что за карты?

http://www.mystique-tv.de/en/product-overview/tv-karten/dvb-...


"UDEV и двухголовые 'одинаковые' устройства."
Отправлено Kompik , 06-Июл-12 12:06 
>> Кстати, а остальные адаптеры, это что за карты?
> http://www.mystique-tv.de/en/product-overview/tv-karten/dvb-...

Печально, но ни мои методы, ни ваши, на 100% не подходят :(

Одна из моих двухголовых карт, все время прыгает.
То она 7 и 9 адаптеры, то 8 и 9.

И ноды при этом иногда меняются :(