[mythtv-users] OT: Persistent DVB node

Razza ray at brambletree.net
Sat Jul 14 07:37:44 UTC 2007


All,

I have tried to resolve this on the "Linux-DVB" and  Hotplug "UDEV" lists,
now trying on the Fedora Forum (
<http://forums.fedoraforum.org/showthread.php?t=160840>
http://forums.fedoraforum.org/showthread.php?t=160840) so thought I might as
well ask here as it's my desire for a working MythTV setup thats causing the
issue!

 

I have a problem whereby I need to pin a specific DVB PCI card by PCI
slot/PCI address to a dvb node (/dev/dvb/adaptor*), at the moment my system
has two (almost identical) cards from the same manufacturer
(TechnoTrend/Hauppauge), however one is DVB-T and one is DVB-S. 
As far as udev is concerned they report similarly, so things get really
messed up when on one boot, the DVB-T is /dev/dvb/adaptor0 and the DVB-S is
/dev/dvb/adaptor1 on the next boot they are reversed (the DVB-T is
/dev/dvb/adaptor1 and the DVB-S is /dev/dvb/adaptor0).

I am really not passionate about whether I use UDEV or load modules manually
to achieve my objective of persistent mapping of PCI Slots/PCI addresses to
DVB node's. The latter is probably preferable, as I have been bugging guys
on the UDEV mailing list for months, and I just can't get things to play
nice in Fedora, although I am assured things work in Gentoo.

If I allow the standard UDEV rules to run, and execute "udevinfo -a -p
$(udevinfo -q path -n /dev/dvb/adapter0/frontend0)" the response is - 

looking at device '/class/dvb/dvb0.frontend0':
KERNEL=="dvb0.frontend0"
SUBSYSTEM=="dvb"
DRIVER==""
ATTR{dev}=="212:3"

looking at parent device '/devices/pci0000:00/0000:00:10.0/0000:01:06.0':
KERNELS=="0000:01:06.0"
SUBSYSTEMS=="pci"
DRIVERS=="budget_ci dvb"
ATTRS{msi_bus}==""
ATTRS{broken_parity_status}=="0"
ATTRS{enable}=="1"
ATTRS{modalias}=="pci:v00001131d00007146sv000013C2sd00001017bc04sc80 i00"
ATTRS{local_cpus}=="ffffffff"
ATTRS{irq}=="20"
ATTRS{class}=="0x048000"
ATTRS{subsystem_device}=="0x1017"
ATTRS{subsystem_vendor}=="0x13c2"
ATTRS{device}=="0x7146"
ATTRS{vendor}=="0x1131"

looking at parent device '/devices/pci0000:00/0000:00:10.0':
KERNELS=="0000:00:10.0"
SUBSYSTEMS=="pci"
DRIVERS==""
ATTRS{msi_bus}=="1"
ATTRS{broken_parity_status}=="0"
ATTRS{enable}=="1"
ATTRS{modalias}=="pci:v000010DEd0000026Fsv00000000sd00000000bc06sc04 i01"
ATTRS{local_cpus}=="ffffffff"
ATTRS{irq}=="0"
ATTRS{class}=="0x060401"
ATTRS{subsystem_device}=="0x0000"
ATTRS{subsystem_vendor}=="0x0000"
ATTRS{device}=="0x026f"
ATTRS{vendor}=="0x10de"

looking at parent device '/devices/pci0000:00':
KERNELS=="pci0000:00"
SUBSYSTEMS==""
DRIVERS==""

looking at device '/class/dvb/dvb1.frontend0':
KERNEL=="dvb1.frontend0"
SUBSYSTEM=="dvb"
DRIVER==""
ATTR{dev}=="212:67"


The other adaptor yields the following response (to "udevinfo -a -p
$(udevinfo -q path -n /dev/dvb/adapter1/frontend0)")- 

looking at parent device '/devices/pci0000:00/0000:00:10.0/0000:01:08.0':
KERNELS=="0000:01:08.0"
SUBSYSTEMS=="pci"
DRIVERS=="budget dvb"
ATTRS{msi_bus}==""
ATTRS{broken_parity_status}=="0"
ATTRS{enable}=="1"
ATTRS{modalias}=="pci:v00001131d00007146sv000013C2sd00001005bc04sc80 i00"
ATTRS{local_cpus}=="ffffffff"
ATTRS{irq}=="21"
ATTRS{class}=="0x048000"
ATTRS{subsystem_device}=="0x1005"
ATTRS{subsystem_vendor}=="0x13c2"
ATTRS{device}=="0x7146"
ATTRS{vendor}=="0x1131"

looking at parent device '/devices/pci0000:00/0000:00:10.0':
KERNELS=="0000:00:10.0"
SUBSYSTEMS=="pci"
DRIVERS==""
ATTRS{msi_bus}=="1"
ATTRS{broken_parity_status}=="0"
ATTRS{enable}=="1"
ATTRS{modalias}=="pci:v000010DEd0000026Fsv00000000sd00000000bc06sc04 i01"
ATTRS{local_cpus}=="ffffffff"
ATTRS{irq}=="0"
ATTRS{class}=="0x060401"
ATTRS{subsystem_device}=="0x0000"
ATTRS{subsystem_vendor}=="0x0000"
ATTRS{device}=="0x026f"
ATTRS{vendor}=="0x10de"

looking at parent device '/devices/pci0000:00':
KERNELS=="pci0000:00"
SUBSYSTEMS==""
DRIVERS==""


For those interested the following config apparently should work according
to peeps off the UDEV list - 

My DVB section of /etc/udev/rules.d/50-udev.rules is as follows - 

# DVB
KERNEL=="dvb", MODE="0660"
SUBSYSTEM!="dvb", GOTO="dvb_end"
ACTION!="add", GOTO="dvb_end"

GROUP="video"
import{PROGRAM}="/bin/sh -c 'K=%k; K=$${K#dvb}; echo
ID_DVB_ADAPTER_KERNEL=$${K%%%%.*}; echo ID_DVB_DEVICE=$${K#*.}'"

IMPORT{program}="path_id %p"

#Here set ID_DVB_ADAPTER to be persistent # example:
ENV{ID_PATH}=="pci-0000:01:08.0", ENV{ID_DVB_ADAPTER}="3"
ENV{ID_PATH}=="pci-0000:01:06.0", ENV{ID_DVB_ADAPTER}="2"

# fallback-number
ENV{ID_DVB_ADAPTER_KERNEL}=="?*", ENV{ID_DVB_ADAPTER}!="?*",
ENV{ID_DVB_ADAPTER}="$env{ID_DVB_ADAPTER_KERNEL}"

# Create device
ENV{ID_DVB_ADAPTER}=="?*", ENV{ID_DVB_DEVICE}=="?*",
NAME="dvb/adapter$env{ID_DVB_ADAPTER}/$env{ID_DVB_DEVICE}"

LABEL="dvb_end"


I have updated the final section of /sbin/path_id (when I was playing with
FC5) to - 

case "$TYPE" in
block)
handle_block
;;
dvb)
handle_device
echo "ID_PATH=$d"
;;
*)
RESULT=1
;;
esac


or more recently /lib/udev/path_id in F7, to - 

case "$TYPE" in
block)
handle_device
echo "ID_PATH=$d"
;;
dvb)
handle_device
echo "ID_PATH=$d"
;;
scsi_tape)
handle_device
echo "ID_PATH=$d"
;;
input)
handle_device
echo "ID_PATH=$d"
;;
*)
RESULT=1
;;
esac


Unfortunately the dvb adaptors still load as 0 and 1 as opposed to 2 and 3
as expected.

HELP!!

 

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mythtv.org/pipermail/mythtv-users/attachments/20070714/900e0846/attachment.htm 


More information about the mythtv-users mailing list