【发布时间】:2020-07-16 22:09:33
【问题描述】:
我正在使用 Linux 发行版 (Raspbian),并且我有两个 USB 串行适配器连接到微控制器。每当我连接两个适配器时,都会出现串行端口“/dev/ttyUSB0”和“/dev/ttyUSB1”;这里的“/dev/ttyUSB0”是最先物理连接的适配器(系统首先识别)。
现在,我正在寻找一种方法来确定在微控制器重新启动时哪个适配器是哪个适配器。即,两个适配器都插在它们的 USB 端口中,我无法物理拔出/重新插入以强制哪个适配器是“USB0”。
基础研究让我想到了这些命令(图片供参考):
ls /dev/ttyUSB* 列出活动的 USB 串行端口。
lsusb 获取有关 USB 总线和连接设备的更多信息。
有没有办法将这两个结果(或替代方法)联系起来以找出我需要什么?例如,在上面的图片中“/dev/ttyUSB0”是“Bus 001 Device 008: ID 1a86:...”,但是我怎样才能通过软件找到它(最好使用 Python,但 shell 脚本也可以) ?
【问题讨论】:
-
两条信息都由 udev 传递给热插拔脚本。因此,您可以阅读 udev(特别是“coldplug”部分)源代码,了解它是如何将它们配对的。
-
要查看运行中的代码,请尝试
udevinfo -a -n /dev/ttyUSB0或udevadm info --a --name /dev/ttyUSB0 -
这能回答你的问题吗? Associate physical usb port to device
-
@BenVoigt Loos 好像
udevinfo命令已更新为udevadm info。这看起来很有希望;你知道python中是否有等价的东西。如果没有,我想我会尝试使用 python 的 subprocess 模块从我的应用程序中运行该 bash 命令。 -
@DanMicroS:我搜索了“udevadm python”,发现:pyudev.readthedocs.io/en/latest
标签: linux raspberry-pi serial-port usbserial