本記事では、個人のCore資料の理解と忘備録を兼ねて、Core資料に沿ってこれらの役割や通信の流れについて整理していきたいと思います。
(解釈が誤っている部分があれば指摘いただけると嬉しいです!)
Bluetoothの2つのシステム
Bluetoothには、Classic(BR/EDR)とLow Energy(LE)の2つの通信方式があります。それぞれ使用するアプリケーションやユースケースによって、適切なBluetoothシステムは異なります。Classic(BR/EDR)は音声や高データレート通信向けで、LEは低消費電力が求められるIoTやセンサーデバイス向けとして棲み分けされてきた印象にあります。
しかし、近年の Bluetooth 5.2以降 では、LE向けに LE Audio などの音声通信規格が追加され、またBLEでより高いデータレートに対応できる仕様も増えています。これにより、今後はBLEが主流になっていくのではないかと個人的に考えています。
両方のシステムをサポートするデバイス
BR/EDRとLEの両方に対応するデバイスは、どちらの方式のデバイスとも通信可能です。ただし、一部のプロファイルやユースケースは、どちらか一方のシステムでしか利用できません。そのため、両方のシステムを実装することで、最も多くのユースケースをカバーできます。
Bluetoothのコアシステム:ホストとコントローラ
Bluetoothのコアシステムは、下記の図のようにホスト(Host)と コントローラ(Controller)の2つから構成されます。
Bluetooth BR/EDRの最小実装には、Bluetooth仕様で定義されているLink Layer(LL)、PHY(物理層)、L2CAPと関連するプロトコルに加えて、共通のサービス層プロトコルである サービス・ディスカバリ・プロトコル(SDP) が含まれます。また、全体的なプロファイル要件は Generic Access Profile(GAP) で規定されています。
一方、Bluetooth LEのみの最小実装には、Bluetooth仕様で定義されているLink Layer(LL)、PHY(物理層)とL2CAPと関連するプロトコルに加え、共通のサービス層プロトコルとして セキュリティマネージャー(SM) と アトリビュートプロトコル(ATT) が含まれます。さらに、全体的なプロファイル要件は Generic Attribute Profile(GATT) および Generic Access Profile(GAP) で規定されています。
(※それぞれのプロトコルの役割については別記事でまとめていこうかと考えています。)
Bluetooth BR/EDRとLEの両方をサポートする実装では、上記の両方の最小実装が含まれます。
完全なBluetoothアプリケーションには、Bluetooth仕様で定義されている追加のサービスや上位層プロトコルが必要になりますが、ここでは説明を省略しています。コアシステムのアーキテクチャはSIGのCore資料より抜粋した下記の図に示されています。
ホスト(Host)
ホストは、Bluetoothのプロトコルスタックの上位層を担当し、アプリケーションとBLE通信を制御します。
- HCI(Host Controller Interface)より上の層を指す
- ATT、GATT、GAP、L2CAP、SMP などのプロトコルを含む
- デバイスの管理や通信プロセスの制御を担当する
コントローラ(Controller)
コントローラは、Bluetoothの物理通信を担当し、データの送受信を処理します。
- HCIより下の層を指す
- Link Layer(LL)、PHY(物理層)を含む
- 実際の無線通信を担当
参考資料