UVC规范USB摄像头扩展单元XU的初始化分析
2021-08-31
2229
0
USB摄像头的UVC的扩展单元用于UVC摄像头的自定义功能扩展,支持UVC扩展单元的摄像头在其UVC控制接口中都会有一个扩展单元描述符。该扩展单元描述符的字段描述符了其支持的选择子,GUID,扩展单元等相关信息。
我们知道,UVC摄像头在接入PC机后,和其它USB设备一样,第一步是肯定是USB设备信息的获取。如设备描述符、配置描述符、字符串描述符的获取、设备配置选择等。但UVC摄像头协议又是基于USB协议的一种特殊协议,所以关于UVC摄像头的枚举在完成基本的USB请求之后,又有一些特定的其它初始化请求。
UVC扩展单元的抓包
这里本人手中的一个UVC摄像头,其UVC控制接口中含有一个扩展单元,其bUnitID为0x0b,支持3个选择子,分别为1至3。这里我们通过BUSHOUND抓包对其进行UVC扩展单元的初始化分析。
//选择子1
CTL a1 85 00 01 01 0b 02 00 GET LEN
2 IN 01 00 ..
CTL a1 86 00 01 01 0b 01 00 GET INFO
1 IN 02 .
CTL a1 82 00 01 01 0b 01 00 GET MIN
1 IN 00 .
CTL a1 83 00 01 01 0b 01 00 GET MAX
1 IN ff .
CTL a1 84 00 01 01 0b 01 00 GET RES
1 IN 01 .
CTL a1 87 00 01 01 0b 01 00 GET DEF
1 IN 00 .
//选择子2
CTL a1 85 00 02 01 0b 02 00 GET LEN
2 IN 01 00 ..
CTL a1 86 00 02 01 0b 01 00 GET INFO
1 IN 02 .
CTL a1 82 00 02 01 0b 01 00 GET MIN
1 IN 00 .
CTL a1 83 00 02 01 0b 01 00 GET MAX
1 IN ff .
CTL a1 84 00 02 01 0b 01 00 GET RES
1 IN 01 .
CTL a1 87 00 02 01 0b 01 00 GET DEF
1 IN 00
//选择子3
CTL a1 85 00 03 01 0b 02 00 GET LEN
2 IN 01 00 ..
CTL a1 86 00 03 01 0b 01 00 GET INFO
1 IN 02 .
CTL a1 82 00 03 01 0b 01 00 GET MIN
1 IN 00 .
CTL a1 83 00 03 01 0b 01 00 GET MAX
1 IN ff .
CTL a1 84 00 03 01 0b 01 00 GET RES
1 IN 01 .
CTL a1 87 00 03 01 0b 01 00 GET DEF
1 IN 00
UVC扩展单元的数据分析
我可可以看到,针对每个选择子,分别执行了GET_LEN,GEN_INFO,GETN_MIN,GET_MAX,GET_RES和GET_DEF的请求。
- GET_LEN:获取该选择子的数据长度
- GET_INFO:获取该选择子支持的特定类请求,我们可以看到有的只支持GET_CUR,有的同时支持GET_CUR和SET_CUR.而一些其它的特殊请求是不支持的。
- GET_MIN/GET_MAX:获取最小最大值,这个数据长度需要和GET_LEN指定的数据长度一致。
- GET_RES:获取数据的分辨率。
- GET_DEF:获取默认数据。
这里可以看到,并没有GET_CUR和SET_CUR请求,这些请求只是用于扩展单元的实际控制工作中。
CTL a1 85 00 01 01 0b 02 00 GET LEN
2 IN 01 00
- 0xa1:表示发向接口或实例
- 0x85:表示GET_LEN
- 00 01:即0x0100 表示选择子1。控制选择器CS(高字节),低字节为零
- 01:表示发向的接口ID为0X01,本设备的控制接口位于接口描述符ID为1的按口描述符中,控制接口位于其中。
- 0b:扩展单元ID
- 02 00:数据长度为2字节。
参考资料:
- UVC特定请求的支持GET_INFO: http://www.usbzh.com/article/detail-92.html
- UVC特定类请求格式SET_CUR/GET_CUR : http://www.usbzh.com/article/detail-29.html
- UVC扩展单元描述符:http://www.usbzh.com/article/detail-36.html
HID人机交互QQ群:564808376
UAC音频QQ群:218581009
UVC相机QQ群:331552032
BOT&UASP大容量存储QQ群:258159197
STC-USB单片机QQ群:315457461
USB技术交流QQ群2:580684376
USB技术交流QQ群:952873936