首页 > 其他分享 >USB相关的sysfs文件

USB相关的sysfs文件

时间:2024-08-30 16:05:49浏览次数:9  
标签:文件 USB bus sysfs ATK devices IMX6U root usb

前言

在 sysfs 文件系统下,查看 USB 设备,看到一些乱七八糟的设备显示,它们都是什么呢?今天来介绍一下。

root@ATK-IMX6U:~# ls /sys/bus/usb/devices/
1-0:1.0  1-1  1-1.1  1-1:1.0  1-1.1:1.0  1-1.1:1.1  1-1.3  1-1.3:1.0  1-1.3:1.1  usb1

目录内容详解

usb1

usb1 表示该 SOC 上接了 1 条 USB 总线,即 1 个 USB Controller。
PS:如果有多个 USB Controller,将会是 usb1、usb2、usb3。。

1-0:1.0

而 1-0:1.0 表示什么呢?

  • 1:表示 1 号总线,或者说 1 号 Root Hub
  • 0:表示端口号
  • 1:表示配置号
  • 0:表示接口号

命名规则:Root Hub-port:configuration.interface

1-1.1:1.0

  • 1:表示 1 号总线,或者说 1 号 Root Hub
  • 1:表示 Hub 连在 Root Hub 上的端口号
  • 1:表示设备连在 Hub 上的端口号
  • 1:表示配置号
  • 0:表示接口号

结构图

root@ATK-IMX6U:~# ls /sys/bus/usb/devices/
1-0:1.0  // root-hub:1,port:0,config:1,interface:0

1-1     // root-hub:1,hub:1
1-1:1.0  // root-hub:1,hub:1,port:1,config:1,interface:0

1-1.1    // root-hub:1,hub:1,port:1
1-1.1:1.0 // root-hub:1,hub:1,port:1,config:1,interface:0
1-1.1:1.1 // root-hub:1,hub:1,port:1,config:1,interface:1

1-1.3    // root-hub:1,hub:1,port:3
1-1.3:1.0 // root-hub:1,hub:1,port:3,config:1,interface:0
1-1.3:1.1 // root-hub:1,hub:1,port:3,config:1,interface:1

usb1

设备信息

在每个 USB 设备目录下都有一些参数来展示该设备的属性信息

root@ATK-IMX6U:~# ls /sys/bus/usb/devices/1-1/
1-1.1       avoid_reset_quirk    bDeviceProtocol  bMaxPower           configuration  devpath    idVendor     power      remove     urbnum
1-1:1.0     bcdDevice            bDeviceSubClass  bNumConfigurations  descriptors    driver     ltm_capable  product    speed      version
1-1.3       bConfigurationValue  bmAttributes     bNumInterfaces      dev            ep_00      maxchild     quirks     subsystem
authorized  bDeviceClass         bMaxPacketSize0  busnum              devnum         idProduct  port         removable  uevent

bDeviceClass

表示设备种类

root@ATK-IMX6U:~# cat /sys/bus/usb/devices/1-1/bDeviceClass
09

09 表示该设备是一个 Hub,详细类型参考如下

/*
 * Device and/or Interface Class codes
 * as found in bDeviceClass or bInterfaceClass
 * and defined by www.usb.org documents
 */
#define USB_CLASS_PER_INTERFACE        0    /* for DeviceClass */
#define USB_CLASS_AUDIO            1
#define USB_CLASS_COMM            2
#define USB_CLASS_HID            3
#define USB_CLASS_PHYSICAL        5
#define USB_CLASS_STILL_IMAGE        6
#define USB_CLASS_PRINTER        7
#define USB_CLASS_MASS_STORAGE        8
#define USB_CLASS_HUB            9
#define USB_CLASS_CDC_DATA        0x0a
#define USB_CLASS_CSCID            0x0b    /* chip+ smart card */
#define USB_CLASS_CONTENT_SEC        0x0d    /* content security */
#define USB_CLASS_VIDEO            0x0e
#define USB_CLASS_WIRELESS_CONTROLLER    0xe0
#define USB_CLASS_MISC            0xef
#define USB_CLASS_APP_SPEC        0xfe
#define USB_CLASS_VENDOR_SPEC        0xff

一个 USB Device 的类型为 0

root@ATK-IMX6U:~# cat /sys/bus/usb/devices/1-1.1/bDeviceClass // 鼠标
00

version

USB 协议版本

root@ATK-IMX6U:~# cat /sys/bus/usb/devices/1-1/version // USB2.0 的 Hub
 2.00
root@ATK-IMX6U:~# cat /sys/bus/usb/devices/1-1.1/version // USB2.0 的设备(鼠标)
 2.00

busnum & devnum

总线号 & 设备号

root@ATK-IMX6U:~# cat /sys/bus/usb/devices/1-1/busnum
1
root@ATK-IMX6U:~# cat /sys/bus/usb/devices/1-1.1/busnum
1

Hub 及其下挂的鼠标设备,总线号都是 1

