0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Ubuntuで複数の同一USBデバイスに一意のポート名を設定・固定する方法

Posted at

Lerobot SO-101のリーダー/フォロワーアームなど、Ubuntuで同一IDのUSBデバイスを複数接続する場合には、USB IDでポートを固定するルールファイルが使えません。
そこで、USBの物理ポートそのものに一意なポート名を設定する方法を紹介します。

背反としてデバイスを接続する物理ポート位置は固定化されることになるので、脱着が発生する場合は接続位置を間違えないようにするなどの注意が必要です。

1. 物理ポート番号の確認

例の通り、Lerobotに使用されるSeeed バスサーボドライバボードを2台接続した状態(デバイス名はそれぞれ/dev/ttyUSB0/dev/ttyUSB1)で、下記のようにコマンドを実行します。

bash
$ udevadm info --name=/dev/ttyUSB0 | grep DEVPATH
E: DEVPATH=/device/platform/361000.xhci/usb1/1-2/1-2.3/1-2.3:1.0/ttyUSB0/tty/ttyUSB0

$ udevadm info --name=/dev/ttyUSB1 | grep DEVPATH
E: DEVPATH=/device/platform/361000.xhci/usb1/1-2/1-2.4/1-2.4:1.0/ttyUSB1/tty/ttyUSB1

この場合、DEVPATHから、/dev/ttyUSB01-2.3/dev/ttyUSB11-2.4がそれぞれの物理ポート番号であることがわかります。

2.udevルールの作成

ルールファイルを作成して、各物理ポート番号に一意のポート名をシンボリックリンクとして割り当てます。

/etc/udev/rules.d/99-usb-serial.rules
# USBポート 1-2.3 に接続されたデバイス
SUBSYSTEM=="tty", KERNELS=="1-2.3", SYMLINK+="ttyUSB_port3", MODE="0666"

# USBポート 1-2.4 に接続されたデバイス
SUBSYSTEM=="tty", KERNELS=="1-2.4", SYMLINK+="ttyUSB_port4", MODE="0666"

3. ルールの適用と確認

作成したルールを適用します。

bash
sudo udevadm control --reload-rules
sudo udevadm trigger

確認するには、デバイスを一度抜き差しして下記のコマンドを実行します。

bash
ls -l /dev/ttyUSB_port*

正常に動作していれば、以下のような出力が得られます

bash
lrwxrwxrwx 1 root root 7 Dec  9 10:00 /dev/ttyUSB_port3 -> ttyUSB0
lrwxrwxrwx 1 root root 7 Dec  9 10:00 /dev/ttyUSB_port4 -> ttyUSB1

4. まとめ

これで、Ubuntuを再起動する毎にポート名が変更になり、コマンドを修正しなければならない手間から解放されます。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?