【 無線化講座が「本」になりました 】ムセンコネクト著書『Bluetooth無線化講座』出版決定

BluetoothプロトコルアナライザでBluetooth通信の仕組みを学ぼう【第1回:スタック構造全容編】

皆さん、こんにちは。技術専門商社のコーンズテクノロジー株式会社です。メーカーエンジニアの無線化を支援するため、ムセンコネクトの無線化講座でBluetooth技術やプロトコルアナライザについて解説しております。

今回からは、そもそもBluetooth通信がどのように行われているのか、その仕組みを解説していきます。今回はその第一弾として、まずBluetoothスタック構造の全容について解説します。

目次

Bluetooth通信の基礎 プロトコルスタックとは?

そもそもプロトコルとは「手順・規定・約束事」という意味になります。BluetoothプロトコルではBluetooth通信を行う上での約束事がBluetooth SIGによって規定されているため、通信データを取得した際に約束事に則ってやり取りをすることで受け手と送り手が通信できるようになります。

Bluetooth SIGではCore Specificationにてプロトコル全体をコントローラ、ホスト、アプリケーションに分類しています。

Bluetoothプロトコルの分類図

BluetoothプロトコルスタックはBluetooth BR/EDRとLow Energy(以下LE)で同じ名称となる層もありますが、構造が異なっているため互換性はありません。そのためBluetooth LE機器とBluetooth BR/EDR機器同士でやり取りをすることはできません。

データの流れ

実際に機器同士でやり取りを行う際には、データを上位レイヤから順に下位レイヤに受け渡し、対向機の下位レイヤに届けます。その情報を今度は対向機が下位レイヤから上位レイヤに送ります。スマートフォンとBluetoothイヤホンの例でこの流れをみてみますと、音楽アプリから音楽送信の指示を出します。そこからスマートフォン側の下位層までデータを送り、スマートフォンのフィジカルレイヤでデータを無線信号に変換しアンテナからデータを送信します。イヤホン側のアンテナでそのデータを受け取り無線信号をデジタルデータへ変換します。その後、上位の各層を経由しながら、データを受け渡していき、上位のアプリケーションで音楽アプリの指示に応答します。

プロトコルスタック内のデータの流れ

また、指示(コマンド)はそれぞれのレイヤごとに対応します。例えば、ペアリングではLink Manager内でお互いの情報交換を行いますが、ここでやり取りされるコマンドはLink Managerより上位レイヤまでいくことなく下位レイヤまでを経由しLink Manager内で対応します。

このようにプロトコルスタックの中をデータが流れており、それぞれの層がそれぞれの役割を担うことでBluetooth通信が可能になっています。

Bluetoothプロトコル分類について

Bluetoothプロトコルは大きく分けて下からコントローラー、ホスト、アプリケーションの3つに分類されます。ここではそれぞれの役割について見ていきましょう。

コントローラ層

まずはプロトコルスタックの下に位置するコントローラ層を見ていきましょう。コントローラ層は物理層、Baseband層、Link Layer層で構成されています。

物理層(RF層、PHY層)

プロトコルスタックの最下層にある物理層は、Bluetooth BR/EDRではRF層、Bluetooth LEではPHY層とよばれます。物理層ではデータをBluetooth変調して送受信するレイヤです。主な役割としては、データをBluetoothの無線信号に変換して2.4GHzの搬送波を生成し、一つ上のレイヤであるBaseband層で生成された周波数ホッピングシーケンスに則り、無線通信データの送受信を行います。

Bluetoothが使用する2.4 GHz帯では他のBluetooth機器だけではなく、Wi-Fi等の他通信規格といった、様々な電波が飛んでいます。そのため、他の電波が飛んでいる中でも問題なくやり取りができるように、受信感度や妨害波への耐性にも関わるレイヤになります。

Bluetooth通信のイメージ図

Baseband層

物理層の上にあるのがBaseband層になります。Basebandではその一つ上のLink Managerと物理層の橋渡しを行っているレイヤです。デバイス間の通信に必要なデータを生成し、RF通信を行う準備をします。役割例としては、ピコネットの形成、周波数ホッピングシーケンスの作成、Bluetoothデータの作成などを行っています。

Link Manager層

Link Manager層では、BR/EDRのホストとコントローラー間にあるHost Controller Interface(以後HCI)以下でデバイス間通信に関する各制御を司るLayerとなります。相手デバイスとの通信制御の交渉や通信リンクの制御を行います。またこの層でBDアドレスや暗号化するためのLink Key生成が行われます。他にも省電力モードの制御やSupported featureの定義とその詳細設定を行います。

Bluetooth LEではBasebandとLink Managerが統一されてLink Layerになっています。

HCI層

Link Manager/ Layer層の上にあるのが、HCI層です。HCI層は上位をホスト、下位をコントローラーと分けられており、その間の標準化されたインターフェースをHCIと呼びます。ここではホストからコントローラへのやり取りの受け渡しやLink Keyのやり取りなどが行われています。HCIでは、物理的には主にUSBやUARTで接続されます。

コントローラ層の役割例

ホスト層

HCI層の上はホスト層になります。こちらは大きく分けてL2CAP層、GAP層、Profile層に分かれています。

