wiki:Documentation/HOWTO/Linux_USBSerial
Last modified 6 years ago Last modified on 05/09/11 02:24:33

udev Rules for Consistent Device Naming


This entire page applies only to Linux systems.

  • Determine the manufacturer and product description strings reported by your devices using lsusb -v
    (N.B. lsusb is a Linux command - not available in Windows)
  • Create a new file 10-fldigi.rules in the directory /etc/udev/rules.d and enter rules which use device identification strings
    to create a consistent device name:
    # Silicon Labs West Mountain Radio (WMR) RIGblaster Plug & Play
    SUBSYSTEM=="tty", SYSFS{manufacturer}=="Silicon Labs", SYSFS{product}=="WMR RIGblaster plug & play", \
        TEST!="/dev/rigblaster", SYMLINK+="rigblaster"
    SUBSYSTEM=="tty", SYSFS{manufacturer}=="Silicon Labs", SYSFS{product}=="WMR RIGblaster plug & play", \
        TEST=="/dev/rigblaster", SYMLINK+="rigblaster%n"
    # Prolific Technology Inc. USB-Serial Controller
    SUBSYSTEM=="tty", SYSFS{manufacturer}=="Prolific Technology Inc.", SYSFS{product}=="USB-Serial Controller", \
        TEST!="/dev/usbserial", SYMLINK+="usbserial"
    SUBSYSTEM=="tty", SYSFS{manufacturer}=="Prolific Technology Inc.", SYSFS{product}=="USB-Serial Controller", \
        TEST=="/dev/usbserial", SYMLINK+="usbserial%n"
    

N.B. the double udev rules support multiple devices being plugged in and only the first device instance having the unadorned device name.

  • If you have been using 10-fldigi.rules, udev versions 148 and later emit boot-time warnings which look like:
    SYSFS{}= will be removed in a future udev version, please use ATTR{}= to match the event device, \
    or ATTRS{}= to match a parent device, in 10-fldigi.rules
    

For udev versions 148 or later (openSUSE 11.4 has version 166), remove 10-fldigi.rules from /etc/udev/rules.d,
then use these rules in 91-fldigi.rules:

SUBSYSTEM!="tty",GOTO="fldigi_end"

# 10c4:814a Cygnal Integrated Products, Inc. - West Mountain Radio (WMR) RIGblaster Plug & Play
ATTRS{idVendor}=="10c4", ATTRS{product}=="WMR RIGblaster plug & play", \
    TEST!="/dev/rigblaster", SYMLINK+="rigblaster"
ATTRS{idVendor}=="10c4", ATTRS{product}=="WMR RIGblaster plug & play", \
    TEST=="/dev/rigblaster", SYMLINK+="rigblaster%n"

# 067b:2303 Prolific Technology Inc. USB-Serial Controller
ATTRS{idVendor}=="067b", ATTRS{product}=="USB-Serial Controller", \
    TEST!="/dev/usbserial", SYMLINK+="usbserial"
ATTRS{idVendor}=="067b", ATTRS{product}=="USB-Serial Controller", \
    TEST=="/dev/usbserial", SYMLINK+="usbserial%n"

LABEL="fldigi_end"

N.B. To determine attribute strings for your devices use:

udevadm info -q path -n ttyUSB[x] --attribute-walk

(where [x]==0,1,2,etc.)