本文 首发于 🌱 煎茶转载 请注明 来源

通过扫描以下目录获取物理节点所有 USB 设备:

/sys/bus/usb/devices/usb*
/sys/bus/usb/devices/usb*/$busnum-*

从该文件系统收集某一个设备的主要信息如下:

{
    "busnum": 1,
    "class": 0,
    "devnum": 2,
    "level": 1,
    "manufacturer": "QEMU",
    "port": 0,
    "prodid": "0001",
    "product": "QEMU USB Tablet",
    "speed": "12",
    "usbpath": "1",
    "vendid": "0627"
}

文件含义

目录下部分文件含义如下:

  • busnum: 总线号
  • devnum: 设备号(该总线的第几台设备)
  • speed: 速率
  • bDeviceClass: 设备类型
  • idVendor: 设备的生产商ID,由USB设备生产商向USB-IF官方来统一管理和申请
  • idProduct: 该生产商生产的产品编号,同一厂商下的不同idProduct代表着该公司不同的产品系列
  • product: 制造商
  • manufacturer: 产品
  • serial: USB 硬件设备序列号 ,例如 0000:00:01.2

定位方法

定位某一个 USB 设备的方法有两种:

  • busnum + devnum
  • idVendor + idProduct

设备类型bDeviceClass

类代码用法描述
00h设备描述符Use class information in the interface Descriptors
01h接口描述符音频
02h设备描述符、接口描述符通讯设备,如电话,moden等等
03h接口描述符HID设备
05h接口描述符Physical
06h接口描述符Image
07h接口描述符打印机
08h接口描述符大容量存储
09h设备描述符Hub USB集线器
0Ah接口描述符CDC-Data
0Bh接口描述符Smart Card
0Dh接口描述符Content Security
0Eh接口描述符UVC视频/CAMERA
0Fh接口描述符Personal Healthcare
10h接口描述符音视频设备
11h设备描述符Billboard Device Class
12h接口描述符USB Type-C Bridge Class
DCh设备描述符、接口描述符Diagnostic Device
E0h接口描述符无线控制器
EFh设备描述符、接口描述符Miscellaneous
FEh接口描述符Application Specific
FFh设备描述符、接口描述符厂商用自定义

参考文献