Python & Raspberry Pi 開発ブログ ☆彡

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

USBのデバイス名を固定する : ID指定

 

USBデバイスを複数挿入すると/dev/ttyUSB0、/dev/ttyUSB1、/dev/ttyUSB2...と認識されますが、/dev/ttyUSB0に割り当てられていたデバイスが再起動後、/dev/ttyUSB1に割り当てられてしまうということがあります。
割り当てが変わってしまうと、pythonコードで指定していたデバイス名(/dev/ttyUSBx)と整合が取れなくなり、動かなくなる場合があります。今回は、この現象を回避する方法を紹介します。

USBメモリのデバイス情報取得

USBデバイスのidVendorとidProductの情報が必要になります。
下記のページを参照して、idVendorとidProductを調べてください

www.raspberrypirulo.net

99-local.rulesファイルの編集

/etc/udev/rules.d/99-local.rules に下記の設定を追加します。

KERNEL=="ttyUSB*",  ATTRS{idVendor}=="xxxx", ATTRS{idProduct}=="xxxx", SYMLINK+="ttyUSB_Test"

ATTRS{idVendor}=="xxxx"   ⇒   xxxxには上記で調べたidVenderを記載します。
ATTRS{idProduct}=="xxxx"  ⇒   xxxxには上記で調べたidProductを記載します。
SYMLINK+="ttyUSB_Test"   ⇒   今回は例として"ttyUSB_Test"としましたが、任意の名前で構いません。どのデバイスかわかりやすい名前がよいと思います。

動作確認

設定後、Raspberry Piを再起動します。ls -al /devコマンドで確認すると、内部的にttyUSB_Test -> ttyUSB0とシンボリックリンクが張られていることがわかります。これで毎回、idVender、idProductで指定したデバイスが/dev/ttyUSB_Testというデバイス名で接続が可能になります。
pythonでUSBデバイスのパスを指定する時も"/dev/ttyUSB_Test"というパス名を使ってください。

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

www.raspberrypirulo.net

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