Firefly开源社区

标题: USB HUB / USB HOST1&HOST2使用问题(CDC协议类的USB设备) [打印本页]

作者: 清时明月    时间: 2017-3-9 20:38
标题: USB HUB / USB HOST1&HOST2使用问题(CDC协议类的USB设备)
版主好, 我在使用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. 这个问题很棘手, 麻烦指点一二.


作者: 清时明月    时间: 2017-3-10 10:11
求大神出没
作者: 清时明月    时间: 2017-3-15 16:28
问题已经解决, 解决方法请参考:
RK3288 & FirePrime 5.1 安卓系统 USB google原生BUG修复




欢迎光临 Firefly开源社区 (https://dev.t-firefly.com/) Powered by Discuz! X3.1