🐕
USBシリアル変換のデバイス名を固定したい (Ubuntu)
はじめに
USBシリアル変換デバイスを複数つなぐと/dev/ttyUSBn
が作成され、接続の順番ごとに番号が変わるので、udevルールファイル使ってデバイスの種類やシリアル番号ごとに固定したデバイス名を割り振りたい。今回はU2D2を使ってデバイス名を固定する。
手順
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 1月 22 13:29 /dev/ttyUSB0
lrwxrwxrwx 1 root root 7 1月 22 13:29 /dev/ttyUSB-Dynamixel -> ttyUSB0
おわり
参考
Discussion