选项驱动程序正确匹配 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
我有一个类似的问题。
将此写入 /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)
到每一行的末尾。
我会使用 udev 并编写一些规则来为设备创建符号链接。
要获得足够的信息来区分设备,请对所有设备尝试以下操作:
$ udevadm info --query all --name /dev/ttyUSB0 --attribute-walk
Run Code Online (Sandbox Code Playgroud)