Linux udev Rules
Linux assigns device names sequentially to hotplug hardware. Usually, your device will get the same name each time you
connect it or boot your computer, but sometimes the name may change. For this reason, disks and partitions are
typically referenced by UUID and not by device path any more. For our purposes dealing with USB serial adapters, the
assigned device name is typically /dev/ttyUSB0
. However, if you have more than adapter the device names may not
always be consistent. Therefore, it is a good idea to create a udev rule to provide an alias for your device.
The example below assumes Debian or Ubuntu as the distribution, but it should be similar for others.
First, we need to collect some identifiers for the device we want to alias. In a shell, run the usb-devices
command.
$ usb-devices
This will enumerate all of the USB devices connected to your computer (including internal USB hubs). In our example,
we’re looking for Actisense devices. Write down the Vendor
, ProdId
and SerialNumber
values for each of your
devices.
Then, in your favorite text editor, create a file in /etc/udev/rules.d/
called 90-actisense.rules
. The 90 ensures
that it processed after other udev rules.
The contents of the file should be:
SUBSYSTEMS=="usb", ATTRS{idVendor}=="0403", ATTRS{idProduct}=="d9aa", ATTRS{serial}=="1B091", SYMLINK+="actisense"
Replace 0403
with the value you wrote down for Vendor
(if you are working with and Actisense device, it will likely
be the same). Replace d9aa
with the value you wrote down for ProdId
and replace 1B091
with the value you wrote
down for SerialNumber
. The last change is to give your symlink a name. In the example above it is actisense
, but
you can call it whatever you want (without spaces or filesystems-reserved characters like /
). Let’s say you have two
USG-1 devices, one for the autopilot and one for your VHF radio. You might want to name these devices autopilot
and
vhf
. Then they would be available at /dev/autopilot
and /dev/vhf
respectively.
You can specify multiple rules in one file, one rule per line:
SUBSYSTEMS=="usb", ATTRS{idVendor}=="0403", ATTRS{idProduct}=="d9aa", ATTRS{serial}=="1B091", SYMLINK+="autopilot"
SUBSYSTEMS=="usb", ATTRS{idVendor}=="0403", ATTRS{idProduct}=="d9aa", ATTRS{serial}=="1B094", SYMLINK+="vhf"
After creating this file, disconnect your devices and plug them back in. You should see the new entries under /dev
.
If not, reboot.