【Linux】usb内核设备信息

usb内核设备信息


Linux内核中USB设备信息及拓扑结构可以从/sys/kernel/debug/usb/devices和/sys/bus/usb/devices中获取,下面介绍这些信息如何解读。

通过usbdump函数打印usb信息

[drivers/usb/core/devices.c]
#define ALLOW_SERIAL_NUMBER/*
Bus:  总线编号
Lev:  USB总线拓扑层级,最大7层,Lev=0为Root hub
Prnt: 父设备的设备号
Port: 设备接入端口的端口编号,从0开始,Root hub默认为0,其他Hub的下行端口从0开始编号。 
Cnt:  相同拓扑层级上设备的数量
Dev:  设备编号
Spd:  速度
MxCH: Hub的Port数量
*/
static const char format_topo[] =
"\nT:  Bus=%2.2d Lev=%2.2d Prnt=%2.2d Port=%2.2d Cnt=%2.2d Dev#=%3d Spd=%-4s MxCh=%2d\n";/*
Manufacturer: 厂商字符串
Product:      产品字符串
SerialNumber: 序列号
*/
static const char format_string_manufacturer[] ="S:  Manufacturer=%.100s\n";static const char format_string_product[] ="S:  Product=%.100s\n";#ifdef ALLOW_SERIAL_NUMBER
static const char format_string_serialnumber[] ="S:  SerialNumber=%.100s\n";
#endif/*
Alloc: bFirstInterface
Int:   bInterfaceCount
Iso:   bFunctionClass, 同时会输出类的名称
*/
static const char format_bandwidth[] ="B:  Alloc=%3d/%3d us (%2d%%), #Int=%3d, #Iso=%3d\n";/*
Ver:  bcdUSB
Cls:  bDeviceClass,同时会输出类的名称
Sub:  bDeviceSubClass
Prot: bDeviceProtocol
MxPS: bMaxPacketSize0
Cfgs: bNumConfigurations
*/
static const char format_device1[] ="D:  Ver=%2x.%02x Cls=%02x(%-5s) Sub=%02x Prot=%02x MxPS=%2d #Cfgs=%3d\n";/*
Vendor: idVendor
ProdID: idProduct
Rev:    bcdUSB
*/
static const char format_device2[] ="P:  Vendor=%04x ProdID=%04x Rev=%2x.%02x\n";/*
Ifs:    bNumInterfaces
Cfg:    bConfigurationValue
Atr:    bmAttributes
MxPwr:  bMaxPower * mul, USB_SPEED_SUPER: mul=8, 其他mul=2
*/
static const char format_config[] ="C:%c #Ifs=%2d Cfg#=%2d Atr=%02x MxPwr=%3dmA\n";/*
FirstIf: bFirstInterface
IfCount: bInterfaceCount
Cls:     bFunctionClass, 同时会输出类的名称
Sub:     bFunctionSubClass
Prot:    bFunctionProtocol
*/
static const char format_iad[] ="A:  FirstIf#=%2d IfCount=%2d Cls=%02x(%-5s) Sub=%02x Prot=%02x\n";/*
If:     bInterfaceNumber
Alt:    bAlternateSetting
EPs:    bNumEndpoints
Cls:    bInterfaceClass, 同时会输出类的名称
Sub:    bInterfaceSubClass
Prot:   bInterfaceProtocol
Driver: 使用的驱动名称
*/
static const char format_iface[] ="I:%c If#=%2d Alt=%2d #EPs=%2d Cls=%02x(%-5s) Sub=%02x Prot=%02x Driver=%s\n";/*
Ad:     bEndpointAddress, I: 输入, O: 输出
Atr:    bmAttributes, 同时输出传输类型
MxPS:   一次传输最大包长度
Ivl:    interval
*/
static const char format_endpt[] ="E:  Ad=%02x(%c) Atr=%02x(%-4s) MxPS=%4d Ivl=%d%cs\n";static ssize_t usb_device_dump(char __user **buffer, size_t *nbytes,loff_t *skip_bytes, loff_t *file_offset,struct usb_device *usbdev, struct usb_bus *bus,int level, int index, int count);

示例

在这里插入图片描述

