HID报表描述符与设备描述符、配置描述符、字符串描述符的通讯格式对比
2021-07-21
5572
10
报表描述符是USB HID规范中一个很重要的概念。USB HID设备报表描述符内容表述了该HID设备的功能及数据传输的格式。
USB HID报表描述符在概念上和设备描述符,配置描述符,接口描述符,端点描述符和其它USB设备描述符类似,但是还是有一些细微的区别。
我里我们做一个简要的区别:
- 设备描述符、配置描述符、字符串描述符和报表描述符是单独通过GET_DESCRIPTOR命令获取的。
- 端点描述符、接口描述符、接口关联描述符是第二次获取配置描述符时随配置描述符的内容返回,所以此类描述符无单独的GET_DESCRIPTOR命令。
- 设备描述符、配置描述符、字符串描述符的通过GET_DESCRIPTOR获取时,发向的目标是设备,而报表描述符是接口。
在USB规范 USB标准请求一节: http://www.usbzh.com/article/detail-417.html 我们回顾一下bmRequestType字段的在获取描述符时的含义。
D4-D0位表示命令接受者的类型,其中比较常用的是00000表示接受者为设备,00001表示接收者为接口。
这里我们通过BUSHOUD抓包分析本人手中一键盘设备的GET_DESCRIPTOR请求:
获取设备描述符
//设备描述符
CTL 80 06 00 01 00 00 12 00
IN 12 01 10 01 00 00 00 08 2c 1a 24 21 10 01 01 02 00 01
获取配置描述符
//配置描述符
CTL 80 06 00 02 00 00 09 00
IN 09 02 22 00 01 01 00 a0 31
获取字符串描述符
CTL 80 06 02 03 09 04 1a 00
IN 1a 03 55 00 53 00 42 00 20 00 4b 00 65 00 79 00 62 00 6f 00 61 00 72 00 64 00 ..U.S.B. .K.e.y.b.o.a.r.d.
- 03代表的是字符串类型
- 02代表字符串索引
获取HID报表描述符
CTL 81 06 00 22 01 00 72 00
IN 05 0c 09 01 a1 01 85 01 19 00 2a 3c 02 15 00 26 3c 02 95 01 75 10 81 00 c0 05 01 09 80 a1 01 85 02 19 81 29 83 25 01 75 01 95 03 81 02 95 05 81 01 c0
注意:这里的bmRequestType字段为0x81,表示发向的是对象是接口,并且接口ID=1,而如设备描述符,配置描棕符和字符串描述符的接收对象是设备
HID人机交互QQ群:564808376
UAC音频QQ群:218581009
UVC相机QQ群:331552032
BOT&UASP大容量存储QQ群:258159197
STC-USB单片机QQ群:315457461
USB技术交流QQ群2:580684376
USB技术交流QQ群:952873936