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ライブラリがまだそれを提供している理由についてやや不可解になります。