[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