如何从设备信息(如/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设备交互。现在,当我手动启动第二个脚本时,我使用TTY指定设备:
./script2.py --device /dev/ttyUSB0
或者:
./script2.py --device /dev/serial/by-path/pci-0000:00:13.1-usb-0:3:1.0-port0
我希望第二个脚本由第一个脚本自动启动。为此,我需要将设备路径和名称映射到TTY路径或/dev/serial/by-path
路径。
我该怎么做?
在by-path
中,我注意到来自DEVPATH的pci-0000:00:13.1
的出现,但是我没有看到任何与0:3:1.0
或port0
相关的东西(我想我不需要自己构建字符串,而且Debian已经有了一个工具来为我进行转换)。
我试过的是:
lsusb -v
似乎没有显示出任何相关的东西:我认为它比TTY设备低得多。udevadm info /dev/ttyUSB0
确实显示了路径/devices/pci0000:00/0000:00:13.1/usb6/6-3/6-3:1.0/ttyUSB0/tty/ttyUSB0
,但是udevadm info /dev/bus/usb/006/015
没有显示任何与TTY设备相关的内容。发布于 2019-12-28 20:38:57
DEVPATH
实际上存在于sysfs
中,因此您可以在目录下找到具有该名称的所有子设备。如果您确实知道在您的DEVPATH
下面有一个TTY设备,echo /sys/devices/pci0000:00/0000:00:13.1/usb6/6-3/*/tty/*
将显示它的名称(ttyUSBx
)。
但是,当您的父设备出现并且您的脚本被触发时,这个子设备的发现可能还没有完成,这意味着当您寻找它时,这个TTY设备可能还不存在。因此,您最好创建一个与子设备本身匹配的udev规则。
https://unix.stackexchange.com/questions/559135
复制相似问题