安装抓包工具
安装很简单,在安装wireshark的时候,选中usbpcap就行了
抓包
抓包也很简单,打开wireshark后,双击USBPcap1就可以像抓网络包一样去抓了
案例分析
目前有这么个情况,usb使能adb,rndis,mass_storage三个功能 ,实际上只出来了adb跟rndis两个接口,U盘功能没出来,日志看不出什么就只有抓包了,看下面分析抓到的包
设备描述符
我们可以看到,一些主要信息,包括vid,pid,实际问题原因就是pid跟vid造成的,后面再说,最后面可以看到,有一个配置描述符
配置描述符
可以看到这个配置描述符,有三个接口描述符
接口描述符
分别看下第一个接口描述符0.0,对应的端点描述符
第二个接口描述符1.0,对应的端点描述符
第三个接口描述符2.0,对应的端点描述符,这是我们关注的重点
异常点
枚举时的mass_storage接口的批量传输端点84
和端点03
被URB_FUNCTION_SYNC_RESET_PIPE_AND_CLEAR_STALL之后,变成了中断端点83;从而mass_storage就没弹出来了
这个动作是设备连接的host,也就是windows电脑发起的,所以window的驱动为什么会发出这样的动作呢?最后发现:<adb,rndis,mass_storage>这个config的pid跟vid ;跟<adb ,rndis>这个config的pid和vid一样,导致设备的windows驱动不允许,所以下发了一个 URB_FUNCTION_SYNC_RESET_PIPE_AND_CLEAR_STALL的动作,把端点描述符给清除了,自然功能也就不能用了,当然有些平台的windows驱动是允许不同功能组合用相同的pid,vid,比如高通;但还是建议区分开