BLE (Bluetooth LE)に関して、自分が疑問に思ったこと、突っかかったことのメモ。
誤りが大量に含まれている恐れがあります。
・BLEは基本的にGATTの操作が主となる。
[物理層]→[L2CAP]→[ATT]→[GATT] GATT(読み書き)はこのように積み重なっている
[物理層]→[L2CAP]→[SMP]→[GAP] GAP(アドバタイジング・接続処理)はこのようになっている。
※上記から、アドバタイズメントとGATTは別物。
・GATTは、名前付き変数の操作・取得をするための構造と考えるとわかりやすい。
・そのシンプル化された仕様の結果、汎用性と相互接続性が高い。
・GATTはリモコン的な状態の変更・取得が主であり、ストリーム的通信には至極向いていない。
デバッグも難しくなる(単なる変更・取得ならば多くのBLE探査ソフトウェアが使用できるが、
ストリームの場合は専用アプリを作らざるをえない。)
※UARTとか、MIDIとかあるけどね...
・ストリーム的通信をしたければL2CAPを直接使うようだ。(よくわからない)
・パケットペイロードサイズは27Byte。
・転送可能なデータサイズ(MTU)は23Byte。(これはMTU交換により最大251バイトまで大きくなる)
・一般的に用いられるキャラクタリスティックのサイズは20Byte程度。Read Characteristicで読める。
・キャラクタリスティックの最大サイズは512Byte。
Read Long Characteristic(Read Blob Request)で2バイトのオフセットを指定して複数回読み出すことで読み出せる。
・複数のキャラクタリスティックを一括で読み出すこともできる。
・長いキャラクタリスティックをキューイングして書き込むこともできる
・アドバタイジングのデータサイズは31byte。(パケットサイズは37Byte)
スキャン応答時も同じサイズの、中身の違うデータを返すことができる。
・ボンディングとペアリングがあるが、Bondingが多分思ってるやつ。
暗号化するのが普通だが暗号化しないこともできる。
・通常、MACアドレスはランダム化されていて、再接続や追跡は困難だが、
Bondingされている相手ならMACアドレスを復元して再接続可能
・BLEデバイスは、基本通信やBondingが成立すると無向アドバタイジングを止める。
接続情報のリセットが行われるまでこの状態なことが多い。省電力性と隠匿性のため。
特定の機器と即座に接続したい場合は、有向アドバタイジングを行う。
ただスマホ向けの機器の場合や、接続待ちの場合は延々と無向アドバタイジングし続ける事が多い。用途による。
・変数に当たるのがCharacteristic
・Characteristicを束ねたものがService
・用途別に同名のCharacteristicが存在しうるがServiceで区別できる
・CharacteristicもServiceも、UUIDあるいはHandleで区別する。
・UUIDは変化しない固有のもの、Handleは電源再投入などで変化しうる
・UUIDは長くデータ効率が悪いが確実、Handleは短く効率が良いが不確実
※もっとも、スマートホン等では接続時にServiceやCharacteristicの検索を行い、
内部的にUUIDからHandleに変換するので気にすることはない。
→キャッシュに注意。Peripheralから更新通知ができる。
・GATTの接続・切断と、物理的な電波の接続・切断は別?
・Peripheralから能動的に送信するにはNotificationを使用する。
・Indicationは確認付きのNotificationである。
・通信路の暗号化をしたければBonding
・正規品認証をしたい場合は、Challenge & Response
参考文献
BLEの通信仕様 | Reinforce-Lab.'s Blog
[CB16] スマートフォン制御のIoTデバイスにおけるBLE認証設計の課題:Gogoroスマートスクターの分析を通じて by Chen-yu Dai [GD] & Professor Shi-Cho Cha [CSC]
2017年11月22日
この記事へのコメント
コメントを書く
この記事へのトラックバックURL
http://blog.sakura.ne.jp/tb/181646836
※ブログオーナーが承認したトラックバックのみ表示されます。
※言及リンクのないトラックバックは受信されません。
この記事へのトラックバック
http://blog.sakura.ne.jp/tb/181646836
※ブログオーナーが承認したトラックバックのみ表示されます。
※言及リンクのないトラックバックは受信されません。
この記事へのトラックバック