BLE ペリフェラル モードの Bluez: Android はサービス リストを取得できませんが、iPhone と Win10 では問題ありません

BLE ペリフェラル モードの Bluez: Android はサービス リストを取得できませんが、iPhone と Win10 では問題ありません

Raspberry Pi 3B+ を BLE 周辺機器として動作させようとしています。

bluez スタックの最新バージョン (5.50) をここからダウンロードしました:https://git.kernel.org/pub/scm/bluetooth/bluez.git/test/ ディレクトリに提供されている例を実行します。

Python 2.7 または Python 3.5 を使用して、ルートで「example-advertisement」と「example-gatt-server」を同時に実行すると、Linux Mint、Win10、IOS、Android デバイスで新しい BLE 周辺機器を確認できます。ただし、Linux、IOS、Win10 は接続してサービスと特性リストを取得することに成功しますが、Android (4.4、5.1、または 7.0、5 つの異なるブランドのスマートフォンとタブレットでテスト済み) はデバイスに接続できません。

私はこのトピックを見ました:https://raspberrypi.stackexchange.com/questions/90696/bluetooth-low-energy-gatt-services-not-found-on-androidしかし、現時点では独自のアプリは使用していません。Play ストアで見つかるさまざまな BLE スキャン アプリケーションでも、接続してサービス リストを取得することはできません。

これはRaspberry Pi特有のハードウェアやソフトウェアとは関係ないようです。別のシングルボードコンピュータ(Variscite DART-6UL、https://www.variscite.com/product/system-on-module-som/cortex-a7/dart-6ul-freescale-imx-6ul) とまったく同じ動作になります。

誰かアイデアを持っていますか?

ありがとう。

答え1

いろいろ調べた結果、諦めました。「nRF Connect」アプリはデバイスに接続して特性リストを取得することに成功しましたが、いつも成功するとは限りません。 - 一部の Android デバイスでは、「接続」をクリックするだけで済みます。 - その他のデバイスでは、3 つのドットのサブメニューで「自動接続」をクリックする必要があります。

ただし、他の多くのアプリは、自動接続の有無にかかわらず、私のアプリも含めてまったく接続しません。

遅延を追加すると (周辺機器の検出と接続の間に 100 ミリ秒、接続状態とサービスの検出の間に 100 ミリ秒)、一部のデバイスは正常に接続されますが、すべてが正常に接続されるわけではありません。

関連情報