首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >安卓USBHost模式-为什么我的IRDA设备在claimInterface上失败?

安卓USBHost模式-为什么我的IRDA设备在claimInterface上失败?
EN

Stack Overflow用户
提问于 2012-09-09 00:42:54
回答 2查看 2.4K关注 0票数 3

我有一个Lindy桥连接到我的Xperia (氰原模式9)。我已经改变了功能,以支持主机模式等。在代码中一切看起来都很好。我探测到那个装置。我可以看到接口和两个端点(一个进入,一个退出),但是一旦我尝试claimInterface,它就失败了,不管我是否阻止了武力声明。

似乎没有简单的方法来找出索赔失败的原因。虽然strace为我提供了线索,因为ioctl对的调用失败了,设备没有找到错误。

忽略失败只会影响到请求,然后请求无法排队或发送。

我要问的问题是:-

  1. 究竟是什么原因导致索赔失败?
  2. 在理想情况下,是否有一种不需要根的方法?
  3. 有什么办法可以推翻索赔吗?
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-09-11 20:58:37

好吧,我似乎已经在这里回答了我自己的问题,但我看到很多人对USB主机的明显支持和可以观察到的“奇怪”行为感到困惑,所以希望这个答案可以帮助你们中的一些人。

我提出了3个问题,我有一个明确的答案1和3,但我不太确定的另一个在这个阶段。

1)究竟遗漏了什么,为什么这会导致错误的索赔?问题是,主机(我的Xperia手机)检测到了这个设备,一个林迪·伊尔达,但是它所支持的唯一配置是要求手机支持太多的电源。

奇怪的是,这并没有阻止( a)设备被Android库检测和枚举,或者( b)它看起来是有动力的(红色LED发光)。

在任何系统库调用失败的claimInterface()时,都没有报告,但是在附加设备时运行的dmesg尾部提供了必要的洞察力。

代码语言:javascript
复制
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库仍然提供它。

票数 3
EN

Stack Overflow用户

发布于 2013-02-02 21:41:34

至于问题2和电力需求..。

我所遇到的大多数支持主机/OTG的android设备只支持100 mA左右的最大电流图。你能通过一些内核源代码黑客来强迫它工作吗?很有可能,但你会冒着很大的风险烧掉android设备中的USB支持电路。这是因为这种设备用于驱动外部usb设备的Boost转换器只能物理上支持最大100 mA电流吸引。

你能用Y型电缆向外部供应所需的电流吗?是的,我以前在一个没有boost转换器的设备上做过这件事,但是你需要在内核中找到一个解决方案,告诉它你有这样的外部能力,并且现在可以启动这个设备了。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12339312

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档