我有一个Lindy桥连接到我的Xperia (氰原模式9)。我已经改变了功能,以支持主机模式等。在代码中一切看起来都很好。我探测到那个装置。我可以看到接口和两个端点(一个进入,一个退出),但是一旦我尝试claimInterface,它就失败了,不管我是否阻止了武力声明。
似乎没有简单的方法来找出索赔失败的原因。虽然strace为我提供了线索,因为ioctl对的调用失败了,设备没有找到错误。
忽略失败只会影响到请求,然后请求无法排队或发送。
我要问的问题是:-
发布于 2012-09-11 20:58:37
好吧,我似乎已经在这里回答了我自己的问题,但我看到很多人对USB主机的明显支持和可以观察到的“奇怪”行为感到困惑,所以希望这个答案可以帮助你们中的一些人。
我提出了3个问题,我有一个明确的答案1和3,但我不太确定的另一个在这个阶段。
1)究竟遗漏了什么,为什么这会导致错误的索赔?问题是,主机(我的Xperia手机)检测到了这个设备,一个林迪·伊尔达,但是它所支持的唯一配置是要求手机支持太多的电源。
奇怪的是,这并没有阻止( a)设备被Android库检测和枚举,或者( b)它看起来是有动力的(红色LED发光)。
在任何系统库调用失败的claimInterface()时,都没有报告,但是在附加设备时运行的dmesg尾部提供了必要的洞察力。
dmesg | tail
<3>usb 1-1: device v066f p4200 is not supported
<6>usb 1-1: New USB device found, idVendor=066f, idProduct=4200
<6>usb 1-1: New USB device strings: Mfr=1, Product=2, SerialNumber=0
<6>usb 1-1: Product: IrDA/USB Bridge
<6>usb 1-1: Manufacturer: Sigmatel Inc
<6>usb 1-1: rejected 1 configuration due to insufficient available bus power
<4>usb 1-1: no configuration chosen from 1 choice进一步的调查表明,这个小装置声称需要440 it,这似乎相当多,但似乎没有什么可以做的。
问题2可以做任何不需要根目录的事情来解决这个问题吗?似乎不是。理论上,我可以通过使用USB电缆或类似的黑客为设备提供外部电源,但我不相信这会改变手机拒绝需求的根本问题。即使有根,也不清楚是否可以做任何事情来覆盖电源配置文件。
问题3,是否有一种方法可以覆盖claimInterface()故障并强制通信?这是直截了当的不。这个设备根本不是由内核创建的,所以根本就没有什么可以重写的。这确实让人有些困惑,不知道为什么Android库仍然提供它。
发布于 2013-02-02 21:41:34
至于问题2和电力需求..。
我所遇到的大多数支持主机/OTG的android设备只支持100 mA左右的最大电流图。你能通过一些内核源代码黑客来强迫它工作吗?很有可能,但你会冒着很大的风险烧掉android设备中的USB支持电路。这是因为这种设备用于驱动外部usb设备的Boost转换器只能物理上支持最大100 mA电流吸引。
你能用Y型电缆向外部供应所需的电流吗?是的,我以前在一个没有boost转换器的设备上做过这件事,但是你需要在内核中找到一个解决方案,告诉它你有这样的外部能力,并且现在可以启动这个设备了。
https://stackoverflow.com/questions/12339312
复制相似问题