如何从设备信息(如/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
复制相似问题