查找 USB 串口设备对应的是哪个 /dev tty 文件

有两种方法。

方法一

串口设备会在 /dev/serial/ 目录下生成一个软链接列表。可以在 /dev/serial/ 目录下的 by-path/ 或 by-id/ 或 by-label/ 或 by-uuid/ 子目录里找到对应的 tty 文件。

比如我有一个 zigbee router USB dongle。

$ ls -l /dev/serial/by-path/platform-xhci-hcd.3.auto-usb-0\:2\:1.0
lrwxrwxrwx 1 root root 13  7月 13 00:00 /dev/serial/by-path/platform-xhci-hcd.3.auto-usb-0:2:1.0 -> ../../ttyACM0
$ ls -l /dev/serial/by-id/usb-1a86_USB_Single_Serial_550D016719-if00
lrwxrwxrwx 1 root root 13  7月 13 00:00 /dev/serial/by-id/usb-1a86_USB_Single_Serial_550D016719-if00 -> ../../ttyACM0

所以它对应的是 /dev/ttyACM0

方法二

先通过 lsusb 列出 usb 设备列表。

$ lsusb
Bus 001 Device 003: ID 1a86:55d4 QinHeng Electronics USB Single Serial
Bus 001 Device 002: ID 0bda:0179 Realtek Semiconductor Corp. RTL8188ETV Wireless LAN 802.11n Network Adapter
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

再通过 dmesg 查找内核消息。

[    4.783976] usb 1-2: new full-speed USB device number 3 using xhci-hcd
[    4.798624] mmc0: new high speed SDIO card at address 0001
[    4.937059] usb 1-2: New USB device found, idVendor=1a86, idProduct=55d4, bcdDevice= 4.44
[    4.944033] usb 1-2: New USB device strings: Mfr=0, Product=2, SerialNumber=3
[    4.951137] usb 1-2: Product: USB Single Serial
[    4.955577] usb 1-2: SerialNumber: 550D016719
...
[   11.760637] cdc_acm 1-2:1.0: ttyACM0: USB ACM device

cdc_acm 是一个 Linux 内核模块,通常用于支持通过 USB 端口进行串行通信。它是 “Communication Device Class (CDC) Abstract Control Model (ACM)” 的缩写。

  • Communications Device Class (CDC): 这是 USB 规范的一部分,定义了如何在通用串行总线(USB)上通信的设备应该如何工作。
  • Abstract Control Model (ACM): 这是 CDC 规范中的一部分,它定义了一种通用模型,使得在 USB 设备和主机之间进行串行通信成为可能。这包括像调制解调器或网络设备这样的设备。