- 拓扑结构
这里以一个具体的例子来说明lsusb -t的输出。在一台主控上插入一个u盘,一个键盘及一个脚踏板,主要的拓扑结构为:
root hub4
|
hub
|
dev(u盘)
root hub3
|
hub
|
dev(脚踏板) dev(键盘)
- sysfs
lsusb其实也是通过解析sysfs来获取usb信息的,上述例子的sysfs内容为:
/sys/bus/usb/devices/
├── 1-0:1.0
├── 2-0:1.0
├── 3-0:1.0
├── 3-1
├── 3-1:1.0
├── 3-1.1
├── 3-1.1:1.0
├── 3-1.1:1.1
├── 3-1.2
├── 3-1.2:1.0
├── 4-0:1.0
├── 4-1
├── 4-1:1.0
├── 4-1.4
├── 4-1.4:1.0
├── usb1
├── usb2
├── usb3
└── usb4
- lsusb
lsusb -t的输出为:
lsusb -t
/: Bus 04.Port 1: Dev 1, Class=root_hub, Driver=xhci-hcd/1p, 5000M
|__ Port 1: Dev 2, If 0, Class=, Driver=hub/4p, 5000M
|__ Port 4: Dev 3, If 0, Class=, Driver=usb-storage, 5000M // u盘
/: Bus 03.Port 1: Dev 1, Class=root_hub, Driver=xhci-hcd/1p, 480M
|__ Port 1: Dev 2, If 0, Class=, Driver=hub/4p, 480M
|__ Port 1: Dev 5, If 0, Class=, Driver=usbhid, 1.5M // 脚踏板
|__ Port 1: Dev 5, If 1, Class=, Driver=usbhid, 1.5M // 脚踏板
|__ Port 2: Dev 3, If 0, Class=, Driver=usbhid, 1.5M // 键盘
/: Bus 02.Port 1: Dev 1, Class=root_hub, Driver=xhci-hcd/1p, 5000M
/: Bus 01.Port 1: Dev 1, Class=root_hub, Driver=xhci-hcd/1p, 480M
可以看到,每棵总线树中,除了首行的root hub,其余都是一行表示一个接口,也呈现了拓扑结构中的level层次。
首行root hub的port是无意义的,lsusb的代码里直接指定成了1,而其余行的port,代表该设备所挂接的上级hub的物理port。设备号(Dev)是每棵总线树独立分配的,一般root hub是1,其余设备再依次分配。接口号(If)的含义也是明显的(注意首行root hub没有这个信息)。对于hub,Driver末尾的1p,4p,分别表示该hub有1个,4个port。
网友评论