Android USBHost模式-为什么我的IRDA设备在claimInterface上失败?
我有一个Lindy IRDA USB桥接器连接到我的Xperia Neo(氰Mod 9)。我已经改变了功能,以支持主机模式等。所有的代码看起来不错。我检测到了这个装置。我可以看到接口和两个端点(一进一出),但只要我尝试claimInterface,它就会失败,无论我是否尝试强制声明 似乎没有简单的方法来找出索赔失败的原因。尽管strace给了我一个线索,因为claim接口的ioctl调用失败,出现了一个device not found错误 忽略失败只会使我到达请求的最远位置,而请求随后无法排队或发送 我的问题是(我认为):-Android USBHost模式-为什么我的IRDA设备在claimInterface上失败?,usb,Usb,我有一个Lindy IRDA USB桥接器连接到我的Xperia Neo(氰Mod 9)。我已经改变了功能,以支持主机模式等。所有的代码看起来不错。我检测到了这个装置。我可以看到接口和两个端点(一进一出),但只要我尝试claimInterface,它就会失败,无论我是否尝试强制声明 似乎没有简单的方法来找出索赔失败的原因。尽管strace给了我一个线索,因为claim接口的ioctl调用失败,出现了一个device not found错误 忽略失败只会使我到达请求的最远位置,而请求随后无法排队或
好的,我似乎已经开始回答我自己的问题了,但是我看到很多人对USB主机的明显支持和可以观察到的“奇怪”行为感到困惑,所以希望这个答案可以帮助你们中的一些人 我提出了3个问题,我对1和3有一个明确的答案,但在这个阶段我对另一个问题不太确定 1) 究竟遗漏了什么,为什么会导致错误的索赔? 问题是主机(我的Xperia Neo手机)正在检测设备a,但它支持的唯一配置是要求手机支持太多的电源 奇怪的是,这并不能阻止a)设备被Android库检测和枚举,或者b)设备看起来通电(红色LED发光) 任何系统库调用claimInterface()失败时都没有报告,但是连接设备时运行的dmesg | tail提供了必要的信息
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
dmesg | tail
usb 1-1:不支持设备v066f p4200
usb 1-1:找到新的usb设备,idVendor=066f,idProduct=4200
usb 1-1:新的usb设备字符串:Mfr=1,Product=2,SerialNumber=0
usb 1-1:产品:IrDA/usb桥接器
usb 1-1:制造商:Sigmatel公司
usb 1-1:由于可用总线电源不足,1配置被拒绝
usb 1-1:没有从1个选项中选择任何配置
进一步的调查表明,这个小装置要求440mA的电流,这似乎很多,但对此似乎无能为力
问题2:可以做任何不需要root的事情来解决这个问题吗?
似乎不是。理论上,我可以通过使用USB Y电缆或类似的黑客手段为设备提供外部电源,但我不认为这会改变手机拒绝需求的根本问题。即使使用root,也不清楚是否可以执行任何操作来覆盖电源配置文件
问题3,是否有方法覆盖claimInterface()失败并强制通信?
这是一个直截了当的否定。这个设备根本不是由内核创建的,因此没有什么可以覆盖的。这确实让人有点困惑,为什么Android库仍然提供它。至于问题2和电源需求 我遇到过的大多数支持主机/OTG的android设备,其最大电流消耗仅为100mA左右。你能通过一些内核源代码黑客强迫它工作吗?很可能,但是你会冒着烧坏android设备中USB支持电路的风险。这是因为此类设备用于为外部usb设备供电的升压转换器仅在物理上支持最大100 mA电流消耗
您能用Y形电缆从外部提供所需的电流吗?是的,我以前在没有boost converter的设备上做过这项工作,但是您需要在内核中找到一个解决方法,告诉它您有这样的外部电源,现在可以给设备通电了。回答您自己的问题非常好,因此,事实上我们鼓励您这样做!没有什么比一个没有答案的问题更糟糕的了…谢谢亚当,我同意寻找并找到一个问题的完美匹配是件令人沮丧的事,而你却发现它没有答案。如果询问者在一个月或六个月后没有解决问题,并且找到了其他解决方法,那就好了。也许值得一看,也许已经提出了这样的功能,或者你可以提出?