/sys/bus/usb/devices下的文件命名

/sys/bus/usb/devices下的文件命名:

root@Four-Faith:/sys/bus/usb/devices# ls -l

lrwxrwxrwx    1 root     root            0 Jan  1  1970 1-0:1.0 -> ../../../devices/platform/xhc_mtk/usb1/1-0:1.0
lrwxrwxrwx    1 root     root            0 Jan  8 23:27 1-2 -> ../../../devices/platform/xhc_mtk/usb1/1-2
lrwxrwxrwx    1 root     root            0 Jan  8 23:28 1-2:1.0 -> ../../../devices/platform/xhc_mtk/usb1/1-2/1-2:1.0
lrwxrwxrwx    1 root     root            0 Jan  8 23:28 1-2:1.1 -> ../../../devices/platform/xhc_mtk/usb1/1-2/1-2:1.1
lrwxrwxrwx    1 root     root            0 Jan  8 23:27 1-2:1.2 -> ../../../devices/platform/xhc_mtk/usb1/1-2/1-2:1.2
lrwxrwxrwx    1 root     root            0 Jan  8 23:28 1-2:1.3 -> ../../../devices/platform/xhc_mtk/usb1/1-2/1-2:1.3
lrwxrwxrwx    1 root     root            0 Jan  8 23:28 1-2:1.4 -> ../../../devices/platform/xhc_mtk/usb1/1-2/1-2:1.4
lrwxrwxrwx    1 root     root            0 Jan  8 23:28 1-2:1.5 -> ../../../devices/platform/xhc_mtk/usb1/1-2/1-2:1.5
lrwxrwxrwx    1 root     root            0 Jan  1  1970 2-0:1.0 -> ../../../devices/platform/xhc_mtk/usb2/2-0:1.0
lrwxrwxrwx    1 root     root            0 Jan  1  1970 usb1 -> ../../../devices/platform/xhc_mtk/usb1
lrwxrwxrwx    1 root     root            0 Jan  1  1970 usb2 -> ../../../devices/platform/xhc_mtk/usb2


如上可知:/sys/bus/usb/devices都是实际指向/sys/devices/platform/下的文件,文件的命名是根据USB命名的规则,比如:

/sys/bus/usb/devices/usb1,usb2表示表示两个usb hub,是root bug,usb1/内有属于usb bug device的一些属性,可以看一下:

root@Four-Faith:/sys/devices/platform/xhc_mtk/usb1# ls
1-0:1.0              bcdDevice            maxchild
1-2                  bmAttributes         product
authorized           busnum               quirks
authorized_default   configuration        remove
avoid_reset_quirk    descriptors          serial
bConfigurationValue  dev                  speed
bDeviceClass         devnum               subsystem
bDeviceProtocol      devpath              uevent
bDeviceSubClass      driver               urbnum
bMaxPacketSize0      ep_00                usb_device
bMaxPower            idProduct            version
bNumConfigurations   idVendor
bNumInterfaces       manufacturer

一个hub也是一个usb decice,因此一个usb device ,直接引用include/linux/usb/ch9.h中的定义是:(+表示在该目录下存在)

216 /* USB_DT_DEVICE: Device descriptor */
217 struct usb_device_descriptor {
218 __u8 bLength;
219 __u8 bDescriptorType;    //+descriptors
220 
221 __le16 bcdUSB;            //+version
222 __u8 bDeviceClass;        //+
223 __u8 bDeviceSubClass;    //+
224 __u8 bDeviceProtocol;    //+
225 __u8 bMaxPacketSize0;    //+
226 __le16 idVendor;        //+
227 __le16 idProduct;        //+
228 __le16 bcdDevice;        //+
229 __u8 iManufacturer;    //+manufacturer
230 __u8 iProduct;            //+product
231 __u8 iSerialNumber;    //+serial
232 __u8 bNumConfigurations;    //+
233 } __attribute__ ((packed));

这些字段在这里都包括了,但是在什么地方体现这个device 是hub呢??
cat bDeviceClass显示9,在ch9.h中定义:

#define USB_CLASS_HUB 9


lzj@lzj-laptop:/sys/bus/usb/devices/usb1$ cat bDeviceClass 
09

hub当然还是一个hub device,它具有普通usb device没有的一些性质, struct usb_hub_descriptor,但这些信息没有在sysfs中显示,可能是一个普通用户不需要知道hub的信息吧,所以内核开发者没有在sysfs中显示

**************以上是device(或者是USB hub)级别的信息,一个usb device有1个或多个interface.下面开始讲interface

1-0:1.0就是interface的目录,表示root hub1-port0上的configuration1的interface0,

命名规则是:roothub-port:configuration.interface.

看看1-0:1.0目录下的内容:

root@Four-Faith:/sys/devices/platform/xhc_mtk/usb1/1-0:1.0# ls
bAlternateSetting     bInterfaceSubClass    modalias
bInterfaceClass       bNumEndpoints         subsystem
bInterfaceNumber      driver                supports_autosuspend
bInterfaceProtocol    ep_81                 uevent

其实1-0:1.0是usb hub1自己占有的,在没有接入任何usb设备的时候,1-0:1.0都存在并且可以在usb1中找到,在用户接入USB设备之后并且该设备挂载在ubs hug1下,那么就会在usb1下多出1-2/目录,打开看:

drwxr-xr-x    5 root     root            0 Jan  9 13:46 1-2:1.0
drwxr-xr-x    6 root     root            0 Jan  9 13:46 1-2:1.1
drwxr-xr-x    6 root     root            0 Jan  9 13:45 1-2:1.2
drwxr-xr-x    6 root     root            0 Jan  9 13:46 1-2:1.3
drwxr-xr-x    6 root     root            0 Jan  9 13:46 1-2:1.4
drwxr-xr-x    5 root     root            0 Jan  9 13:46 1-2:1.5
-rw-r--r--    1 root     root         4096 Jan  9 13:46 authorized
-rw-r--r--    1 root     root         4096 Jan  9 13:46 avoid_reset_quirk
-rw-r--r--    1 root     root         4096 Jan  9 13:46 bConfigurationValue
-r--r--r--    1 root     root         4096 Jan  9 13:46 bDeviceClass
-r--r--r--    1 root     root         4096 Jan  9 13:46 bDeviceProtocol
-r--r--r--    1 root     root         4096 Jan  9 13:46 bDeviceSubClass
-r--r--r--    1 root     root         4096 Jan  9 13:46 bMaxPacketSize0
-r--r--r--    1 root     root         4096 Jan  9 13:46 bMaxPower
-r--r--r--    1 root     root         4096 Jan  9 13:46 bNumConfigurations
-r--r--r--    1 root     root         4096 Jan  9 13:46 bNumInterfaces
-r--r--r--    1 root     root         4096 Jan  9 13:46 bcdDevice
-r--r--r--    1 root     root         4096 Jan  9 13:46 bmAttributes
-r--r--r--    1 root     root         4096 Jan  9 13:46 busnum
-r--r--r--    1 root     root         4096 Jan  9 13:46 configuration
-r--r--r--    1 root     root        65553 Jan  9 13:46 descriptors
-r--r--r--    1 root     root         4096 Jan  9 13:46 dev
-r--r--r--    1 root     root         4096 Jan  9 13:46 devnum
-r--r--r--    1 root     root         4096 Jan  9 13:46 devpath
lrwxrwxrwx    1 root     root            0 Jan  9 13:46 driver -> ../../../../../bus/usb/drivers/usb
drwxr-xr-x    2 root     root            0 Jan  9 13:46 ep_00
-r--r--r--    1 root     root         4096 Jan  9 13:45 idProduct
-r--r--r--    1 root     root         4096 Jan  9 13:45 idVendor
-r--r--r--    1 root     root         4096 Jan  9 13:46 manufacturer
-r--r--r--    1 root     root         4096 Jan  9 13:46 maxchild
-r--r--r--    1 root     root         4096 Jan  9 13:46 product
-r--r--r--    1 root     root         4096 Jan  9 13:46 quirks
--w-------    1 root     root         4096 Jan  9 13:46 remove
-r--r--r--    1 root     root         4096 Jan  9 13:46 serial
-r--r--r--    1 root     root         4096 Jan  9 13:46 speed
lrwxrwxrwx    1 root     root            0 Jan  9 13:46 subsystem -> ../../../../../bus/usb
-rw-r--r--    1 root     root         4096 Jan  9 13:46 uevent
-r--r--r--    1 root     root         4096 Jan  9 13:46 urbnum
drwxr-xr-x    3 root     root            0 Jan  9 13:46 usb_device
-r--r--r--    1 root     root         4096 Jan  9 13:46 version

