Apple製開発ツール「Bluetooth Explorer」でBLEデバイスのGATT仕様を確認する

More than 1 year has passed since last update.

Bluetooth Explorerとは?

Appleが提供する開発用ツールに、「Bluetooth Explorer」というものがあります。

icon.png

Bluetoothにまつわる諸々の解析や設定を行うためのツールで、非常に多くの機能を持っています。

screenshot_r1_c1.jpg

上記のスクリーンショット、全部Bluetooth Explorerのウィンドウです。MBP 15 Retina の最高解像度設定で画面が埋まる程度にツールを立ち上げてみましたが、他にもまだまだ多くの機能があります。。

BLE と Bluetooth Explorer

機能がありすぎて今日まで気付かなかったのですが、BLE向けの機能も持っています。

konashi_r1_c1.jpg

Bluetooth Low Energy のデバイスをスキャン、接続し、提供するサービス/キャラクタリスティックを確認 することができます。

何が嬉しいのか?

・・・とここまで書いたところで、これの何が嬉しいの? iOSアプリの「LightBlue」とか「BLExplr」でいいんじゃないの?? という声が聞こえてきそうですが、いくつかiOS×BLEに関わるエンジニアにとって嬉しい点があります。

ANCSのサービス・キャラクタリスティックが見える

ひとつは、ANCS (Apple Notification Center Service) のサービス・キャラクタリスティックも見える という点です。

ancs_r1_c1.jpg

ANCSについてはまた別途記事を書こうと思いますが(というかそもそもそれを書こうとする中でこの記事が派生して生まれたわけですが)、iOSからの電話着信やメール受信などの通知を外部デバイスで受け取るためのサービスです。

で、この ANCS、iOS自体が提供するサービスなので、iOSデバイスはサービス利用側にはなれません(※1)。したがって、 別のiOSデバイスからスキャンして接続しても、ANCSサービスは見つからないようになっています。

そんなわけで、iPhone に インストールした LightBlue や BLExplr からはこのサービスは見えないので(※2)、そこに Bluetooth Explorer を使って見てみると、「おーANCSほんとにあった!」となって嬉しい、ぐらいのメリットがあります。

  • ※1: ただし、iOS 6 は ANCS の利用側にもなれたとのこと
  • ※2: LightBlue の Mac 版では見えます。Android端末とかでも試してませんが当然見えるかと。

ANCSの参考記事

アドバタイズメントデータの中身の確認が捗る

iOS の Core Bluetooth では、実際に受信されているアドバタイズメントデータの中身を全部 didDiscoverPeripheral〜 の引数に渡してくれるわけではありません。

たとえば iBeacon の UUID や Major / Minor は、AD Type FF (Manufacturer のカスタム AD Type を示す)の AD Structure に格納されますが、

1A # Number of bytes that follow in second (and last) AD structure
FF # Manufacturer specific data AD type
4C 00 # Company identifier code (0x004C == Apple)
02 # Byte 0 of iBeacon advertisement indicator
15 # Byte 1 of iBeacon advertisement indicator
e2 c5 6d b5 df fb 48 d2 b0 60 d0 f5 a7 10 96 e0 # iBeacon proximity uuid
00 00 # major 
00 00 # minor 
c5 # The 2's complement of the calibrated Tx Power

(http://stackoverflow.com/questions/18906988/what-is-the-ibeacon-bluetooth-profile)

iOS の Core Bluetooth でスキャンした場合、当該ビーコンのアドバタイズを受信しても、肝心の上記の Manufacturer Data が didDiscoverPeripheral〜 の引数には入ってこないため、Core Bluetooth を用いて直接これらの情報を取得し取り扱う、ということができません。

一方、Bluetooth Explorer を用いると、アドバタイズメントデータの内容が左下のビューに表示され、iBeacon の UUID 等も確認することができます。

ibeacon4_.jpg

ちなみにこれは UI 設計の問題で iOS や Core Bluetooth の制約によるものではありませんが、iOS の LightBlue ではアドバタイズメントデータの中身を見るためにはいったん接続を確立しないといけない (接続確立後の詳細画面で表示するUIになっている)、という点を鑑みても、Bluetooth Explorer の方がアドバタイズメントデータの中身を確認するという用途には便利です。

Bluetooth Explorer インストール方法

Xcode のメニューの、

[Xcode] > [Open Developer Tool] > [More Developer Tools...]

を選択するとブラウザが起動し、Apple の開発用ツールのダウンロードページが開きます。

で、そこから「Hardware IO Tools」をダウンロードすると、その中に Bluetooth Explorer.app が含まれています。

Low Energy Devices ウィンドウの起動方法

Bluetooth Explorer のメニューの、

[Devices] > [Low Energy Devices]

で起動します。

(2015.3.23 追記)

konashi開発者の松村礼央さんと、iOSエンジニアの堤(私)とで、iOS × BLE の技術書を執筆させていただきました。

iOS×BLE Core Bluetoothプログラミング
堤 修一 松村 礼央
ソシム
売り上げランキング: 898

BLEを使ったiOSアプリ開発についてゼロから学べて、実案件レベルにも使える全480ページの大ボリューム本となっております。どうぞよろしくお願いします。

紹介記事:技術書『iOS×BLE Core Bluetooth プログラミング』の紹介