仕組み
ブラウザーを Bluetooth Low Energy デバイスに接続し、GATT ツリー全体を表示します。各プライマリサービス、含まれるキャラクタリスティック、それぞれが対応する操作(読み取り・書き込み・通知・インジケート)、関連するディスクリプタを、標準の要素であれば 128 ビットの UUID と 16 ビットの短縮 ID とともに確認できます。
読み取り可能な値は自動的に取得され、Bluetooth SIG の仕様に従って解釈されます。電池残量はパーセント、Device Information サービスはメーカー・型番・シリアル番号・ファームウェア/ハードウェア/ソフトウェアの各バージョン、PnP ID はメーカーと製品の識別子の組として表示されます。意味が定義されていないものはテキスト、数値、または 16 進ダンプで表示します。
通知を送るキャラクタリスティックを購読して、心拍数・温度・カウンターなどの変化をリアルタイムで見ることもでき、走査結果全体を JSON で書き出せます。本ツールは読み取りのみで、デバイスへの書き込みは一切行いません。すべての通信は Web Bluetooth API を通じてあなたの端末と周辺機器の間だけで行われ、サーバーには何も送信されません。
例
0x180F → 0x2A195B → 91 %Battery サービスは残量を 1 バイトで表すため、0x5B は 91 % に相当します。0x180A → 0x2A50 (PnP ID)USB Implementers Forum · VID 0x046D · PID 0xC52B · v1.0.0PnP ID は USB と同じコードでメーカーと製品を識別するため、usb.ids のカタログで調べられます。6e400001-b5a3-f393-e0a9-e50e24dcca9eNordic UART Service128 ビットの UUID はベンダー独自のサービスです。Nordic のシリアルポートなど、広く使われているものは名前付きで表示されます。ユースケース
- メーカーのアプリを入れずに、センサーや体重計、ウェアラブルの電池残量を確認する。
- デバイスを更新したり保証を申請したりする前に、型番・シリアル番号・ファームウェアのバージョンを確認する。
- ファームウェア開発中に、周辺機器が期待どおりのサービスとキャラクタリスティックを正しいプロパティで公開しているか確認する。
- ベンダー独自のキャラクタリスティックの UUID を調べて、自作アプリから利用できるようにする。
- アプリがデータを受け取れないときに、通知が届いているか、どのくらいの頻度かをリアルタイムで確認する。
- 機器の GATT ツリー全体を JSON で書き出し、報告書に添付して記録する。
よくある質問
iPhone や Firefox で動作しないのはなぜですか?
Web Bluetooth API は Chromium 系ブラウザー(Chrome・Edge・Opera)の Windows、macOS、Linux、ChromeOS、Android 版に実装されています。Firefox と Safari は未実装で、iOS ではすべてのブラウザーがシステムのエンジンを使うため、こちらも利用できません。さらに HTTPS と、端末の Bluetooth がオンであることが必要です。
デバイスの電源は入っているのに一覧に出てきません。
主な原因は 3 つです。周辺機器がすでに別のアプリや別の端末と接続していてアドバタイズを停止している、検出可能モードになっていない(多くの機器ではボタンの長押しで有効になります)、あるいは選んだフィルターが厳しすぎる、のいずれかです。近くのデバイスをすべて表示する選択肢を試し、端末を近づけてください。
ネイティブアプリより表示されるサービスが少ないのはなぜですか?
Web ページは接続前に要求したサービスしか見られません。そのため本ツールは標準サービスをすべて要求し、分かっているベンダー独自の UUID を追加できるようにしています。さらにブラウザーは、入力デバイス (HID) やファームウェア更新のサービスなど、安全上の理由でブロックするサービス一覧を持っており、これらはどのページからも読み取れません。
キャラクタリスティックのプロパティは何を意味しますか?
「読み取り」は、いつでも値を要求できることを意味します。「書き込み」と「応答なし書き込み」は、確認応答の有無はあれデバイスがデータを受け付けることを示します。「通知」と「インジケート」は、値が変化したときにデバイス側から送ってくることを意味し、インジケートはクライアントの確認応答を必要とするため遅いものの確実です。
短い UUID の要素と、非常に長い UUID の要素があるのはなぜですか?
0x180F や 0x2A19 のような 16 ビットの識別子は Bluetooth SIG が予約しており仕様で意味が決まっているため、本ツールは公式名称で表示します。128 ビットの UUID はメーカーのもので、その中身を知っているのはメーカー自身のアプリだけですが、内容はテキスト・数値・16 進数として表示されます。
このツールはデバイスに書き込んだり設定を変更したりしますか?
いいえ。値を読み取り、あなたが選んだ通知を有効にするだけで、これは購読であってデバイス設定の変更ではありません。キャラクタリスティックへの書き込みは一切行わないため、周辺機器を予期しない状態にする心配はありません。
デバイスのデータが自分の端末の外に出ることはありますか?
いいえ。接続はブラウザーがあなたの端末の Bluetooth アダプター経由で行い、読み取った値がサーバーに送られることはありません。許可はブラウザーの選択画面でデバイスごとに与え、いつでも取り消せます。