IPFactory Advent Calender 2024 5日目の記事です。
_?_
/___\
(| |@|) _ _ _ _ _
[|||||||] | | (_) __ _| |__ | |_| |__ ___ _ _ ___ ___
|\ | | | | |/ _` | '_ \| __| '_ \ / _ \| | | / __|/ _ \
|##\ | | |___| | (_| | | | | |_| | | | (_) | |_| \__ \ __/
|\###\| |_____|_|\__, |_| |_|\__|_| |_|\___/ \__,_|___/\___|
| \##| |___/
| \|
|\ | ____ ____ _ _ _
|##\ | | __ ) __ _ ___ ___ / ___|| |_ __ _| |_(_) ___ _ __
|\###\| | _ \ / _` / __|/ _ \ \___ \| __/ _` | __| |/ _ \| '_ \
| \##| | |_) | (_| \__ \ __/ ___) | || (_| | |_| | (_) | | | |
| _ \| . |____/ \__,_|___/\___| |____/ \__\__,_|\__|_|\___/|_| |_|
_.~ . = |_ .`,
/ - ~ " -._)))
ベースステーション起動時に出るアスキーアート
はじめに
こんにちは。0kqです。
ジャンクで買ったベースステーションを直したので記録として残しておきます。
悪化するリスクもあるので手順を実行する場合は自己責任でお願いします。
ブートローダーが壊れている場合DFUが行えません。
ハードウェアの故障の場合、この方法では直りません!
症状
誤ってベースステーション1.0用の復旧ファームウェアを焼いてしまい白点灯 -> 青点滅 -> 白点灯(若干点滅)という状態に陥り、ベースステーション2.0用のファームウェアを焼いても起動しなくなってしまった。
また、SteamVRやBLEでデバイスを検索するとLHB-00000000
という名前になってしまっていた。
ベースステーションへのアクセス方法
BLE
BLEモジュールにnordic社製のnRF52832が使われている
nrf connectとかで接続できる
DFUも可能
https://fccid.io/NM82QCJ100/Internal-Photos/Internal-Photos-6499590
USB-UART
USB-UARTが内蔵されているため、PCに接続してtera termで開くとコンソールからコマンドを叩ける
必要なもの
- USBケーブル
- 片側がMicroBでPCと接続できるもの
- nRF Connect for Mobile
- Tera Term
- 針金等の細い物
- 裏のボタンを押せるもの
- DFU用のデータ
"C:\Program Files (x86)\Steam\steamapps\common\SteamVR\tools\lighthouse\firmware\lighthouse_tx_vader\archive\428\lighthouse_tx_vader_radio_full_dfu.v2_9_2004771.zip"
- nRF Connect for Mobileをインストールしたスマホに転送しておく
手順
1. DFUモードに入る
ベースステーションの裏のボタンを押しながら電源ケーブルを接続する。
この際、ベースステーションのLEDは点灯しない。
2. BLEでベースステーションへ接続する
nRF Connect for Mobileを起動し、LHB-DFU
というデバイスを探し、CONNECT
ボタンを押す。
3. DFUを行う
画面上部のDFU
ボタンを押してlighthouse_tx_vader_radio_full_dfu.v2_9_2004771.zip
を選択する。
Androidの場合はダイアログでzipを選択する。
4. ベースステーションの電源を入れる
DFUが終了したら一度電源ケーブルを抜き、再度電源ケーブルを接続する。
症状によってはここで直っている場合もあるかもしれない。
5. Tera Termで接続する
ベースステーションをUSBケーブルでPCと接続し、Tera Term
を起動する。
Enterキーを押してlhtx>
という表示が出たら成功。
USBシリアルデバイスとして認識しているはず。
一瞬しか認識されない場合やLighthouse Base Station
のアスキーアートが何度も流れてくる場合はブートループを起こしている可能性が高い。
その場合は電源ケーブルを何度も抜き差ししてブートループが起こらないことを祈る。
- 私の場合は白点灯-> 青点滅 -> 白点灯(若干点滅)でブートループしていたが、10~20回ほど再起動を行ったところ赤点滅になりセンサーのログが大量に流れるようになった。
ログはparam default-all
で非表示にできる。
6. キャリブレーション値を取得する。
param list
を実行しfcal.*
の値をすべてメモしておく。
7. パーティションを削除する
param part
を実行しパーティションがあることを確認する。
以下のコマンドで各パーティションを削除する。
param erase 0
param erase 1
param erase 2
param part
を再度実行しEMPTY
になっていることを確認する。
8. レーザーのキャリブレーションを行う
factory laser-cal
を実行し、数値を聞かれたら100~200※ぐらいの数値を入力してキャリブレーションを行う。
factory save-cal
を実行し、値を保存したら再起動を行う。
※レーザーの出力値と思われる。要検証
9. その他のキャリブレーション値を書き込む
手順6で取得したfcal.*
の値をparam set fcal.* 値
で書き込む。
取得した値が全て0の場合等は以下の値を入力する。
param set fcal.0.tilt -0.055352
param set fcal.0.curve 0.103930
param set fcal.0.gibphase 2.318623
param set fcal.0.gibmag -0.004410
param set fcal.0.ogeephase 0.129396
param set fcal.0.ogeemag -0.043033
param set fcal.1.tilt 0.042486
param set fcal.1.phase -0.005831
param set fcal.1.curve 0.159787
param set fcal.1.gibphase 1.944709
param set fcal.1.gibmag -0.001524
param set fcal.1.ogeephase 1.878604
param set fcal.1.ogeemag -0.161527
この値は本来個体ごとのキャリブレーションで決まる値なので不具合が出る可能性があります
※キャリブレーション用のコマンドが見当たらなかった
値を書き込んだらparam list
で値が書き込まれていることを確認し、param save
を実行し再起動。
LEDが緑色に光れば修理完了です。お疲れさまでした。
謝辞
@Yuba32 さん。調査、修理の多大なるご協力に感謝します。