新規記事の投稿を行うことで、非表示にすることが可能です。
2016年12月14日
raspberryPiでUSBポートとデバイス名をリンクさせる
raspberryPiでシリアル制御をしようとした時にシリアルを何本も使うとデバイス名が
再起動するごとに変わってしまって、その都度繋ぎたいユニットにあわせて
順番に線を繋ぎなおす必要があった
でもコレって実際の運用の時に困るんじゃ・・・・
ということで、いろいろ調べてみたらUSBポート毎に個別のデバイス名を設定することが出来みたいなので
やってみた。
まずは自分が繋げているUSBシリアルのデバイス情報をゲットするために
USBに調べたいデバイスを繋げて
コマンドプロンプトで
sudo udevadm info -q all -n /dev/ttyUSB0
とやって
その中の
ID_BUS
ID_PATH_TAG
ID_SERIAL
の情報を控えておく
次に
etc/udev/rules.dフォルダの中で
99-usbcomsetname.rules
みたいなファイルを作成。
ファイル名は任意だけどアタマの99は2桁でできるだけ大きい数字がいい
(権限が高い?)らしいので99で設定してます。
これは管理者権限で扱ってくださいね〜
そんでもってファイルの中身は
SUBSYSTEM=="tty",
ENV{ID_BUS}=="usb",
ENV{ID_PATH_TAG}=="platform-3f980000_usb-usb-0_1_2_1_0",
ENV{ID_SERIAL}=="FTDI_FT232R_USB_UART_AH03IDU6",
SYMLINK+="ttyUSB_P2"
としてやると、たとえばここでUSBの2番目のポートに刺さったデバイスは
自動的にttyUSB_P2
という名前に設定されてくれるようになります。
上の記述では改行しているけど実際のファイルでは改行なしで1行で記述してください。
ここで
ID_PATH_TAG の 「usb-usb-0_1_2_1_0」」の2のところがUSBの2番目のポートということになります。
raspberryPiはUSBポート4個歩けど調べてみたら2〜5番で割り振られています。
実際にどのポートが何番かは1つづつポートにさしてデバイス情報ゲットしてみるとわかると思うよん。
ネットでは記述すれば再起動しなくてもUSBにデバイス挿しなおせば認識すると書いてあったけど
自分の環境では再起動しないと割り振ってくれなかったので一応再起動を推奨します。
これであれば全部同じUSB-シリアルの変換ケーブルを使ってもポートの番号で制御ができるようになるので
実用に近づいたかな〜とか思ってます。
コレをやると外付けのHDDとかのデバイスで同じ型名の物を繋げてもポートで管理できたりとかもするので
(HUBでつなげていても細かく制御可能)いろいろと使えるんじゃないかな
再起動するごとに変わってしまって、その都度繋ぎたいユニットにあわせて
順番に線を繋ぎなおす必要があった
でもコレって実際の運用の時に困るんじゃ・・・・
ということで、いろいろ調べてみたらUSBポート毎に個別のデバイス名を設定することが出来みたいなので
やってみた。
まずは自分が繋げているUSBシリアルのデバイス情報をゲットするために
USBに調べたいデバイスを繋げて
コマンドプロンプトで
sudo udevadm info -q all -n /dev/ttyUSB0
とやって
その中の
ID_BUS
ID_PATH_TAG
ID_SERIAL
の情報を控えておく
次に
etc/udev/rules.dフォルダの中で
99-usbcomsetname.rules
みたいなファイルを作成。
ファイル名は任意だけどアタマの99は2桁でできるだけ大きい数字がいい
(権限が高い?)らしいので99で設定してます。
これは管理者権限で扱ってくださいね〜
そんでもってファイルの中身は
SUBSYSTEM=="tty",
ENV{ID_BUS}=="usb",
ENV{ID_PATH_TAG}=="platform-3f980000_usb-usb-0_1_2_1_0",
ENV{ID_SERIAL}=="FTDI_FT232R_USB_UART_AH03IDU6",
SYMLINK+="ttyUSB_P2"
としてやると、たとえばここでUSBの2番目のポートに刺さったデバイスは
自動的にttyUSB_P2
という名前に設定されてくれるようになります。
上の記述では改行しているけど実際のファイルでは改行なしで1行で記述してください。
ここで
ID_PATH_TAG の 「usb-usb-0_1_2_1_0」」の2のところがUSBの2番目のポートということになります。
raspberryPiはUSBポート4個歩けど調べてみたら2〜5番で割り振られています。
実際にどのポートが何番かは1つづつポートにさしてデバイス情報ゲットしてみるとわかると思うよん。
ネットでは記述すれば再起動しなくてもUSBにデバイス挿しなおせば認識すると書いてあったけど
自分の環境では再起動しないと割り振ってくれなかったので一応再起動を推奨します。
これであれば全部同じUSB-シリアルの変換ケーブルを使ってもポートの番号で制御ができるようになるので
実用に近づいたかな〜とか思ってます。
コレをやると外付けのHDDとかのデバイスで同じ型名の物を繋げてもポートで管理できたりとかもするので
(HUBでつなげていても細かく制御可能)いろいろと使えるんじゃないかな