Ubuntu 系统下使用 lsusb 命令识别 USB 设备及端口类型详解

💡 背景介绍

在使用 Ubuntu 系统进行深度学习、计算机视觉或机器人开发时,识别 USB 设备连接情况尤为关键。尤其在使用 ZED 双目深度相机、外接摄像头、鼠标键盘等外设时,我们常需要确认这些设备是否正确连接、运行在哪个 USB 版本端口上,是否处于高速传输状态。

本文以实际使用 lsusb 命令的输出为例,带你一步步解读每一个字段,明确设备对应的总线(Bus)、端口类型(USB 2.0 / 3.0 / 更高),并指出几个容易忽视的判断细节。


一、命令使用与输出样例

首先在终端输入以下命令:

复制代码
lsusb

得到如下输出(为真实场景截取):

复制代码
Bus 002 Device 002: ID 2b03:f880 Technologies, Inc. ZED 2i
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 002: ID 30c9:00ff SunplusIT Inc HP True Vision FHD Camera
Bus 001 Device 021: ID 2b03:f881 
Bus 001 Device 020: ID 0424:2512 Microchip Technology, Inc. (formerly SMSC) USB 2.0 Hub
Bus 001 Device 003: ID 8087:0033 Intel Corp.
Bus 001 Device 019: ID 1c4f:0034 SiGma Micro Usb Mouse
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

二、字段含义快速解释

每一行的基本结构为:

复制代码
Bus <总线号> Device <设备号>: ID <厂商ID:产品ID> <厂商名> <产品名>
  • Bus:USB 总线编号,每条总线对应一组物理 USB 接口;

  • Device:设备号,系统动态分配;

  • ID:由厂商 ID 和产品 ID 组成,是识别设备的唯一标识;

  • 设备名称:部分设备支持自动识别,会显示厂商及产品名称。


三、USB 端口版本识别方法(关键)

很多人关心:"我的设备到底插在了 USB 2.0 还是 USB 3.0 上?"判断方法如下:

✅ 关键:根集线器(root hub)的 ID 值

每条 Bus 都对应一个 root hub,我们可以通过该设备的 ID 来判断 USB 总线版本:

每个 USB 总线(Bus)都会对应一个 "根集线器" (root hub,通常是该总线的第一个设备,Device 001),其 ID 中的第二个数值直接代表 USB 版本:

根集线器 ID 说明
1d6b:0002 USB 2.0 root hub
1d6b:0003 USB 3.0 root hub
1d6b:0004(少见) USB 3.1/3.2 root hub

通过 lsusb 输出可以明确:

  • Bus 001 是 USB 2.0 总线 (根集线器 ID 为 1d6b:0002)

    • 因此连接到 Bus 001 的所有设备(如 HP 摄像头、鼠标等)都工作在 USB 2.0 模式下。
  • Bus 002 是 USB 3.0 总线 (根集线器 ID 为 1d6b:0003)

    • 因此连接到 Bus 002 的设备(如 ZED 2i 相机)工作在 USB 3.0 模式下。

四、逐个设备分析与说明

1. ZED 2i 相机(USB 3.0)

Bus 002 Device 002: ID 2b03:f880 Technologies, Inc. ZED 2i

  • ZED 2i 是一款双目深度相机,数据吞吐量较大。

  • 连接在 Bus 002 上,处于 USB 3.0 通道,保证了数据带宽和帧率性能。

2. USB 3.0 根集线器(Bus 002)

Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub

  • USB 3.0 根集线器(Bus 002),负责管理所有连接到 USB 3.0 端口的设备。

3. HP True Vision FHD 摄像头(USB 2.0)

Bus 001 Device 002: ID 30c9:00ff SunplusIT Inc HP True Vision FHD Camera

  • 是笔记本自带的摄像头;

  • 接在 USB 2.0 总线上(Bus 001),传输速度有限。

4. 未识别设备(可能是 ZED 的辅助模块)

Bus 001 Device 021: ID 2b03:f881

  • 与 ZED 相机厂商 ID 相同,可能是 ZED 2i 的内置 IMU 或固件设备;

  • 注意:它插在 USB 2.0 上,可能影响功能完整性或性能(建议查阅官方文档)。

5. USB 集线器(Hub)

Bus 001 Device 020: ID 0424:2512 Microchip Technology, Inc.

  • 连接到 Bus 001(USB 2.0 总线)的 USB 2.0 集线器(扩展坞),编号 020。

  • 用于扩展更多 USB 2.0 接口,其下游可能连接其他设备(但此处未显示)。

6. Intel 的 USB 控制器或蓝牙模块

Bus 001 Device 003: ID 8087:0033 Intel Corp.

  • 连接到 Bus 001(USB 2.0 总线)的设备,编号 003。
  • 设备 ID 为 8087:0033,通常是 Intel 的 USB 控制器或蓝牙模块(部分笔记本的蓝牙通过 USB 总线连接)。

7. USB 鼠标

Bus 001 Device 019: ID 1c4f:0034 SiGma Micro Usb Mouse

  • 连接到 Bus 001(USB 2.0 总线)的设备,编号 19。
  • 识别为 "SiGma Micro Usb Mouse"(USB 鼠标),使用 USB 2.0 端口。

8. USB 2.0 根集线器(Bus 001)

Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

  • USB 2.0 根集线器(Bus 001),负责管理所有连接到 USB 2.0 端口的设备。
  • 编号 "0002" 代表这是 USB 2.0 标准的根集线器。

五、常见疑问解答

❓ 为什么我有两个接口(ZED 2i 出现两次)?

ZED 系列设备通常会作为复合 USB 设备出现,包括:

  • 图像数据设备(主相机)

  • 附加模块(如 IMU、环境传感器等)

  • 固件通信接口

这些会分别在 USB 总线中显示为不同的设备 ID。

❓ Cheese 能识别相机,ZED SDK 却提示 "Camera not detected"?

  • cheese 使用的是标准 Video4Linux(V4L2)接口,识别的是 UVC 摄像头(如 HP 摄像头);

  • ZED SDK 使用自己的驱动和底层协议,必须识别完整的 USB 3.0 连接;

  • 如果主 ZED 设备挂在 USB 2.0 上,ZED SDK 可能会直接拒绝启动。


六、总结与建议

设备名称 总线编号 USB 版本 是否正常识别 建议
ZED 2i Bus 002 USB 3.0 ✅ 保持连接在 USB 3.0 接口上
ZED 附加模块? Bus 001 USB 2.0 ❓ 尽可能保持主机全部接口 USB 3.0
HP 摄像头 Bus 001 USB 2.0 ✅ 正常工作,无需更换
鼠标、蓝牙模块等 Bus 001 USB 2.0 ✅ 正常使用

🛠️ 小贴士:

  • 使用 lsusb -t 可查看设备层级结构,更清晰显示设备是否通过集线器连接;

  • 若 ZED 无法正常工作,请确保:

    • 连接的是 USB 3.0 蓝色物理端口;

    • 电缆质量良好;

    • 系统已安装并正确配置 ZED SDK 与 CUDA。


欢迎收藏本篇教程,帮助你在开发或调试硬件连接时迅速判断 USB 设备状态。如你正在使用 ZED 相机或类似高带宽设备,务必保持 USB 3.0 接口连接,并避免通过低速 USB Hub 连接关键设备。