bluetoothの研究

#概要
bluetoothを理解したかった。

#bluetoothとは。

数mから数十m程度の距離の情報機器間で、電波を使い簡易な情報のやりとりを行うのに使用される。
当初、エリクソン、インテル、IBM、ノキア、東芝の5社（プロモーター企業）によって策定された。
IEEEでの規格名は、IEEE 802.15.1である。
2.4GHz帯を使用してPC（主にノートパソコン）等のマウス、キーボードをはじめ、携帯電話、PHS、スマートフォン、タブレットでの文字情報や音声情報といった比較的低速度のデジタル情報の無線通信を行う用途に採用されている。
Bluetooth BR/EDRは2.4GHz帯を79の周波数チャネルに分け（LEは40）、利用する周波数をランダムに変える周波数ホッピングを行いながら、半径10 - 100m程度のBluetooth搭載機器と、最大3Mbps（HSは24Mbps）で無線通信を行う。
Bluetooth BR/EDR/LEと2.4GHz帯の無線LAN（Wi-Fi）は、ISMバンドで周波数帯を共用する。
そのため相互干渉・混信が起こり、Bluetooth使用時に無線LANの速度が著しく低下するという問題が起こることもある。

#ピコネットとは。

Bluetooth の通信は「ピコネット(piconet)」という単位で行われ、ピコネットは１台の「マスター」と、最大同時７台までの「スレーブ」によって構成されま す。
例えばスマートフォンにキーボードをつなげる場合、スマートフォンがマスター、キーボードがスレーブとして動作しています。
PC 同士の通信であっても、必ずどちらか一方がマスターでもう一方がスレーブです。
通信の主導権は常 にマスターが持ち、マスター→スレーブ方向のパケットは任意のタイミングで送ることができますが、スレーブ→マスター方向のパケットは「スレーブ何番、送 信せよ」という指令(POLL)がマスターから送られなければ送信することができません。

#プロトコル

通信は 625 μ秒を単位とする「スロット」時間に同期して行われ、パケットの長さは必ず 625 μ秒の整数倍(奇数倍)に揃えられます。
各ノードは 48bit の MAC アドレスを持ってはいますが、ピコネットの確立後は 3bit の「論理アドレス(Logical Transport Address)」がスレーブを識別する ID になります。
Bluetooth の「同時最大７台」という制約はここから来ており、これが８ではなく７なのはアドレス 000 がブロードキャスト用に予約されているためです。
Bluetooth のパケットには主に「ACL(Asynchronous Connection Less)」と「SCO(Synchronous Connection Oriented)」の２種があります。
ACL は一般のデータ転送に使われるパケットで、SCO は予約済み帯域・短レイテンシの音声転送に特化したパケットです。
Bluetooth においては L2CAP (Logical Link Control and Adaptive Protocol)という層がプログラマーから見た API になり、ソケットの確立やデータの送受信は L2CAP に対して行えば、通信状況と設定状態に応じて適切なパケットタイプを自動的に選択してくれる仕組みになっています。

#ペアリング

暗号通信確立時、マスターとスレーブの間では乱数で生成された 128 ビットの共有秘密情報(リンクキー)が交換され、以降の通信はこのリンクキーから生成されたセッション・キーで暗号化されます。このリンクキー交換・マスタースレーブ関係の確立手順を「ペアリング(Pairing)」と呼びます。
リンクキーの交換 は公開鍵暗号で暗号化されますが、公開鍵暗号じたいの正当性検証は人間の介入を必要とし、このために幾つかの確認手順が備えられています。Bluetooth 2.1 以前の仕様では４桁の確認コードを用いる「PIN 方式」だけでしたが、Bluetooth 2.1 以降では Secure Simple Paring (SSP) という仕様が拡張され、

- 確認なし(Just Works)
- ６桁の認証コードを表示しての一致確認 (Numeric Comparison)
- ６桁の認証コードを打ち込むことによる確認 (Passkey Entry)
- Bluetooth 以外の通信 (USB や NFC) による確認 (Out-Of-Band, OOB)

の ４方式が追加されました。確認方式が複数用意されたのは、例えばマウスのように入力も表示機能も持たないデバイス(Just Works)、プリンターのように表示能力だけを持つデバイス(Numeric Comparison)、キーボードのように入力機能だけを持つデバイス(Passkey Entry)といったように、ホスト・デバイスの能力に応じて適切な認証方式が使えるように配慮されたからです。

#プロファイルとは。

可能な用途を定義したもの

