首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何从`/dev/bus/usb/006/015‘获得`/dev/ttyUSB0`’?

如何从`/dev/bus/usb/006/015‘获得`/dev/ttyUSB0`’?
EN

Unix & Linux用户
提问于 2019-12-27 14:23:49
回答 1查看 1.5K关注 0票数 0

简写版:

如何从设备信息(如/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)被插入。当设备连接时,它会显示一些有关它的数据,例如设备路径和名称:

代码语言:javascript
运行
复制
DEVPATH: /devices/pci0000:00/0000:00:13.1/usb6/6-3
DEVNAME: /dev/bus/usb/006/015

我希望第一个脚本调用第二个脚本,它使用串行通信与USB设备交互。现在,当我手动启动第二个脚本时,我使用TTY指定设备:

代码语言:javascript
运行
复制
./script2.py --device /dev/ttyUSB0

或者:

代码语言:javascript
运行
复制
./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.0port0相关的东西(我想我不需要自己构建字符串,而且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设备相关的内容。
EN

回答 1

Unix & Linux用户

发布于 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规则。

票数 0
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/559135

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档