Linux USB 设备检测

这篇具有很好参考价值的文章主要介绍了Linux USB 设备检测。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


Linux 下查看 USB 设备

最常用的命令就是 lsusb ,但是 lsusb 仅能查看当前的简单 USB 设备信息,要查看详细的 USB 设备信息,最好还是借助 Linux 下的 debugfs 机制。

  • debugfs 挂载:
mount -t debugfs none /sys/kernel/debug/
  • 通过 debugfs 查看 USB 设备信息
cat /sys/kernel/debug/usb/devices

设备信息解释

通过 /sys/kernel/debug/usb/devices 设备节点可以看到当前 USB 设备的详细信息,具体如下:

T:  Bus=01 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#=  1 Spd=480  MxCh=16
B:  Alloc=  0/800 us ( 0%), #Int=  0, #Iso=  0
D:  Ver= 2.00 Cls=09(hub  ) Sub=00 Prot=01 MxPS=64 #Cfgs=  1
P:  Vendor=1d6b ProdID=0002 Rev= 4.18
S:  Manufacturer=Linux 4.18.0-240.el8.x86_64 xhci-hcd
S:  Product=xHCI Host Controller
S:  SerialNumber=0000:00:14.0
C:* #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr=  0mA
I:* If#= 0 Alt= 0 #EPs= 1 Cls=09(hub  ) Sub=00 Prot=00 Driver=hub
E:  Ad=81(I) Atr=03(Int.) MxPS=   4 Ivl=256ms

T:  Bus=01 Lev=01 Prnt=01 Port=01 Cnt=01 Dev#=  2 Spd=480  MxCh= 4
D:  Ver= 2.10 Cls=09(hub  ) Sub=00 Prot=02 MxPS=64 #Cfgs=  1
P:  Vendor=05e3 ProdID=0610 Rev=93.07
S:  Manufacturer=GenesysLogic
S:  Product=USB2.1 Hub
C:* #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr=100mA
I:  If#= 0 Alt= 0 #EPs= 1 Cls=09(hub  ) Sub=00 Prot=01 Driver=hub
E:  Ad=81(I) Atr=03(Int.) MxPS=   1 Ivl=256ms
I:* If#= 0 Alt= 1 #EPs= 1 Cls=09(hub  ) Sub=00 Prot=02 Driver=hub
E:  Ad=81(I) Atr=03(Int.) MxPS=   1 Ivl=256ms

T:  Bus=01 Lev=01 Prnt=01 Port=07 Cnt=02 Dev#=  3 Spd=480  MxCh= 5
D:  Ver= 2.00 Cls=09(hub  ) Sub=00 Prot=01 MxPS=64 #Cfgs=  1
P:  Vendor=046b ProdID=ff01 Rev= 1.00
S:  Manufacturer=American Megatrends Inc.
S:  Product=Virtual Hub
S:  SerialNumber=serial
C:* #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr=100mA
I:* If#= 0 Alt= 0 #EPs= 1 Cls=09(hub  ) Sub=00 Prot=00 Driver=hub
E:  Ad=81(I) Atr=03(Int.) MxPS=   1 Ivl=256ms

T:  Bus=01 Lev=02 Prnt=03 Port=03 Cnt=01 Dev#=  4 Spd=1.5  MxCh= 0
D:  Ver= 1.10 Cls=00(>ifc ) Sub=00 Prot=00 MxPS= 8 #Cfgs=  1
P:  Vendor=046b ProdID=ff10 Rev= 1.00
S:  Manufacturer=American Megatrends Inc.
S:  Product=Virtual Keyboard and Mouse
C:* #Ifs= 2 Cfg#= 1 Atr=e0 MxPwr=  0mA
I:* If#= 0 Alt= 0 #EPs= 1 Cls=03(HID  ) Sub=01 Prot=01 Driver=usbhid
E:  Ad=81(I) Atr=03(Int.) MxPS=   8 Ivl=10ms
I:* If#= 1 Alt= 0 #EPs= 1 Cls=03(HID  ) Sub=01 Prot=02 Driver=usbhid
E:  Ad=82(I) Atr=03(Int.) MxPS=   8 Ivl=10ms

