-   Debian (
-   -   Naming problem with udev (

zkab 03-06-2012 09:56 AM

Naming problem with udev
I am trying to link symbolic names to 2 USB devices with udev as follows:

ad_teknik_reader -> /dev/ttyUSB0
smart_ups -> /dev/ttyUSB1

sudo udevadm info --name=/dev/ttyUSB0 --attribute-walk gives:

looking at parent device '/devices/pci0000:00/0000:00:1a.0/usb2/2-1/2-1.6/2-1.6:1.0/ttyUSB0':

sudo udevadm info --name=/dev/ttyUSB1 --attribute-walk gives:

looking at parent device '/devices/pci0000:00/0000:00:1a.0/usb2/2-1/2-1.5/2-1.5:1.0/ttyUSB1':

My /etc/udev/rules.d/10-udev.rules looks like:

KERNELS=="ttyUSB0" , SUBSYSTEMS=="usb-serial" , DRIVERS=="ftdi_sio" , SYMLINK+="ad_teknik_reader"
KERNELS=="ttyUSB1" , SUBSYSTEMS=="usb-serial" , DRIVERS=="pl2303" , SYMLINK+="smart_ups"

But I can't get it working.
Sometime I get it right like:

lrwxrwxrwx 1 root root 7 6 mar 15.08 /dev/ad_teknik_reader -> ttyUSB0

after reboot but very often I just get /dev/ad_teknik_reader not pointing at ttyUSB0.

When I delete /dev/ad_teknik_reader and reboot I can get it right but not always ... it is frustrating to reboot since it is also a server.
I have Debian 2.6.32-5-amd64 (server).

catkin 03-08-2012 12:43 AM

Strange that it should not behave the same way on every reboot. Is there a pattern to that, like it's OK every other reboot.

You could try changing SYMLINK+="ad_teknik_reader" to SYMLINK="ad_teknik_reader"

EDIT: can you avoid the need to reboot by using udevadm control --reload-rules and re-plugging the hardware or, for a more complete re-initialisation, run /etc/init.d/udev restart or whatever the equivalent is on your distro.

zkab 03-08-2012 04:25 AM

Thanks for your input.
I solved the problem, the rule should be like this:

KERNEL=="ttyUSB[0-1]" , SUBSYSTEMS=="usb-serial" , DRIVERS=="ftdi_sio" , NAME="ad_teknik_reader"
KERNEL=="ttyUSB[0-1]" , SUBSYSTEMS=="usb-serial" , DRIVERS=="pl2303" , NAME="smart_ups"

since /dev/ttyUSB0 and /dev/ttyUSB1 depend on where they are plugged in ...

All times are GMT -5. The time now is 03:00 AM.