USB键盘在Linux环境下一直返回NAK的输入端点和一直OUT数据的输出端点
2021-11-10
501
0
群里有同学反馈,自己做的USB键盘在Windows下正常,但在Linux下就失败,想让帮忙分析一下原因。
一个比较好的消息是他那边有USB总线分析仪,所以只需要抓包就可以进行分析了。
最好开他给的抓包截图是样子的:
从它的截图可以看到,USB键盘在获取了该键盘的HID报告描述符后,紧跟着一下发ReportId=2的中断输出数据,这个数据USB总线分仪仪也给出了解释,是用于同步键盘指示灯的,这说明主机端已经将设备的报告描述符分析成功。
这里使用了端点2进行键盘灯同步,即输出端点0x02,所以该键盘有一个中断输出端点。
紧跟着后面就是获取一次字符串描述符。
紧跟着就是输入端点0x83和输出端点0x04进行CLEAR_FEATURE请求。
可以看到,对于端点,CLEAR_FEATURE是支持ENDPOINT_HALT的,可见端点挂了。
- ENDPOINT_HALT:接收方是端点,其值为0,对于端点的停止特性。
后面跟着的就是使用端点2传输了0长度的字节,这里可以认为是结束包。
再后面就没有截图了…
后面它又给我抓了一个包,发现不停地在OUT2字节和IN 返回NAK.
这说明OUT数据是正常的,但设备端一直没有数据返回给主机。
HID人机交互QQ群:564808376
UAC音频QQ群:218581009
UVC相机QQ群:331552032
BOT&UASP大容量存储QQ群:258159197
STC-USB单片机QQ群:315457461
USB技术交流QQ群2:580684376
USB技术交流QQ群:952873936