MDBT50Q-RXとかnRF52840 DongleにIndexのFWを焼いてWatchman dongleっぽいのを作る

これは何

nRF52840採用のMDBT50Qを搭載したドングルにIndexのFWを焼いて、Watchman dongleとして機能するドングルを作るメモ書きです。

Nordic公式のnRF52840 Dongle(pca10059)への書き込みもついでに書きます!

※いつも通りてきとうブログです

もくじ

FWの準備

とりあえずsrec_catをダウンロードしてexeのあるディレクトリにパスを通しておきます。

IndexのFWは"C:\Program Files (x86)\Steam\steamapps\common\SteamVR\drivers\indexhmd\resources\firmware\radio\gd_1558748372_dfu"にあります(解凍してね)。

cmdで以下のコマンドを一行ずつ実行します(ディレクトリは要変更)。

cd C:\Users\marim\Desktop\Dongle\gd_1558748372_dfu
srec_cat.exe s140_nrf52_6.1.1_softdevice.bin -Binary -offset 0x1000 -o s140_nrf52_6.1.1_softdevice.hex -Intel
srec_cat.exe temp_app_stamped.bin -Binary -offset 0x26000 -o temp_app_stamped.hex -Intel

これでApplicationとSoftDeviceのhexファイルを入手できます。

Bootloaderを準備していない場合はこちらから(nRF52840 Dongleの場合は必要ない)。

nRF52840のメモリレイアウトとかはこの辺に載っています。

MDBT50Q-RXとJ-Linkの接続

MDBT50Q-RXは背面にSWD(GND、3.3v、SWCLK、SWDIO)のパッドがあるので、なんとかしてSWDをJ-Linkと接続します。

コンタクトプローブを使った治具のデータも公開しています!

ピン配置は公式のブログ参照

書き込み

J-Link経由

PC→USB→J-Link→SWD→MDBT50Q-RXの順番で接続し、nRF ConnectのProgrammerを開きます。認識しない場合はUSBから5V給電してください。

J-Linkを選択した後、準備したBootloader(nrf52840_xxaa_debug.hex)とnRF5 SDK内のMBR(nRF5_SDK_17.1.0_ddde560\components\softdevice\mbr\hex\mbr_nrf52_2.4.1_mbr.hex)をFile memory layoutにドラッグ&ドロップし、Erase&writeでBootloaderとMBRを書き込むことができます。

USB経由(nRF52840 Dongleの場合はここから)

MDBT50Q-RXかnRF52840 DongleをUSB経由でPCに接続し、nRF ConnectのProgrammerを開きます。

Open DFU Bootloaderを選択した後、MBR(mbr_nrf52_2.4.1_mbr.hex)、SoftDevice( s140_nrf52_6.1.1_softdevice.hex )、Application(temp_app_stamped.hex)、Bootloader(nrf52840_xxaa_debug.hex)の四つのファイルをドラッグ&ドロップしてWriteをクリックし、すべてを書き込むことができます。

USB再接続でValve VR Radioとして認識されます!(>_<)

その他の話とか

・ローカルに落ちているIndexHMDのFWそのままなので、音声入力が追加されたり、SteamVRでFWアップデートしろと言われたりします。

・J-Linkですべて書き込もうとしたらうまくいきませんでした……なんで??

・最終的にBootloaderは必要ないのでnRF52840 Dongleに焼く場合はMBR、SoftDevice、Applicationだけでいいです(たぶん)。