Multiple ports opened by mini maestro 18

When I plug in my mini maestro 18, it attaches with two serial ports ACM0 and ACM1. I used a udev rule:

SUBSYSTEMS=="usb", KERNEL=="ttyACM[0-9]*", ATTRS{idVendor}=="1ffb", MODE="0666", SYMLINK+="ttyPololuServo", GROUP="dialout"

I also tried this udev rule (to specify the product) with the same result:

SUBSYSTEMS=="usb", KERNEL=="ttyACM[0-9]*", ATTRS{idVendor}=="1ffb", ATTRS{idProduct}=="008b", MODE="0666", SYMLINK+="ttyPololuServo", GROUP="dialout"

When the board is first plugged in the symlink goes with ACM0 and all is good.

However, if the board is unplugged and then plugged back in, the symlink goes with ACM1 (see listing below) and the board does not respond to commands. It continues to respond to commands sent to ACM0. This is a problem, because there are normally many serial ports, so there is no guarantee that the mini maestro will be assigned ACM0.

ls -l /dev/tty*
crw-rw-rw- 1 root dialout 166,  0 Jun 14 14:03 /dev/ttyACM0
crw-rw-rw- 1 root dialout 166,  1 Jun 14 14:03 /dev/ttyACM1
lrwxrwxrwx 1 root root          7 Jun 14 14:03 /dev/ttyPololuServo -> ttyACM1


There might be a way to add an attribute to your udev rule so that it only matches the Maestro’s Command Port and not the TTL Port. However, it will probably be easier if you connect to the Maestro using the symbolic links that Linux creates in the /dev/serial/by-id directory. For more information, see this earlier thread:


Works great-- thanks for the fast reply. It would be good to add this method to the documentation.