首页 > 操作系统 >Linux查看USB设备信息:lsusb指令详解

Linux查看USB设备信息:lsusb指令详解

来源:互联网 2026-05-16 20:49:07

lsusb命令用于查看Linux内核已识别的USB设备。不带参数运行可列出设备总线号、ID及描述。若设备未出现,可能需等待枚举完成或检查物理连接。使用`-t`参数可查看设备树状图及实际通信速率(如12M、480M、5000M),帮助判断接口类型或线缆问题。`-d`或`-s`参数可按ID或总线号过滤设备。`-v`详细模式可能需要root权限,且输出正常仅表示设

设备插上没反应?先别急着换线或者重启系统。有一个命令能立刻告诉你,Linux内核到底“看没看见”这个设备——而且它比dmesg | grep usb更直接、定位更精准,它就是lsusb

Linux查看USB设备信息:lsusb指令详解

长期稳定更新的攒劲资源: >>>点此立即查看<<<

简单来说,lsusb输出的是内核已经完成枚举、分配好总线号和设备号的设备快照。它不是“即插即显”,而是“枚举完成才显示”。所以刚插上没看到,不妨等个两三秒再跑一次命令。

如何确认USB设备是否被内核识别

最直接的方法就是运行不带任何参数的lsusb。如果输出列表里出现了类似下面这样的新行,那恭喜你,设备已经被系统识别了:

Bus 001 Device 005: ID 0951:1665 Kingston Technology Digital DataTra veler SE9 64GB

这里包含了总线号(001)、设备号(005)、厂商/产品ID(0951:1665)以及系统识别的设备描述。

  • 有ID但描述是“Unknown”? 这通常意味着硬件通信已经成功(你可以用dmesg | tail -10看到类似usb 1-1: new high-speed USB device的记录),但系统的USB ID数据库(通常是/usr/share/hwdata/usb.ids)里没有收录这个厂商和产品ID,所以无法给出具体名称。
  • 完全没新行? 那可能就需要排查物理连接,或者设备本身有问题了。
  • 命令找不到? 在一些最小化安装的Linux发行版(比如CentOS/RHEL 7)上,lsusb命令可能默认没有安装,你需要先运行yum install usbutils来获取这个工具集。

如何查看设备物理接口与USB协议版本

想知道设备具体插在哪个USB口,或者它实际运行的速率是多少?这时候lsusb -t就派上用场了。它会以树状图的形式展示USB总线和设备的层级关系,信息非常直观。

关键在于每条分支末尾的数字,比如12M480M5000M,这代表的是设备与主机实际协商出来的通信速率,而不是设备标称的理论规格。

  • 12M:对应USB 1.1全速模式。现在比较少见,一些老旧的键盘、鼠标可能运行在这个速率。如果你的新设备只跑出12M,那大概率是插在了一个USB 1.1的集线器下游,或者接口接触不良。
  • 480M:对应USB 2.0高速模式。目前绝大多数U盘、摄像头、键鼠都工作在这个档位。如果你的设备标称是USB 3.0,但这里只显示480M,那就得检查一下:是不是插在了黑色的USB 2.0接口上?或者线缆有问题?
  • 5000M:对应USB 3.0(即USB 3.1 Gen1)的超高速模式。这里有个细节需要注意:不是所有标着“USB 3.0”的线缆都能支持到全速,劣质线缆很可能会降速到USB 2.0。

另外,在树状图中你还会看到Driver=xxx这样的信息:

  • Driver=usb-storage:表示这是一个大容量存储设备(如U盘),驱动已绑定。
  • Driver=usbhid:表示这是一个人机接口设备(如键盘、鼠标)。
  • Driver=(none):这有点麻烦,表示内核没有为这个设备找到匹配的驱动。你需要检查对应的内核模块是否加载(比如对于某些UAS协议的U盘,可能需要modprobe uas),或者设备是否需要特定的固件。

如何快速定位特定U盘或摄像头

当USB口上接了多个设备时,在一长串lsusb输出里用肉眼找特定设备效率很低。这时可以用-d-s参数进行精准过滤。

厂商ID和产品ID(比如上面的0951:1665)可以直接从lsusb命令的完整输出里抄,不需要额外查文档。

  • 按ID查找lsusb -d 0951:1665。如果设备存在,就只输出这一行;如果不存在,则没有任何输出(命令返回值为1)。
  • 查看某条总线上的所有设备lsusb -s 002:(注意冒号不能省略)。这会列出总线002上的所有设备。
  • 精确定位到总线上的某个设备号lsusb -s 001:003。这个组合在后续使用lsusb -D命令读取设备原始描述符时特别有用。
  • 想同时查多个设备ID? lsusb命令本身不支持“或”逻辑。变通方法是结合grep,例如:lsusb | grep -E '0951:1665|046d:c52b'。当然,写个小脚本循环查询也是可以的。

lsusb -v 命令卡住或权限拒绝的原因

lsusb -v(verbose模式)会尝试读取设备的全部描述符信息,包括配置、接口、端点等细节。但问题也出在这里:

  • 权限问题:某些设备(尤其是带有安全芯片或自定义固件的)会拒绝非特权访问。普通用户运行lsusb -v可能会看到部分字段为空,甚至报错(如libusb:error [udev_hotplug_event] ignoring udev event for unknown device)。加上sudo提权通常可以解决,但对于日常排查来说,基础信息已经足够,不一定需要详细描述符。
  • 命令卡住:有些设备响应慢,或者描述符结构复杂,可能导致命令卡顿。这时可以用lsusb -v 2>&1 | head -n 50只查看前50行输出,判断是否卡在某个特定设备上。如果确定是某个设备导致的,可以用-s参数跳过它再试。

如果真的需要获取详细的设备描述符信息(比如调试驱动兼容性问题),更推荐使用lsusb -D /dev/bus/usb/BBB/DDD命令(BBB代表总线号,DDD代表设备号)。这个命令会绕过libusb库,直接读取USB设备文件,结果更稳定可靠,但必须拥有root权限才能执行。

最后,有一个非常关键但又容易被忽略的点:lsusb显示正常,并不等同于设备功能正常。

举个例子,一个U盘在lsusb里可能完美显示为Mass Storage设备,驱动也绑定了,但当你用fdisk -l查看时,却找不到它的分区。问题可能出在存储协议(比如BOT协议与UAS协议的兼容性问题)或者内核模块(比如uas模块没有加载)上。lsusb只管“设备有没有被系统识别和连接上”,至于“设备能不能被上层应用正常使用”,那是另一回事了。

侠游戏发布此文仅为了传递信息,不代表侠游戏网站认同其观点或证实其描述

热游推荐

更多
湘ICP备14008430号-1 湘公网安备 43070302000280号
All Rights Reserved
本站为非盈利网站,不接受任何广告。本站所有软件,都由网友
上传,如有侵犯你的版权,请发邮件给xiayx666@163.com
抵制不良色情、反动、暴力游戏。注意自我保护,谨防受骗上当。
适度游戏益脑,沉迷游戏伤身。合理安排时间,享受健康生活。