2012-12-30 15 views
7

この問題は、10月hereに戻って議論されました。これはCoreBluetoothがかなり新しく、その後いくつかの変更が発生した可能性があるため、新しい質問です。CoreBluetooth広告検出時間

私は2秒ごとにBLEデバイスを宣伝しています。

(centralManager didDiscoverPeripheralコールバックを経由して)最も頻繁に返し
[self.CM scanForPeripheralsWithServices:nil options:0] 

周り2Sを4Sに、後:スキャンが使用して開始されます。 (CMは私のCentralMangerです)

しかし、約30%の時間で、スキャンには10〜18秒かかります。 近くのデバイスのWiFiとBTは、可能な限りスペクトルをクリアするために無効になっています。 スキャンする時間はRSSIとは無関係のようです。 iPAd3の横に-40dB、他の部屋で約5メートル離れたところで-70dBです。

は、実際に長い待ちの発生を減らすので、scanWithPeripheralsの前に呼び出されます。

接続していません。特性データまたはサービスデータが要求されていません。広告データで十分です。

有用なTI demonstrator appがあります。 これは同様の結果を与える何かが発見時間を長くするようであれば、このStackoverflow answerに見られるよう

CBCentralManagerScanOptionAllowDuplicatesKeyオプションを(それがどんなstopScan電話をかけることはありませんよう、実際にわずかに悪化)。

明らかに、次のステップは、このCoreBluetooth応答の特徴をさらに明らかにするために、より高度なBTスニファ/広告生成ツールを使用することです。

これは別の有用なSO questionですが、応答時間について十分に詳しく説明していません。

答えて

10

CoreBluetoothは継続的にリスニングしていません。それは、ブルートゥースクラシックとWifiとHWリソースを共有しています。

広告パッケージを受け取るには、基本的に「ラッキー」でなければなりません。 2つの非同期システムの2つのスライディングウィンドウが互いに衝突しなければならないという点で "ラッキー"です。 CoreBluetoothが開かれている場合、その時間の10%のBLEウィンドウが表示され、正確なタイミングを知らなくても広告間隔を設定すると、広告間隔の10倍の時間がかかります。

最初の30秒間は(> 20ミリ秒、最初のアクティブなCoreBluetoothウィンドウで検出する必要があります)を高速にアドバタイズすることをお勧めします。 2,00秒はいい数字ではありません。ここ

参照ガイドライン: https://developer.apple.com/hardwaredrivers/BluetoothDesignGuidelines.pdf

ページ18

広告インターバル それは発見までの時間 に影響し、パフォーマンスを接続するためのBluetoothアクセサリの広告間隔を慎重に考慮しなければなりません。バッテリ駆動のアクセサリの場合、そのバッテリリソースもまた である必要があります。 アップル製品で発見されるには、Bluetoothアクセサリは、最初に推奨される広告 の間隔を20ミリ秒で少なくとも30秒間使用する必要があります。最初の30秒以内に発見されない場合、付属品はバッテリー電力を節約し、広告間隔を延長することを選択することがあります( )。あなたが保存しなければならないのであれば1294ミリ秒を試してみてください

645ミリ 768ミリ 961ミリ 1065ミリ 1294ミリ

:アップルは、以下の 長い間隔Apple製品によって発見の可能性を高めるためのいずれかを使用することをお勧めします電池。

+0

ありがとうHenrik。 WWDC 2012 [Advanced CoreBluetooth talk](http://www.pupuweb.com/blog/wwdc-2012-session-705-advanced-core-bluetooth-joakim-linde/)へのリンクです。 –

+0

そしてApple [bluetooth-devメーリングリスト]へのリンク(http://lists.apple.com/archives/bluetooth-dev/) –

+0

iPad3はBroadcom [BC4330](http://www.broadcom.com /products/Wireless-LAN/802.11-Wireless-LAN-Solutions/BCM4330)、BTとWi-Fiの共用アンテナを使用しています。目に見えているものが基本的なハードウェア機能によって引き起こされているかどうかを確認するためには、ドライバ情報(おそらくAndroid用)またはBCM4330ユーザマニュアル/アプリケーションノートを見つけることは有益でしょう。 –

0

これは古いスレッドですが、私のMacBook Pro(15インチ、2017)のmacOS High Sierra 10.13.3でも同じ問題があります。この問題は、「Apple TV」が短い広告時間しかないため、常に素早く表示される傾向のある周辺機器によって異なります。周辺機器によっては、表示に時間がかかったり、まったく表示されないようなものがあります。また、広告が遅すぎると、接続が遅くなる可能性があります。接続が発生するのは、最初に広告を見つけてその後の非常に短い一定時間(その時間に周辺デバイスがリッスンしている)で応答するためです。

この問題の回避策は、Wi-Fiとハンドオフの両方をオフにすることです。 Apple - システム環境設定 - 一般に進み、 "このMacとiCloudデバイス間のハンドオフを許可"のチェックを外して、ハンドオフをオフにします。このスキャンによって広告パケットがより迅速に表示され、接続が高速になるだけでなく、受信される信号強度がより強いことを示す高いRSSIも示されます。

この問題は、BTとWi-Fiの共存サポート、Handoff(Airdrop)とBLEの定期的な使用の違いにより、iOSで表示されないことに注意してください。この問題は、スキャンおよび接続中のBLEリスニング時間の割合の1つにしか見えないようです。接続が確立されると、それほど干渉がないように見えます。これは、1つの接続後、接続間隔の間に低レベルのBLE再試行と周波数ホッピングが自動的に行われるためです。 (広告パケットを見ることに頼る)スキャンと接続の確立中に、3つのBLE広告チャネルを連続的に監視する必要がありますが、macOSはあたかもそうしていないかのように動作します。技術的には、広告チャネルはWi-Fiチャネルと重複しません(http://www.argenox.com/a-ble-advertising-primer/参照)。