在 Linux 中我们可以使用 lsusb 来列出 USB 设备和它的属性,lsusb 会显示驱动和内部连接到你系统的设备。直接在控制台输入 lsusb 即可。

如果无法运行 lsusb,使用以下命令安装(Debian)。

apt-get install usbutils

然后就可以运行 lsusb了。

$ lsusb
Bus 002 Device 002: ID 05e3:0612 Genesys Logic, Inc.
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 002: ID 05e3:0612 Genesys Logic, Inc.
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

Genesys 是台湾的 USB HUB 芯片厂商,我们可以看到在系统中同时使用了 USB 3.0 root hub 驱动和 USB 2.0 root hub 驱动。

再举个例子

Bus 002 Device 003: ID 17ef:4811 Lenovo Integrated Webcam [R5U877]
Bus 008 Device 002: ID 0a5c:217f Broadcom Corp. Bluetooth Controller

下面介绍如何理解输出,以上面输出的最后一行为例:

  • Bus 008 : 指明设备连接到哪(哪条总线)
  • Device 002 : 表明这是连接到总线上的第二台设备
  • ID : 设备的ID
  • Broadcom Corp. Bluetooth Controller :生产商名字和设备名

lsusb 命令的参数

-v 列出所有USB的详细

可以输入非常详细的信息,包括设备的电流等等。

配合grep命令指定特定的信息,大容量存储设备会有一个供应商名和ID。我们可以用它作为一个起点。

$ lsusb -v |grep -Ei ‘(idVendor|Mass\ Storage)’
idVendor 0×1005 Apacer Technology, Inc.
bInterfaceClass 8 Mass Storage

可以看到,系统上有一个来自 Apacer Technology, Inc(宇瞻)的USB大容量存储设备。

-t 以树层级结构输出USB设备

$ lsusb -t
/: Bus 08.Port 1: Dev 1, class="root"\_hub, Driver=uhci_hcd/2p, 12M
/: Bus 02.Port 1: Dev 1, class="root"\_hub, Driver=ehci_hcd/6p, 480M
|__ Port 1: Dev 4, If 0, class="stor"., Driver=usb-storage, 480M
|__ Port 6: Dev 3, If 0, Class=’bInterfaceClass 0x0e not yet handled’, Driver=uvcvideo, 480M
/: Bus 01.Port 1: Dev 1, class="root"\_hub, Driver=ehci_hcd/6p, 480M

数字12M和480M 是指USB类型的传输速率

  • 12M 意味着 USB 1.0/1.1的速率是 12Mbit/s
  • 480M 意味着 USB 2.0的速率是 480Mbit/s
  • 5G 意味着 USB 3.0 的速率是 5Gbit/s

这些就是 lsusb 命令的基础。可以用 lsusb 命令对你的系统上的USB设备做一个诊断。需要更多细节,输入 man lsusb 打开它的手册查看

01-01 12:57