如何将 ttyUSBX 设备与 USB 串行设备匹配

sea*_*est 27 linux usb

选项驱动程序正确匹配 USB ID 并为此设备加载驱动程序。例如

# lsusb
Bus 001 Device 002: ID 19d2:0031 ONDA Communication S.p.A. ZTE MF636
Bus 001 Device 003: ID 12d1:14ac Huawei Technologies Co., Ltd.
Run Code Online (Sandbox Code Playgroud)

它还创建用于管理硬件的 ttyUSBX 设备

crw-rw---- 1 root uucp 188, 0 Jul  4 13:48 /dev/ttyUSB0
crw-rw---- 1 root uucp 188, 1 Jul  4 13:49 /dev/ttyUSB1
crw-rw---- 1 root uucp 188, 2 Jul  4 13:35 /dev/ttyUSB2
crw-rw---- 1 root uucp 188, 3 Jul  4 13:37 /dev/ttyUSB3
crw-rw---- 1 root uucp 188, 4 Jul  4 13:37 /dev/ttyUSB4
crw-rw---- 1 root uucp 188, 5 Jul  4 13:37 /dev/ttyUSB5
crw-rw---- 1 root uucp 188, 6 Jul  4 13:37 /dev/ttyUSB6
crw-rw---- 1 root uucp 188, 7 Jul  4 13:37 /dev/ttyUSB7
Run Code Online (Sandbox Code Playgroud)

但是,我有不止一个 USB 串行设备,我想知道哪个 ttyUSB 用于哪个 USBID。前任。/dev/ttyUSB1 -> 19d2:0031

你知道我可以从哪里得到这些信息吗?

Lek*_*eyn 17

查看 sysfs 文件系统。我的 USB 串口示例:

$ lsusb
Bus 003 Device 016: ID 067b:2303 Prolific Technology, Inc. PL2303 Serial Port
$ ls -l /sys/bus/usb-serial/devices
lrwxrwxrwx 1 root root 0 Jul  4 17:37 ttyUSB0 -> ../../../devices/pci0000:00/0000:00:1c.0/0000:02:00.0/usb3/3-1/3-1:1.0/ttyUSB0
$ $ grep PRODUCT= /sys/bus/usb-serial/devices/ttyUSB0/../uevent
PRODUCT=67b/2303/300
Run Code Online (Sandbox Code Playgroud)

如您所见,ttyUSB0映射到067b:2303我的计算机上。其他值得探索的地点是/sys/class/tty/。注意符号链接。


Wax*_*ead 15

您可以尝试查看您的设备是否在 /dev/serial/by-id/ 下注册

ls -l /dev/serial/by-id

这些名称应该是一致的,并且会指向(符号链接)到正确的 ttyUSBx

  • 我有两个相同的适配器(两个 Arduinos)连接到 Raspberry Pi。`ls -l /dev/serial/by-id` 只返回一个适配器 `../../ttyUSB1`,而 `ls -l /sys/bus/usb-serial/devices` 显示了两个。所以我认为这不是一个好的答案。 (2认同)

Nic*_*ell 6

我有一个类似的问题

将此写入 /etc/udev/rules.d/50-usb.rules

SUBSYSTEM=="tty", ATTRS{idVendor}=="19d2", ATTRS{idProduct}=="0031", SYMLINK+="ONDA"
SUBSYSTEM=="tty", ATTRS{idVendor}=="12d1", ATTRS{idProduct}=="14ac", SYMLINK+="HUAWEI"
Run Code Online (Sandbox Code Playgroud)

到最后。重启。

现在您可以使用/dev/ONDA来访问您的 ONDA 设备。

如果您希望非 root 用户能够使用这些,则添加

, MODE="0666"
Run Code Online (Sandbox Code Playgroud)

到每一行的末尾。


Mat*_*ner 5

我会使用 udev 并编写一些规则来为设备创建符号链接。

要获得足够的信息来区分设备,请对所有设备尝试以下操作:

$ udevadm info --query all --name /dev/ttyUSB0 --attribute-walk
Run Code Online (Sandbox Code Playgroud)