Linux如何查看USB设备信息 Linux下lsusb命令应用详解

作者:袖梨 2026-06-03

USB设备连接后系统是否成功识别?无需急于更换线缆或重启设备,借助lsusb指令可快速获知内核识别状态,其响应速度甚至优于通过dmesg | grep usb查阅日志,能更精准定位具体硬件。

设备没被识别?先别急着换线或重启,lsusb 能立刻告诉你系统“看没看见”——而且比 dmesg | grep usb 更快定位到具体设备。

怎么一眼确认USB设备是否被内核识别

执行不带参数的 lsusb 是最直接的操作。该命令输出的是内核已完成枚举、分配了总线号和设备号的设备快照,并非在插入瞬间即刻产生,而是在枚举完成后才予以显示。若插入后无反应,可等待2至3秒再次运行。

  1. 输出行包含类似 Bus 001 Device 005: ID 0951:1665 Kingston Technology Digital DataTraveler SE9 64GB 的信息,表明设备已被识别,其ID与描述皆能正确对应。
  2. 若未出现新行,而 dmesg | tail -10 却显示 usb 1-1: new high-speed USB device,说明硬件通信成功,但厂商或产品ID未被 /usr/share/hwdata/usb.ids 收录,此时描述可能为空或显示为 “Unknown”。
  3. CentOS或RHEL 7默认未安装 usbutils,直接运行 lsusb 会报错 command not found,需先执行 yum install usbutils

怎么查清设备插在哪个物理口、走的是USB几.0

利用 lsusb -t 查看树状结构,这是判断物理连接及速率的关键。每条分支末尾的 12M480M5000M 代表真实协商速率,而非标称规格。

  1. 12M:对应于USB 1.1,常见于旧式键盘、鼠标;若新设备仅显示12M,很可能连接至USB 1.1 Hub下游或存在接触不良问题。
  2. 480M:对应USB 2.0,多数U盘、摄像头工作于此档位。若设备标称USB 3.0但仅显示480M,需检查是否插入蓝色接口(USB 3.0)而非黑色接口(通常为USB 2.0)。
  3. 5000M:对应USB 3.0(即USB 3.1 Gen1),需注意并非所有标注“USB 3.0”的线缆均支持全速,劣质线缆可能导致速率降至480M。
  4. 树中显示 Driver=usb-storageDriver=usbhid,表明驱动已绑定;若显示 Driver=(none),则说明缺少匹配的内核驱动,需检查模块是否加载(如执行 modprobe uas)或设备是否需要专有固件。

怎么快速定位某个特定U盘或摄像头

依靠肉眼逐一扫描列表效率较低,建议使用 -d-s 进行直接过滤。厂商ID与产品ID(例如 0951:1665)可从 lsusb 的首行内容直接获取,无需查阅文档。

  1. 查询Kingston U盘:运行 lsusb -d 0951:1665,匹配成功仅输出一行;失败则无输出(返回值显示为1)。
  2. 查询总线002上的所有设备:执行 lsusb -s 002:(注意冒号不可省略)。
  3. 查询总线001设备003:使用 lsusb -s 001:003,此组合可用于后续 lsusb -D 获取原始描述符。
  4. 同时查询多个设备ID:lsusb 不支持OR逻辑,只能编写脚本循环或借助 grep -E,示例:lsusb | grep -E '0951:1665|046d:c52b'

为什么 lsusb -v 有时卡住或权限拒绝

lsusb -v 会尝试读取设备全部描述符,包括配置、接口、端点等信息,但部分设备(特别是带有安全芯片或自定义固件的)可能拒绝非特权访问,或因响应超时而导致卡顿。

  1. 权限问题:普通用户运行 lsusb -v 时,部分字段可能为空或报错 libusb:error [udev_hotplug_event] ignoring udev event for unknown device。添加 sudo 通常可解决,但日常排查中并非必须,只需获取基础信息即可。
  2. 卡在某设备:使用 lsusb -v 2>&1 | head -n 50 截取前50行查看,确认是否停滞于特定设备。若确定某设备导致问题,可用 -s 参数跳过该设备后再试。
  3. 真正需要详细描述符时(如调试驱动兼容性),优先采用 lsusb -D /dev/bus/usb/BBB/DDD(其中BBB代表总线号,DDD代表设备号)。此法绕过libusb层直接读取设备文件,稳定性更高,但必须拥有root权限。

值得注意的是,设备插入后lsusb显示正常并不等同于设备功能正常。例如,U盘虽显示Mass Storage,但通过fdisk -l却无法看到分区,此时问题可能在于存储协议(BOT与UAS差异)或内核模块(uas模块未启用)。lsusb仅能反映设备是否已连接,无法判断其是否可用。

相关文章

精彩推荐