lsusbの出力を/ dev / ttyUSB *の名前と一致させる方法を見つけたいです。

lsusbの出力を/ dev / ttyUSB *の名前と一致させる方法を見つけたいです。

向き合う:

root@conserver01:/home/owen# lsusb -t
/:  Bus 02.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/4p, 5000M
    |__ Port 1: Dev 2, If 0, Class=Hub, Driver=hub/4p, 5000M
        |__ Port 1: Dev 3, If 0, Class=Hub, Driver=hub/4p, 5000M
        |__ Port 2: Dev 4, If 0, Class=Hub, Driver=hub/4p, 5000M
        |__ Port 3: Dev 5, If 0, Class=Hub, Driver=hub/4p, 5000M
        |__ Port 4: Dev 6, If 0, Class=Hub, Driver=hub/4p, 5000M
/:  Bus 01.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/1p, 480M
    |__ Port 1: Dev 2, If 0, Class=Hub, Driver=hub/4p, 480M
        |__ Port 1: Dev 3, If 0, Class=Hub, Driver=hub/4p, 480M
            |__ Port 1: Dev 4, If 0, Class=Hub, Driver=hub/4p, 480M
                |__ Port 3: Dev 13, If 0, Class=Vendor Specific Class, Driver=ftdi_sio, 12M
                |__ Port 1: Dev 6, If 0, Class=Vendor Specific Class, Driver=ftdi_sio, 12M
                |__ Port 4: Dev 15, If 0, Class=Vendor Specific Class, Driver=ftdi_sio, 12M
                |__ Port 2: Dev 9, If 0, Class=Vendor Specific Class, Driver=ftdi_sio, 12M
            |__ Port 2: Dev 5, If 0, Class=Hub, Driver=hub/4p, 480M
                |__ Port 4: Dev 16, If 0, Class=Vendor Specific Class, Driver=ftdi_sio, 12M
                |__ Port 2: Dev 12, If 0, Class=Vendor Specific Class, Driver=ftdi_sio, 12M
                |__ Port 3: Dev 14, If 0, Class=Vendor Specific Class, Driver=ftdi_sio, 12M
                |__ Port 1: Dev 8, If 0, Class=Vendor Specific Class, Driver=ftdi_sio, 12M
            |__ Port 3: Dev 7, If 0, Class=Hub, Driver=hub/4p, 480M
                |__ Port 1: Dev 11, If 0, Class=Vendor Specific Class, Driver=ftdi_sio, 12M
            |__ Port 4: Dev 10, If 0, Class=Hub, Driver=hub/4p, 480M

そして:

root@conserver01:/home/owen# ls -al /dev/ttyUSB*
crw-rw---- 1 root dialout 188, 0 Jun 17 03:49 /dev/ttyUSB0
crw-rw---- 1 root dialout 188, 1 Jun 17 03:50 /dev/ttyUSB1
crw-rw---- 1 root dialout 188, 2 Jun 17 03:51 /dev/ttyUSB2
crw-rw---- 1 root dialout 188, 3 Jun 17 03:54 /dev/ttyUSB3
crw-rw---- 1 root dialout 188, 4 Jun 17 03:54 /dev/ttyUSB4
crw-rw---- 1 root dialout 188, 5 Jun 17 03:55 /dev/ttyUSB5
crw-rw---- 1 root dialout 188, 6 Jun 14 20:20 /dev/ttyUSB6
crw-rw---- 1 root dialout 188, 7 Jun 14 20:20 /dev/ttyUSB7
crw-rw---- 1 root dialout 188, 8 Jun 14 20:20 /dev/ttyUSB8

私は2つのことを達成したいと思います:

  1. lsusb 出力行を /dev 項目と照合する方法。
  2. USBハブのポート(または特定のFTDIアダプタの1つが許可/有用)と/ dev /エントリの間に一貫した関係を作成する方法。

