HID设备SET_IDLE时遇到c0000004
下午,USB中文网技术交流群里的一个同学,说他的HID设备时好时不好的,有时会花很长的时间才能枚举成功。
没有抓包,没的截图…
我是一顿乱扯,从硬件电路到各种抓包方法….
晚上11点,这位同学发来了BUSHOUND抓的包,打开一看:
Device Length Phase Data Description Delta
------ -------- ----- -------------------------------------------- -----
85.1 1 IN 04 . 2.1sc
87.0 CTL 80 06 00 01 00 00 12 00 GET DESCRIPTOR 98ms
87.0 18 IN 12 01 00 02 00 00 00 40 .......@ 207us
87.0 CTL 80 06 00 02 00 00 09 00 GET DESCRIPTOR 29us
87.0 9 IN 09 02 29 00 01 01 00 e0 ..)..... 170us
87.0 CTL 80 06 00 02 00 00 29 00 GET DESCRIPTOR 21us
87.0 41 IN 09 02 29 00 01 01 00 e0 ..)..... 224us
87.0 CTL 00 09 01 00 00 00 00 00 SET CONFIG 30us
87.0 CTL 21 0a 00 00 00 00 00 00 SET IDLE 710us
87.0 USTS c0000004 stall pid 204us
这么明显的错误…我只好又再解释一番,首先得让这位同学看一下往期的文章:
- BUSHOUND抓包stall pid的USTS c0000004错误 :http://www.usbzh.com/article/detail-560.html
再普及一下SET_IDLE的知识:
- HID 设置空闲SetIdle:http://www.usbzh.com/article/detail-116.html
后面让他查看对应的代码,看设备的控制请求响应SetIdle的处理就行了。
以下是记录:
为了保护隐私,隐去作者 23:17:04
老哥,你看
为了保护隐私,隐去作者 23:17:07
这是我抓的包
为了保护隐私,隐去作者 23:20:28
USB中文网站长23:21:08
HID枚举完会有个SetIdle的,你这个SetIdle固件没有响应,
USB中文网站长23:21:11
所以出问题了
USB中文网站长23:21:38
http://www.usbzh.com/article/detail-560.html
USB中文网站长23:21:45
这个问题我之前遇到过
你看一下我发的这个文章
USB中文网站长23:22:29
为了保护隐私,隐去作者 23:24:21
好
为了保护隐私,隐去作者 23:24:24
谢谢老哥
USB中文网站长23:24:38
你看抓包,一下子就找到问题了
为了保护隐私,隐去作者 23:24:40
老哥,你有完整的一套流程的例子么
为了保护隐私,隐去作者 23:24:48
我对比下
USB中文网站长23:24:50
我的都是虚拟的
USB中文网站长23:25:01
你找个HID键 盘鼠标都 有这个的
USB中文网站长23:25:28
SET_idle的含义你知道吧
为了保护隐私,隐去作者 23:25:30
对对
USB中文网站长23:25:38
http://www.usbzh.com/article/detail-116.html
为了保护隐私,隐去作者 23:25:39
我可以用鼠标键盘直接看
USB中文网站长23:25:44
是的