RedBearLab BLE Nano v1.5 をBLE Snifferとして試す

Wiresharkで BLEパケットをみるために、RedBearLabの BLE Nano v1.5 を プログラム書き込み用の MK20 USB V1.5 を使ってnRF Sniffer を書き込んで一応使えるようにした。

BLE Nano v1.5 とMK20 USB V1.5は、既に販売終了になっているが、スイッチサイエンスのRedBearLab BLE Nanoキットとして以前入手したものである。プログラム書き込みにはDAPLINKを使ったものがあるが以下では試していない。

一応動作させることはできたが、動作が不安定で、Wiresharkが起動しなかったり、起動してもSnifferからデータを受け取れない場合がある。何が原因かはっきりしていないが、nRF Sniffer の書き込みでも手間取ったりしたので備忘録として現時点までの状況を書いておく。試した環境はWindows10である。

次の記事が参考になった。

[ble]BLE NanoでnRF Snifferを動かす

Bootloader

まず、RedBearLab BLE Nano v1.5のブートローダを更新する必要があった。

MK20 USB V1.5

(2018年7月11日追記)

https://github.com/redbear/nRF5x にある次のページからMK20 USB V1.5 用のブートローダー HEXファイルを入手した。

tree/master/nRF51822/daplink/MK20-USB/board_v1.5

https://github.com/redbear/nRF5x/blob/master/nRF51822/daplink/MK20-USB/board_v1.5/CMSIS-DAP_MK20_BLENano.bin

CMSIS-DAP_MK20_BLENano.bin が BLE Nano用

RBL_nRF51822_MK20.binは、RBL nRF51822 development board用

以下は古いようだ。

https://github.com/RedBearLab/BLENano にある次のページからMK20 USB V1.5 用のブートローダー HEXファイルを入手した。

BLENano/USB-IF/MK20-USB/board_v1.5/

https://github.com/RedBearLab/BLENano/tree/master/USB-IF/MK20-USB/board_v1.5

MK20 USB V1.5 Hexファイル

(2018年7月11日追記)

https://github.com/redbear/nRF5x/blob/master/nRF51822/daplink/MK20-USB/board_v1.5/CMSIS-DAP_MK20_BLENano.bin

以下は古いようだ。

https://github.com/RedBearLab/BLENano/blob/master/USB-IF/MK20-USB/board_v1.5/CMSIS-DAP_MK20_BLENano.bin

ブートローダの書き込み

RedBearLab  BLE Nano v1.5 を装着した MK20 USB V1.5のリセットボタンを押しながらUSBに接続すると以下のように BOOTLOADERドライブとして見える。

先にダウンロードしておいた CMSIS-DAP_MK20_BLENano.bin をBOOTLOADERドライブにドラッグ・アンド・ドロップをすると書き込みがされる。

ブートローダーの書き込みが終了するとMK20 USB V1.5のLEDが速く点滅するようだ。

MK20 USB V1.5をUSBから抜いて、再度入れると以下のように MBEDドライブが見えるようになり、アプリケーションを書き込む準備ができていることがわかる。

Windows10 Storage Serviceの停止

bootloaderを更新できたら、アプリケーションである nRF Sniffer を書き込むだけであるが、以下の記事にあるように、Windows10などではStorage Serviceが動作していると書き込みに失敗する。

DAPLink bootloader update

アプリケーションプログラム書き込み失敗

Storage Serviceが動作したまま、アプリケーションのHEXファイルを MBEDドライブにドラッグ・アンド・ドロップすると、書き込みが始まるようだが途中で次のような書き込みエラーが発生する。

Storage Service の停止

書き込みエラーを解消するためには、Windows のStorage Service を停止する必要がある。

ブートローダーの書き込みの際にも Storage Serviceが動作していると問題になることがあるかもしれないが、Storage Service を停止させるまでに試していた範囲では大丈夫だった。アプリケーションの書き込みではStorage Service を停止させないとうまくいかなかった。

Lチカプログラム (BLE Nano V1.5)

アプリケーションプログラム書き込みがうまくいくことを確認するために、LEDを点滅させるLチカのプログラムを試すことができる。

次のところにソースコードがある。

https://os.mbed.com/teams/RedBearLab/code/nRF51822_blinky/

単にプログラム書き込みを試すだけなら以下のところのHEXファイルを使うのが早い。

https://github.com/RedBearLab/BLENano/blob/master/Test/nRF51822_blinky_RBLAB_BLENANO.hex

このHEXファイルをMBEDドライブにドラッグ・アンド・ドロップして、正常に書き込みが終わると、BLE Nano V1.5のLEDが点滅する。BLE Nano V1.5のLEDは基板裏面にあるので見づらい。

BLE NanoでのLチカについては以下の記事が参考になった。

