前言
在 sysfs 文件系統(tǒng)下,查看 USB 設(shè)備,看到一些亂七八糟的設(shè)備顯示,它們都是什么呢?今天來(lái)介紹一下。
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
目錄內(nèi)容詳解
usb1
usb1 表示該 SOC 上接了 1 條 USB 總線,即 1 個(gè) USB Controller。
PS:如果有多個(gè) USB Controller,將會(huì)是 usb1、usb2、usb3。。。
1-0:1.0
而 1-0:1.0 表示什么呢?
- 1:表示 1 號(hào)總線,或者說(shuō) 1 號(hào) Root Hub
- 0:表示端口號(hào)
- 1:表示配置號(hào)
- 0:表示接口號(hào)
命名規(guī)則:Root Hub-port:configuration.interface
1-1.1:1.0
- 1:表示 1 號(hào)總線,或者說(shuō) 1 號(hào) Root Hub
- 1:表示 Hub 連在 Root Hub 上的端口號(hào)
- 1:表示設(shè)備連在 Hub 上的端口號(hào)
- 1:表示配置號(hào)
- 0:表示接口號(hào)
結(jié)構(gòu)圖
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
設(shè)備信息
在每個(gè) USB 設(shè)備目錄下都有一些參數(shù)來(lái)展示該設(shè)備的屬性信息
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
表示設(shè)備種類
root@ATK-IMX6U:~# cat /sys/bus/usb/devices/1-1/bDeviceClass
09
09 表示該設(shè)備是一個(gè) Hub,詳細(xì)類型參考如下
/*
* 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
一個(gè) USB Device 的類型為 0
root@ATK-IMX6U:~# cat /sys/bus/usb/devices/1-1.1/bDeviceClass // 鼠標(biāo)
00
version
USB 協(xié)議版本
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 的設(shè)備(鼠標(biāo))
2.00
busnum & devnum
總線號(hào) & 設(shè)備號(hào)
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 及其下掛的鼠標(biāo)設(shè)備,總線號(hào)都是 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
Hub 的設(shè)備號(hào)為 2,鼠標(biāo)的設(shè)備號(hào)為 3
dev
主設(shè)備號(hào):次設(shè)備號(hào)
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/ 下設(shè)備一致
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
設(shè)備最大電流
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 & 產(chǎn)品 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 // 鍵盤(pán)
Bus 001 Device 003: ID 046d:c084 // 鼠標(biāo)
Bus 001 Device 002: ID 05e3:0608 // Hub
Bus 001 Device 001: ID 1d6b:0002
product
產(chǎn)品名稱
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 鼠標(biāo)
G102 Prodigy Gaming Mouse
manufacturer
廠商
root@ATK-IMX6U:~# cat /sys/bus/usb/devices/1-1.1/manufacturer
Logitech
bcdDevice
固件版本號(hào)
同一個(gè)產(chǎn)品,升級(jí)之后(比如固件修改,新增功能),可以通過(guò)修改固件版本號(hào)來(lái)進(jìn)行區(qū)別。
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 設(shè)備的 uevent 是一個(gè)事件通知機(jī)制,表示當(dāng)該 usb 設(shè)備在系統(tǒng)上被插入或拔出時(shí),內(nèi)核會(huì)發(fā)送一個(gè)事件通知給用戶空間的系統(tǒng)進(jìn)程,告知設(shè)備的狀態(tài)變化。這個(gè)事件通知會(huì)包含一些關(guān)于設(shè)備的屬性信息,例如設(shè)的廠商ID、產(chǎn)品ID、序列號(hào)等等,方便用戶空間的應(yīng)用程序進(jìn)行設(shè)備管理和配置。
root@ATK-IMX6U:~# cat /sys/bus/usb/devices/1-1/uevent
MAJOR=189 // 主設(shè)備號(hào)
MINOR=1 // 次設(shè)備號(hào)
DEVNAME=bus/usb/001/002 // bus usb 總線號(hào)001 設(shè)備號(hào)002,和 lsusb 顯示一致
DEVTYPE=usb_device // USB 設(shè)備
DRIVER=usb // 設(shè)備使用的驅(qū)動(dòng)程序
PRODUCT=5e3/608/8536 // 廠商ID/產(chǎn)品ID/固件版本號(hào)
TYPE=9/0/1
BUSNUM=001 // 總線號(hào)
DEVNUM=002 // 設(shè)備號(hào)
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
大小為一字節(jié),不同的位,表示不同的特性。文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-762806.html
- bit7 是保留的,必須為1。
- bit6 表示供電方式:1 設(shè)備自供電;0 設(shè)備是總線供電的。
- bit5 表示是否支持遠(yuǎn)程喚醒:1 支持遠(yuǎn)程喚醒;0 不支持遠(yuǎn)程喚醒。
- bit0~4 是保留的,默認(rèn)為0。
root@ATK-IMX6U:~# cat /sys/bus/usb/devices/1-1/bmAttributes // 1110 0000,設(shè)備自供電,支持遠(yuǎn)程喚醒
e0
root@ATK-IMX6U:~# cat /sys/bus/usb/devices/1-1.1/bmAttributes // 1010 0000,設(shè)備是由總線供電的,支持遠(yuǎn)程喚醒
a0
drivers_autoprobe
drivers_autoprobe 是一個(gè) sysfs 屬性,用于在新插入 USB 設(shè)備時(shí)觸發(fā)自動(dòng)探測(cè) USB 驅(qū)動(dòng)程序。當(dāng)將此屬性設(shè)置為 1 時(shí),內(nèi)核將嘗試自動(dòng)加載適當(dāng)?shù)尿?qū)動(dòng)程序,以便為任何新連接的 USB 設(shè)備進(jìn)行配置。這可以節(jié)省手動(dòng) USB 設(shè)備所需的時(shí)間和精力。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-762806.html
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
到了這里,關(guān)于linux 下查看 USB 設(shè)備的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!