This post has to objective to be able to rename a Zolertia device on a UNIX system this allows to manage multiple devices easily. After the configuration, each time we connect a specific device, it we appear with the same name and not change following the order of discovery. To rename USB devices we need to have some information about each of them. The command “udevadm” allows to get theses informations.

udevadm info -a /dev/ttyUSB0
     udevadm info -a /dev/ttyUSB0 | grep "ATTRS{serial}==\"Z"

The second command filter the result to get only the line starting by "ATTRS{serial}==\"Z" (Our devices are from Z olertia).

Next we will use the command udev to create rules that rename the USB device. These rules will be placed in the file /etc/udev/rules.d/10-local.rules on Debian or /etc/udev/rules.d/10-usb-serial.rules on Raspberry pi.

The following command could help to create/edit/remove the files.

sudo rm /etc/udev/rules.d/10-usb-serial.rules
    sudo touch /etc/udev/rules.d/10-usb-serial.rules
    sudo vi /etc/udev/rules.d/10-usb-serial.rules

Vim is not easy to use for the first time. Escape follow by :wwill save the file and Escape follow by:q will escape vim. If you have forgotten to lunch vim with the root access you can type :qa! to exit the program.

Finally, the command to rename the USB port is like this

SUBSYSTEM=="tty", ATTRS{product}=="Zolertia Firefly platform", ATTRS{serial}=="ZOL-B001-A200002005", SYMLINK+="anchor1", GROUP="dialout", MODE="0666"
  • SUBSYSTEM=="tty", ATTRS{product}=="Zolertia Firefly platform", ATTRS{serial}=="ZOL-B001-A200002005" are used to identify a specific USB device.
  • SYMLINK+="anchor1" add a symbolic links which act as alternative names for the device node.
  • GROUP="dialout", MODE="0666" add the device the dialout group with 666 access.

If your user is not in the dialout group you can add this user to it using the useradd -G dialout username command.

If you have some problems, you can take a look at the journal of the Raspberry pi to check for errors sudo journalctl -xe. For Example, in our case we have connected to much USB devices to the raspberry pi and we have encounter theses errors:

Jan 28 12:17:56 raspberrypi kernel: xhci_hcd 0000:01:00.0: Error while assigning device slot ID
    Jan 28 12:17:56 raspberrypi kernel: xhci_hcd 0000:01:00.0: Max number of devices this xHCI host supports is 32.
    Jan 28 12:17:56 raspberrypi kernel: usb 1-1.3.6.4.1-port4: couldn't allocate usb_device

If you restart our Raspberry pi, may be you will have some problems for example our device redirect bus/usb/001/020 in place of ttyUSB1.

ls -l /dev/anchor*
    lrwxrwxrwx 1 root root  7 Jan 28 12:30 /dev/anchor1 -> ttyUSB0
    lrwxrwxrwx 1 root root 15 Jan 28 12:30 /dev/anchor10 -> bus/usb/001/032
    lrwxrwxrwx 1 root root 15 Jan 28 12:30 /dev/anchor11 -> bus/usb/001/031
    lrwxrwxrwx 1 root root 15 Jan 28 12:30 /dev/anchor12 -> bus/usb/001/029
    lrwxrwxrwx 1 root root  7 Jan 28 12:30 /dev/anchor2 -> ttyUSB3
    lrwxrwxrwx 1 root root  7 Jan 28 12:30 /dev/anchor3 -> ttyUSB2
    lrwxrwxrwx 1 root root  7 Jan 28 12:30 /dev/anchor4 -> ttyUSB1
    lrwxrwxrwx 1 root root 15 Jan 28 12:30 /dev/anchor5 -> bus/usb/001/020
    lrwxrwxrwx 1 root root 15 Jan 28 12:30 /dev/anchor6 -> bus/usb/001/024
    lrwxrwxrwx 1 root root 15 Jan 28 12:30 /dev/anchor7 -> bus/usb/001/022
    lrwxrwxrwx 1 root root 15 Jan 28 12:30 /dev/anchor8 -> bus/usb/001/027
    lrwxrwxrwx 1 root root 15 Jan 28 12:30 /dev/anchor9 -> bus/usb/001/026

To correct this problem, you need to recharge the rules with the command sudo udevadm trigger. Here is the result:

ls -l /dev/anchor*
    lrwxrwxrwx 1 root root 7 Jan 28 13:48 /dev/anchor1 -> ttyUSB0
    lrwxrwxrwx 1 root root 8 Jan 28 13:48 /dev/anchor10 -> ttyUSB11
    lrwxrwxrwx 1 root root 8 Jan 28 13:48 /dev/anchor11 -> ttyUSB10
    lrwxrwxrwx 1 root root 7 Jan 28 13:48 /dev/anchor12 -> ttyUSB9
    lrwxrwxrwx 1 root root 7 Jan 28 13:48 /dev/anchor2 -> ttyUSB3
    lrwxrwxrwx 1 root root 7 Jan 28 13:48 /dev/anchor3 -> ttyUSB2
    lrwxrwxrwx 1 root root 7 Jan 28 13:48 /dev/anchor4 -> ttyUSB1
    lrwxrwxrwx 1 root root 7 Jan 28 13:48 /dev/anchor5 -> ttyUSB4
    lrwxrwxrwx 1 root root 7 Jan 28 13:48 /dev/anchor6 -> ttyUSB6
    lrwxrwxrwx 1 root root 7 Jan 28 13:48 /dev/anchor7 -> ttyUSB5
    lrwxrwxrwx 1 root root 7 Jan 28 13:48 /dev/anchor8 -> ttyUSB8
    lrwxrwxrwx 1 root root 7 Jan 28 13:48 /dev/anchor9 -> ttyUSB7

Sources: