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用の書き込み治具作った! pic.twitter.com/YLHTmNkl7L
— Ρ (@ugokutennp) 2022年8月18日
J-Link経由でちゃんとWatchman dongleのファームウェア焼けた~~(^^♪ pic.twitter.com/KV30fnTRI0
— Ρ (@ugokutennp) 2022年8月18日
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だけでいいです(たぶん)。