- Introduction
- BLEの理論速度が達成できないのはなぜでしょうか?
- Bluetooth 5 speed : 2x speed utilizing the new 2M PHY
- Factors that impact/determine the data throughput
- PHY
- Connection Interval & max packets per connection event
- Data Length Extensions (DLE)
- ATT Maximum Transmission Unit (ATT MTU)
- 動作タイプ。 応答あり書き込み vs. 応答なし書き込み、指示 vs. 通知
- Inter Frame Space (IFS): 連続したパケット間の時間遅延 (150 us)
- 空パケットの送信
- パケットオーバーヘッド
- アプリケーション データのスループットを計算する
- LE 1M PHY と LE 2M PHY の計算
- スループットを計算する手順(Mbps単位):
- Steps:
- Test and calculating data throughput between two nRF52 development kits
- ケース 1 (PHY: 1 Mbps, ATT MTU = 23 bytes, DLE: enabled, Connection interval: 7.5 millisecs)
- Data throughput reported by firmware:
- 計算されたデータスループット。
- ケース 2 (PHY: 2 Mbps, ATT MTU = 23 bytes, DLE: enabled, Connection interval: 7.5 ミリ秒)
- Data throughput reported by firmware:
- 計算されたデータスループット。
- ケース 3 (PHY: 1 Mbps、ATT MTU = 158 バイト、DLE: 有効、接続間隔: 7.5 ミリ秒)
- Data throughput reported by firmware:
- Calculated data throughput:
- ケース 4 (PHY: 2 Mbps, ATT MTU = 247 bytes, DLE: enabled, 接続間隔: 7.5 ミリ秒)
- Data throughput reported by firmware:
- Calculated data throughput:
- Data throughput reported by firmware:
- Calculated data throughput:
- ケース6 (PHY: 2 Mbps, ATT MTU = 247 bytes, DLE: enabled, Connection interval:
- Data throughput reported by firmware:
- Calculated data throughput:
- Optimizing for maximum data throughput
- まとめ & closing
Introduction
この Bluetooth 5 に関するシリーズの 2 番目の投稿では、BLE アプリケーションのスループットの概要とともに、2 倍速の改善という新機能について説明します(前回の記事では Bluetooth 5 の新機能全般、さらに広告容量増加の機能に関して詳しく解説しています)。
最初に、宣伝されている速度 (1 Mbps および新しい 2 Mbps) は理論上のものであり、アプリケーションのスループットに関しては削減されていることを理解する必要があります。 これは、次のセクションで説明する複数の理由によるものです。
Bluetooth 5 の「2 倍速」機能はハードウェア アップデートを必要とするので、古いデバイス/チップ/モジュールはこれをサポートしません。 また、この高いスループットを達成するためには、互いに通信する両方のBLEデバイスが新しいLE 2M PHY(この高速データ転送を可能にする)をサポートする必要があることに留意することが重要です。
新しい LE 2M PHY と元の LE 1M PHY は、データ 1 ビットあたり 1 シンボル表現を使用するため、両方とも Uncoded PHY と呼ばれています(データ 1 ビットあたり 2 シンボルまたは 8 シンボル表現を使用する新しい LE Coded PHY と比較して)。 これは、送信電力が増加することなく、無線オン時間が短縮されるからです。
この投稿では、
- BLE に期待できる実際のスループットはどのくらいか。
- アプリケーションのデータ スループットはどのように計算するのですか?
- データ スループットを最大化するにはどうすればよいですか?
- 2つのnRF52シリーズ開発キットによるテスト、測定、データ スループットの計算
BLEの理論速度が達成できないのはなぜでしょうか?
1Mbps(LE 1M PHY)、2Mbps(LE 2M PHY)、125kbps、500kbps(いずれもS=8、S=2のLE Coded PHY使用)は、無線機がデータを送信する速度ですが、以下の理由により、応用スループットとしては実現不可能です。
- 接続間隔あたりのパケット数の制限
- パケット間のフレーム間スペース(IFS)遅延(150us)
- データがない場合でもデバイスから送信する必要がある空パケット(Empty Packet)
これらの要因をよりよく理解し、何がアプリケーションのスループットに影響するかを理解するために、次のことを行います。 パケット形式をより深く見ていく必要があります。 次の図は、LE 1M PHY と 2M PHY のデータパケットがどのようなものか示している。
我々が関心を持つ部分(そしてアプリケーションデータを本当に定義している部分)は、ATT ペイロードである。 図からわかるように、Bluetooth Low Energy の各レイヤーで使用されるオーバーヘッド バイトがいくつかあります。
- 4.0 および 4.1 では、最大 ATT Payload は 20 バイトです。
- 4.2 および 5.0 では、データ長拡張 (DLE) という新しい機能により ATT Payload に最大 244 バイトのデータを格納することができます。
Bluetooth 5 speed : 2x speed utilizing the new 2M PHY
It is useful to understand the limitations of using the new LE 2M PHY in Bluetooth 5:
- Cannot be used to transmit the primary advertisement (on the primary channels)(主要広告の送信には使用できない)。
- データ パケットと同じチャネル (37 チャネル: 0 ~ 36) で送信される二次「補助パケット」に使用できます。
一次および二次広告の詳細については、私の以前のブログ記事を参照してください。 Bluetooth 5 のアドバタイズメント。 知っておくべきすべてのこと」を参照してください。 - LE 1M は必須ですが、LE 2M はオプションです。 そのため、Bluetooth 5 のサポートを主張するすべてのチップが、必ずしも高いスループットを処理できるとは限りません。
- 広告と検出は LE 2M PHY で発生し、その後接続は LE 2M PHY を使用して二次広告チャネルで発生します
あるデバイスから別のデバイスへのアプリケーション データの転送は通常 2 デバイス間の接続中に発生します。 接続されたデバイスは、PHY Update Procedure を介して、異なる PHY の使用をネゴシエートすることができます。 これは、接続が確立された後、スレーブまたはマスターのいずれかによって開始されますが、マスターは最終的に、各方向でどの PHY を使用するかを決定します (スレーブの要求とマスターがサポートする PHY に基づいて)。
Factors that impact/determine the data throughput
BLE アプリケーションのデータ スループットに影響するいくつかの要因も存在します。 最も一般的なものは、
- PHY の使用 (LE 1M vs. LE 2M vs. LE Coded (S=2 or S=8))
- 接続間隔
- 接続間隔ごとの最大パケット数
- ATT 最大伝送ユニット (ATT MTU)
- Data Length Extension (DLE)
- 動作の種類。 応答ありの書き込み vs. 応答なしの書き込み、指示 vs. 通知
- インター フレーム スペース (IFS): 結果のパケット間の時間間隔 (150 us)
- 空のパケットの送信
- パケット オーバーヘッド – パケットのすべてのバイトがアプリケーション ペイロードに使用されない
これらの各項目をより詳細に見ていきましょう。
PHY
Bluetooth 5 には、基本的に 3 つの PHY があります: オリジナルの 1 Mbps PHY、新しい 2 Mbps、コード化 PHY (S=2, または S=8)です。
Connection Interval & max packets per connection event
接続間隔は、1つの接続イベント中にどれだけのパケットを送信できるかを効果的に決定します。 値が高いほど、1 つの接続イベントでより多くのパケットを送信できます (一部のデバイスでは、特定の制限まで)。
接続間隔の詳細については、こちらを参照してください。 BLE接続間隔とイベント
ただし、接続イベントごとのパケット数はデバイスとBLEスタックに依存するため、制限があり、特定のデバイスではデバイスとスタックのバージョンによって異なります。 また、この値はデバイスの動作にも依存するため、無線機は他のイベントに参加する必要があり、接続イベントごとに送信されるパケット数はスタックが許可する最大値に達しない場合があります。 たとえば、この数は iOS と Android で異なり、またデバイス上で動作する OS のバージョンによっても変化します。
ユースケースに基づいて接続パラメータを動的に更新することが有用な場合があります。 しかし、これらの推奨を受け入れるか、またはそれに合わせてパラメータを更新するかは、マスター次第であることに留意してください。
Data Length Extensions (DLE)
この機能は、パケット サイズにより多くのペイロードを保持できるようにします (最大 251 バイト、無効時は 27 バイト)。 この機能は Bluetooth 仕様のバージョン 4.2 で導入されました。
ATT Maximum Transmission Unit (ATT MTU)
ATT MTU 送信機と受信機が処理できるデータの最大量と、それらのバッファに保持できるデータの最大量を決定します。 許容される最小のATT MTUは27バイトです。 これは、最大 20 バイトの ATT ペイロードを可能にします (3 バイトが ATT ヘッダー、4 バイトが L2CAP ヘッダーに使用されます)。
仕様では MTU 値の上限はありませんが、使用中の特定のスタックがそれ自身の制限を持っている場合があります。 たとえば、DLE を有効にすると、251 – 4 = 247 バイトまで転送できます (L2CAP ヘッダー サイズを差し引いた後)。 ATT ヘッダ(3 バイト)を考慮すると、実際の ATT ペイロードデータ用に 244 バイトが残されます。 MTUが少なくとも247バイトであれば、1つの単一パケットに収まる。 MTU が 247 バイトより大きい場合、MTU は複数のパケットにまたがり、(パケットのオーバーヘッドとパケット間のタイミングのため)スループットが低下します。
有効な MTU は、クライアントとサーバーがサポートする ATT MTU の最小値で決定されます。 たとえば、クライアントが 100 バイトの ATT MTU をサポートし、サーバーが 150 バイトの ATT MTU をサポートすると応答した場合、クライアントはそれ以降の接続に使用する ATT MTU を 100 バイトと決定します。
動作タイプ。 応答あり書き込み vs. 応答なし書き込み、指示 vs. 通知
高いスループットが必要な場合、応答なし書き込みまたは通知を使用して、クライアントからサーバーへ、サーバーからクライアントへデータを転送することが可能です。
Inter Frame Space (IFS): 連続したパケット間の時間遅延 (150 us)
Bluetooth 仕様より:
4.1.1 Inter Frame Space
同じチャネルインデックス上の連続した2パケット間の時間間隔は Inter Frame Space と呼ばれています。 前パケットの最終ビット終了から後パケットの先頭ビット開始までの時間として定義されます。
Inter Frame Spaceは「T_IFS」と呼ばれ、150μsでなければなりません。
空パケットの送信
データを受信したデバイスが送り返すデータがない場合、やはりBluetooth仕様に従って空パケットを送信する必要があります。
パケットオーバーヘッド
パケットフォーマットの図にあるように、パケットはアプリケーションデータ(ATTデータ)に数えられないいくつかのオーバーヘッドデータを含んでいます。 基本的に、これらのバイトは転送データ レートの一部を消費しますが、アプリケーション データの一部として送信されるバイトは考慮されません。
アプリケーション データのスループットを計算する
大きな疑問は、アプリケーション スループットをどのようにして計算するのかということです。
- Bluetooth バージョン & 使用する PHY
- DLE: Data Length Extensions – enabled or not
- ATT MTU value
- 接続間隔
- 接続イベントごとの最大パケット数
- 動作(応答付きの書き込み vs. 応答なしの書き込み)
- 動作の詳細
- 接続イベントごとの最大パケット数
- 動作の詳細
- 接続イベントの最大数
- Inter Frame Space (IFS): 150 microseconds
Bluetooth バージョンと PHY により、生のデータ転送レートが決定されます。 例えば、Bluetoothバージョン4.2とLE 1M PHYを使用している場合、転送レートは1Mbpsになります。 DLE、ATT MTU、接続間隔、接続間隔あたりの最大パケット数、操作、および IFS はすべて、実際のデータ転送に使用されるオンラジオ時間の割合を決定します。 LE 1M PHY と LE 2M PHY は、どちらも似たようなパケット形式です。 LE Coded PHY は、かなり異なるパケットフォーマットを持っているので、この 2 つのケースを別々に見ていく。
LE 1M PHY と LE 2M PHY の計算
LE Uncoded PHY のパケットフォーマットに戻ると、
それぞれの PHY に対するオーバーヘッド量は若干異なっている。 Preambleは、1M PHYの場合1バイト、2M PHYの場合2バイトです。 MIC フィールドは、暗号化された接続にのみ使用されるオプションのフィールドである。 LE Coded PHY の場合、パケットフォーマットは以下のようになる(Bluetooth 5.0 仕様書 Vol 6, Part B, Section 2.より)。2):
スループットを計算する手順(Mbps単位):
簡単にするため、以下を仮定します。
- 暗号化は有効ではない(MICフィールドがパケットに含まれない)
- 我々は一方向(例えば、以下の場合)でのスループットに興味があります。 そのため、もう一方の方向は空のパケットのみを転送すると仮定します。
- 応答なしの書き込み (これは、大量のデータを転送する際にスループットを最大化するのに役立ちます)
Steps:
- 使用中の PHY を判断して、生のデータ転送速度をメモしてください
例. 1M PHYの場合 -> 1 Mbps、Coded PHYとS=8の場合 -> 125 kbps - 1つのデータパケットと受信機からの空パケットの送信にかかる時間を決定します。
1つのデータパケットが送信できる時間は、以下を含みます:データパケット時間 = 空パケット送信時間 + IFS + 実際のデータパケット送信時間 + IFS.
空パケット送信時間は、次のように計算できます。Time to transmit empty packet = empty packet size / raw data rate
空パケットは、次のフィールドを含みます:
Preamble + Access Address + LL Header + CRC.
1M PHYの場合、Preambleは1バイトなので、空パケットの合計サイズは、1+4+2+3バイト=10バイト=80ビットです。
(2M PHYでは、Premableが1バイトでなく2バイトなので空パケットのサイズは88ビットとなります)。これに基づき、空の1M PHYパケットを送信する時間は次のようになります:
Time to transmit empty packet = empty packet size / raw data rate = 80 bits / 1 Megabits per second = 80 micro seconds
データパケットは、MICフィールド(暗号化は無効)を除き、パケット形式図に記載されているすべてのフィールドを含んでいます。
データパケットを送信する時間 = データパケットサイズ / 生データレート
DLEが有効で、ATT MTUが1パケットで許可される最大バイト:247バイトに等しければ、データパケットサイズは以下のように計算できます。
データパケットサイズ=1+4+2+4+247+3バイト=265バイト=265*8ビット=2088ビット
データパケット送信時間=2088ビット/1Mbps=2,088マイクロ秒
Data_Packet_Time = 空パケット送信時間 + IFS + 実際のデータパケット送信時間 + IFS = 80 + 2*150 + 2088 = 2,468 マイクロ秒
比較として、2M PHYの場合、次のようになります。Data_Packet_Time = 空パケット送信時間 + IFS + 実際のデータパケット送信時間 + IFS = 88/2 + 2*150 + (2 + 4 + 2 + 4 + 247 + 3)*8/2 = 1392マイクロ秒
DLEが有効でATT MTUが247未満に設定されると、(ATT MTUより大きいデータはより多くのパケットに分割されるので)結局、オーバーヘッドが増えてしまうのです。 たとえば、ATT MTU を 158 に設定したとすると、244 バイトのアプリケーションデータを転送するために、1 つではなく 2 つのパケットが必要になり、バイトのオーバーヘッドとパケット間の IFS が増加するため、スループットが低下することになります。 別のシナリオとして、DLE を無効にし(ペイロードサイズは最大 27 バイト)、ATT MTU を 27 バイトより大きくすることも可能です。Note: LE Coded PHY では、上記で使用したデータおよび空のパケットサイズの計算方法と同じ方法を使用することができ ます。
- 1つの接続間隔の間に、どれだけのパケットが送信できるかを計算する
この計算は、必ずしも純粋に数学的なものではありません。 iOS と Android は、OS バージョンによって最大値が変わるので、常に簡単に計算できるわけではありません。 とはいえ、MCUの場合、ベンダーのSDKのドキュメントに最大値が記載されているのが普通です。 試行錯誤して、特定のデバイスが何をサポートしているかを把握することも有用です。最大値がわかったら、任意の接続間隔に収まるパケットの最大理論数を計算できます。 例えば、7.5ミリ秒の接続間隔(仕様上許される最小値)であれば、上記の例(1M PHY使用、DLE有効)では、
Maximum # of data packets per connection interval = , rounds to the highest whole number (integer) Maximum # of data packets per connection interval = 3 packets
通常、この数字は現実的ではない、連続した接続イベントで送られるパケットのタイミング遅延があるため である。
- 一度、接続間隔ごとに転送できるデータパケットの最大数を計算したら、データスループットを計算することができます:データスループット=接続間隔ごとのデータ/接続間隔=接続間隔ごとのデータパケットの数*パケットあたりのデータサイズ/接続間隔
= 2 * 244 * 8ビット/ 7.5 ミリ秒 = 520,533 ビット/秒 ~= 508 kbps
Test and calculating data throughput between two nRF52 development kits
This section is running multiple tests of data transfer, calculate the throughput using the procedure earlier, and compare them with the measured throughput reported by the application running on the development board.ここでは、データ転送に関する複数のテストを実施し、先ほど述べた手順を使用して、処理能力を算出し、さらに開発ボード上で動作するアプリケーションによって報告される処理能力の測定値と比較することにしました。 テストは、ノルディックセミコンダクター社から提供され、このブログ記事で紹介したデモアプリをもとに実行されます。
例のソース コードは、こちらの GitHub ページにあります。
ケース 1 (PHY: 1 Mbps, ATT MTU = 23 bytes, DLE: enabled, Connection interval: 7.5 millisecs)
Data throughput reported by firmware:
Time: 36.0.0.0 (PMP) DATA (ファームウェアによって報告されたデータ スループット): Time: 36.0.0.0 (PMP)11 秒経過。
スループット: 232.29 Kbits/s.
Sent 1048580 bytes of ATT payload.
計算されたデータスループット。
MTU を 23 バイトに設定すると、DLE はデータ スループットとパケット サイズにあまり影響を及ぼしません。
データ パケットを送信する時間 = データ パケット サイズ / 生データ レート = 1 + 4 + 2 + 4 + 23 + 3 バイト / 1 Mbps= 37*8 ビット / 1 Mbps = 296 マイクロ秒
データ_パケット_タイム = 空パケット送信時間 + IFS + 実際のデータ パケットを送信する時間 + IFS = 80 + 150 + 296 + 150マイクロ秒= 0マイクロ秒。 676マイクロ秒
1接続区間の最大データパケット数====11パケット
1接続区間の総転送データ=11×20バイト=11×20×8ビット=1760ビット
データスループット=1接続区間の総転送データ/接続間隔=1760ビット/7.5 ミリ秒 = 234.67 Kbits/s
このように、計算値と実測値がかなり近いことがわかります。
ケース 2 (PHY: 2 Mbps, ATT MTU = 23 bytes, DLE: enabled, Connection interval: 7.5 ミリ秒)
Data throughput reported by firmware:
Time: 27.23 seconds elapsed.
Throughput: 307.96 Kbits/s.
Sent 1048580 bytes of ATT payload.Time: 27.23 seconds elapsed.
Data throughput: 307.96 Kbits/s.
計算されたデータスループット。
データパケットを送信する時間 = データパケットサイズ / 生データレート = 2 + 4 + 2 + 4 + 23 + 3 バイト / 2 Mbps= 38*8 ビット / 2 Mbps = 152 マイクロ秒
データパケット時間 = 空パケット送信時間 + IFS + 実際のデータパケットを送信する時間 + IFS = 44 + 150 + 152 + 150 マイクロ秒= = 840 マイクロ秒。 496マイクロ秒
1接続区間の最大データパケット数 = = = = 15パケット
1接続区間の総転送データ = 15 * 20バイト = 15 * 20 * 8ビット = 2400ビット
データスループット = 1接続区間あたりの総転送データ/接続間隔 = 2400ビット/7.8ビット
接続区間の最大データ数は15バイトです。5 ミリ秒 = 320 Kbits/s
このように、計算値と実測値がかなり近いことがわかります。
ケース 3 (PHY: 1 Mbps、ATT MTU = 158 バイト、DLE: 有効、接続間隔: 7.5 ミリ秒)
Data throughput reported by firmware:
Time: 17.53 seconds elapsed.
Throughput: 478.36 Kbits/s.
Sent 1048730 bytes of ATT payload.これは、ファームウェアによって報告されたデータスループットです。
Calculated data throughput:
データパケットを送信する時間 = データパケットサイズ / 生データレート = 1 + 4 + 2 + 4 + 158 + 3 バイト / 1 Mbps= 172*8 ビット / 1 Mbps = 1376 マイクロ秒
Data_Packet_Time = 空パケット送信時間 + IFS + 実際のデータパケット送信時間 + IFS = 80 + 150 + 1376 + 150マイクロ秒= 0マイクロ秒。 1756マイクロ秒
1接続区間の最大データパケット数 = = = = 4パケット
1接続区間あたりの総転送データ = 4 * 155バイト = 4 * 155 * 8ビット = 4960ビット
データスループット = 1接続区間の総転送データ/接続間隔 = 4960ビット/7.5ビット
接続区間あたりの最大データ数= 4 * 155バイト/8ビット
1接続区間の最大データ数= 4 * 155 = 8ビット
1接続区間の最大データ/接続間隔
1接続区間の最大データ/接続間隔5 ミリ秒 = 661.33 Kbits/s
ケース 4 (PHY: 2 Mbps, ATT MTU = 247 bytes, DLE: enabled, 接続間隔: 7.5 ミリ秒)
Data throughput reported by firmware:
Time: 8.45 seconds elapsed.
Throughput: 992.07 Kbits/s.
Sent 1048712 bytes of ATT payload.Data by firmware:Time: 8.45 seconds elapsed.
Sent 1048712 bytes of ATT payload.
Calculated data throughput:
データパケットを送信する時間 = データパケットサイズ / 生データレート = 2 + 4 + 2 + 4 + 247 + 3 バイト / 2 Mbps= 262*8 ビット / 2 Mbps = 1048 マイクロ秒
データパケット時間 = 空パケット送信時間 + IFS + 実際のデータパケット送信時間 + IFS = 44 + 150 + 1048 + 150 マイクロ秒 = 1048マイクロ秒データパケット時間を送信するための時間は、次のとおりです。 1392マイクロ秒
1接続区間の最大データパケット数 = = = = 5パケット
1接続区間の総転送データ = 5 * 244バイト = 5 * 244 * 8ビット = 9760ビット
データスループット = 1接続区間に転送される総データ量/接続間隔 = 9760ビット/7.5ビット
接続区間に最大でデータパケット数 = = 5パケット= = = 244バイト/8ビット
接続区間の最大データ数 = 5 * 244バイト/8ビット
注意: 最後の 2 つのケースでは、接続間隔あたりのパケット数が少なく、計算値と測定値に差があると、実際のデータ スループットに大きな影響を及ぼします。 たとえば、接続間隔あたりのパケット数がケース 4 では 5 でなく 4 になった場合、計算されたスループットは 1,301.33 Kbps でなく 1,041.1 Kbps になります (これは大きな違いであり、ここで数字の不一致を説明することができます)。
Data throughput reported by firmware:
Time: 6.34 seconds elapsed.
Throughput: 1322.33 Kbits/s.
Sent 1048712 bytes of ATT payload.Time: 6.34 seconds elapsed.6642>Data throughput: 1322.33 Kbits/s.
Sent 1048712 bytes of ATT payload.
Calculated data throughput:
データパケットを送信する時間 = データパケットサイズ / 生データレート = 2 + 4 + 2 + 4 + 247 + 3 バイト / 2 Mbps= 262*8 ビット / 2 Mbps = 1048 マイクロ秒
Data_Packet_Time = 空パケット送信時間 + IFS + 実際のデータパケット送信時間 + IFS = 44 + 150 + 1048 + 150マイクロ秒
の場合。
1接続区間あたりの最大データパケット数===35パケット
1接続区間あたりの総転送データ=36×244バイト=35×244×8ビット=68320ビット
データスループット=1接続区間の総転送データ/接続間隔=70272ビット/50ミリ秒=1366。4 Kbits/s
ケース6 (PHY: 2 Mbps, ATT MTU = 247 bytes, DLE: enabled, Connection interval:
Data throughput reported by firmware:
Time: 6.11 seconds elapsed.
Throughput: 1371.82 Kbits/s.
Sent 1048712 bytes of ATT payload.Time: 6.11 seconds elapsed.
Sensing 1048712 bytes of ATT payload.
Calculated data throughput:
データパケットを送信する時間 = データパケットサイズ / 生データレート = 2 + 4 + 2 + 4 + 247 + 3 バイト / 2 Mbps= 262*8 ビット / 2 Mbps = 1048 マイクロ秒
データパケット時間 = 空パケット送信時間 + IFS + 実際のデータパケット送信時間 + IFS = 44 + 150 + 1048 + 150マイクロ秒 = 1392マイクロ秒
データパケットタイムを送信するための時間 = データパケットのサイズ + IFS = 2 + 4 + 2 = 247 * 8ビット/2Mbps データパケットタイムは、データパケットの送信にかかる時間 + IFS = 44 + 150 + 1マイクロ秒です。
1接続区間の最大データパケット数 = = = 287パケット
1接続区間の総転送データ量 = 287 * 244バイト = 287 * 244 * 8ビット = 560224ビット
データスループット = 1接続区間の総転送データ量/接続間隔 = 560224ビット / 400ミリ秒 = 1400.56 Kbits/s
Optimizing for maximum data throughput
Based on the factors went over, we can note the following when optimizing for high data throughput:
- Always enable DLE
Oviously, if you are using Bluetooth v4.1 or earlier, this is not a valid option. しかし、一般的には、アプリケーションのデータ効率を最大化するために、DLE を有効にします。 LE 2M PHY を使用することは、消費電力の削減にもつながるので、一石二鳥です! - Use Notifications and Writes without Responses
これらを使用すると、不要なパケットを送信する必要がなくなります(受信側が受け取った各パケットを確認しなければならない表示と通常の書き込みと比較して)。 - ATT MTU 値は少なくとも 247 バイト以上を選択します。
これにより、パケットバイトのオーバーヘッドを最小化します。 - 接続間隔は、接続間隔ごとに最大数のパケットを可能にするものを選択します。 接続間隔が短いほど、無線オン時間が長くなるため、デバイスが消費する電力が多くなります。 また、接続間隔が長すぎると、ユーザーエクスペリエンスが損なわれます(接続間隔が長くなると、待ち時間が長くなります)ので、接続間隔が長すぎないように注意してください。 最後に、接続間隔ごとにサポートされる最大パケット数に関して、システム内のデバイスに何らかの制限があることを考慮してください。
まとめ & closing
上に挙げた計算値はまだ理論値で、実際や現実の環境でのデータ スループットの測定値と一致しないかもしれませんが、出発点となり期待値の良い指標になります (少なくとも最大値はそうです)。 干渉や送受信エラーもデータスループットに影響します(再試行、データ損失、接続終了のイベントにより、スループットが低下します)。 これらは、Bluetoothと同じ2.4GHz帯を利用する他の機器の存在、機器間の距離が長い、機器間に障害物がある、などが原因で発生します。