在 Linux 上区分相同的 USB 设备

在 Linux 上区分相同的 USB 设备

我在 Linux 系统上使用两个相同的 USB 转串行适配器。因此,取决于谁先插入,其中一个将以名称 /dev/ttyUSB0 表示,另一个将以名称 /dev/ttyUSB1 表示。有什么技巧可以让名称持久吗?我有三个 USB 端口。是否可以将名称链接到物理端口?

谢谢,

答案1

如果您运行,udevadm monitor --properties您应该会看到可用于创建规则的各种属性。该ID_PATH属性表示设备插入的端口。插入串行到 USB 设备以查看 udev 看到的内容。

因此,创建一个 udev 规则应该很简单,当设备插入时创建一个符号链接,例如:

SUBSYSTEM=="usb_device", SYSFS{idVendor}=="xxxx", SYSFS{idProduct}=="xxxx", ENV{ID_PATH}=="pci....usb-0:1:0",SYMLINK+="ttyUSBport0"
SUBSYSTEM=="usb_device", SYSFS{idVendor}=="xxxx", SYSFS{idProduct}=="xxxx", ENV{ID_PATH}=="pci....usb-0:1:1",SYMLINK+="ttyUSBport1"

这是根据内存完成的,因此您需要确认语法。将 idvendor 和 idproduct 更改为 USB VID 和 PID,并将 ID_PATH 更改为您在 中找到的任何内容udevadm monitor

这应该会将正常的 /dev/ttyUSB0 设备保留在那里,但也会根据它插入的端口创建指向它的符号链接。如果您在 minicom 或您正在使用的任何设备中使用符号链接,您将始终根据您插入的端口获得正确的适配器。

相关内容