Dominique_71 Veteran
Joined: 17 Aug 2005 Posts: 1923 Location: Switzerland (Romandie)
|
Posted: Sat Aug 18, 2012 11:17 am Post subject: udev and dvb |
|
|
I have a multi device TV card (Hauppauge WinTV-HVR4000)
Code: | # dmesg | grep DVB
cx88[0]: subsystem: 0070:6902, board: Hauppauge WinTV-HVR4000 DVB-S/S2/T/Hybrid [card=68,autodetected], frontend(s): 2
tveeprom 0-0050: TV standards PAL(B/G) PAL(I) SECAM(L/L') PAL(D/D1/K) ATSC/DVB Digital (eeprom 0xf4)
cx88[0]/2: subsystem: 0070:6902, board: Hauppauge WinTV-HVR4000 DVB-S/S2/T/Hybrid [card=68]
cx88[0]/2: cx2388x based DVB/ATSC card
DVB: registering new adapter (cx88[0])
DVB: registering adapter 0 frontend 0 (Conexant CX24116/CX24118)...
DVB: registering adapter 0 frontend 1 (Conexant CX22702 DVB-T)... |
The following devices are created for that card:
Code: | # ls /dev/dvb/adapter0
demux0 demux1 dvr0 dvr1 frontend0 frontend1 net0 net1 |
My issue is with mplayer. It can use only the first frontend of a card. So, I wrote some custom udev rules:
Code: | KERNEL=="dvb0.demux1", SUBSYSTEM=="dvb", ATTRS{device}=="0x8802", SYMLINK+="dvb/adapter1/demux0"
KERNEL=="dvb0.dvr1", SUBSYSTEM=="dvb", ATTRS{device}=="0x8802", SYMLINK+="dvb/adapter1/dvr0"
KERNEL=="dvb0.frontend1", SUBSYSTEM=="dvb", ATTRS{device}=="0x8802", SYMLINK+="dvb/adapter1/frontend0"
KERNEL=="dvb0.net1", SUBSYSTEM=="dvb", ATTRS{device}=="0x8802", SYMLINK+="dvb/adapter1/net0" |
That way, I get a second card in /dev:
Code: | # ls /dev/dvb/adapter1
demux0 dvr0 frontend0 net0 |
That way, mplayer is happy and I can use the 2 dvb frontends of the card with it. But, I can get the second card only with symlinks, and this is slower than with real device nodes. If I try to replace "SYMLINK+" with "NAME+" or "NAME" in the above rules, they fail and the second adapter is not created.
How can I cancel the rules that create the initial dvb device names and use my own rules instead?
If I search for dbd rules, I didn't find much in /lib/udev/rules.d:
Code: | ./70-udev-acl.rules:SUBSYSTEM=="dvb", TAG+="udev-acl"
./50-udev-default.rules:SUBSYSTEM=="dvb", GROUP="video"
./60-persistent-input.rules:ATTRS{name}=="*dvb*|*DVB*|* IR *", ENV{.INPUT_CLASS}="ir" |
_________________ "Confirm You are a robot." - the singularity |
|