|
USB HUB / USB HOST1&HOST2使用问题(CDC协议类的USB设备)
发表于 2017-3-9 20:38:31
浏览:6854
|
回复:2
打印
只看该作者
[复制链接]
楼主
版主好, 我在使用Firefly-RK3288 plus版遇到一个问题
1. 通过USB连接一个HUB.
2. 插上一个CDC协议类的USB设备A(如:USB指纹模块/USB打印机).
3. 打开第2步USB对应的apk, 能正常使用, 退出该程序.
4. 然后再在HUB上插入一个任何USB设备B(如: U盘/鼠标, 或其他CDC协议类设备等), 该新插入的设备B能正常使用.
5. 再次操作上述第3步则会发设备A已不能正常使用.
问题总结: Android通过USB HUB插多个CDC协议的USB设备时, 只有最后一个CDC设备能够使用, 非最后一个插入的CDC协议类的USB设备都不能使用.
通过调试程序发现:
最新插入的USB设备usbDevice.getInterfaceCount != 0;
而非最后一个插入的USB设备usbDevice.getInterfaceCount = 0;(虽然用UsbManager还能找到该设备, 但接口数量为零, 就无法使用了)
请问, 为什么新插入的USB设备, 会使已经插入的USB设备的getInterfaceCount等于0呢?
另外, 我还发现, 在开发板上使用HOST1和HOST2测试CDC协议类的USB设备, 也会有上述问题, 即第二个插入的USB设备会影响到第一个插入的USB设备不能使用(usbDevice.getInterfaceCount = 0)
如果是用鼠标键盘等USB HID设备测试时就没有问题, 因为这些HID设备都是内核直接接管, 属于input event. 这个问题很棘手, 麻烦指点一二.
|
|