识别哪个 USB 设备是 /dev/ttyUSB0
Identify which USB device is /dev/ttyUSB0
我正在使用 Linux 发行版 (Raspbian),我有两个 USB 串行适配器,我正在将它们连接到微控制器。每当我连接两个适配器时,都会出现串行端口“/dev/ttyUSB0”和“/dev/ttyUSB1”;这里“/dev/ttyUSB0”是最先物理连接的适配器(系统最先识别)。
现在,我正在寻找一种方法来确定在微控制器重启时是哪个适配器。即,两个适配器都保持插入其 USB 端口,我无法在物理上 unplug/replug 强制哪个适配器是“USB0”。
基础研究使我得到了这些命令(图片供参考):
ls /dev/ttyUSB*
列出活动的 USB 串行端口。
lsusb
获取有关 USB 总线和连接设备的更多信息。
有没有办法将这两个结果(或替代方法)联系起来,以确定我需要什么?例如,在上图中“/dev/ttyUSB0”是“Bus 001 Device 008: ID 1a86:...”,但我如何通过软件找到它(最好使用 Python,但是 shell 脚本也可以工作)?
既然你提到你想从 Python 开始,pyudev
有以下示例代码来访问 udev
所知道的关于设备文件标识的设备的所有信息:
from pyudev import Context, Device
context = Context()
device = Devices.from_device_file(context, '/dev/sda')
我相信 /dev/ttyUSB0
也能很好地工作。
见https://pyudev.readthedocs.io/en/latest/api/pyudev.html#pyudev.Devices.from_device_file
一旦在 Python 中拥有设备 udev 实例,就可以访问 device.attributes
和 device.properties
以获取大量信息,包括 VID、PID、字符串描述符等.文档说
all well-known dictionary methods and operators (e.g. .keys()
, .items()
, in
) are available to access device properties.
我正在使用 Linux 发行版 (Raspbian),我有两个 USB 串行适配器,我正在将它们连接到微控制器。每当我连接两个适配器时,都会出现串行端口“/dev/ttyUSB0”和“/dev/ttyUSB1”;这里“/dev/ttyUSB0”是最先物理连接的适配器(系统最先识别)。
现在,我正在寻找一种方法来确定在微控制器重启时是哪个适配器。即,两个适配器都保持插入其 USB 端口,我无法在物理上 unplug/replug 强制哪个适配器是“USB0”。
基础研究使我得到了这些命令(图片供参考):
ls /dev/ttyUSB*
列出活动的 USB 串行端口。
lsusb
获取有关 USB 总线和连接设备的更多信息。
有没有办法将这两个结果(或替代方法)联系起来,以确定我需要什么?例如,在上图中“/dev/ttyUSB0”是“Bus 001 Device 008: ID 1a86:...”,但我如何通过软件找到它(最好使用 Python,但是 shell 脚本也可以工作)?
既然你提到你想从 Python 开始,pyudev
有以下示例代码来访问 udev
所知道的关于设备文件标识的设备的所有信息:
from pyudev import Context, Device
context = Context()
device = Devices.from_device_file(context, '/dev/sda')
我相信 /dev/ttyUSB0
也能很好地工作。
见https://pyudev.readthedocs.io/en/latest/api/pyudev.html#pyudev.Devices.from_device_file
一旦在 Python 中拥有设备 udev 实例,就可以访问 device.attributes
和 device.properties
以获取大量信息,包括 VID、PID、字符串描述符等.文档说
all well-known dictionary methods and operators (e.g.
.keys()
,.items()
,in
) are available to access device properties.