「/dev/bus/usb/006/015」から「/dev/ttyUSB0」を取得するには?

「/dev/bus/usb/006/015」から「/dev/ttyUSB0」を取得するには?

簡潔なバージョン:

デバイス情報などからパスを/devices/pci0000:00/0000:00:13.1/usb6/6-3取得する/dev/bus/usb/006/015には?/dev/ttyUSB0/dev/serial/by-path/pci-0000:00:13.1-usb-0:3:1.0-port0

詳細バージョン:

特定の種類のUSBデバイス(Arduino)が接続されているかどうかを検出するスクリプトがあります。デバイスが接続されると、デバイスパスや名前などのデバイスに関する複数のデータが表示されます。

DEVPATH: /devices/pci0000:00/0000:00:13.1/usb6/6-3
DEVNAME: /dev/bus/usb/006/015

最初のスクリプトがシリアル通信を使用してUSBデバイスと対話する2番目のスクリプトを呼び出すことを望みます。次に、2番目のスクリプトを手動で起動するときにTTYを使用してデバイスを指定します。

./script2.py --device /dev/ttyUSB0

または:

./script2.py --device /dev/serial/by-path/pci-0000:00:13.1-usb-0:3:1.0-port0

2番目のスクリプトが最初のスクリプトによって自動的に起動されることを望みます。これを行うには、デバイスのパスと名前をTTYパスまたは/dev/serial/by-path

どうすればいいですか?

DEVPATHが表示されることを確認しましたが、by-pathORに関連する内容は何も表示されません。 (文字列を直接書く必要はなく、Debianにはすでに変換を実行するツールがあります。)pci-0000:00:13.10:3:1.0port0

私が試したこと:

  • lsusb -v関連内容が何も表示されないようです。 TTYデバイスよりはるかに低いレベルのようです。

  • udevadm info /dev/ttyUSB0パスは実際には表示されますが、/devices/pci0000:00/0000:00:13.1/usb6/6-3/6-3:1.0/ttyUSB0/tty/ttyUSB0TTYudevadm info /dev/bus/usb/006/015デバイスに関連するコンテンツは表示されません。

答え1

DEVPATH実際にはに存在するので、そのsysfsディレクトリにその名前を持つすべてのサブデバイスを見つけることができます。 TTYデバイスがあるDEVPATHと確認されると、echo /sys/devices/pci0000:00/0000:00:13.1/usb6/6-3/*/tty/*そのデバイスの名前が表示されます(ttyUSBx)。

ただし、親デバイスが表示され、スクリプトをトリガすると、子デバイスの検索が完了しない可能性があります。これは、TTYデバイスを探すときにまだ存在しない可能性があることを意味します。したがって、子デバイス自体に一致するudevルールを作成することをお勧めします。

関連情報