以前、Seeed XIAO BLE nRF52840 を使って BLE 通信をキャプチャする方法が紹介されていましたが、現在は Nordic のサイトから当時使用されていたファームウェアが入手できなくなっています。
私も以下の記事を参考に試しましたが、そのままでは出来ませんでした。
参考記事:
そこで最新の手順を調査し、実際に動作確認できた方法をまとめます。
変更点
現在は Nordic が提供する nRF Util を利用して Sniffer 用ファームウェアを取得する方法に変わっています。
公式ドキュメント:
動作環境
- Windows 11
- Seeed XIAO BLE nRF52840
- Wireshark(事前インストール済み)
手順
1. nRF Utilをダウンロード
以下のページから nRF Util(nrfutil.exe)をダウンロードします。
ダウンロード後、コマンドプロンプトから以下を実行してください。
nrfutil install ble-sniffer
このコマンドにより、
- BLE Sniffer コマンド
- Sniffer 用ファームウェア
がインストールされます。
2. ファームウェアを確認
ファームウェアは以下のフォルダにダウンロードされます。
%USERPROFILE%\.nrfutil\share\nrfutil-ble-sniffer\firmware
この中に以下の ZIP ファイルがあります。
sniffer_nrf52840dongle_nrf52840_4.1.1.zip
展開すると次のファイルが得られます。
sniffer_nrf52840dongle_nrf52840_4.1.1.bin
今回使用するのはこの .bin ファイルです。
3. BINファイルをUF2へ変換
XIAO BLE nRF52840 は UF2 形式での書き込みが簡単なため、ファームウェアを UF2 に変換します。
以下のツールを使用します。
参考記事では .hex ファイルを変換していますが、今回は .bin ファイルのためコマンドが異なります。
以下を実行してください。
python uf2conv.py sniffer_nrf52840dongle_nrf52840_4.1.1.bin -b 0x1000 -f 0xada52840 -c
成功すると flash.uf2 が生成されます。
Converted to uf2, output size: 139264, start address: 0x1000
Wrote 139264 bytes to flash.uf2
4. XIAO BLE nRF52840へ書き込み
XIAO BLE nRF52840 を PC に接続し、リセットボタンを素早く2回押します。
すると USB ドライブとして認識されます。
エクスプローラから生成した flash.uf2 をドラッグ&ドロップしてください。
コピー完了後、ボードは自動的に再起動します。
5. Snifferとして認識されるか確認
以下を実行します。
nrfutil device list
正常に認識されている場合、以下のような表示が出力されます。
Product nRF Sniffer for Bluetooth LE
Ports COM11
Traits nordicUsb, serialPorts, usb
認識されない場合
ファームウェア書き込みに失敗している可能性があります。
その場合はリセットボタンを1回押してください。
再び USB ドライブとして認識されるので、UF2 ファイルの作成からやり直してみてください。
6. Wireshark連携をインストール
以下のコマンドを実行します。
nrfutil ble-sniffer bootstrap
これにより Wireshark 用の extcap プラグインがインストールされます。
7. Wiresharkを標準以外の場所へインストールしている場合
以下のようなエラーが表示されることがあります。
Error: Failed to find any wireshark installation in default location C:/Program Files/Wireshark/Wireshark.exe.
その場合は --extcap-dir オプションを指定します。
例:
nrfutil ble-sniffer bootstrap --extcap-dir C:\Users\ユーザー名\AppData\Roaming\Wireshark\extcap
8. Wiresharkで確認
Wireshark を起動すると、キャプチャインタフェース一覧に
nRF Sniffer for Bluetooth LE
が表示されるはずです。
設定を変更する場合は、nRF Sniffer for Bluetooth LE の左側の歯車アイコンをクリックしてください。以下の画面が出ます。
また、Wiresharkのメニューからツールバーを表示しておくと操作しやすくなります。
解析の方法については、冒頭に紹介しました公式ドキュメントなどを参照してください。
まとめ
以前の手順では Nordic が配布していた Sniffer 用ファームウェアを直接利用していましたが、現在は nRF Util を利用して取得する方式に変更されています。
特に重要なのは以下の3点です。
-
nrfutil install ble-snifferでファームウェアを取得する -
.binファイルを UF2 に変換して XIAO に書き込む -
nrfutil ble-sniffer bootstrapで Wireshark と連携する
ここまで完了すれば、Seeed XIAO BLE nRF52840 を BLE スニファとして利用できるようになります。
パケット解析方法については Wireshark のフィルタ機能を利用すると便利です。接続先デバイスのみに絞り込んだり、GATT 通信のみを表示したりすることもできます。