针对上面的输出信息,具体解释如下:

  • T = 总线拓扑(Topology)结构(Lev, Prnt, Port, Cnt, 等),是指USB设备和主机之间的连接⽅式。
    针对 T 后的数据信息解释如下:
    ⼀般表示格式:(具体使用见下文)
    d = ⼗进制数
    x = ⼗六进制数
    s = 字符串
    拓扑信息(Topology)
T:   Bus=dd Lev=dd Prnt=dd Port=dd Cnt=dd Dev#=ddd Spd=ddd MxCh=dd
|      |     |      |       |       |      |        |        |__最⼤⼦设备
|      |     |      |       |       |      |        |__设备速度(Mbps)
|      |     |      |       |       |      |__设备编号
|      |     |      |       |       |__这层的设备数
|      |     |      |       |__此设备的⽗连接器/端⼝
|      |     |      |__⽗设备号
|      |     |__此总线在拓扑结构中的层次
|      |__总线编号
|__拓扑信息标志
  • B = 带宽(Bandwidth)(仅⽤于USB主控制器)。

带宽信息(Bandwidth)文章来源地址https://www.toymoban.com/news/detail-605764.html

B:   Alloc=ddd/ddd us (xx%), #Int=ddd, #Iso=ddd
|       |                      |         |__同步请求编号
|       |                      |__中断请求号
|       |__分配给此总线的总带宽
|__带宽信息标志
  • D = 设备(Device)描述信息。
    设备描述信息(Device)
D:   Ver=x.xx Cls=xx(sssss) Sub=xx Prot=xx MxPS=dd #Cfgs=dd
|       |      |             |      |       |        |__配置编号
|       |      |             |      |       |______缺省终端点的最⼤包尺⼨
|       |      |             |      |__设备协议
|       |      |             |__设备⼦类型
|       |      |__设备类型
|       |__设备USB版本
|__设备信息标志编号#1
  • P = 产品(Product)标识信息。
    产品标识信息(Product)
P:   Vendor=xxxx ProdID=xxxx Rev=xx.xx
|       |          |          |__产品修订号
|       |          |__产品标识编码
|       |__制造商标识编码
|__设备信息标志编号#2
  • S = 字符串(String)描述符。
    串描述信息(String)
S:   Manufacturer=ssss
|       |__设备上读出的制造商信息
|__串描述信息
S:   Product=ssss
|      |__设备上读出的产品描述信息,对于USB主控制器此字段为"USB *HCI Root Hub"
|__串描述信息
S:   SerialNumber=ssss
|       |__设备上读出的序列号,对于USB主控制器它是⼀个⽣成的字符串,表⽰设备标识
|__串描述信息
  • C = 配置(Config)描述信息 (* 表⽰活动配置)。
    配置描述信息(Config)
C:   #Ifs=dd Cfg#=dd Atr=xx MPwr=dddmA
|     |      |       |      |__最⼤电流(mA)
|     |      |       |__属性
|     |      |__配置编号
|     |__接⼝数
|__配置信息标志
  • I = 接⼝(Interface)描述信息。
    接⼝描述信息(可为多个)(Interface)
I:   If#=dd Alt=dd #EPs=dd Cls=xx(sssss) Sub=xx Prot=xx Driver=ssss
|    |      |       |       |             |     |        |__驱动名
|    |      |       |       |             |     |__接⼝协议
|    |      |       |       |             |__接⼝⼦类
|    |      |       |       |__接⼝类
|    |      |       |__端点数
|    |      |__可变设置编号
|    |__接⼝编号
|__接⼝信息标志
  • E = 端点(Endpoint)描述信息。
    端点描述信息(Endpoint)
E:   Ad=xx(s) Atr=xx(ssss) MxPS=dddd Ivl=dddms
|    |        |             |         |__间隔
|    |        |             |__终端点最⼤包尺⼨
|    |        |__属性(终端点类型)
|    |__终端点地址(I=In,O=Out)
|__终端点信息标志

