选项驱动程序正确匹配 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.
它还创建 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
但是,我有多个 USB 串行设备,我想知道哪个 ttyUSB 对应哪个 USBID。前任。 /dev/ttyUSB1 -> 19d2:0031
您知道我可以在哪里获得这些信息吗?
答案1
您可以尝试查看您的设备是否已在 /dev/serial/by-id/ 下注册
ls -l /dev/serial/by-id
这些名称应该一致并且将指向(符号链接)正确的 ttyUSBx
答案2
看一下 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
如您所见,ttyUSB0
映射到067b:2303
我的计算机上。其他值得探索的地点是/sys/class/tty/
。注意符号链接。
答案3
我曾有一个类似的问题。
将其写入 /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"
到最后。重启。
现在您可以使用它/dev/ONDA
来访问您的 ONDA 设备。
如果您希望非 root 用户能够使用这些,请添加
, MODE="0666"
到每行的末尾。
答案4
以下命令将为我提供与 19d2:0016 关联的 ttyUSB 设备名称列表(这是 ZTE MF831 LTE 棒的“调制解调器模式”ID,您的可能有所不同。):
for i in $(find -L /sys/bus/usb/devices/ -maxdepth 2 -name "ttyUSB*"); do
egrep -i "v19d2p0016(.*)in02" $i/../modalias >/dev/null && echo "/dev/${i##*/}"
done
这将循环访问 /sys/bus/usb/devices 中文件名为 ttyUSB* 的文件列表,包括符号链接。在结果中,我们将搜索名为 modalias 的文件,并查找包含供应商 id“v”“19d2”和产品 id“p”0016 的字符串。如果输出匹配,我们将回显前缀为“/dev/”的字符串“在USB前面?姓名。据我所知,第一个或通常是最后一个(最大数字)是中兴设备的调制解调器端口。您可以将结果回显到 /tmp/ 中的文件,并相应地使用 head -n1 或 tail -n1 行。如果您有集线器,您可能需要增加最大深度。
这不是最优雅的方式,但它几乎适用于任何 Linux 变体。