区分 Linux 上相同的 USB 设备

lan*_*ng2 5 linux usb udev

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

谢谢,

Pau*_*aul 5

如果您运行,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"
Run Code Online (Sandbox Code Playgroud)

这是从记忆中完成的,因此您需要确认语法。将 idvendor 和 idproduct 更改为 USB VID 和 PID,并将 ID_PATH 更改为您在udevadm monitor.

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