BLE NanoでLチカ

nRF Sniffer v2

(2018年12月14日補足)

Nordic nRF Sniffer v2 の新しいバージョンがリリースされている。

新しいバージョンの Snifferプログラムについては「nRF52832 USB ドングルの BLE Sniffer 化」で少し触れている。

以下は以前のバージョンの記述のままである。


アプリケーション書き込みの準備が整ったので、Snifferを書き込むことになる。

次のページから nRF-Sniffer-v2 のファイルをダウンロードする。

https://www.nordicsemi.com/eng/Products/Bluetooth-low-energy/nRF-Sniffer

執筆時点では、nrf_sniffer_2.0.0-beta-1_51296aa.zip というファイルが得られた。User guide for nRF Sniffer v2 も役立つのでダウンロードしておく。

User guide for nRF Sniffer v2の記載をみると、BLE Nano v1.5 (nRF51822)に対応する Sniffer は、nRF51 Development Kit (PCA10028) v1.0 or later and a micro USB cable用のZIPファイル内の次のHEXファイル(sniffer_pca10028_51296aa.hex)である。

nrf_sniffer_2.0.0-beta-1_51296aa\hex\sniffer_pca10028_51296aa.hex

このHEXファイルを MBEDドライブにドラッグ・アンド・ドロップすればSnifferプログラムの書き込みが行われる。

正常に書き込みが行われれば、MBEDドライブが一度閉じて、再度接続される。

Wiresharkの設定

BLE NanoのSnifferだけでは表示もできない。インタフェースはWiresharkで行うことになっている。

nRF_Sniffer_User_Guide_v2.1.pdf に記載されているが次のアプリケーションなどがあらかじめインストールされているとする。

Wireshark のHelpの「Wiresharkについて」の「フォルダ」タブの中に表示されているextcap path を調べる。

私の環境では、C:\Program Files (x86)\Wireshark\extcap であった。

そこに、nrf_sniffer_2.0.0-beta-1_51296aa.zip の中にあるnrf_sniffer_2.0.0-beta-1_51296aa\extcap 以下のファイルなどをコピーする。コピーには管理者権限が必要である。

extcapに最初は何もなければ、コピー後のextcapフォルダーは次のようになるはず。

Wiresharkの起動

Wiresharkを起動してうまくSnifferと通信ができれば、以下のような画面になるので、nRF Sniffer COM?? を選択すればBLEパケットのキャプチャが行われるようになる。

データがうまく受信できている場合には、書き込みインタフェースボードのMK20 USBのLEDが点滅する。

以下のような画面であとはWiresharkの操作をすればよい。

(2018年7月11日追記)

新しいBootloaderを書き込んでからSnifferを書き込んだところ、nRF Sniffer COM??の選択はできるようになった。通信がうまく行われない場合はあるようだが、再試行すれば大丈夫のように思われる。

COM??でのハングは Nordic nRF Sniffer v2をインストール後のWireshark起動の不具合 の問題が関係しているのかもしれない。

うまくいかない場合には、そもそもnRF Sniffer COM??を選択できるようにいつまでもならないでハングしたり、通信がうまく行われず、MK20 USBのLEDが点灯したままになったりした。

後始末

使い終わったら、必要に応じてWindows10 のStorage Serviceを開始する。

今後の課題

(2018年7月11日追記)

RedBearLab BLE NanoをSnifferにすることは概ねできたように思われる。

まず、時々うまくSniffingができない原因を調べる必要がある。結構な頻度で動作せず、回復方法もはっきりしないので時間が無駄になる。

また、RedBearLab BLE Nanoキット V2 (RedBearLab BLE Nano v2.0 と DAPLink v1.5)を買ったので、可能ならば Snifferを使えるようにしたい。

しかしながら、Lチカですらうまく動作ビルドさせることができていない状況である。mbedのオンラインのIDEではLチカプログラムのビルドが正常終了しない。

(2018年7月11日追記)バイナリを実行するだけなら次のHEXを書き込むことでLチカができた。

https://github.com/redbear/nRF5x/blob/master/nRF51822/test/nRF51822_blinky_RBLAB_BLENANO.hex

検索した範囲ではBLE Nano 2.0 で nRF Snifferを動作させたという記事が見つからない。そもそも可能なのかも調べる必要がある。単純に、BLE Nano v2.0 (nRF52832)に、nrf_sniffer_2.0.0-beta-1_51296aa.zipの中の nrf_sniffer_2.0.0-beta-1_51296aa\hex\sniffer_pca10040_51296aa.hex を書き込むことでは動作しないようである。

(2018年7月20日追記)「RedBearLab BLE Nano v2 をBLE Snifferとして利用する」に、BLE Nano v2.0 をSnifferとして使う方法を示した。