[mythtv-users] Udev rules get mixed-up
Mike Bibbings
mike.bibbings at gmail.com
Wed Sep 17 17:01:40 UTC 2014
On 17/09/14 17:46, Yianni wrote:
> Hi,
>
> I have a dual dvb-s TS-6981 card which works great, but I've realised that my udev rules that keep persistent names don't work, or to be more presise, they get mixed up. I even tried the rules from the "Zero Byte Recordings" thread (http://www.gossamer-threads.com/lists/mythtv/users/575782#575782) but the result is similar.
>
> The modified rule is:
> SUBSYSTEM=="dvb", ATTRS{device}=="0x8852", ATTRS{subsystem_vendor}=="0x6981", PROGRAM="/bin/sh -c ' K=%k; K=$${K#dvb}; N=$${K#*.}; if [ ! -e /dev/dvb/adapter_t1/$N ] ; then printf dvb/adapter_t1/%%s $${K#*.}; else printf dvb/adapter_t2/%%s $${K#*.}; fi ; exit 0'", SYMLINK+="%c"
>
> Upon rebooting or running udevadm trigger --subsystem-match="dvb", the adapter_t[12] folders are created but their contents are mixed up or incomplete:
> (adapter5 is a usb dvb-T card for digital aerial tv, and I set it to "5" with a modprobe rule.)
>
> al2kpro:~ # la /dev/dvb
> total 0
> drwxr-xr-x 7 root root 140 Sep 17 18:26 .
> drwxr-xr-x 21 root root 4,3K Sep 17 16:38 ..
> drwxr-xr-x 2 root root 120 Sep 17 16:38 adapter0
> drwxr-xr-x 2 root root 120 Sep 17 16:38 adapter1
> drwxr-xr-x 2 root root 100 Sep 17 16:56 adapter5
> drwxr-xr-x 2 root root 120 Sep 17 18:26 adapter_t1
> drwxr-xr-x 2 root root 100 Sep 17 18:26 adapter_t2
> al2kpro:~ # la /dev/dvb/adapter_t[12]
> /dev/dvb/adapter_t1:
> total 0
> drwxr-xr-x 2 root root 120 Sep 17 18:26 .
> drwxr-xr-x 7 root root 140 Sep 17 18:26 ..
> lrwxrwxrwx 1 root root 18 Sep 17 18:26 demux0 -> ../adapter1/demux0
> lrwxrwxrwx 1 root root 16 Sep 17 18:26 dvr0 -> ../adapter0/dvr0
> lrwxrwxrwx 1 root root 21 Sep 17 18:26 frontend0 -> ../adapter0/frontend0
> lrwxrwxrwx 1 root root 16 Sep 17 18:26 net0 -> ../adapter0/net0
>
> /dev/dvb/adapter_t2:
> total 0
> drwxr-xr-x 2 root root 100 Sep 17 18:26 .
> drwxr-xr-x 7 root root 140 Sep 17 18:26 ..
> lrwxrwxrwx 1 root root 18 Sep 17 18:26 demux0 -> ../adapter0/demux0
> lrwxrwxrwx 1 root root 21 Sep 17 18:26 frontend0 -> ../adapter1/frontend0
> lrwxrwxrwx 1 root root 16 Sep 17 18:26 net0 -> ../adapter1/net0
>
> Subsequent runs of the udefadm --trigger command produce different results.
>
> al2kpro:~ # udevadm trigger --subsystem-match="dvb" -vv
> /sys/devices/pci0000:00/0000:00:02.1/usb1/1-2/1-2.2/dvb/dvb5.demux0
> /sys/devices/pci0000:00/0000:00:02.1/usb1/1-2/1-2.2/dvb/dvb5.dvr0
> /sys/devices/pci0000:00/0000:00:02.1/usb1/1-2/1-2.2/dvb/dvb5.frontend0
> /sys/devices/pci0000:00/0000:00:0c.0/0000:02:00.0/dvb/dvb0.demux0
> /sys/devices/pci0000:00/0000:00:0c.0/0000:02:00.0/dvb/dvb0.dvr0
> /sys/devices/pci0000:00/0000:00:0c.0/0000:02:00.0/dvb/dvb0.frontend0
> /sys/devices/pci0000:00/0000:00:0c.0/0000:02:00.0/dvb/dvb0.net0
> /sys/devices/pci0000:00/0000:00:0c.0/0000:02:00.0/dvb/dvb1.demux0
> /sys/devices/pci0000:00/0000:00:0c.0/0000:02:00.0/dvb/dvb1.dvr0
> /sys/devices/pci0000:00/0000:00:0c.0/0000:02:00.0/dvb/dvb1.frontend0
> /sys/devices/pci0000:00/0000:00:0c.0/0000:02:00.0/dvb/dvb1.net0
> al2kpro:~ # la /dev/dvb/adapter_t[12]
> /dev/dvb/adapter_t1:
> total 0
> drwxr-xr-x 2 root root 80 Sep 17 19:35 .
> drwxr-xr-x 7 root root 140 Sep 17 19:35 ..
> lrwxrwxrwx 1 root root 21 Sep 17 19:35 frontend0 -> ../adapter1/frontend0
> lrwxrwxrwx 1 root root 16 Sep 17 19:35 net0 -> ../adapter1/net0
>
> /dev/dvb/adapter_t2:
> total 0
> drwxr-xr-x 2 root root 120 Sep 17 19:35 .
> drwxr-xr-x 7 root root 140 Sep 17 19:35 ..
> lrwxrwxrwx 1 root root 18 Sep 17 19:35 demux0 -> ../adapter1/demux0
> lrwxrwxrwx 1 root root 16 Sep 17 19:35 dvr0 -> ../adapter1/dvr0
> lrwxrwxrwx 1 root root 21 Sep 17 19:35 frontend0 -> ../adapter0/frontend0
> lrwxrwxrwx 1 root root 16 Sep 17 19:35 net0 -> ../adapter0/net0
>
>
> Can someone help me solve this little problem?
>
> The system is openSuSE Tumbleweed,
> # uname -r
> 3.14.4-31.g0de0f93-desktop
> # rpm -q udev
> udev-208-19.1.x86_64
> # udevadm info -a -p $(udevadm info -q path -n /dev/dvb/adapter0/frontend0)
>
> Udevadm info starts with the device specified by the devpath and then
> walks up the chain of parent devices. It prints for every device
> found, all possible attributes in the udev rules key format.
> A rule to match, can be composed by the attributes of the device
> and the attributes from one single parent device.
>
> looking at device '/devices/pci0000:00/0000:00:0c.0/0000:02:00.0/dvb/dvb0.frontend0':
> KERNEL=="dvb0.frontend0"
> SUBSYSTEM=="dvb"
> DRIVER==""
>
> looking at parent device '/devices/pci0000:00/0000:00:0c.0/0000:02:00.0':
> KERNELS=="0000:02:00.0"
> SUBSYSTEMS=="pci"
> DRIVERS=="cx23885"
> ATTRS{irq}=="16"
> ATTRS{subsystem_vendor}=="0x6981"
> ATTRS{broken_parity_status}=="0"
> ATTRS{class}=="0x040000"
> ATTRS{enabled}=="1"
> ATTRS{consistent_dma_mask_bits}=="32"
> ATTRS{dma_mask_bits}=="32"
> ATTRS{local_cpus}=="00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000003"
> ATTRS{device}=="0x8852"
> ATTRS{msi_bus}==""
> ATTRS{local_cpulist}=="0-1"
> ATTRS{vendor}=="0x14f1"
> ATTRS{subsystem_device}=="0x8888"
> ATTRS{numa_node}=="0"
> ATTRS{d3cold_allowed}=="1"
>
> looking at parent device '/devices/pci0000:00/0000:00:0c.0':
> KERNELS=="0000:00:0c.0"
> SUBSYSTEMS=="pci"
> DRIVERS=="pcieport"
> ATTRS{irq}=="40"
> ATTRS{subsystem_vendor}=="0x10de"
> ATTRS{broken_parity_status}=="0"
> ATTRS{class}=="0x060400"
> ATTRS{enabled}=="1"
> ATTRS{consistent_dma_mask_bits}=="32"
> ATTRS{dma_mask_bits}=="32"
> ATTRS{local_cpus}=="00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000003"
> ATTRS{device}=="0x045a"
> ATTRS{msi_bus}=="1"
> ATTRS{local_cpulist}=="0-1"
> ATTRS{vendor}=="0x10de"
> ATTRS{subsystem_device}=="0x0000"
> ATTRS{numa_node}=="0"
> ATTRS{d3cold_allowed}=="0"
>
> looking at parent device '/devices/pci0000:00':
> KERNELS=="pci0000:00"
> SUBSYSTEMS==""
> DRIVERS==""
>
> Thanks,
>
> Yianni.
>
>
> _______________________________________________
> mythtv-users mailing list
> mythtv-users at mythtv.org
> http://www.mythtv.org/mailman/listinfo/mythtv-users
> http://wiki.mythtv.org/Mailing_List_etiquette
> MythTV Forums: https://forum.mythtv.org
As you are already using modprobe.d options,why not try putting
something like
# TBS 6981 dvb-s2
options cx23885 adapter_nr=4,5,6,7
in your existing file. Just change adapter_nr to whatever you want
(range is normally 0-7).
This way you don't need use udev rules at all.
Mike
More information about the mythtv-users
mailing list