ABSniffer USB Dongle 528 のファームウェアを nRF Sniffer v2 に書き換える

BLEシリアル変換ドングルを Snifferにする 」で示したApril Brother の ABSniffer USB Dongle 528 のファームウェアをNordic Semiconductorの nRF Sniffer v2 に書き換えてみた。Snifferとして動作することを確認した。

使用するもの

  • April Brother ABSniffer USB Dongle 528
    • nRF52832を利用したドングル
  • 書き込み用の自作冶具
  • Segger/J-Link
    • ファームウェアの書き換えに用いるインタフェースデバイス
  • nRFgo Studio
    • Windows10上で動作するファームウェアの書き換え用ソフトウェア
      • 64bit 版を使用
  • Windows PC (Windows10 64bit)
    • nRFgo Studio を実行するため

April Brother ABSniffer USB Dongle 528

中国の April Brother ABSniffer USB Dongle 528 をAliexpress の BLE beacon Storeで購入した。送料込みで US$21.58 であった。Tindieからも買えるようだが、Aliexpress の方が若干安かった。

このドングルはもともとATコマンドで操作できるSniffer機能があるが、Windowsなどのアプリケーションなどが用意されていない。Nordic Semiconductorの nRF Sniffer v2 に書き換えることで、Wiresharkによるパケットキャプチャと分析を可能にする。

ドングルの分解

下の写真ではドングルの赤い透明のプラスチック部分に爪があるので、爪の部分を押して引き抜く形で分解することができた。

ボード部分は以下のようになる。

SWDパッド

April Brother のサイトにある基板の図からSWDパッドの位置は以下のようになっている。実際の基板にも表記がある。

http://i1.aprbrother.com/ab528-pins.png

パッドが一直線上に並んでいるのはわかりやすくてよいが、ピッチが1.27mmのために簡便な冶具で接続することができない。SWDでの接続のための冶具を自作する必要があった。

SWD接続用冶具

BLEシリアル変換ドングルを Snifferにする 」と同じ要領で、pogoピンを支えるボードを3Dプリンタで作成し、pogoピンとケーブルを取り付けた。

pogoピンを支えるボード

TinkerCadで以下のようなボードを設計した。ピンのための穴は1mmで、間隔は1.27mmである。

BLEシリアル変換ドングルを Snifferにする 」では手元の3Dプリンタで1mmの穴を作ろうとするとうまく全体ができなかったが、3Dプリント時に壁を作ってヘッドの余分なフィラメントが除去されるようにすることで、穴は貫通していないものの、全体をプリントすることができるようになった。穴の部分は後から千枚通しのようなもので大きくした。

UVレジンでpogoピンを固定したものが以下になる。

ケーブル付きpogoピン

pogoピンに直接ケーブルをはんだ付けして冶具を作った。

冶具の使用

ABSniffer USB Dongleの内部ボードのSWDパッドには以下のように接触する。pogoピン取り付けの工作精度が悪く、少しずれているが、SWDパッドとpogoピンの接触を手動で微調整するという使い方でカバーする。

Segger/J-Linkの接続

自作の冶具とファームウェアの書き換えに用いるインタフェースデバイスSegger/J-LinkをSWDIO/SWDCLK/VCC/GNDの4線で接続する。

nRFgo Studio

ファームウェアの書き換え用ソフトウェアには、nRFgo Studio-Win64 (version 1.21.2) を用いた。以下のサイトからダウンロードした。

nRFgo Studio: PC application for configuring and evaluating Nordic nRF24L-Series SoCs, nRF8000-Series and nRF51- and nRF52-Series SoCs

https://www.nordicsemi.com/eng/Products/2.4GHz-RF/nRFgo-Studio

ファームウェアの書き換え

ABSniffer USB Dongle 528 の SWDパッド  <- 自作冶具 -> Segger/J-Link <-USBケーブル-> Windows 10 PC という接続を行っておく。

nRFgo Studioの起動

nRFgo Studio を起動する。起動直後は以下のようになるはず。

左下のDevice Managerパネルで「nRF5x Programming」を選択する。

読み出し禁止のためのReadback Protection が設定されているので、 「No device detected, or readback protection may be set」 というメッセージが表示される。

読み出し禁止解除のためのRecover

ここで利用しているチップは nRF52832 なので、「nRF52」 を選択し、「Recover」ボタンをクリックすることで、プログラム全体を消去して Readback protection を解除する。

うまくいけば「Erase completed」のメッセージが表示される。

ファームウェアの書き込み


(2018年12月15日補足)

Nordic nRF Sniffer v2 のこの記事の執筆時よりも新しいバージョンがリリースされている。https://www.nordicsemi.com/Software-and-Tools/Development-Tools/nRF-Sniffer からアクセス可能。

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


Sniffer プログラムである nRF Sniffer v2 を https://www.nordicsemi.com/eng/nordic/Products/nRF-Sniffer/nRF-Sniffer-v2/65225 からダウンロードする。

執筆時点では、nrf_sniffer_2.0.0-beta-1_51296aa.zip がダウンロードされた。

その中の nrf_sniffer_2.0.0-beta-1_51296aa\hex\sniffer_pca10040_51296aa.hex が nRF52832 用なので、そのファイルを指定して「Program」ボタンをクリックすることで書き込みをする。

正常に書き込むことができれば以下のようなパネルが表示される。

また、メインのウィンドウにも書き込みがうまくいったメッセージが示される。

Wiresharkでの動作確認

RedBearLab BLE Nano v1.5 をBLE Snifferとして試す」に書いたように、Wiresharkで動作確認をした。BLEのパケットがキャプチャされることを確認した。