服务器测评网
我们一直在努力

Linux下如何查看已连接的USB设备详细信息?

在Linux系统中,USB设备的管理与排查是系统管理员和开发人员经常需要面对的任务,通过命令行工具,用户可以高效地查看USB设备的详细信息、驱动状态及连接情况,本文将详细介绍多种查看USB设备的方法,涵盖基础信息查询、设备属性分析、驱动状态监控以及高级故障排查技巧,帮助用户全面掌握Linux环境下USB设备的查看与管理。

Linux下如何查看已连接的USB设备详细信息?

基础信息查询:快速识别已连接设备

使用 lsusb 命令列出USB设备

lsusb 是Linux中最常用的USB设备查看工具,无需安装即可在大多数发行版中使用(若缺失,可通过sudo apt install usbutilssudo yum install usbutils安装),执行lsusb将列出系统中所有已连接的USB设备,默认以简洁格式显示设备总线号、设备号、厂商ID及产品名称。

输出类似Bus 001 Device 005: ID 045e:0041 Microsoft Corp. Wireless Receiver的信息,其中045e是厂商ID(Microsoft),0041是产品ID,若需更详细的信息,可添加-v参数(如lsusb -v),这将显示设备的完整描述符,包括设备版本、最大包大小、配置信息等,适合深入分析设备属性。

通过 /proc/bus/usb 目录查看原始数据

内核会将USB设备的原始信息存储在/proc/bus/usb目录下,进入该目录后,可查看以总线号命名的子目录(如001/),其中包含设备文件(如005),直接读取这些文件可获取设备的二进制描述符数据,执行xxd /proc/bus/usb/001/005可查看设备的十六进制描述符信息,适合调试或开发场景。

设备属性分析:获取详细信息与拓扑结构

使用 usb-devices 命令查看层级关系

usb-devices是内核提供的一个命令行工具,无需额外安装,通过usb-devices即可输出USB设备的完整层级结构,其输出以树状形式展示设备间的连接关系,包括根集线器(Root Hub)、集线器(Hub)及功能设备(如鼠标、U盘)的详细信息,如设备类型、厂商、产品、接口协议等,输出中的Spd字段表示设备速度(如1.5为低速、12为全速、480为高速),Cfg字段表示当前配置编号。

解析 sysfs 文件系统中的USB信息

/sys/bus/usb/devices/目录是内核与用户空间交互的重要接口,其中存储了所有USB设备的实时属性数据,每个设备以“总线号-设备号”格式命名(如1-5),进入对应目录后,可查看devnum(设备号)、idVendor(厂商ID)、idProduct(产品ID)、speed(设备速度)等文件,执行cat /sys/bus/usb/devices/1-5/speed可获取设备当前运行速率(如480表示USB 2.0高速模式)。

Linux下如何查看已连接的USB设备详细信息?

通过/sys/class/usb/目录可按功能分类查看设备,如/sys/class/usbmisc/包含串口设备,/sys/class/block/下可能包含USB存储设备的块设备信息。

驱动状态监控:检查设备是否正确加载驱动

查看 dmesg 日志中的USB相关信息

内核日志(dmesg)记录了USB设备的驱动加载过程、设备识别及错误信息,执行dmesg | grep -i usb可过滤出与USB相关的日志,例如usb 1-1: new high-speed USB device number 4 using ehci_hcd表示设备已连接并被驱动识别,而usb 1-1: device descriptor read/64, error -71则可能表示设备连接异常。

使用 lsmod 检查已加载的USB驱动模块

lsmod命令可列出当前内核已加载的所有模块,包括USB驱动,通过lsmod | grep -i usb可查看USB相关驱动(如ehci_hcduhci_hcdusb_storage等)的加载状态及依赖关系,若设备未正常工作,可检查对应驱动是否已加载,或手动加载模块(如sudo modprobe usb_storage)。

分析 /sys/kernel/debug/usb/devices 文件

该文件由usbcore模块提供,以文本格式详细记录了所有USB设备的拓扑结构和驱动状态,执行cat /sys/kernel/debug/usb/devices可输出类似usb 1-1.2: 1-1.2: new high-speed USB device number 5 using ehci_hcd的信息,并包含设备的接口配置、驱动绑定情况等,适合高级用户排查驱动问题。

高级故障排查:定位设备异常与性能问题

使用 usb-devices 结合 lspci 检查控制器状态

若USB设备无法识别,可能是USB控制器出现问题,通过lspci | grep -i usb可查看系统中的USB控制器列表(如Intel Corporation 7 Series/C210 Series Chipset Family USB xHCI Host Controller),结合lspci -vvv可获取控制器的详细寄存器信息,判断控制器是否正常工作。

Linux下如何查看已连接的USB设备详细信息?

监控设备带宽使用情况

对于高速USB设备(如摄像头、外置硬盘),可通过usbtop工具(需安装usbtop包)实时监控设备的带宽占用情况,包括数据传输速率、端点使用状态等,帮助定位性能瓶颈。

重置USB设备解决连接问题

当设备出现异常时,可通过重置USB端口或设备解决问题,通过echo '1-1' | sudo tee /sys/bus/usb/drivers/usb/unbind卸载设备驱动,再echo '1-1' | sudo tee /sys/bus/usb/drivers/usb/bind重新绑定,或使用sudo usbreset /dev/bus/usb/001/005(需安装usbutils)重置特定设备。

Linux系统提供了丰富的工具和接口用于查看和管理USB设备,从基础的lsusb到高级的sysfs调试,用户可根据需求选择合适的方法,掌握这些工具不仅能帮助快速识别设备状态,还能有效排查驱动、控制器及硬件故障,提升系统维护效率,在日常使用中,建议结合多种工具综合分析,以获取最全面的设备信息。

赞(0)
未经允许不得转载:好主机测评网 » Linux下如何查看已连接的USB设备详细信息?