Bus: 总线编号
Lev: USB总线拓扑层级,最大7层,Lev=0为Root hub
Prnt: 父设备的设备号
Port: 设备接入端口的端口编号,从0开始,Root hub默认为0,其他Hub的下行端口从0开始编号。
Cnt: 相同拓扑层级上设备的数量
Dev: 设备编号
Spd: 速度
MxCH: Hub的Port数量

USB2.0总共3级

0级为roothub
MxCH=1 只有一个port
Dev# = 1 设备号为1,只有一个设备

1级接在0级hub的0号port上,自身具有4个port,设备号为2,只有一个设备

2级有2个设备,接在1级hub的00和02 port上,设备号分别为5和6,没有port
#ifs 表示有几个接口
Cfg# 表示有几个配置
#Eps表示有几个端点

/sys/bus/usb/devices下信息的具体含义:
该文件下面的设备信息的命名规则遵循下面2条原则,内核中的USB设备命名规则也遵循下面2条原则。

usbn: 表示USB总线,如果是USB3.0控制器,则会有2条总线,分别是usbn和usbn+1。
bus-port.port…:configuration:interface(总线-端口.端口…:配置:接口): Root Hub的端口号为0,其他Hub的下行端口从1开始编号。
下图是一个示例,设备信息可进入文件查看。

usb1表示USB1总线。
1-0:1.0表示usb1总线的Root Hub,使用配置1和接口0。
1-1表示USB1总线Root Hub下面接的设备,端口编号为1,属于第1级Hub。
1-1:1.0表示第1级Hub使用配置1和接口0。
1-1.1表示第1级Hub的端口1。
1-1.1:1.0表示第1级Hub的端口1下面的设备使用配置1和接口0。
1-1.3表示第1级Hub的端口3。
1-1.3:1.0表示第1级Hub的端口3下面的设备使用配置1和接口0。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/492385.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Electron-Vue 开发下 dev/prod/webpack server各种路径设置汇总

背景 在实际开发中,我发现团队对于这几个路径的设置上是纯靠猜的,通过一点点地尝试来找到可行的路径,这是不应该的,我们应该很清晰地了解这几个概念,以下通过截图和代码进行细节讲解。 npm run dev 下的路径如何处理&…

devops和ICCID简介

