同一个usb3.0的设备,同是usb2.0的不同主机,枚举得到的设备描述符却是不同的

通过usb hound分别监控到ch567和电脑枚举的过程,左图是电脑主机的usb2.0,右图是ch567的usb2.0。

可以看出usb的版本号、PID、bcddevice、设备序列号都是不一样的。圈圈说PID、序列号不一样会导致加载的驱动不同,所以我猜测是因为这个原因导致两者枚举的过程不一样,ch567才会重新枚举一次,设备才能正常工作。


请问是什么原因会导致两者的描述符不一样的?

ch567 and PC.png

你所说的重新枚举一次指什么情况?重新枚举抓包会跟第一次不一样?


第二次就变成这样了...

CTL  80 06 00 01  00 00 12 00  

IN   12 01 10 02  00 00 00 40  1d 2a 01 00  00 00 01 02  00 01          


有尝试过其他设备吗?重新枚举是硬件自动完成,还是需要手动复位这种?


其它设备没发现右这样的情况,重新枚举是主机请求,然后设备再响应。没有手动复位的过程。


那既然自动重新枚举,后面的枚举能够成功吗?


后面枚举是成功的,只是为什么会出现这样的情况。是同一个设备啊,同样的接口,装的也是同一个驱动,为什么第一次枚举得到的描述符是不相同的。


你仔细看下,除了设备描述符,配置描述符也不一样。你看下配置描述描述的设备类别。麻烦贴完整点。


设备类别(bDeviceClass)这个域是在设备描述符(Standard Device Descriptor)里的,不是配置描述符的,而且这个域是没变过的。


。。。。。


只有登录才能回复,可以选择微信账号登录