[mythtv-users] udev rules for two devices with the same name

Nicolas Will nico at youplala.net
Thu Feb 19 07:42:49 UTC 2009


On Thu, 2009-02-19 at 13:13 +1030, Barry Williams wrote:
> Hi guys,
> I am trying to get the dvico digital dual 4 remote to work with my
> mythbuntu setup I have followed this guide
> http://ubuntuforums.org/showthread.php?t=616103 with these exceptions
> http://ubuntuforums.org/showpost.php?p=6232229&postcount=42 as I am
> using a rev2 card except unlike tvars my /dev/input/eventx's do tend
> to change, depending if I have my game pad plugged in or another
> keyboard & mouse. I can get it to work by manually setting a simlink
> to the first device and deleting the second device but is there a  way
> to get udev to pick up the first
> dKERNEL=="event*",SYSFS{name}=="IR-receiver inside an USB DVB
> receiver",SYMLINK="input/irremote0"
> KERNEL=="event*",SYSFS{name}=="IR-receiver inside an USB DVB
> receiver",SYMLINK="input/irremote1" evice even thought they are both
> labled exactly the same
> 
> last two line of output of dmesg|grep IR
> [   11.007274] input: IR-receiver inside an USB DVB receiver as
> /devices/pci0000:00/0000:00:14.4/0000:04:07.2/usb8/8-1/input/input8
> [   11.399469] input: IR-receiver inside an USB DVB receiver as
> /devices/pci0000:00/0000:00:14.4/0000:04:07.2/usb8/8-2/input/input9
> 
> I have tried something like this
> in /etc/udev/rules.d/60-symlinks.rules
> KERNEL=="event*",SYSFS{name}=="IR-receiver inside an USB DVB
> receiver",SYMLINK="input/irremote0"
> KERNEL=="event*",SYSFS{name}=="IR-receiver inside an USB DVB
> receiver",SYMLINK="input/irremote1"
> but I still only get a symlink on /dev/input/irremote1 for the second
> unworking device.

You will have to find something that is really different between your 2
devices in order to sort them out properly.

On my system I used the serial number.

For exemple, the entry for my Nova-T-500 in lshal is looking like that:

        udi = '/org/freedesktop/Hal/devices/usb_device_2040_9950_4028166400'
          info.linux.driver = 'usb'  (string)
          info.parent = '/org/freedesktop/Hal/devices/usb_device_1d6b_2_0000_07_01_2'  (string)
          info.product = 'WinTV Nova-DT'  (string)
          info.subsystem = 'usb_device'  (string)
          info.udi = '/org/freedesktop/Hal/devices/usb_device_2040_9950_4028166400'  (string)
          info.vendor = 'Hauppauge'  (string)
          linux.device_file = '/dev/bus/usb/010/002'  (string)
          linux.hotplug_type = 2  (0x2)  (int)
          linux.subsystem = 'usb'  (string)
          linux.sysfs_path = '/sys/devices/pci0000:00/0000:00:1e.0/0000:07:01.2/usb10/10-1'  (string)
          usb_device.bus_number = 10  (0xa)  (int)
          usb_device.can_wake_up = true  (bool)
          usb_device.configuration_value = 1  (0x1)  (int)
          usb_device.device_class = 0  (0x0)  (int)
          usb_device.device_protocol = 0  (0x0)  (int)
          usb_device.device_revision_bcd = 256  (0x100)  (int)
          usb_device.device_subclass = 0  (0x0)  (int)
          usb_device.is_self_powered = false  (bool)
          usb_device.linux.device_number = 2  (0x2)  (int)
          usb_device.linux.sysfs_path = '/sys/devices/pci0000:00/0000:00:1e.0/0000:07:01.2/usb10/10-1'  (string)
          usb_device.max_power = 500  (0x1f4)  (int)
          usb_device.num_configurations = 1  (0x1)  (int)
          usb_device.num_interfaces = 1  (0x1)  (int)
          usb_device.num_ports = 0  (0x0)  (int)
          usb_device.product = 'WinTV Nova-DT'  (string)
          usb_device.product_id = 39248  (0x9950)  (int)
          usb_device.serial = '4028166400'  (string)
          usb_device.speed = 480.0 (480) (double)
          usb_device.vendor = 'Hauppauge'  (string)
          usb_device.vendor_id = 8256  (0x2040)  (int)
          usb_device.version = 2.0 (2) (double)

This is the initial device declaration, there are then more sections
about each sub-element (event, frontends, demux, etc...).

I picked-up the card's serial number from that line, expecting it to be
unique enough within my system:

        usb_device.serial = '4028166400'  (string)

and turned it into this udev rule for the event interface:

        KERNEL=="event*", ATTRS{serial}=="4028166400", SYMLINK+="input/dvb-ir"

Hope this helps.

Nico




More information about the mythtv-users mailing list