USBポートを明示したい | sy-engのブログ

sy-engのブログ

システムを作りたい。
自分用の記録。

arduino nano(互換品)をUSBで接続しているのだが、ttyUSB*では途中で抜き差しすると入れ替わる恐れがある。

そこで、以下を参考にデバイスを見分ける。

 

lsusb -tで見ると以下のような構成になっている。

$ lsusb -t
/:  Bus 04.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/4p, 10000M
/:  Bus 03.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/4p, 480M
    |__ Port 4: Dev 2, If 0, Class=Audio, Driver=snd-usb-audio, 480M
    |__ Port 4: Dev 2, If 1, Class=Audio, Driver=snd-usb-audio, 480M
    |__ Port 4: Dev 2, If 2, Class=Video, Driver=uvcvideo, 480M
    |__ Port 4: Dev 2, If 3, Class=Video, Driver=uvcvideo, 480M
/:  Bus 02.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/4p, 10000M
/:  Bus 01.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/10p, 480M
    |__ Port 5: Dev 2, If 0, Class=Hub, Driver=hub/4p, 480M
        |__ Port 1: Dev 4, If 0, Class=Hub, Driver=hub/4p, 480M
            |__ Port 1: Dev 6, If 0, Class=Vendor Specific Class, Driver=ch341, 12M
            |__ Port 2: Dev 7, If 0, Class=Vendor Specific Class, Driver=ch341, 12M
            |__ Port 3: Dev 8, If 0, Class=Hub, Driver=hub/4p, 480M
                |__ Port 4: Dev 9, If 0, Class=Hub, Driver=hub/4p, 480M
                    |__ Port 4: Dev 11, If 1, Class=Human Interface Device, Driver=usbhid, 1.5M
                    |__ Port 4: Dev 11, If 0, Class=Human Interface Device, Driver=usbhid, 1.5M
                    |__ Port 3: Dev 10, If 0, Class=Human Interface Device, Driver=usbhid, 1.5M
        |__ Port 2: Dev 5, If 3, Class=Video, Driver=uvcvideo, 480M
        |__ Port 2: Dev 5, If 1, Class=Audio, Driver=snd-usb-audio, 480M
        |__ Port 2: Dev 5, If 2, Class=Video, Driver=uvcvideo, 480M
        |__ Port 2: Dev 5, If 0, Class=Audio, Driver=snd-usb-audio, 480M
    |__ Port 6: Dev 3, If 0, Class=Communications, Driver=, 480M
    |__ Port 6: Dev 3, If 1, Class=CDC Data, Driver=cdc_subset, 480M
 

この状態で、Bus01のPort5->Port1の下のPort1,2のデバイスを見分けたい。

リンク先を参考にby-pathにあるデバイスを確認する。

lrwxrwxrwx 1 root root 13  8月 16 15:19 pci-0000:02:00.0-usb-0:5.1.1:1.0-port0 -> ../../ttyUSB0
lrwxrwxrwx 1 root root 13  8月 16 15:19 pci-0000:02:00.0-usb-0:5.1.2:1.0-port0 -> ../../ttyUSB1
このシンボリックリンクで見分けることにする。

 

もちろん、抜いたところと別のところに挿すと認識しなくなるので、注意が必要。

 

なお、これらのデバイスをlsusbで見ると以下のようになっている。

Bus 001 Device 007: ID 1a86:7523 QinHeng Electronics HL-340 USB-Serial adapter
Bus 001 Device 006: ID 1a86:7523 QinHeng Electronics HL-340 USB-Serial adapter
これをもとにlsusb -s 1:6 -vとlsusb -s 1:7 -vでusbの詳細情報を見たところ、

bcdDeviceの情報が異なっていた。

デバイス側から送られてくる情報なので、場合によってはこれをもとに見分けることもできそう。

ただ、たまたま、バージョンが違っているだけな気がする。

 

#信号を送って、見分けようとしたが、時間がかかり、また、デバイスを閉じたときにエラーが頻発したので、諦めた。