どんな助けでも大変感謝します。私はこれが以前に投稿された少なくとも1つの他の質問に似ていることを知っていますが、質問はあいまいで答えが似ているように見えますが、私が望むものを完全に達成していません。私の質問がより明確になることを願っています。

また、私はこの目的のためにlsusb以外のLinuxリソースを使用する答えに反対しないことに注意してください。これは私が最もよく知っているツールです。非FTDIデバイスは完全性のために組み込まれていますが、16ポートのGenesys Logicハブに接続されており、内部で積み重ねられた5つの4ポートGenesys Logicハブとして実装されているようです。

答え1

readlink -f /sys/class/tty/ttyUSB0/device次のものを提供する必要があります。

/sys/devices/pci0000:00/0000:00:12.2/usb1/1-4/1-4.3/1-4.3.1/1-4.3.1:1.0/ttyUSB0

完全なハードウェアパスがあります。

ほとんどのシステムでは、次のようなudev一部も作成すると予想されます。/dev/serial/by-path/<device-hardware-path>/dev/serial/by-id/<device-id>

$ readlink -f /dev/serial/by-path/pci-0000:00:12.2-usb-0:4.3.1:1.0-port0
/dev/ttyUSB0

udevadm info --name=ttyUSB0また、パスを含む多くの情報を提供する必要があります。

答え2

解決策は、カスタムuDEVルールを使用してより多くのシンボリックリンクを作成し、そのシンボリックリンクを使用することです。

私の場合、「ID_SERIAL_SHORT」などのudevルールで使用できる(少なくともFTDIデバイスで)製造元から提供されたデバイスのシリアル番号を使用することを選択しました。私が作成したuDEVルールは次のとおりです。/etc/udev/rules.d/60-usb-serial.rules

SUBSYSTEM=="tty", ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6001",SYMLINK+="tty.FTDI.%E{ID_SERIAL_SHORT}"
EOT

製品6001ベンダー0403は、私が使用しているFTDIシリアルアダプタです。

これにより、/dev/tty.FTDIですべての端末を使用できるようになります。

root@conserver01:/home/owen# ls -la /dev/tty.FTDI*
lrwxrwxrwx 1 root root 7 Sep 19 23:06 /dev/tty.FTDI.A95VS8DR -> ttyUSB6
lrwxrwxrwx 1 root root 7 Sep 19 23:06 /dev/tty.FTDI.A9G9Q4LI -> ttyUSB3
lrwxrwxrwx 1 root root 7 Sep 19 23:06 /dev/tty.FTDI.A9SS5W0V -> ttyUSB4
lrwxrwxrwx 1 root root 7 Sep 19 23:06 /dev/tty.FTDI.A9TYJTXQ -> ttyUSB1
lrwxrwxrwx 1 root root 7 Sep 19 23:06 /dev/tty.FTDI.A9VSKAKD -> ttyUSB7
lrwxrwxrwx 1 root root 7 Sep 19 23:06 /dev/tty.FTDI.A9X5K7PH -> ttyUSB0
lrwxrwxrwx 1 root root 7 Sep 19 23:06 /dev/tty.FTDI.AQ017QQB -> ttyUSB2
lrwxrwxrwx 1 root root 7 Sep 19 23:06 /dev/tty.FTDI.AQ017USH -> ttyUSB5

再起動するたびにシンボリックリンクの末尾の接続が変更される傾向がありますが、/etc/conserver/conserver.cfファイルはFTDI名を参照し、その名前は常にシリアルを介して正しいデバイスに接続されているため、関係ありません。数字。

これには、デバイスがどのハブのどのポートに接続されているかを心配する必要がないという追加の利点があります。ケーブルのRJ-45端を期待するデバイスに接続するか、必要に応じてserver.cfを変更して移動します。他のデバイスに接続する必要があります。

アドバイスありがとうございます。彼らは私が解決策を見つけるのに大きな助けをしましたが、最後まで到達できませんでした。他のProtectorユーザーもこれが役に立つと思います。

関連情報