2

私は通信する必要のあるBluetooth HIDデバイスを持っています。ターゲットプラットフォームはAndroid 5.x +です。現在、Nexus 7 2013タブレットでテスト中です。Android 6.xではhidraw set-report/send-reportが動作しません

Androidの5.xでコードが正常に動作し、Android 5.xでレポートを受信、送信、設定することができました。

Android 6.xでは、端末から送信されたレポートしか受信できませんが、レポートを送信または設定できません。私のset/sendレポート要求は、HID/BTスタックによって黙って無視されるようです。

/dev/hidraw *ノードと通信するコードは、rootとしてネイティブデーモンとして実行されます。

Android 6.xでBluetooth hidデバイスにレポートを送信/設定できるようにするための新しい要件はありますか?これが動作するようにAOSPに変更を加えることはできますか?

[更新] Logcatは言う:

05-17 11:22:56.085 2455-4061/com.android.bluetooth E/bt_btif: uhid_event: Invalid size read from uhid-dev: 4108 != 4

uhidのみ4バイトを返すでしょうから、私が読んでどのように理解していません!最初の4バイトには、イベントのtypeのみが含まれています。 read()sizeof(struct uhid_event)バイト未満になるシナリオはありますか?

これは、uhidドライバのバグを示していますか?

+0

私は、uhidドライバがアンドロイドカーネルソースの作業コードを使い果たしている可能性が増えている疑いがあります。私はより多くの情報を取得すると更新されます。 – GPS

答えて

1

私は、利用可能なカーネルソースをチェックしhidrawドライバでは、/ dev/hidraw *ノード

私もBluedroidが正しく受信して、内部的にレポートを送信することを見つけ

にレポートを養うために使用可能なソースが含まれていないことがわかりました。

私が見つけたレポートを取得/設定/送信する最も簡単な方法は、ベンダー固有のレポートのために私のアプリケーションと直接通信するためにブルードイドイドを修正することでした。私はデーモンをBluedroidに直接統合しました。

関連する問題