IoTの要(かなめ)!BLE通信をMacだけでデバッグできるようになる方法!

More than 1 year has passed since last update.

この投稿はBluetooth Low Energy Advent Calendar 2014 の6日目の記事です!

ここ数ヶ月間iOSアプリとBLEで通信する機器の開発を行っている @kazuph です。
元々は単なるWebプログラマーだったのですが、いつの間にかマイコンの組込みプログラミングをするまでになりました。

サーバー、アプリ、マイコン含めていわゆる"ソフトウェア"と呼べる部分は全部書いているのですが、その辺の習得までの流れとかはおいおいブログに書いていきたいと思います。

今回は普段仕事でBLE開発をする中で習得した、GATTの内容やアドバタイジングパケット内容をMacだけで確認する方法を書きたいと思います。

やってみる

何はともあれツールをインストールします。

用いるものは以下の2つです。

LightBlue

スクリーンショット 2014-12-06 13.28.24.png

AppStoreからインストールしてください。

LightBlueはiOSアプリとしてもあるのですが、Mac版もあるので今回はこれを使います。

インストールして起動すると即座にスキャンを開始して周辺にあるBLE機器のリストを出してくれます。

このままクリックするとGATT(ServiceとCharacteristic)が見えます。読み込み、書き込みも何でもできます!!

lightblue

本来はアプリを使わないと動作させることができない機器をこれで動かしてみてください。「え、今どうやったの!?」って言われたらドヤ顔です( ・`д・´)

あと注意点としてGATTを書き換えながら開発してると、LightBlueが更新されていないときがあります。これはOSレベルでキャッシュしちゃってるのが原因なので、一度MacのBluetoothをOFF→ONして、LightBlueも再起動してください。そうすると直ります(たぶん)。

PacketLogger

スクリーンショット 2014-12-06 13.28.15.png

これは公開されているアプリではなく、AppleのDownloads for Apple Developersからダウンロードする必要があります。Dev登録をしてダウンロードしましょう。URLは以下。

https://developer.apple.com/downloads/index.action

packetlogger

packetで検索すると出ますが、Hardware IO Tools for Xcodeってやつです。

開けるとPacketLoggerが入ってることがわかります。

packet

起動してみましょう!ちなみにログを流すには管理者権限が必要です。

log

あれ、何も出ない?それはMacがBLEのスキャンをしてないからです。
スキャンを開始する方法は簡単です。LightBlueを起動するだけです!!(そのための伏線!!)

色々なログが流れ始めますが、一番おもしろいのは青いログです。
ついでにいうとType2と書いてあったらそれはiBeaconです!!

今回は傍らのiPhoneをiBeaconにできるLocate Beaconというアプリを使いました。

slack_for_ios_upload.png

では実際にType2のログを展開してみましょう。

giflog

以下のような記述があります。

LE Meta Event - LE Advertising Report - 0 - 9C:F3:87:29:D3:B5  -34 dBm - Type 2
Parameter Length: 42 (0x2A)
LE Advertising Report
Num_Reports: 0X01
Event_Type: Connectable undirected advertising (ADV_IND)
Address_Type: Public Device Address
Peer_Address: 9C:F3:87:29:D3:B5
Length_Data: 0X1E
Flags: 0x1a
Manufacturer Specific Data: -- 
Data: 02 01 1A 1A FF 4C 00 02 15 74 27 8B DA B6 44 45 20 8F 0C 72 0E AF 05 99 35 00 0C 00 63 C5 
RSSI:  -34 dBm

Dataの中にあるバイナリが、アドバタイジングパケットです。アドバタイジングしてる内容がわかれば色々なデバッグが可能になりますね!

( ・`д・´)

おわりに

今回はBLEをデバッグするためのツールの話をしました。特にPacketLoggerを導入した直後は開発がちょっと加速しました。はやり推測よりも観測が重要ですね。

明日の担当も僕です。

お楽しみに!!