[mythtv-users] OT advice on DVB card numbering

Razza ray at brambletree.net
Wed Apr 25 22:27:16 UTC 2007


Michael T. Dean wrote on 25 April 2007 15:22:
> On 04/25/2007 09:03 AM, Neil Bothwick wrote:
> > On Wed, 25 Apr 2007 13:28:49 +0100, Razza wrote:
> >> How can I pin a specific card to a specific /dev/dvb/adaptor address
> >> and/or IRQ ?
> > You can do this with a couple of udev rules. there's a good guide to
> > writing them at http://www.reactivated.net/udevrules.php
> 
> And search the list archives for "reactivated.net" (no quotes) to see
> some of the rules users have posted once they figured it out.
> 
> Mike

Thanks for the pointers, interesting reading but not a simple subject.

I assume that because I will be using numerous identical pci cards (i.e.
same SYSFS{vendor}/SYSFS{device}/etc.), the best method to set up the udev
rules would be based on the PCI addresses?
"lspci -v" yields the following response for me - 

01:06.0 Multimedia controller: Philips Semiconductors SAA7146 (rev 01)
        Subsystem: Technotrend Systemtechnik GmbH Unknown device 1017
        Flags: bus master, medium devsel, latency 32, IRQ 20
        Memory at e9000000 (32-bit, non-prefetchable) [size=512]

01:08.0 Multimedia controller: Philips Semiconductors SAA7146 (rev 01)
        Subsystem: Technotrend Systemtechnik GmbH Technotrend-Budget /
Hauppauge WinTV-NOVA-T DVB card
        Flags: bus master, medium devsel, latency 32, IRQ 22
        Memory at e9001000 (32-bit, non-prefetchable) [size=512]

01:09.0 Multimedia video controller: Internext Compression Inc iTVC16
(CX23416) MPEG-2 Encoder (rev 01)
        Subsystem: Hauppauge computer works Inc. Unknown device 8801 
        Flags: bus master, medium devsel, latency 64, IRQ 21
        Memory at e0000000 (32-bit, prefetchable) [size=64M]
        Capabilities: [44] Power Management version 2

Executing "udevinfo -a -p $(udevinfo -q path -n
/dev/dvb/adapter0/frontend0)" yields -

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

  looking at device '/devices/pci0000:00/0000:00:10.0/0000:01:06.0':
    ID=="0000:01:06.0"
    BUS=="pci"
    DRIVER=="budget_ci dvb"
    SYSFS{msi_bus}==""
    SYSFS{broken_parity_status}=="0"
    SYSFS{enable}=="1"
    SYSFS{modalias}=="pci:v00001131d00007146sv000013C2sd00001017bc04sc80i00"
    SYSFS{local_cpus}=="1"
    SYSFS{irq}=="18"
    SYSFS{class}=="0x048000"
    SYSFS{subsystem_device}=="0x1017"
    SYSFS{subsystem_vendor}=="0x13c2"
    SYSFS{device}=="0x7146"
    SYSFS{vendor}=="0x1131"

  looking at device '/devices/pci0000:00/0000:00:10.0':
    ID=="0000:00:10.0"
    BUS=="pci"
    DRIVER==""
    SYSFS{msi_bus}=="1"
    SYSFS{broken_parity_status}=="0"
    SYSFS{enable}=="1"
    SYSFS{modalias}=="pci:v000010DEd0000026Fsv00000000sd00000000bc06sc04i01"
    SYSFS{local_cpus}=="1"
    SYSFS{irq}=="0"
    SYSFS{class}=="0x060401"
    SYSFS{subsystem_device}=="0x0000"
    SYSFS{subsystem_vendor}=="0x0000"
    SYSFS{device}=="0x026f"
    SYSFS{vendor}=="0x10de"

  looking at device '/devices/pci0000:00':
    ID=="pci0000:00"
    BUS==""
    DRIVER==""


So I assume rules placed in "/etc/udev/rules.d/50-udev.rules" as follows,
for each card would be the best approach - 

ID=="0000:01:06.0", SYSFS{device}=="0x7146", SYSFS{vendor}=="0x1131",
SYMLINK="/dev/dvb/adapter3/ca0"
ID=="0000:01:06.0", SYSFS{device}=="0x7146", SYSFS{vendor}=="0x1131",
SYMLINK="/dev/dvb/adapter3/demux0"
ID=="0000:01:06.0", SYSFS{device}=="0x7146", SYSFS{vendor}=="0x1131",
SYMLINK="/dev/dvb/adapter3/dvr0"
ID=="0000:01:06.0", SYSFS{device}=="0x7146", SYSFS{vendor}=="0x1131",
SYMLINK="/dev/dvb/adapter3/frontend0"
ID=="0000:01:06.0", SYSFS{device}=="0x7146", SYSFS{vendor}=="0x1131",
SYMLINK="/dev/dvb/adapter3/net0"

Apologies for being over cautious, but I managed to mess up my raid array
over the weekend after loading all my media, and want to avoid another
similar traumatic episode!





More information about the mythtv-users mailing list