root@ATK-IMX6U:~# cat /sys/bus/usb/devices/1-1/devnum
2
root@ATK-IMX6U:~# cat /sys/bus/usb/devices/1-1.1/devnum
3

dev

主设备号:次设备号

root@ATK-IMX6U:~# cat /sys/bus/usb/devices/1-1/dev
189:1
root@ATK-IMX6U:~# cat /sys/bus/usb/devices/1-1.1/dev
189:2

和 /dev/bus/usb/ 下设备一致

root@ATK-IMX6U:~# ls /dev/bus/usb/001/ -lh
total 0
crw-rw-r-- 1 root root 189, 0 Jun  5 10:08 001
crw-rw-r-- 1 root root 189, 1 Jun  5 10:08 002
crw-rw-r-- 1 root root 189, 2 Jun  5 10:08 003
crw-rw-r-- 1 root root 189, 3 Jun  5 10:08 004

bMaxPower

设备最大电流

root@ATK-IMX6U:~# cat /sys/bus/usb/devices/1-1/bMaxPower
100mA
root@ATK-IMX6U:~# cat /sys/bus/usb/devices/1-1.1/bMaxPower
300mA

idVendor & idProduct

厂商 ID & 产品 ID

root@ATK-IMX6U:~# cat /sys/bus/usb/devices/1-1/idVendor
05e3
root@ATK-IMX6U:~# cat /sys/bus/usb/devices/1-1/idProduct
0608

root@ATK-IMX6U:~# cat /sys/bus/usb/devices/1-1.1/idVendor
046d
root@ATK-IMX6U:~# cat /sys/bus/usb/devices/1-1.1/idProduct
c084

这和 lsusb 显示一致

root@ATK-IMX6U:~# lsusb
Bus 001 Device 004: ID 258a:1006 // 键盘
Bus 001 Device 003: ID 046d:c084 // 鼠标
Bus 001 Device 002: ID 05e3:0608 // Hub
Bus 001 Device 001: ID 1d6b:0002

product

产品名称

root@ATK-IMX6U:~# cat /sys/bus/usb/devices/1-1/product // USB2.0 Hub
USB2.0 Hub
root@ATK-IMX6U:~# cat /sys/bus/usb/devices/1-1.1/product // 罗技 G102 鼠标
G102 Prodigy Gaming Mouse

manufacturer

厂商

root@ATK-IMX6U:~# cat /sys/bus/usb/devices/1-1.1/manufacturer
Logitech

bcdDevice

固件版本号
同一个产品,升级之后(比如固件修改,新增功能),可以通过修改固件版本号来进行区别。

root@ATK-IMX6U:~# cat /sys/bus/usb/devices/1-1/bcdDevice
8536
root@ATK-IMX6U:~# cat /sys/bus/usb/devices/1-1.1/bcdDevice
0703

speed

速率

root@ATK-IMX6U:~# cat /sys/bus/usb/devices/1-1/speed
480
root@ATK-IMX6U:~# cat /sys/bus/usb/devices/1-1.1/speed
12

uevent

sysfs usb 设备的 uevent 是一个事件通知机制,表示当该 usb 设备在系统上被插入或拔出时,内核会发送一个事件通知给用户空间的系统进程,告知设备的状态变化。这个事件通知会包含一些关于设备的属性信息,例如设的厂商ID、产品ID、序列号等等,方便用户空间的应用程序进行设备管理和配置。

root@ATK-IMX6U:~# cat /sys/bus/usb/devices/1-1/uevent
MAJOR=189	// 主设备号
MINOR=1		// 次设备号
DEVNAME=bus/usb/001/002 // bus usb 总线号001 设备号002,和 lsusb 显示一致
DEVTYPE=usb_device		// USB 设备
DRIVER=usb				// 设备使用的驱动程序
PRODUCT=5e3/608/8536	// 厂商ID/产品ID/固件版本号
TYPE=9/0/1 
BUSNUM=001				// 总线号
DEVNUM=002				// 设备号

root@ATK-IMX6U:~# cat /sys/bus/usb/devices/1-1.1/uevent
MAJOR=189
MINOR=2
DEVNAME=bus/usb/001/003
DEVTYPE=usb_device
DRIVER=usb
PRODUCT=46d/c084/703
TYPE=0/0/0
BUSNUM=001
DEVNUM=003

bmAttributes

大小为一字节,不同的位,表示不同的特性。

  • bit7 是保留的,必须为1。
  • bit6 表示供电方式:1 设备自供电;0 设备是总线供电的。
  • bit5 表示是否支持远程唤醒:1 支持远程唤醒;0 不支持远程唤醒。
  • bit0~4 是保留的,默认为0。
root@ATK-IMX6U:~# cat /sys/bus/usb/devices/1-1/bmAttributes // 1110 0000,设备自供电,支持远程唤醒
e0
root@ATK-IMX6U:~# cat /sys/bus/usb/devices/1-1.1/bmAttributes // 1010 0000,设备是由总线供电的,支持远程唤醒
a0

