gpt4 book ai didi

usb - Android USBHost 模式 - 为什么我的 IRDA 设备在 ClaimInterface 上失败?

转载 作者:行者123 更新时间:2023-12-02 16:18:26 25 4
gpt4 key购买 nike

我的 Xperia Neo (Cyanogen Mod 9) 连接了一个 Lindy IRDA USB 桥接器。我已经更改了功能以支持主机模式等。代码中一切看起来都很好。我检测到该设备。我可以看到接口(interface)和两个端点(一进一出),但是一旦我尝试声明接口(interface),它就会失败,无论我是否尝试强制声明。

似乎没有简单的方法可以找出 claim 失败的原因。尽管 strace 给了我一个线索,因为对声明接口(interface)的 ioctl 调用失败并出现设备未找到错误。

忽略失败只能让我了解无法排队或发送的请求。

我的问题是(我认为):-

  1. 究竟缺少什么导致 claim 失败?
  2. 有没有一种方法可以解决这个问题并且理想情况下不需要 root 权限?
  3. 有办法以某种方式覆盖该声明吗?

最佳答案

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

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

1) 究竟缺少什么,为什么会导致错误的 claim ?问题是该设备,一个 lindy IRDA dongle主机(我的 Xperia Neo 手机)正在检测到该配置,但它支持的唯一配置需要太多电量,手机无法支持。

奇怪的是,这并不能阻止 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

进一步调查表明,这个小设备声称需要 440mA,这看起来相当多,但似乎对此无能为力。

问题 2 是否可以通过不需要 root 的方法来解决此问题?看来不是。理论上,我可以通过使用 USB Y 电缆或类似的黑客技术为设备提供外部电源,但我不认为这会改变手机拒绝需求的根本问题。即使获得 root 权限,也不清楚是否可以采取任何措施来覆盖电源配置文件。

问题3,有没有办法覆盖claimInterface()失败并强制通信?这是直言不讳的。该设备根本不是由内核创建的,因此首先没有什么可以覆盖的。这确实让人有些困惑为什么 Android 库仍然提供它。

关于usb - Android USBHost 模式 - 为什么我的 IRDA 设备在 ClaimInterface 上失败?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12339312/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com