到了这里,关于Linux USB 设备检测的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • linux|操作系统|centos7物理机安装网卡驱动8188gu(内核升级,firmware固件,USB设备管理,module管理)

    目前服务器领域centos7基本是主流的操作系统,而linux相对于Windows来说,软硬件方面的支持是差很多的,在硬件方面来说,以一个免驱的网卡为例,window xp可能不会自动识别到,但Windows10基本都会自动识别到,简简单单的即插即用。根本原因在Windows随着版本的升级,内置的各

    2024年01月20日
    浏览(71)
  • linux usb设备网络共享 usb/ip

    USB设备的网络共享可以通过USB/IP来实现, USB/IP把USB I/O信息封装成TCP/IP格式在网络端传输 ,可以实现usb的全部功能,且跨平台,是个透明的设备共享机制。 -b 后为上面列出的busid ip地址和端口号换成自已的 可以看出串口usb设备已经在客户端显示出来了

    2024年01月23日
    浏览(37)
  • 嵌入式linux下如何使用usb键盘

    首先usb键盘驱动的源代码位于一下目录: drivers/usb/input/usbkbd.c 将usb键盘驱动编译进内核: #make menuconfig Device Drivers—USB support----USB HIDBP Keyboard (simple Boot) support (注意:有可能默认设置USB键盘驱动是不可见的,需修改当前目录下的Kconfig文件) 保存设置后,重新编译内核: #sour

    2024年02月11日
    浏览(32)
  • Linux USB 驱动实验

    USB 是很常用的接口,目前大多数的设备都是USB 接口的,比如鼠标、键盘、USB 摄像头等,我们在实际开发中也常常遇到USB 接口的设备,本章我们就来学习一下如何使能Linux内核自带的USB 驱动。注意!本章并不讲解具体的USB 开发,因为USB 接口很复杂,不同的设备其协议也不同

    2024年02月07日
    浏览(27)
  • Linux: USB Gadget 驱动简介

    限于作者能力水平,本文可能存在谬误,因此而给读者带来的损失,作者不做任何承诺。 本文所有分析基于 Linux 4.14 内核代码。 USB 设备驱动,按照设备端关联的 USB 控制器 是工作在 主模式 还是 从模式 ,分为 USB 设备主机侧驱动 (主模式) ,或者 USB 设备从机侧驱动 (从模式

    2024年02月07日
    浏览(27)
  • Rockchip linux USB 驱动开发

    Linux USB 协议栈是一个分层的架构,如下图 5-1 所示,左边是 USB Device 驱动,右边是 USB Host 驱动,最底层是 Rockchip 系列芯片不同 USB 控制器和 PHY 的驱动。                                               Linux USB 驱动架构 Rockchip 系列芯片,主要使用两种 USB 2.0 PHY IP:Innosi

    2024年01月25日
    浏览(29)
  • 【usb】linux内核USB键盘驱动解析--普通键值上报及转化

    建议阅读前置文章【usb】linux内核USB键盘驱动解析–特殊键值上报及转化 以Linux5.10内核中USB键盘驱动为例进行解析:https://mirrors.edge.kernel.org/pub/linux/kernel/v5.x/linux-5.10.tar.gz 文件路径:linux-5.10/drivers/hid/usbhid/usbkbd.c 本次我们主要分析第120~139行的这个for循环。 for循环变量i范围是

    2023年04月08日
    浏览(24)
  • Linux驱动开发(十四)---USB驱动开发学习(键盘+鼠标)

    《Linux驱动开发(一)—环境搭建与hello world》 《Linux驱动开发(二)—驱动与设备的分离设计》 《Linux驱动开发(三)—设备树》 《Linux驱动开发(四)—树莓派内核编译》 《Linux驱动开发(五)—树莓派设备树配合驱动开发》 《Linux驱动开发(六)—树莓派配合硬件进行字

    2024年02月08日
    浏览(36)
  • Linux电脑USB怎么识别到我插入的设备是什么设备?

    不知道大家在学习Linux的时候有没有过这样的疑问,为什么我们通过同一个接口接入的不同USB设备,我们的电脑都可以识别到呢?为什么Linux电脑不会把鼠标识别成键盘呢?带着这些疑问我们一起来看一下USB的识别和加载过程。 当我们插入一个USB设备时,Linux内核会自动检测并

    2024年02月14日
    浏览(25)
  • Linux上的USB驱动器基准测试

    如果你想在U盘或其他外置USB硬盘上执行基准测试,程序与在普通内部存储设备上执行基准测试非常相似。我们需要做的就是测量USB硬盘的读写速度。在本教程中,你将看到如何在 Linux 系统上通过命令行和图形用户界面对USB硬盘进行基准测试。 在本教程中,你将学习 如何在主

    2024年02月08日
    浏览(31)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包