- 3D Synchronization Profile (3DSP)
3Dメガネとテレビを繋ぐためのプロファイル。
- Advanced Audio Distribution Profile (A2DP)
デジタルオーディオプレイヤー - ヘッドフォン間などで用いられる、ステレオ音質のオーディオデータをストリーミング配信するためのプロファイル。
- Audio/Video Remote Control Profile (AVRCP)
デジタルオーディオプレイヤー - リモコン間などで用いられる、操作対象デバイスをリモコンからリモート操作するためのプロファイル。
- Basic Imaging Profile (BIP)
携帯電話 - プリンタ間などで用いられる、画像の送受信や印刷のためのプロファイル。
- Basic Printing Profile (BPP)
携帯電話 - プリンタ間などで用いられる、電子メールや画像、プレーンテキストなどの印刷のためのプロファイル。
- Calendar Tasks and Notes Profile (CTN)
カレンダータスクとノート
- Device Identification Profile (DI)
SDPを利用して、デバイス固有の情報を提供するためのプロファイル。
- Dial-Up Network Profile (DUN)
Bluetoothの無線接続経由で、インターネットや他のダイアルアップサービスにアクセスするためのプロファイル。
- File Transfer Profile (FTP)
2台のPC間でファイル転送を行なうためのプロファイル。同名のプロトコル (File Transfer Protocol) との関連はない。
- Generic Access Profile (GAP)
他の全てのプロファイルの基礎として機能するプロファイルで、機器の接続、認証、暗号化などを行なうもの。A2DPとVDPの基礎として使われている。
- Generic Attribute Profile（GATT)
Bluetooth Low Energyを利用するすべての通信のベースとなるプロファイル。その他のプロファイルと組み合わせて使う。
- General Audio/Video Distribution Profile (GAVDP)
ビデオストリームやオーディオストリームを配信するためのプロファイル。前述のGAPと同じく、A2DPとVDPの基礎として使われている。
- Global Navigation Satellite System Profile (GNSS)
GPSなどの測位情報を伝送するためのプロファイル。
- Generic Object Exchange Profile (GOEP)
ファイル転送の基礎として機能するプロファイル。
- Generic PIM Profile (GPP)
 PIM
- Hard Copy Cable Replacement Profile (HCRP)
 PC - プリンタ間で用いられる、ファイルの印刷・スキャンを行なうためのプロファイル。
- Health Device Profile (HDP)
健康管理機器を接続するためのプロファイル。
- Hands-Free Profile (HFP)
携帯電話 - ヘッドセット間などで用いられる、電話の発着信や通話を行なうためのプロファイル。
- Human Interface Device Profile (HID)
キーボードやマウス（ポインティングデバイス）をBluetoothの無線接続経由で使用するためのプロファイル。
- Headset Profile (HSP)
PC・携帯電話 - ヘッドセット間などで用いられる、音声入出力を行なうためのプロファイル。
- Interoperability Profile (IOPT)
すべてのBluetooth対応機器に適用されるプロファイルで相互運用性を定義する。
- Message Access Profile (MAP)
デバイス間でメッセージオブジェクトを交換するためのプロファイル。GOEPを基礎技術として用いている。
- Multi-Profile Specification (MPS)
複数のプロファイルのサポート
- Object Push Profile (OPP)
携帯電話 - 携帯電話間のオブジェクト（たとえば電話帳のデータやスケジュールのデータなど）を交換するために使用されるプロファイル。
- Personal Area Networking Profile (PAN)
ある1台のPC（マスター）を中心として、複数のPC（スレイブ）が無線接続を行なうためのプロファイル。
- Phone Book Access Profile(PBAP)
電話帳情報を伝送するためのプロファイル。
- SIM Access Profile (SAP)
GSM(2G)方式のSIMカード、UICC、R-UIMカードにアクセスするためのプロファイル。
- Serial Port Profile (SPP)
PC間において仮想シリアルポートを設定し、それらのPCを接続するために使用されるプロファイル。
- Synchronization Profile (SYNCH)
GOEPと連動して使用することで、PCや携帯電話などの各デバイス間で各種情報（カレンダーやアドレスなど）を共有するために使用されるプロファイル。
- Video Distribution Profile (VDP)
ビデオカメラ - モニタ間などで、ビデオデータをストリーミング配信するためのプロファイル。

#サービスディスカバリ

Bluetooth の検索はまず「問い合わせ(Inquiry)」という手順で、周辺にあるデバイスの一覧を得ることから始まります。この時点で判るのは MAC アドレスだけなので、次に「呼び出し(Page)」という手順でマスター・スレーブ関係を確立し、「サービス検索(SDP; Service Discovery Protocol)」という手順で情報を交換して製品名や製品の機能(プロファイル)を取得します。

#規格

|規格	|策定時期	|通信速度　（理論値）	|説明
|:------|:--------------|:------------------|:---|
|Ver1.0	|1999年7月	|1Mbps	|最初の規格。PHYは、BR(Basic Rate)と言われている。|
|Ver2.0	|2004年11月	|3Mbps	|EDR(Enhanced Data Rate)と言われる通信速度を3Mbpsに拡張するPHYを追加。|
|Ver3.0	|2009年4月	|24Mbps	|HS(High Speed)と言われる無線LANのPHYを使う機能追加。|
|Ver4.0	|2010年7月	|1Mbps	|LE(Low Energy)と言われる低消費電力用のPHYを追加。|
|Ver4.1	|2013年12月	|1Mbps	|6LoWPANをサポート|
|Ver4.2	|2014年12月	|1Mbps	|最大ペイロードを27byteから251byteに拡張して、スピードアップ。ECDH,AESなど追加し、セキュリティ強化|
|Ver5.0	|2016年12月	|2Mbps	|アドバータイズパケットを31byteから255byteに拡張した。非接続時の通信を強化。|

以上。