3

Xperia Neo(Cyanogen Mod 9)にLindyIRDAUSBブリッジを接続しています。ホストモードなどをサポートするように機能を変更しました。コードではすべて正常に見えます。デバイスを検出しました。インターフェイスと2つのエンドポイント(1つは入力、1つは出力)を確認できますが、強制請求を試行したかどうかに関係なく、主張するようにするとすぐに失敗します。

クレームが失敗する理由を見つける簡単な方法はないようです。straceは、クレームインターフェイスのioctl呼び出しが失敗し、デバイスが見つからないというエラーが発生するため、手がかりを与えてくれます。

失敗を無視すると、キューまたは送信に失敗するリクエストまでしか取得できません。

私が持っている質問は(私が思うに):-

  1. クレームが失敗する原因となっている、正確に何が欠けていますか?
  2. 理想的にはルートを必要としないこれを回避する方法はありますか?
  3. どういうわけか主張を無効にする方法はありますか?
4

2 に答える 2

3

OK、それで私はここで私自身の質問に答えることに陥ったように見えます、しかし私は多くの人々がUSBホストの明白なサポートと観察されることができる「奇妙な」振る舞いについて混乱しているのを見るのでうまくいけばこの答えがいくつかを助けるかもしれませんあなたの。

私は3つの質問を投げかけました、私は1と3の決定的な答えを持っていますが、この段階ではもう一方についてはあまり確信がありません。

1)正確に何が欠けているのですか、そしてなぜこれが悪い主張をもたらすのですか?問題は、デバイスであるlindy IRDAドングルがホスト(私の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ケーブルまたは同様のハッカーを使用してデバイスに外部電源を供給することができますが、それによって受話器が要求を拒否するという根本的な問題が変わるとは思いません。ルートを使用しても、電力プロファイルをオーバーライドするために何ができるかは明らかではありません。

質問3、claimInterface()の失敗を無効にして、通信を強制する方法はありますか?これは率直ないいえです。デバイスは単にカーネルによって作成されていないため、そもそもオーバーライドするものはありません。これは、Androidライブラリがまだそれを提供している理由についてやや不可解になります。

于 2012-09-11T20:58:37.420 に答える
0

質問2と電力需要について...

私が遭遇したホスト/OTGをサポートするほとんどのAndroidデバイスは、約100mAの最大消費電流しかサポートしません。カーネルソースハッカリーを介して強制的に動作させることができますか?可能性は高いですが、AndroidデバイスのUSBサポート回路が焼損するという非常に現実的なリスクがあります。これは、そのようなデバイスが外部USBデバイスに電力を供給するために使用するブーストコンバーターは、その最大100mAの電流引き込みのみを物理的にサポートするためです。

Yケーブルを使用して必要な電流を外部に供給できますか?はい、私は以前にブーストコンバーターのないデバイスでこれを行いましたが、カーネルで回避策を講じて、そのような外部電源があり、デバイスの電源を入れても問題がないことを通知する必要があります。

于 2013-02-02T21:41:34.000 に答える