必须运行lsusb命令查看内核USB子系统枚举结果,输出含“Bus X Device Y: ID xxxx:xxxx”即表示物理连接成功且枚举完成;若无此行但dmesg显示“new USB device”,说明通信成功但ID未收录。

要确认Linux系统中USB接口上实际连接了哪些设备,必须绕过文件管理器或挂载状态的干扰,直接读取内核USB子系统的实时枚举结果——因为U盘插着但没自动挂载、摄像头通电但未启动应用、串口转换器亮灯却无/dev/ttyUSB节点,这些情况全都会在lsusb输出里留下痕迹。
快速列出所有已识别的USB设备
打开终端,输入:lsusb
回车后若看到类似Bus 001 Device 004: ID 0951:1665 Kingston Technology DataTraveler SE9这样的行,说明该设备已被内核完成枚举、分配地址、读取基础描述符——这是物理连接成立的铁证。刚插上时可能延迟1–3秒才出现,别急着重插。
如果命令提示command not found,说明系统未安装usbutils包:Ubuntu/Debian用户运行sudo apt install usbutils,CentOS/RHEL 8+用户运行sudo dnf install usbutils。
看清设备插在哪个物理口、走的是USB几.0
执行:lsusb -t
树状结构里每条分支末尾的数字就是真实协商速率:12M是USB 1.1,480M是USB 2.0,5000M代表USB 3.0(Gen1)。注意:标称USB 3.0的设备若只显示480M,大概率是插在了USB 2.0 Hub下游或使用了劣质线缆。
缩进层级反映物理拓扑,例如|__ Port 2: Dev 5, If 0, Class=Mass Storage, Driver=uas, 5000M表明该U盘直连主机控制器第2口,且启用了高性能uas驱动——这比只看ID更能判断性能瓶颈所在。
精准定位某个特定设备
方法一:用厂商ID和产品ID过滤
从lsusb输出中抄下目标设备的ID(如046d:0825),执行:lsusb -d 046d:0825
匹配成功则返回一行,不匹配则静默(返回值为1),避免肉眼扫屏出错。
方法二:按总线号和设备号精确定位
若已知设备出现在Bus 002 Device 005,执行:lsusb -s 2:5(注意省略前导零,002:005 → 2:5)
这个组合可直接用于后续调试,比如抓取原始描述符:sudo lsusb -v -s 2:5 2>/dev/null | head -30。
方法三:查某条总线上全部设备
当系统有多个USB主控(如笔记本有原生USB 3.0和Type-C扩展坞),聚焦排查更高效:执行lsusb -s 002:(冒号不可省)列出总线002上所有设备。
确认设备是否被内核真正识别
第一步:执行lsusb,观察是否有对应Bus X Device Y: ID xxxx:xxxx行
第二步:若无新行,立即执行dmesg | tail -10 | grep -i "usb\|new"
第三步:若dmesg里有new high-speed USB device但lsusb无输出,说明硬件通信成功,只是ID未被/usr/share/hwdata/usb.ids收录——此时设备描述会是Unknown,但不影响功能。
【关键前提】看到/dev/sdb却lsusb无输出?这不可能——块设备节点生成的前提是USB子系统已完成枚举并绑定驱动。











