BLE 通信チェックツールのあれこれ

しばらく BLE の話を続けます。

COCOA や FolkBears での BLE 通信状態を調べるのには、それなりのツールが必要なのですが、まずは既存の Android/iOS アプリを探していきました…ってのを記録しておきます。
結論から言うと、どれも汎用的過ぎて、結果的に自前でツールを作ることころに至るのですが、初手として BLE 通信を調べたい場合には以下のようなアプリがあります。

リンク先は Android アプリのものですが、iOS 版もあります。

SimpleLink Connect

Simplelink Connect – Apps on Google Play https://play.google.com/store/apps/details?id=com.ti.connectivity.simplelinkconnect&hl=en-US&pli=1

Texas Instruments のテストツールなのですが、これが仕事上一番使いやすかったです。

BLE スキャンを開始すると、周辺の BLE デバイスをスキャンします。「スキャンします」という云い方をしますが、実際は、BLE ペリフェラルが発信しているアドバタイデータを傍受している、という感じです。ちょうどレーダー受信機みたいなものですね。なので、周辺にある BLE 端末がごっそり表示されます。

これ、周辺には結構な量の BLE デバイスがあることが分かります。大抵の端末は名前がついていないので「Name Unknown」となっています。ハッキリ言って、どれがどの発信をしているのか区別が付きません。接続しようとすると接続できないものも混じっているので(ひとつの端末が複数のアドバタイズを使っているものもあり、中華な製品だとデータ内容がめちゃくちゃなものもあります、これは別途ツールを使うと調査ができます)、なかなか目的ものを見つけるのが大変です。

ひとまず、スマホの Android 端末とか、ワイヤレスイヤフォンとか BLE 接続のスピーカーみたいなのも見つかります。
デバイス名がついていないと、どの端末かわからないというのと、同じデバイス名がついていると判別がつかないというのが難点ですが、サービス UUID さえわかっていれば見つけやすいですね。

ただし、アドバタイズがスキャンできなくなったものもリストに残り続けるので、ずっと開いていると動かなくなります。

BLE Scanner

LightBlue® — Bluetooth LE – Apps on Google Play https://play.google.com/store/apps/details?id=com.macdom.ble.blescanner&hl=en-US

最初の頃によく使っていたツールです。

電波強度が強い順、つまり近い順から表示されるので目的の BLE デバイスを見つけやすいです。ひとまず、手元の近くにあるものが上に来ています。下のほうにあるのは、遠くのものなのでひょっとすると外で歩いている人の BLE ワイヤレスイヤフォンとか、iPhone の端末を拾っている可能性が高いです。

デバイスの RAW DATA の部分をタップすると、アドバタイズされているデータが表示されます。

一見すると何がよいのか分かりませんが(私も BLE を最初に扱ったときにはわかりませんでした)この表示が意外と重宝します。BLE データの 32 byte(実際には、先頭のフラグないときがありますが)が 16 進数で表示されているので、データそのものを解読することができます。

ただ、iOS の BLE ライブラリは受信データの制限がきついので BLE Scanner はどうやっているんだろう?という不思議なところがあります。タイプが 0xFF なので manufacturer data を受信しているのだと思いますが…
ただし、無理に iOS で動かさずとも、Android や Windows あるいは m5stack などの端末を使えば、これらのデータは自由に解析できるようになります。

LightBlue

LightBlue® — Bluetooth LE – Apps on Google Play https://play.google.com/store/apps/details?id=com.punchthrough.lightblueexplorer&hl=en-US

LightBlue も BLE デバイスをスキャンしてくれますが、先の2つのアプリとは違い、接続リストが控え目に表示されます。実は、これコネクションできるデバイスだけしか表示しないので、iBeacon のようにアドバタイズのみの場合は発見できません。

ただし、「virtual Devices」のところが便利で、BLE ペリフェラルをシミュレートしてくれます。

いわゆる、BLE セントラルを作っているときに、ペリフェラルの端末のほうがないとか、複数のペリフェラルを作りたいときに便利です。まあ、これも BLE デバイスのほうがないというパターンはあまりないので使いどころが難しいのですが、BLE をサーチするサーバー側を作って、温度やバッテリーなどのセンサーの類を探す、ってところに便利です。

ただし、いまだと、BLE ペリフェラル側を m5stack で作ってしまったほうが楽です。

BeaconSET Plus

BeaconSET Plus – Apps on Google Play https://play.google.com/store/apps/details?id=com.minew.beaconplus&hl=en-US

確か、iBeacon を検出するためのツールなのですが、いわゆる iBeacon 以外の Beacon(Eddystone など) も検出できるはずです。

もともと BeaconPlus | 株式会社テクサー https://techsor.co.jp/product/02113 という製品の検出アプリです。iBeacon のほうはおまけなんだと思うんですが、これを使って iBeacon を検出することができます。

ただし、iOS の場合は、iBeacon の UUID をあらかじめ入れておかないといけないので使い勝手は悪いです。これは iOS の仕様なので仕方がないですね。使うときは Android 版を使うと良いです。

Beacon Scan

Beacon Scan App – App Store https://is1-ssl.mzstatic.com/image/thumb/Purple7/v4/76/bc/c7/76bcc76c-aaa3-6a1a-1e52-8bcbb2dba1f7/pr_source.png/230x511bb.webp

これは iOS アプリのみですが、iBeacon をスキャンするアプリです。これも、iOS の仕様で UUID を設定しておかないといけないのですが、ほどよく検出が可能です。
たしか、同じ UUID を登録しておいて、複数の iBeacon を検出できます。つまり、同じ UUID を使っていてバージョンを変えることによって、複数の iBeacon を検出する、というテストができます。

Android の場合は、iBeacon の UUID は指定しなくても受信は可能なのですが、iOS の場合は 10 個ぐらいだったか数個しか登録できないという制限があります。

そんな訳で、公開されているアプリを使うと便利に BLE デバイスのテストができるんですが、目的の BLE デバイスを見つけるのが結構大変で手間がかかります。SimpleLink Connect とかで見るとわかりますが、周辺には大量に、身元不明の BLE デバイスがあるわけです。
なので、テスト用や負荷試験のために自前で BLE デバイスや検出器を作っていきました。ってのが次の話題です。

カテゴリー: 開発, FolkBears パーマリンク