Python & Raspberry Pi 開発ブログ ☆彡

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

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

以前、USBデバイスのidVender、idProductを指定してデバイス名を固定する方法を紹介しました。この方法だと、まったく同じ2つデバイスを接続することができませんでした。今回はRaspberry PiのUSBポートの差す場所でデバイス名を固定する方法を紹介したいと思います。同じデバイスでも識別できるようになります(例えば、ArudinoUno2つ等)。それでは説明してきます。

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ポートに番号が割り振られています。

・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

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