Raspberry Pi & Python 開発ブログ ☆彡

Raspberry PiとPythonの基本的な使い方をわかりやすく解説。初心者、入門者必見!!

Raspberry PiでUSBのデバイス名を固定する:USBポート番号指定

usb device name fix by port

この記事の内容はRaspberry Pi 4と3の両方で動作確認済みです

ブログ管理者のP.Hです!

今回はRaspberry PiのUSBポートの差す場所によって、USBデバイス名を固定する方法を紹介したいと思います。この方法を使えば、同じデバイスでも識別して制御できるようになります(例えば、Arduino Uno2つ等)。機器に組み込んでしまう等、USBの抜き差しを行わない場合は、この方法が便利です。

それではUSBのデバイス名を固定する方法を説明してきます。

rulesファイルに設定する

わかりやすいように/etc/udev/ruled.d/90-usb.rulesファイルを新規に作成して、そこにUSBデバイス名を固定する設定を書き込んできます。LANコネクタ側の上のUSBポートにUSBデバイスを差し込んだ場合を例として、作成してきます。sudo nano /etc/udev/rules.d/90-usb.rulesコマンドで90-usb.rulesファイルを開きます(はじめての場合は新規に作成します)。以下のように記載して、再起動します。

ACTION=="add", DEVPATH=="*/usb1/1-1/1-1.2/1-1.2:1.0/*", SYMLINK+="ttyUSB_Test"
  • ACTION=="add" ⇒ USBデバイス挿入時
  • DEVPATH=="..." ⇒ USBのどのポートの挿入されているか
  • SYMLINK+="ttyUSB_Test" ⇒ USBデバイスの固定名(どのデバイスかわかりやすい名前がよい)

この記載をすることで、LANコネクタ側の上のUSBポートに挿入されているUSBデバイスを"ttyUSB_Test"という名前で制御できるようになります。

USBポートの番号

USBハブを付けていなければ、下記のように各USBポートに番号が割り振られています。

Rasperry Pi 4の場合

  • LANコネクタ側上 ⇒ "*/usb1/1-1/1-1.1/1-1.1:1.0/*"
  • LANコネクタ側下 ⇒ "*/usb1/1-1/1-1.2/1-1.2:1.0/*"
  • GPIOコネクタ側上 ⇒ "*/usb1/1-1/1-1.3/1-1.3:1.0/*"
  • GPIOコネクタ側下 ⇒ "*/usb1/1-1/1-1.4/1-1.4:1.0/*"

Rasperry Pi 3の場合

  • LANコネクタ側上 ⇒ "*/usb1/1-1/1-1.2/1-1.2:1.0/*"
  • LANコネクタ側下 ⇒ "*/usb1/1-1/1-1.3/1-1.3:1.0/*"
  • GPIOコネクタ側上 ⇒ "*/usb1/1-1/1-1.4/1-1.4:1.0/*"
  • GPIOコネクタ側下 ⇒ ”*/usb1/1-1/1-1.5/1-1.5:1.0/*"

USBデバイスの情報を確認する

USBハブを使用している場合は、下記のコマンドで、USBデバイスの情報を確認します。 ※ttyUSB0ではなく、ttyUSB1、2 ...の場合もあります。

sudo udevadm info -q all -n /dev/ttyUSB0

少し情報量が多いですが(grepを使用すると良いです)、この中から下記のDEVPATHの項目を見つけます。

E: DEVPATH=/devices/platform/soc/3f980000.usb/usb1/1-1/1-1.5/1-1.5.2/1-1.5.2:1.0/ttyUSB0/tty/ttyUSB0

DEVPATHの/usb1/1-1/1-1.5/1-1.5.2/1-1.5.2:1.0/の部分に置き換えて、rulesファイルに書き込みます。

ACTION=="add", DEVPATH=="*/usb1/1-1/1-1.5/1-1.5.2/1-1.5.2:1.0/*", SYMLINK+="ttyUSB_Test"

これで、USBハブを使用した場合でもデバイス名を固定することができます。pythonプログラムからは、SYMLINK+で指定した名前で制御することができます。

USBデバイス名は、USBデバイスの固有のIDによっても名前を固定することができます。こちらも便利ですので、下記ブログも参照していただければと思います。

www.raspberrypirulo.net

ラズパイ 設定に戻る
トップページに戻る