最简操作是执行不带参数的lsusb,若输出含“Bus X Device Y: ID XXXX:XXXX”行即表示内核已枚举识别;若无新行但dmesg显示“new USB device”,说明硬件通信成功但ID未收录。

lsusb 能立刻告诉你系统“看没看见”设备,但只显示已成功枚举的设备——插上后没反应?先别猜,用它快速验证物理层是否通。
怎么确认USB设备是否被内核识别
lsusb 输出里出现 Bus X Device Y: ID xxxx:xxxx 这一行,就说明内核已完成设备枚举、分配了地址、读取了基础描述符。这是最轻量也最关键的判断依据。
常见误区:
- 刚插上就跑
lsusb,可能还没完成枚举,等 2–3 秒再试 - 看到
/dev/sdb但lsusb没输出?不可能——存储设备必须先被 USB 子系统识别,才能生成块设备节点 - 设备描述显示
Unknown?大概率是/usr/share/hwdata/usb.ids里没收录该 ID,不影响功能,可用lsusb -d xxxx:yyyy精准定位
dmesg | tail -10 有 new high-speed USB device,说明硬件通信成功,只是 ID 未匹配;若连 dmesg 都没动静,检查线缆、端口或供电问题。
怎么查清设备插在哪个口、走的是 USB 几.0
lsusb -t 是唯一能反映真实物理连接和协商速率的命令。树状结构里每条分支末尾的 12M、480M、5000M 是当前实际运行速率,不是接口标称值。
关键点:
-
5000M表示 USB 3.0(Gen1),但劣质线缆或低速 Hub 下游会强制降速到480M - 看到
Driver=usb-storage或Driver=uas,说明驱动已绑定;Driver=(none)则需查模块是否加载(如modprobe uas)或设备是否需要固件 - 虚拟机中
lsusb -t显示的是虚拟 Hub,无法反映真实物理拓扑
|__ Port 1: Dev 5, If 0, Class=Mass Storage, Driver=uas, 5000M —— 表明该 U 盘走的是 USB 3.0 通道,且使用了高性能 uas 驱动。
怎么快速定位某个U盘或摄像头
靠肉眼扫lsusb 全量输出效率极低,直接用 -d 或 -s 过滤。
实操建议:
- 从
lsusb输出抄下 ID,比如0951:1665,执行lsusb -d 0951:1665,匹配即返回一行,不匹配则静默(返回值为 1) - 若已知设备在
Bus 001 Device 004,用lsusb -s 1:4(注意省略前导零,001:004→1:4) -
lsusb -s 002:(冒号不能省)可列出总线 002 上所有设备,适合多控制器平台聚焦排查 -
lsusb不支持多 ID OR 查询,要查多个设备得写循环或用grep -E '046d:0825|046d:c52b'
为什么 lsusb 看不到 /dev/ttyUSB0
lsusb 只管 USB 协议层识别,不管字符设备节点生成。/dev/ttyUSB0 是否出现,取决于内核是否加载对应串口驱动模块,并完成 CDC ACM 或 vendor-specific 接口绑定。
排查路径:
- 先确认设备是否被识别为通信类:
lsusb -v -d VID:PID 2>/dev/null | grep -i "bInterfaceClass.*02"(02是 CDC 类) - 查模块是否加载:
lsmod | grep -E "(usbserial|ch341|cp210x|ftdi_sio)" - 手动加载:
sudo modprobe usbserial && sudo modprobe cp210x(以 CP2102 为例) -
lsusb能看见设备,但dmesg没usbcore: registered new interface driver日志?说明模块未注册,或设备描述符中bInterfaceClass值异常
/dev/ttyUSB* 是否存在的,是 dmesg 里有没有 usbserial: USB Serial support registered 和后续的 cp210x 1-1:1.0: cp210x converter detected 这类消息。
设备插上后没反应,lsusb 是第一道筛子,但它只回答“有没有被 USB 子系统看见”;真正卡住的地方,往往在 dmesg 的几行日志里、驱动模块的加载状态中,或者 Hub 级联导致的隐性降速。


















