2020年10月1日木曜日

Linux USB port固定(2)

 

http://tclip.blog.fc2.com/blog-entry-86.html 参照


LinuxにUSBシリアル変換ケーブルなどを挿すと
 /dev/ttyUSB0
の様に最後に数字が付いて認識されます。

この数字は挿した順によって決定されるので、複数挿しっぱなしで電源を入れたり、挿した順番を忘れてしまうとどれがどれだか分からなくなってしまいます。


そこで見分けるための方法の紹介です。
実は、シリアルデバイスは、/dev/以下だけではなく、/dev/serial/by-id/と/dev/serial/by-path/にもマウントされています。
by-id/はシリアルデバイスのメーカー、種類などが登録され、by-path/にはUSBの場所が登録されるようです。


少し実験してみました。
違う種類のUSBを挿してみると、以下のようになります。
ちなみに環境はUbutu9.10 + ThinkPad X200 です。

$ ls /dev/ | grep ttyUSB
ttyUSB0
ttyUSB1
$ ls /dev/serial/by-id/
usb-FTDI_US232B_FTCEWHMO-if00-port0
usb-Keyspan__a_division_of_InnoSys_Inc._Keyspan_USB_Serial_Adapter-if00-port0
$ ls /dev/serial/by-path/
pci-0000:00:1a.0-usb-0:1:1.0-port0
pci-0000:00:1d.0-usb-0:2:1.0-port0


この様に、そのままでは見分けることのできないttyUSB0とttyUSB1が見分けることができるようになります。
個人的には、by-path/よりby-id/の方が人間が見て分かりやすいので好きなのですが、by-id/だと同一のメーカーのときデバイスが1つしか表示されないため、2つを上手く使用できませんでした。


by-path/の実験で、同じUSBシリアル変換ケーブルを場所を変えてby-pathを表示させてみると、以下のようになります。

$ ls /dev/serial/by-path/ // このコマンドを毎回実行。以下省略
pci-0000:00:1a.0-usb-0:1:1.0-port0 //右側USBポート
pci-0000:00:1d.0-usb-0:2:1.0-port0 //左側手前
pci-0000:00:1d.0-usb-0:1:1.0-port0 //左側奥
pci-0000:00:1d.7-usb-0:1.4:1.0-port0 //左側奥+USBハブ
pci-0000:00:1d.7-usb-0:1.4.1:1.0-port0 //左側奥+USBハブ+USBハブ


人間から見ると少し分かり辛いかもしれませんが、毎回同じ場所に挿したり、挿しっぱなしにしたりするならこちらを使用することで、正しくデバイスを識別できると思います。


同様に他のデバイスにも、by-id/やby-path/が存在しており、これを使用することで、見分けることができます。
例えば/dev/input/は以下のようになっています。

input$ ls
by-id event1 event12 event2 event5 event8 mice mouse2
by-path event10 event13 event3 event6 event9 mouse0
event0 event11 event14 event4 event7 js0 mouse1

input$ ls by-id/
usb-Logitech_Logitech_Cordless_RumblePad_2-event-joystick
usb-Logitech_Logitech_Cordless_RumblePad_2-joystick
usb-Logitech_Logitech_USB_Keyboard-event-kbd
usb-Logitech_USB-PS_2_Optical_Mouse-event-mouse
usb-Logitech_USB-PS_2_Optical_Mouse-mouse

input$ ls by-path/
pci-0000:00:1d.0-usb-0:2:1.0-event-joystick
pci-0000:00:1d.0-usb-0:2:1.0-joystick
pci-0000:00:1d.7-usb-0:1.1:1.0-event-mouse
pci-0000:00:1d.7-usb-0:1.1:1.0-mouse
pci-0000:00:1d.7-usb-0:1.2:1.0-event-kbd
platform-i8042-serio-0-event-kbd
platform-i8042-serio-1-event-mouse
platform-i8042-serio-1-mouse

0 件のコメント:

コメントを投稿