drivers_autoprobe

drivers_autoprobe 是一个 sysfs 属性,用于在新插入 USB 设备时触发自动探测 USB 驱动程序。当将此属性设置为 1 时,内核将尝试自动加载适当的驱动程序,以便为任何新连接的 USB 设备进行配置。这可以节省手动 USB 设备所需的时间和精力。

root@ATK-IMX6U:~# cat /sys/bus/usb/devices/1-1/subsystem/drivers_autoprobe
1
root@ATK-IMX6U:~# cat /sys/bus/usb/devices/1-1.1/subsystem/drivers_autoprobe
1

标签:文件,USB,bus,sysfs,ATK,devices,IMX6U,root,usb
From: https://www.cnblogs.com/linhaostudy/p/18388902

相关文章

  • mysql参数和配置文件优先级
    mysqld-auto.cnf,持久化配置参数文件(位于DATA目录)(mysqld-auto.cnf中的变量如果和my.cnf相同则使用mysqld-auto.conf中的)命令行输入的配置参数代码中指定配置文件my.cnf中的配置参数命令行输入配置文件my.cnf中的配置参数/etc目录中的配置文件my.cnf中的配置参数/etc/mysql目录中......
  • NuGet缓存全局文件夹占用空间较大,系统盘清理
    查看https://learn.microsoft.com/zh-cn/nuget/consume-packages/managing-the-global-packages-and-cache-foldershttps://learn.microsoft.com/zh-cn/nuget/consume-packages/configuring-nuget-behavior 查看所有类别的缓存文件夹路径:dotnetnugetlocalsall--list......
  • 【ROS教程】编写launch文件
    @目录1.launch文件有哪些标签2.node标签2.1必选属性2.2可选属性2.3可选子级标签3.include标签3.1必选属性3.2可选属性3.3可选子级标签4.remap标签4.1必选属性5.param标签5.1必选属性5.2可选属性6.rosparam标签6.1必选属性6.2可选属性7.group标签7.1可选属性7.2可选子......
  • PowerShell Select-String:在字符串和文件中查找文本
    语法Select-String[-Culture<String>][-Pattern]<String[]>[-Path]<String[]>[-SimpleMatch][-CaseSensitive][-Quiet][-List][-NoEmphasis][-Include<String[]>][-Exclu......
  • Winobj 是一个由微软提供的工具,用于查看和浏览 Windows 操作系统中的对象命名空间。它
    Winobj是一个由微软提供的工具,用于查看和浏览Windows操作系统中的对象命名空间。它允许你查看系统中的各种对象,如文件系统对象、注册表键、符号链接等,帮助深入了解系统的内部结构。Winobj是由微软开发的一个工具,起源于微软的内部开发和调试需求。它最初是为了帮助开发人员和......
  • SQL server 数据文件物理层面迁移
    背景当前有一套SQLserver数据库(Primary+Mirror)主备环境数据盘大小不一致,且灾备环境无法对磁盘进行扩容,需要对灾备环境进行整体数据文件迁移,满足当前数据库运行。停止数据库mirro同步select'use[master]ALTERDATABASE['+db_name(database_id)+']SETPARTNERSUSPEND'froms......
  • 数据安全指南:电脑重要文件如何加密?
    在工作中,电脑是重要的办公工具,可以处理和保存大量数据。为了避免重要文件泄露,我们需要加密保护电脑重要文件。下面我们就来了解一下电脑重要文件的加密方法。EFS加密EFS是Windows系统提供的数据加密功能,基于公钥加密策略,采用透明加密方法。在加密文件时,不需要设置密码,通过......
  • ASP.NET Core6.0-wwwroot文件夹无法访问解决方法
    默认情况下,ASP.NETCore项目中的wwwroot文件夹被视为Web根文件夹。静态文件可以存储在Web根目录下的任何文件夹中,并可以使用该根目录的相对路径进行访问。在ASP.NET应用程序中,可以从应用程序的根文件夹或其下的任何其他文件夹提供静态文件。这已在ASP.NETCore中更改。现在,只有Web......
  • JVM的架构,具体阐述一下各个部分的功能?还有.class文件的加载执行过程。
    以下内容由chatgpt生成,仅供个人学习。JVM(JavaVirtualMachine,Java虚拟机)是运行Java程序的抽象计算机。它将编译后的.class文件(字节码)加载、解析、执行,并管理Java程序的内存、线程等资源。JVM的架构可以分为以下几个主要部分:1.JVM架构JVM的架构包括以下几个重要的......
  • Android经典实战之OkDownload:一个经典强大的文件下载开源库,支持断点续传
    本文首发于公众号“AntDream”,欢迎微信搜索“AntDream”或扫描文章底部二维码关注,和我一起每天进步一点点OkDownload是一个为Android平台设计的开源下载框架,它支持多线程下载、多任务处理、断点续传等功能,并且具有可靠性、灵活性和高性能的特点。这个库是FileDownloader的升级......