簡潔なバージョン:
デバイス情報などからパスを/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-path
ORに関連する内容は何も表示されません。 (文字列を直接書く必要はなく、Debianにはすでに変換を実行するツールがあります。)pci-0000:00:13.1
0:3:1.0
port0
私が試したこと:
lsusb -v
関連内容が何も表示されないようです。 TTYデバイスよりはるかに低いレベルのようです。udevadm info /dev/ttyUSB0
パスは実際には表示されますが、/devices/pci0000:00/0000:00:13.1/usb6/6-3/6-3:1.0/ttyUSB0/tty/ttyUSB0
TTYudevadm 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ルールを作成することをお勧めします。