L2CAP層

L2CAPはBluetooth上でデータを送受信する際のインターフェースになります。上位レイヤから来たパケットの分割・再構成を行い、パケット長もこの層で決定します。L2CAPではインターネットのTCP/IPのようにアプリケーションによって識別番号が振り分けられるため、一つの伝送路で複数のデータセッションを扱うことが可能となります。L2CAPの識別番号はProtocol/Service Multiplexer(PSM)と呼ばれます。

またL2CAPではマトリョーシカのようにデータをカプセル化して送信します。上位層から来たデータを識別番号を追加しながらより大きなマトリューシカに入れていき、一番大きくなった際に相手機器に送ります。受け取った機器はその大きなマトリョーシカから一個一個の小さいマトリョーシカを取り出していく要領でデータが展開されます。

受け取ったデータを分割している様子

GAP層

GAP層では主に機器の接続/認証/暗号化を行うためにシステム全体を取りまとめています。この仕様に準拠することによって、Bluetoothに対応した機器はメーカーやアプリケーションの種類を問わずに接続できるようになります。ここでは、データの暗号化を行うため、機器同士が相互に登録して秘密鍵を交換するペアリングと、ペアリングで交換した鍵を保存するボンディングが行われます。

GAP層のおかげで様々なBluetooth機器に接続できる

Profile層

GAP層まででBluetooth通信ができるようになり、それぞれの機器の機能を追加するためにProfile層があります。プロファイルとは、Bluetoothの標準仕様の一つで、機器の用途ごとに定義された通信方式や操作手順を標準化したものになります。メーカーや機種が違っても、同じプロファイルを持っていれば、追加された機能を使用できるようにする仕組みです。デバイスを人間で例えるとプロファイルは言語のようなものです。

例として、BluetoothのキーボードやマウスはBR/EDRではHID(Human Interface Device)、LEではHOGP(HID over GATT Profile)等を搭載することで、マウスとキーボードのように違うタイプの製品であっても、それぞれ共通の通信手順を1から構築する必要なくやり取りさせることができます。また、イヤホンでは音楽再生(A2DP)、音量調整(AVRCP)、通話(HFP)などそれぞれの機能に応じたプロファイルを搭載することで、各機能が使えるようになります。

デバイスの種類・対応機能によって複数プロファイルでやり取りしている

アプリケーションレイヤ

アプリケーションレイヤでは実現したい機能を開発者側が設定しています。名前の通り、皆さんが毎日使用されているスマートフォンなどのアプリです。例としてはメモ帳アプリがあります。メモ帳でメモを打ち込むためにBluetoothキーボードで文字を入力するとしましょう。その際に入力された文字をアプリに反映させるためにHID、HOGPでやり取りが行われます。

アプリケーションの開発者側での実装次第で、機能はいくらでも追加でき、それぞれのプロファイルに対応していれば様々な機能が実現できるようになります。

Bluetooth全容を丸裸にするプロトコルアナライザ

ここまでプロトコルスタック構造の全容を見ていきましたが、Bluetooth機器同士のやり取りを可視化することができるのがBluetoothプロトコルアナライザです。全容を丸裸にすることによって、機器が決められた手順や規定に則ってやり取りが行えているか確認することができます。ただし、則っているからと言って安心できるわけではなく、Bluetoothの仕様には曖昧に定義されている部分もあり、仕様書を読んでいる人によっては解釈が異なる可能性もあります。そのため、仕様通りに実装したとしても、必ずしも問題なく動作できるわけではありません。さらに外乱の影響や開発者側で設定した機能の誤作動など、様々な要因で通信品質が思うように確保できない可能性もあります。そのような問題がどこの層でどのように起こっているのか解析するためにBluetoothプロトコルアナライザは重要なのです。

Bluetoothプロトコルアナライザの使用例

まとめ

Bluetooth通信はプロトコルスタックという共通の仕様があることによって、その仕様に準拠した機器同士が接続し、やり取りができるようになっています。言い換えると正しく仕様に準拠さえすれば、世界中のありとあらゆるBluetoothデバイスと通信を行うことができるのです。Bluetoothがここまでワールドワイドに普及することができたのはこの点に理由があるかもしれません。本記事では大まかなスタックの分類とそれぞれの役割について見てきましたが、次回以降の記事ではそれぞれのレイヤの詳細をプロトコルアナライザで測定した画面とともに紹介していきます。次回に乞うご期待ください!

製品 / 測定・解析サービスについて

Teledyne LeCroy Frontline社※製 BluetoothプロトコルアナライザはBluetooth接続トラブル解析に役立ちます。

Teledyne LeCroy Frontline社とは?

Bluetooth規格の立ち上げ当初からBluetoothプロトコルアナライザを提供するリーディングカンパニーです。昨今は、Bluetooth、Wi-Fi、802.15.4のプロトコルアナライザに限らず、RFテスタ、LE Link Layer認証テスタも提供するほか、豊富な経験を活かした試験受託、試験アドバイザなど幅広いBluetooth試験ソリューションを数多くの企業に提供しています。

また、弊社ではBluetooth測定・解析サービスもご用意しております。

よろしければシェアをお願いします
目次