大学
一,什么是lsusb
https://man.he.net/man8/lsusb
[root@master1 ~]# rpm -ql usbutils | grep bin/usr/bin/lsusb/usr/bin/lsusb.py/usr/bin/usb-devices/usr/bin/usbhid-dump
lsusb — 列出 USB 设备,此命令属于usbutils 包
lsusb 是一个用于显示系统中 USB 总线及其所连接设备信息的工具。它利用 udev 的硬件数据库,将厂商 ID(Vendor ID)和产品 ID(Product ID)转换为完整、可读的设备名称。
二,参数
[root@master1 ~]# lsusb -hUsage: lsusb [options]...List USB devices -v, --verbose 启用详细模式,显示所列设备的详细信息。包括设备当前速度下的配置描述符(configuration descriptors)。如果可用,还会显示 USB 设备类(如集线器 hub、音频 audio、人机接口设备 HID、通信设备 communications、智能卡 chipcard 等)的类描述符。此选项可与 -t 选项一起使用。 -s [[bus]:][devnum] 仅显示指定总线号(bus)和/或设备号(devnum)的设备。两个编号均以十进制表示,且均可省略(例如 -s 1:5 或 - s :3)。 -d vendor:[product] 仅显示具有指定厂商 ID 和产品 ID 的设备。两个 ID 均以十六进制表示(例如 -d 046d:c52b)。 -D device 不扫描 /dev/bus/usb 目录,而是仅显示指定设备文件的信息。设备文件路径通常形如 /dev/bus/usb/001/001。此选项会输出类似 -v 的详细信息,必须以 root 权限运行 -t, --tree 以树状结构打印物理 USB 设备的层级关系。可通过多次使用 -v(如 -vv)进一步增加详细程度。 -V, --version 在标准输出打印版本信息后成功退出。 -h, --help 输出帮助信息返回值如果未找到指定的设备,lsusb 将返回非零退出码。
三,例子
1. 列出所有 USB 设备(基础用法)
[root@master1 ~]# lsusbBus 002 Device 002: ID 8087:8002 Intel Corp. Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hubBus 001 Device 002: ID 8087:800a Intel Corp. Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
每行格式为:Bus <总线编号> Device <设备编号>: ID <供应商ID>:<产品ID> <制造商/设备描述>
例如例1
Bus 002 Device 002: ID 8087:8002 Intel Corp.总线 2,设备 2:Intel 公司的某个 USB 设备。ID 8087:8002: 8087 是 Intel 的供应商 ID。 8002 是设备 ID,可能是 Intel 的集成 USB 控制器(如芯片组内置的 USB 主机控制器)。Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub总线 2,设备 1:USB 2.0 根集线器(Root Hub)。ID 1d6b:0002: 1d6b 是 Linux 基金会的供应商 ID(表示内核内置设备)。 0002 表示这是一个 USB 2.0 的根集线器,通常由主板芯片组提供。
2.以树状结构显示 USB 拓扑(推荐排查设备层级)
[root@master1 ~]# lsusb -t/: Bus 02.Port 1: Dev 1, Class=root_hub, Driver=ehci-pci/2p, 480M |__ Port 1: Dev 2, If 0, Class=Hub, Driver=hub/8p, 480M/: Bus 01.Port 1: Dev 1, Class=root_hub, Driver=ehci-pci/2p, 480M |__ Port 1: Dev 2, If 0, Class=Hub, Driver=hub/6p, 480M
输出格式说明
/: Bus XX.Port Y:表示 USB 总线编号(XX)和物理端口号(Y)。Dev N:设备编号(与 lsusb输出对应)。Class=...:设备类别(如 root_hub、Hub或具体功能类)。Driver=...:内核使用的驱动模块。480M:设备工作速度(480 Mbps = USB 2.0 高速模式)。
例如如下表示
/: Bus 02.Port 1: Dev 1, Class=root_hub, Driver=ehci-pci/2p, 480M |__ Port 1: Dev 2, If 0, Class=Hub, Driver=hub/8p, 480M
总线 2(Bus 02)
- Bus 02.Port 1:总线 2 的第 1 个端口。
- Dev 1:设备 1(虚拟的根集线器,由主板芯片组提供)。
- Class=root_hub:标识为 USB 根集线器。
- Driver=ehci-pci/2p:使用 ehci-pci驱动(USB 2.0 主机控制器驱动),2p表示支持 2 个端口(但实际可能更多,取决于硬件)。
- 480M:工作在 USB 2.0 高速模式。
- Port 1:根集线器的第 1 个端口连接了一个设备。
- Dev 2:设备 2(可能是物理集线器或 Intel 内置的虚拟集线器)。
- Class=Hub:这是一个 USB 集线器(扩展端口)。
- Driver=hub/8p:使用 hub驱动,8p表示提供 8 个下游端口。
- 480M:同样工作在 USB 2.0 高速模式。
3. 只查看某个特定设备(通过厂商ID:产品ID)
[root@master1 ~]# lsusb -d 8087:Bus 002 Device 002: ID 8087:8002 Intel Corp. Bus 001 Device 002: ID 8087:800a Intel Corp.
4. 查看某设备的详细信息(需 root 权限)
[root@master1 ~]# sudo lsusb -v -d 8087:8002Bus 002 Device 002: ID 8087:8002 Intel Corp. Device Descriptor: bLength 18 bDescriptorType 1 ............剩余输出略,下面详细解释
1. 设备基本信息(Device Descriptor)Bus 002 Device 002: ID 8087:8002 Intel Corp. Device Descriptor: bLength 18 # 描述符长度(18字节) bDescriptorType 1 # 设备描述符类型(固定值1) bcdUSB 2.00 # USB协议版本(2.0) bDeviceClass 9 Hub # 设备类别:9=集线器(Hub) bDeviceSubClass 0 Unused # 子类(未使用) bDeviceProtocol 1 Single TT # 协议:单事务转换器(TT) bMaxPacketSize0 64 # 端点0的最大包大小(64字节) idVendor 0x8087 Intel Corp. # 供应商ID(Intel) idProduct 0x8002 # 产品ID bcdDevice 0.05 # 设备固件版本(0.05) iManufacturer 0 # 制造商字符串索引(0=无) iProduct 0 # 产品名称字符串索引(0=无) iSerial 0 # 序列号字符串索引(0=无) bNumConfigurations 1 # 配置数量(1个) 2. 配置描述符(Configuration Descriptor) Configuration Descriptor: bLength 9 # 描述符长度(9字节) bDescriptorType 2 # 配置描述符类型(固定值2) wTotalLength 25 # 配置总长度(25字节,包括接口和端点) bNumInterfaces 1 # 接口数量(1个) bConfigurationValue 1 # 配置值(用于`-c`参数选择) iConfiguration 0 # 配置字符串索引(0=无) bmAttributes 0xe0 # 属性: Self Powered # 自供电(无需主机供电) Remote Wakeup # 支持远程唤醒(需主机支持) MaxPower 0mA # 最大功耗(0mA,实际由集线器自身供电)3. 接口描述符(Interface Descriptor)Interface Descriptor: bLength 9 # 描述符长度(9字节) bDescriptorType 4 # 接口描述符类型(固定值4) bInterfaceNumber 0 # 接口编号(0) bAlternateSetting 0 # 备用设置(0) bNumEndpoints 1 # 端点数量(1个) bInterfaceClass 9 Hub # 接口类别:集线器 bInterfaceSubClass 0 Unused # 子类(未使用) bInterfaceProtocol 0 Full speed (or root) hub # 协议:全速集线器(或根集线器) iInterface 0 # 接口字符串索引(0=无)4. 端点描述符(Endpoint Descriptor)Endpoint Descriptor: bLength 7 # 描述符长度(7字节) bDescriptorType 5 # 端点描述符类型(固定值5) bEndpointAddress 0x81 EP 1 IN # 端点地址:0x81(IN方向,端点1) bmAttributes 3 # 属性: Transfer Type Interrupt # 中断传输类型 Synch Type None # 无同步 Usage Type Data # 数据端点 wMaxPacketSize 0x0002 1x 2 bytes # 最大包大小:2字节 bInterval 12 # 中断间隔(12个单位,具体取决于速度)5. 集线器特性(Hub Descriptor)Hub Descriptor: bLength 11 # 描述符长度(11字节) bDescriptorType 41 # 集线器描述符类型(固定值41) nNbrPorts 8 # 下游端口数量(8个) wHubCharacteristic 0x0009 # 特性: Per-port power switching # 每个端口独立供电控制 Per-port overcurrent protection # 每个端口过流保护 TT think time 8 FS bits # 事务转换器思考时间(8个全速位) bPwrOn2PwrGood 0 * 2 milli seconds # 上电到稳定时间(0ms,实际可能更长) bHubContrCurrent 0 milli Ampere # 集线器控制电流(0mA,自供电) DeviceRemovable 0x00 0x00 # 设备可移除性(无特殊标记) PortPwrCtrlMask 0xff 0xff # 端口供电控制掩码(所有端口可独立控制)6. 端口状态(Hub Port Status)Hub Port Status: Port 1: 0000.0100 power # 端口1:已供电 Port 2: 0000.0100 power # 端口2:已供电 ... Port 8: 0000.0100 power # 端口8:已供电7. 其他信息Device Status: 0x0001 Self Powered # 自供电
5,确认蓝牙适配器是否被识别以及排查 USB 摄像头[root@master1 ~]# lsusb | grep -i bluetooth[root@master1 ~]# lsusb | grep -i camera[root@master1 ~]# # 然后查看详细信息sudo lsusb -v -d <厂商:产品ID>
四,补充
作者:Thomas Sailer, <sailer@ife.ee.ethz.ch>.
五,总结
以上就是全部内容,lsusb属于usbutils包,对于列出usb设备非常有用
最后的最后(Last but not least),欢迎交流:
关注公众号留言,或者在下方直接留言: