2
1

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デバイスのポート名・デバイス名を同じにする方法

Last updated at Posted at 2022-11-17

ubuntuでは,USBをつなげるとデバイスファイル名がその都度決まる.
そのため,挿した順番などで,デバイス名が変わってしまう.

ArduinoやF9Pでシリアル通信をするとき,毎回変わることは避けたいので,固定する方法を紹介する.

デバイスが異なるUSB場合

USBポートに接続すると、以下のIDを取得することができる。
これはデバイスごとに異なるので、このIDを元にデバイス名を固定する。

  • ID_VENDOR_ID
  • ID_MODEL_ID
  • ID_SERIAL_SHORT

1. 接続したいデバイスを接続

ここでは,ArduinoをUSBで挿す.
このとき,割り振られたデバイス名を調べておく

ls /dev/tty*

Arduinoは,ttyACM0とかに割り振られる.

2. デバイスの3つの情報を調べる.

3つの情報を調べる.

  • ID_VENDOR_ID
  • ID_MODEL_ID
  • ID_SERIAL_SHORT

割り振られたデバイス名さえ知っていれば,以下のコマンドで調べられる.

udevadm info -q property -n {割り振られたデバイス名} |  grep -E "ID_SERIAL_SHORT=|ID_VENDOR_ID=|ID_MODEL_ID="

3. デバイスをudevルールに登録する

ルールファイルを新規・追加作成する
ここではファイル名を/etc/udev/rules.d/100-usb-serial-devices.rulesとする
*-usb-serial-devices.rules(*が大きいほどルールの優先度が高くなる)

sudo gedit /etc/udev/rules.d/100-usb-serial-devices.rules

以下のように追加する

/etc/udev/rules.d/100-usb-serial-devices.rules
SUBSYSTEM=="tty", ATTRS{idVendor}=="調べたID_VENDOR_ID", ATTRS{idProduct}=="調べたID_MODEL_ID", ATTRS{serial}=="調べたID_SERIAL_SHORT",SYMLINK+="表示させたい名前", MODE="0666"

認識後は,[/dev/表示させたい名前]でデバイスが認識されるようになるし,
権限も666で自動付与される.

4. 最後にリロードする

sudo service udev reload
sudo reboot

デバイスが同じ場合

同じデバイスの場合、上記の方法は使えない。
(RTK-GNSSモジュールのF9Pなどがそれ)

なので、接続したUSBのポート番号で識別する。

1. 接続したいデバイスを接続

ここでは,F9PをUSBで挿す.
このとき,割り振られたデバイス名を調べておく

ls /dev/tty*

F9Pは,ttyACM0とかに割り振られる.

2. デバイスの接続ポートを確認する。

udevadm info -q property -n /dev/ttyACM0
結果
DEVPATH=/devices/pci0000:00/0000:00:14.0/usb1/1-3/1-3.3/1-3.3:1.0/tty/ttyACM0

/tty/tty*の一つ前の「1-3.3:1.0」が必要な情報。
この部分は、USBハブを使っているかどうかにもよるので、とりあえず一つ前とおぼえておけば良し。

3. デバイスをudevルールに登録する

ルールファイルを新規・追加作成する
ここではファイル名を/etc/udev/rules.d/100-usb-serial-devices.rulesとする
*-usb-serial-devices.rules(*が大きいほどルールの優先度が高くなる)

sudo gedit /etc/udev/rules.d/100-usb-serial-devices.rules

以下のように追加する

/etc/udev/rules.d/100-usb-serial-devices.rules
KERNELS=="1-3.3:1.0", SYMLINK+="{表示させたい名前}", MODE="0666""

認識後は,[/dev/表示させたい名前]でデバイスが認識されるようになるし,
権限も666で自動付与される.

ただし、この方法はUSBの接続ポートを変える事はできないので注意。同じポートにUSBを挿せば、どんなUSBデバイスも同じ名前で表示されることになる

4. 最後にリロードする

sudo service udev reload
sudo reboot

おわり。

2
1
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
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?