🐕

USBシリアル変換のデバイス名を固定したい (Ubuntu)

2025/01/22に公開

はじめに

USBシリアル変換デバイスを複数つなぐと/dev/ttyUSBnが作成され、接続の順番ごとに番号が変わるので、udevルールファイル使ってデバイスの種類やシリアル番号ごとに固定したデバイス名を割り振りたい。今回はU2D2を使ってデバイス名を固定する。
https://e-shop.robotis.co.jp/product.php?id=190

手順

0. U2D2とパソコンをUSBで接続する

1. lsusbコマンドで表示してデバイスのベンダーIDとプロダクトIDを取得する

lsusb

以下のような表示が出ます。U2D2はFT232Hデバイスなのでその記述に注目します。

Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
    :
    :
Bus 003 Device 011: ID 0403:6014 Future Technology Devices International, Ltd FT232H Single HS USB-UART/FIFO IC
    :

2. serial number を取得する

ベンダーIDとプロダクトIDは同じシリアルデバイスの場合、見分けがつかないのでデバイス固有のシリアル番号を取得する。

  sudo lsusb -d 0403:6014 -v | grep iSerial
  iSerial                 3 XXXXXXXX

3. udevルールファイルの作成

/etc/udev/rules.dにudevルールファイルを作成します。

sudo nano /etc/udev/rules.d/99-dynamixel-device.rules

nanoエディタが開いたら、下記のような内容でコピペします。idVendor・idProduct・serialは自分のデバイスに合わせて変更してください。

SUBSYSTEM=="tty", ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6014", ATTRS{serial}=="XXXXXXX", SYMLINK+="ttyUSB-Dynamixel", MODE="0666"

4. udevルールをリロードする

下記のコマンドでudevルールをリロードします。リロード後にUSBデバイスの抜き差しをし直してください。

sudo udevadm control --reload-rules

5. 変更したデバイス名になっているか確認

下記のようにして/dev/ttyUSB0が/dev/ttyUSB-Dynamixelに変更されていればデバイス名変えられてます。

ls -l /dev/ttyUSB*
crw-rw-rw- 1 root dialout 188, 0  122 13:29 /dev/ttyUSB0
lrwxrwxrwx 1 root root         7  122 13:29 /dev/ttyUSB-Dynamixel -> ttyUSB0

おわり

参考

https://ittechnicalmemos.blogspot.com/2019/09/usblinux.html
https://smdn.jp/electronics/udev_create_persistent_usb_device_symlink/

Discussion