会多出如下:

drwxr-xr-x    5 root     root            0 Jan  9 13:46 1-2:1.0
drwxr-xr-x    6 root     root            0 Jan  9 13:46 1-2:1.1
drwxr-xr-x    6 root     root            0 Jan  9 13:45 1-2:1.2
drwxr-xr-x    6 root     root            0 Jan  9 13:46 1-2:1.3
drwxr-xr-x    6 root     root            0 Jan  9 13:46 1-2:1.4
drwxr-xr-x    5 root     root            0 Jan  9 13:46 1-2:1.5

这些就是用户刚刚挂载在ubs1 这个bug下的设备,他们占用usb bub1中port1,configuration都为1,而interface0 - 6都被用户占用,在1-2:1.0可以找到ttyUSB0/,ttyUSB0就是/dev/ttyUSB0相关。我现在挂载在usb hub1上的设备是usb转串口的lte模块,所以名字是ttyUSB*



 

<think>好的,用户现在在询问关于/sys/bus/usb/devices目录下列出的内容含义。之前他已经问过关于dmesg中usb1-1的问题,现在他可能是在进一步探索如何查看USB设备信息,特别是sys文件系统中的条目。 首先,我需要回忆sys文件系统的作用。sysfs是内核提供的一个虚拟文件系统,用于导出设备、驱动和总线的信息。用户列出的目录结构应该对应USB设备的层级关系。 用户给出的目录列表是: 1-0:1.0 1-1:1.0 1-1:1.1 1-1:1.2 1-1:1.3 usb1 1-1 2-0:1.0 usb2 需要解释每个条目的含义。首先,usb1和usb2代表USB总线,比如usb1是总线1,usb2是总线2。接下来是类似1-1这样的目录,根据之前的解释,这代表总线1上的设备1,即usb1-1。而带有冒号的条目,如1-1:1.0,是接口和配置的编号。比如1-1:1.0可能表示设备1-1的配置1下的接口0。 用户可能想知道这些目录的具体结构以及如何解读它们,进而关联到实际的物理设备。可能需要解释每个部分的命名规则,比如X-Y代表总线X上的设备Y,而:X.Y则代表配置和接口。 另外,用户之前的问题是关于如何查看usb1-1对应的设备信息,现在他可能是在实际操作中进入了sys目录,看到这些条目,但不太明白它们的含义,需要进一步指导如何通过这些目录获取设备的具体信息,比如厂商ID、产品ID等。 需要注意的是用户可能对sys文件系统不太熟悉,需要以简单明了的方式解释,避免使用过多技术术语,同时结合之前的解答,保持一致性。例如,之前提到了使用lsusb和/sys路径查看信息,现在可以进一步说明这些目录对应的内容,以及如何通过读取文件来获取详细信息。 可能还需要提醒用户某些目录可能代表不同的配置或接口,比如不同的接口可能对应不同的功能(如USB设备的多个功能,例如一个USB摄像头可能有视频和音频接口)。同时,要指出如何通过cat命令查看这些目录下的文件,如idVendor、idProduct等。 另外,用户提供的目录中有1-1:1.0到1-1:1.3,说明设备可能有多个接口。这可能涉及到USB复合设备,比如一个USB集线器或者多功能设备,每个接口对应不同的功能。需要解释这种情况,并说明如何区分。 最后,要确保回答结构清晰,分点解释,帮助用户逐步理解每个目录的含义,以及如何利用这些信息进行设备识别和问题排查。</think>在Linux系统的`/sys/bus/usb/devices`目录中,每个条目对应USB总线、设备或接口的层级关系。你列出的目录结构含义如下: --- ### **1. 目录命名规则** - **格式**:`X-Y[:Z.W]` - **`X-Y`**:表示总线`X`上的设备`Y`(如`1-1`表示总线1上的设备1)。 - **`:Z.W`**(可选):表示设备的配置`Z`和接口`W`(如`1-1:1.0`表示设备`1-1`的配置1、接口0)。 --- ### **2. 具体目录解析** 根据你的输出: ```bash usb1 # 总线1(根集线器) usb2 # 总线2(根集线器) 1-1 # 总线1上的设备1(直接连接到根集线器) 1-0:1.0 # 总线1根集线器(usb1)的配置1、接口0 1-1:1.0 # 设备1-1的配置1、接口0 1-1:1.1 # 设备1-1的配置1、接口1 1-1:1.2 # 设备1-1的配置1、接口2 1-1:1.3 # 设备1-1的配置1、接口3 2-0:1.0 # 总线2根集线器(usb2)的配置1、接口0 ``` #### **示例分析:`1-1:1.0`** - **`1-1`**:总线1上的设备1。 - **`:1.0`**:该设备的配置1(Configuration 1)、接口0(Interface 0)。 - **用途**:一个USB设备可能有多个接口(如摄像头同时支持视频和音频接口)。 --- ### **3. 如何查看具体设备信息?** #### **方法1:通过目录中的属性文件** 进入设备目录(如`1-1`),查看关键文件: ```bash cd /sys/bus/usb/devices/1-1 cat idVendor # 厂商ID(十六进制,如 8086) cat idProduct # 产品ID(十六进制,如 0024) cat product # 设备名称(如 "USB Keyboard") cat speed # 设备速度(如 "480" 表示USB 2.0) ``` #### **方法2:查看接口信息** 进入接口目录(如`1-1:1.0`): ```bash cd /sys/bus/usb/devices/1-1:1.0 cat bInterfaceClass # 接口类型(如 03表示HID设备) cat bInterfaceProtocol # 接口协议(如 01表示键盘) ``` --- ### **4. 常见设备类型与接口类(bInterfaceClass)** | 类代码(十六进制) | 设备类型 | 典型设备 | |--------------------|----------------------|--------------------------| | `03` | HID设备 | 键盘、鼠标 | | `08` | 大容量存储设备 | U盘、移动硬盘 | | `0e` | 视频设备 | 摄像头 | | `01` | 音频设备 | 麦克风、扬声器 | | `e0` | 无线控制器 | 蓝牙/Wi-Fi适配器 | --- ### **5. 实际应用示例** 假设你有一个USB键盘: 1. **目录路径**:`/sys/bus/usb/devices/1-1` 2. **查看厂商ID**:`cat idVendor` → `046d`(罗技) 3. **查看接口类型**:进入`1-1:1.0` → `cat bInterfaceClass` → `03`(HID设备) --- ### **总结** | 目录结构 | 含义 | 关键信息文件 | |-------------------|------------------------------|--------------------------| | `usb1` | 总线1的根集线器 | `max_child`(最大子设备数)| | `1-1` | 总线1上的设备1 | `idVendor`, `idProduct` | | `1-1:1.0` | 设备1-1的接口0 | `bInterfaceClass` | 通过这些目录和文件,可以精确识别USB设备类型、驱动绑定状态和硬件参数。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值