Devops DevOps(Development 和 Operations 的组合)是一种软件开发和 IT 运维的哲学,旨在促进开发、技术运营和质量保障(QA)部门之间的沟通、协作与整合。它强调自动化流程,持续集成(CI&#xf…

[HNCTF 2022 Week1]baby_rsa

源代码: from Crypto.Util.number import bytes_to_long, getPrime from gmpy2 import * from secret import flag m bytes_to_long(flag) p getPrime(128) q getPrime(128) n p * q e 65537 c pow(m,e,n) print(n,c) # 62193160459999883112594854240161159…

12.19问答解析

概述 某中小型企业有四个部门,分别是市场部、行政部、研发部和工程部,请合理规划IP地址和VLAN,实现企业内部能够互联互通,同时要求市场部、行政部和工程部能够访问外网环境(要求使用OSPF协议),研发部不能访问外网环境…

生态学研究中,森林生态系统的结构、功能与稳定性是核心研究

在生态学研究中,森林生态系统的结构、功能与稳定性是核心研究内容之一。这些方面不仅关系到森林动态变化和物种多样性,还直接影响森林提供的生态服务功能及其应对环境变化的能力。森林生态系统的结构主要包括物种组成、树种多样性、树木的空间分布与密度…

springboot445新冠物资管理(论文+源码)_kaic

摘 要 使用旧方法对新冠物资管理的信息进行系统化管理已经不再让人们信赖了,把现在的网络信息技术运用在新冠物资管理的管理上面可以解决许多信息管理上面的难题,比如处理数据时间很长,数据存在错误不能及时纠正等问题。这次开发的新冠物资管…

1.zabbix概述

一、什么是监控 我们的生活里,离不开监控,监控能够最大程度上,发挥如下作用 实时监测,即使你不在电脑前,也能实时掌握监控区域情况,提高工作效率事后录像查询,如果不法事件未能即使发现制止&am…

QT绘图【点】【线】【圆】【矩形】

目录 1. 绘制点、线、圆、文本、矩形3. 调用及更新 1. 绘制点、线、圆、文本、矩形 QPainter painter(this); //实例化绘图 QPen pen(QColor(255,100,155)); //创建绘图工具(画笔) pen.setWidth(2); //画笔宽度 pen.setStyle(Qt::SolidLine); //实线…

知识分享第三十天-力扣343.(整数拆分)

343 整数拆分 给定一个正整数 n,将其拆分为至少两个正整数的和,并使这些整数的乘积最大化。 返回你可以获得的最大乘积。 示例 1: 输入: 2 输出: 1 解释: 2 1 1, 1 1 1。 示例 2: 输入: 10 输出: 36 解释: 10 3 3 4, 3 3 4 36。 说明: 你可…

NSDT 3DConvert:高效实现大模型文件在线预览与转换

NSDT 3DConvert 作为一个 WebGL 展示平台,能够实现多种模型格式免费在线预览,并支持大于1GB的OBJ、STL、GLTF、点云等模型进行在线查看与交互,这在3D模型展示领域是一个相当强大的功能。 平台特点 多格式支持 NSDT 3DConvert兼容多种3D模型…

USACO备考书籍合集

USACO,全称United States of America Computing Olympiad,即美国计算机奥林匹克竞赛。 以下是网上查到的关于USACO(美国计算机奥林匹克竞赛)的推荐书籍: 一、国内推荐书籍 有一种观点,冲击USACO铂金&…

汽车IVI中控开发入门及进阶(三十八):HiCar开发

手机投屏轻松实现手机与汽车的无缝连接,导航、音乐、通话等功能应有尽有,还支持更多第三方应用,让车载互联生活更加丰富多彩。 HiCar在兼容性和开放性上更具优势。 手机投屏可以说是车机的杀手级应用,大大拓宽了车机的可用性范围。其中华为推出的HiCar就是非常好用的一种。…

iOS - 超好用的隐私清单修复脚本(持续更新)

文章目录 前言开发环境项目地址下载安装隐私访问报告隐私清单模板最后 前言 在早些时候,提交应用到App Store审核,大家应该都收到过类似这样的邮件: Although submission for App Store review was successful, you may want to correct th…

CSS边框的样式

边框阴影 让元素更有立体感 img {box-shadow: 2px 10px 5px 20px #ff0000;border-radius: 44px;}语法:box-shadow:值1 值2 值3 值4 值5 值1:水平阴影的位置值2:垂直阴影的位置值3:模糊距离值4:阴影的尺寸…

UE5 物体自动跟随主角镜头转向

A、思路 Tick,设置物体世界旋转 旋转数值源于物体自身位置与玩家摄像机位置的差值 效果是物体自动转向,玩家镜头动,则物体也随之调整角度。 适合一些提示文字,如按键提示、帮助之类。 B、参考图

C 语言数据类型详解

目录 一、引言 二、基本数据类型 (一)整型 (二)浮点型 (三)字符型 三、构造数据类型 (一)数组 (二)结构体 (三)联合体&#…

《通信电子电路》入门手册

因为大学这门课好多同学理解不了这门课 于是考完试后花了两天时间整理了这份笔记,在这分享给完全没有学懂这门课的同学,也帮助“理解概念才能学得进去”的同学入门 笔记:通信电子电路 入门手册 —— flowus笔记 对应:《通信电子…

vscode远程服务器运行Jupyter文件时一直无法运行

问题: 在vscode运行jupyter时一直让我选择python版本,选择了之后又没有反应,如下所示: 原因: 服务器上没有安装Jupyter;解决: 运行pip install jupyter 进行安装(或者其他的方式也可…

鸿蒙项目云捐助第十七讲云捐助我的页面上半部分的实现

鸿蒙项目云捐助第十七讲云捐助我的页面上半部分的实现 在一般的应用app中都会有一个“我的”页面,在“我的”页面中可以完成某些设置,也可以完成某些附加功能,如“修改密码”等相关功能。这里的鸿蒙云捐助也有一个“我的”功能页面。这里对“…

网络安全(3)_安全套接字层SSL

4. 安全套接字层 4.1 安全套接字层(SSL)和传输层安全(TLS) (1)SSL/TLS提供的安全服务 ①SSL服务器鉴别,允许用户证实服务器的身份。支持SSL的客户端通过验证来自服务器的证书,来鉴别…