# 令和最新版 Indexコンを履く

もう令和も6年ですが、Indexコンって履けるんです
---
昔はValve Indexフルキットを使っていたが、最近はもっぱらQuest Proで遊んでいる
HMDとコントローラー2つが余っているということは3+2点トラッキングでフルトラっぽくできるのでは?という日記
古いVive コントローラーをトラッカーとして使うこととほぼ同じだが、Knucklesでやっている記事がなかったので書いておく。
## 出来ること
両足のトラッキング もどき

なんだこのポーズ
## 良いところ
- 余ってれば無料で足を動かす感じを試せる
- 1時間くらいで出来る
- ベルトとか要らない
あるいはすでにn点トラッキングしていて、ここに追加したらどんな感じになるだろうというのを試すのにも使えるかもしれませんね
## 悪いところ
- めんどい
- 間違えたらIndex, Knucklesが壊れる
- 専用のトラッカーとベルトよりはずれるので常用するのは厳しい
- 腰トラッキングがないのでフルトラではない
## 使ったもの1
- Valve Index HMD
- ドングルとして使用
- Knuckles (Indexコントローラー) Left, Right
- Base Station 2.0
## 使ったもの2
- Quest Pro
- Steam Link
- たぶんVirtual Desktopでも出来ると思うけど試してない
- SteamVR
- OpenVR-SpaceCalibrator
## やりかた
やるならよく読んで何をしているのか理解してからやらないと壊れますよ
### 準備
まず普通にIndexが動くことを確認する。ベースステーション設置して普通に繋いで、ルームセットアップを完了する。
### Knucklesのトラッカー化
2018年のViveコントローラーをトラッカー化するのとほぼ同じ
Steam VRのインストール先 (通常`C:\Program Files (x86)\Steam\steamapps\common\SteamVR`) から `tools\lighthouse\bin\win64` と辿って `lighthouse_console.exe` までたどり着く。これを使ってコントローラーのconfigを書き換える
configを操作するときは**PCから全てのlighthouseデバイス(HMD, VR コントローラー, トラッカー)を外して、操作したいものだけを繋いだ状態で起動する**こと
(一敗)(Index HMDにコントローラーのconfigを書き込んで死亡)([直し方](#おまけ-誤って意図しない機器のconfigを上書きしてしまったら))
まず何も繋げていない状態で
```
./lighthouse_console.exe deviceinfo
```
をして何も繋がっていないことを確認する
```
PS C:\Program Files (x86)\Steam\steamapps\common\SteamVR\tools\lighthouse\bin\win64> ./lighthouse_console.exe deviceinfo
Version: lighthouse_console.exe (buildbot_vortex-windows_steamvr_rel_win64@vortex-windows) 08927682
Attached lighthouse receiver devices: 0
No connected lighthouse device found.
```
:::warning
HMDが繋がっていると以下のようになる
```
PS C:\Program Files (x86)\Steam\steamapps\common\SteamVR\tools\lighthouse\bin\win64> ./lighthouse_console.exe deviceinfo
Version: lighthouse_console.exe (buildbot_vortex-windows_steamvr_rel_win64@vortex-windows) 08927682
Attached lighthouse receiver devices: 5
LHR-ADCDBD99
8421EBB0F1-LYM
05248CC5E7-RYB
lighthouse_console: Connected to receiver LHR-ADCDBD99
Attempting HID Open IMU: LHR-ADCDBD99
Lighthouse IMU HID opened
LHR-ADCDBD99: Firmware Version 1623823641 WMBUILD-W64$@wmbuild-w64 2021-06-16 FPGA 538(2.26/9/2) BL 1555018800
LHR-ADCDBD99: Successfully fetched gyro/accelerometer range modes from the device. GyroRangeMode:1 AccelRangeMode:1
Attempting HID Open Optical: LHR-ADCDBD99
Lighthouse Optical HID opened
Attempting HID Open VrController: LHR-ADCDBD99
Lighthouse VrController HID opened
LHR-ADCDBD99: Read config of 3099 bytes from [vid:28de, pid:2300] (LHR-ADCDBD99) and inflated to 9727 bytes
LHR-ADCDBD99: Read config of 3099 bytes from [vid:28de, pid:2300] (LHR-ADCDBD99) and inflated to 9727 bytes
DEVICEINFO serial=LHR-ADCDBD99 device_class=hmd
```
:::
:::info
コントローラーが1つ繋がっていると以下のようになる
```
PS C:\Program Files (x86)\Steam\steamapps\common\SteamVR\tools\lighthouse\bin\win64> ./lighthouse_console.exe deviceinfo
Version: lighthouse_console.exe (buildbot_vortex-windows_steamvr_rel_win64@vortex-windows) 08927682
Attached lighthouse receiver devices: 3
LHR-76807ABE
lighthouse_console: Connected to receiver LHR-76807ABE
Attempting HID Open IMU: LHR-76807ABE
Lighthouse IMU HID opened
LHR-76807ABE: Firmware Version 1693638519 WMBUILD-W64$@wmbuild-w64 2023-09-02 FPGA 538(2.26/10/2) BL 1546408689
UserData Error: Data request is out of range, request starting:0x0, ending:0x18, max address:0x3
LHR-76807ABE: Successfully fetched gyro/accelerometer range modes from the device. GyroRangeMode:3 AccelRangeMode:2
Attempting HID Open Optical: LHR-76807ABE
Lighthouse Optical HID opened
Attempting HID Open VrController: LHR-76807ABE
Lighthouse VrController HID opened
LHR-76807ABE: Read config of 1698 bytes from [vid:28de, pid:2300] (LHR-76807ABE) and inflated to 4168 bytes
LHR-76807ABE: Read config of 1698 bytes from [vid:28de, pid:2300] (LHR-76807ABE) and inflated to 4168 bytes
DEVICEINFO serial=LHR-76807ABE device_class=controller
```
:::
:::danger
HMDとコントローラー1つが繋がっていると以下のようになる
**この状態で作業してはいけない**
```
PS C:\Program Files (x86)\Steam\steamapps\common\SteamVR\tools\lighthouse\bin\win64> ./lighthouse_console.exe deviceinfo
Version: lighthouse_console.exe (buildbot_vortex-windows_steamvr_rel_win64@vortex-windows) 08927682
Attached lighthouse receiver devices: 8
LHR-ADCDBD99
LHR-76807ABE
8421EBB0F1-LYM
05248CC5E7-RYB
lighthouse_console: Connected to receiver LHR-76807ABE
Attempting HID Open IMU: LHR-76807ABE
Lighthouse IMU HID opened
LHR-76807ABE: Firmware Version 1693638519 WMBUILD-W64$@wmbuild-w64 2023-09-02 FPGA 538(2.26/10/2) BL 1546408689
UserData Error: Data request is out of range, request starting:0x0, ending:0x18, max address:0x3
LHR-76807ABE: Successfully fetched gyro/accelerometer range modes from the device. GyroRangeMode:3 AccelRangeMode:2
Attempting HID Open Optical: LHR-76807ABE
Lighthouse Optical HID opened
Attempting HID Open VrController: LHR-76807ABE
Lighthouse VrController HID opened
LHR-76807ABE: Read config of 1698 bytes from [vid:28de, pid:2300] (LHR-76807ABE) and inflated to 4168 bytes
LHR-ADCDBD99: Read config of 3099 bytes from [vid:28de, pid:2300] (LHR-ADCDBD99) and inflated to 9727 bytes
DEVICEINFO serial=LHR-ADCDBD99 device_class=hmd
LHR-76807ABE: Read config of 1698 bytes from [vid:28de, pid:2300] (LHR-76807ABE) and inflated to 4168 bytes
DEVICEINFO serial=LHR-76807ABE device_class=controller
```
:::
---
確実にコントローラー1つだけが繋がっていることを確認したら作業を開始する
#### 1. ダウンロード
```
./lighthouse_console.exe donloadconfig
```
で今のconfigをPCに保存する。
```
PS C:\Program Files (x86)\Steam\steamapps\common\SteamVR\tools\lighthouse\bin\win64> ./lighthouse_console.exe downloadconfig
Version: lighthouse_console.exe (buildbot_vortex-windows_steamvr_rel_win64@vortex-windows) 08927682
Attached lighthouse receiver devices: 3
LHR-76807ABE
lighthouse_console: Connected to receiver LHR-76807ABE
Attempting HID Open IMU: LHR-76807ABE
Lighthouse IMU HID opened
LHR-76807ABE: Firmware Version 1693638519 WMBUILD-W64$@wmbuild-w64 2023-09-02 FPGA 538(2.26/10/2) BL 1546408689
UserData Error: Data request is out of range, request starting:0x0, ending:0x18, max address:0x3
LHR-76807ABE: Successfully fetched gyro/accelerometer range modes from the device. GyroRangeMode:3 AccelRangeMode:2
Attempting HID Open Optical: LHR-76807ABE
Lighthouse Optical HID opened
Attempting HID Open VrController: LHR-76807ABE
Lighthouse VrController HID opened
LHR-76807ABE: Read config of 1698 bytes from [vid:28de, pid:2300] (LHR-76807ABE) and inflated to 4168 bytes
LHR-76807ABE: Read config of 1698 bytes from [vid:28de, pid:2300] (LHR-76807ABE) and inflated to 4168 bytes
Wrote 4168 bytes to LHR-76807ABE.json
```
`LHR-76807ABE.json` というファイルが作成された。configはデバイスごとに値が異なるので共有はできないらしい。
これをコピーしてバックアップとしてを保存しておく
#### 2. 編集
configをvscodeなどで開き、以下の3点を書き換えて保存する
- `"device_class": "controller"` を <br>`"device_class": "generic_tracker"` に
- `"model_number": "Knuckles Left"` (またはKnuckles Right)を <br> `"model_number": "Vive Tracker PVT"` に
- `"tracked_controller_role": "left_hand"` (またはright_hand)を <br>`"tracked_controller_role": ""`に
記事によっては`"render_model"`, `"revision"`などを書き換えている場合もあるが、触らなくていい
このとき、ファイル名と`"model_number"`を見てどの型番が左か右かメモしておくと良い
#### 3. アップロード
```
./lighthouse_console.exe uploadconfig ファイル名
```
```
PS C:\Program Files (x86)\Steam\steamapps\common\SteamVR\tools\lighthouse\bin\win64> ./lighthouse_console.exe uploadconfig .\LHR-76807ABE.json
Version: lighthouse_console.exe (buildbot_vortex-windows_steamvr_rel_win64@vortex-windows) 08927682
Attached lighthouse receiver devices: 3
LHR-76807ABE
lighthouse_console: Connected to receiver LHR-76807ABE
Attempting HID Open IMU: LHR-76807ABE
Lighthouse IMU HID opened
LHR-76807ABE: Firmware Version 1693638519 WMBUILD-W64$@wmbuild-w64 2023-09-02 FPGA 538(2.26/10/2) BL 1546408689
UserData Error: Data request is out of range, request starting:0x0, ending:0x18, max address:0x3
LHR-76807ABE: Successfully fetched gyro/accelerometer range modes from the device. GyroRangeMode:3 AccelRangeMode:2
Attempting HID Open Optical: LHR-76807ABE
Lighthouse Optical HID opened
Attempting HID Open VrController: LHR-76807ABE
Lighthouse VrController HID opened
LHR-76807ABE: Read config of 1698 bytes from [vid:28de, pid:2300] (LHR-76807ABE) and inflated to 4168 bytes
Compressed config size is 1722
LHR-76807ABE: Triggered keepalive (succeeded)
LHR-76807ABE: Packet received after 0.049s, keepalive (0/1)
Wrote the contents of .\LHR-76807ABE.json as the config on the device
```
特に問題はないはず
この時点で`./lighthouse_console.exe deviceinfo`するとgeneric_trackerになっていることが確認できるはず。
これを左右分行う
### OpenVR-SpaceCalibrator を入れる
Quest世界のトラッキング位置とLighthouse世界のトラッキング位置を同期するためのソフトウェア
https://github.com/pushrax/OpenVR-SpaceCalibrator
の[releases](https://github.com/pushrax/OpenVR-SpaceCalibrator/releases)から最新版のインストーラーをダウンロードして適当にインストールしておく
正常にインストールされるとSteamVRのアドオンに01spacecalibratorが追加される

### SteamVRで確認する
ベースステーションの電源を入れて、Index HMDをPCに接続する。**これ以降Index HMDはドングルとして使うので、HMDとして映像出力されないように、USBと電源のみ接続する**
デバイス(今回はQuest ProのSteam Link)からSteamVRに接続し、Knuckles の電源ボタンを押すとトラッカーとして認識される
私が試した限りでは電源をいれる順番はシビアではなく、Steam Linkで繋いでからでも、最終的にDPケーブルが繋がっていないIndexとベースステーションとKnuckles 全部に電源を入れれば問題なく繋がった。

トラッカーと化したKnucklesは両方とも左手のモデルとして表示される
キャリブレーションするまではぜんぜん別の場所にあって見えないかも

### SpaceCalibrator でキャリブレーション
ここから先はQuest系 (VD, Steam Link) + SteamVRでLighthouseトラッカーを使う一般的な話と同じなので特に読まなくていいです
SteamVRのアプリ欄に <img src="https://hackmd.io/_uploads/HJzSSygvA.png" style="width:2em" /> SpaceCalibrator があるはずなので開くと画面が出る

ここで左手と左手、まあ別に組み合わせはどうでもいいんですが、とにかく同じ手に2つのコントローラーを持って、持ったコントローラーを選択して、Start Calibrationを押して∞の字にぐるぐる回すやつをやる
Knuckles の型番を覚えておくのはこのためだったんですね

ここでは左手と左手で行った
キャリブレーションはトラッカーごとではなく、起動ごと(あるいはずれてるなと思ったとき)に一回するだけで良い。トラッカー自体のキャリブレーションをしているわけではなく、QuestとLighthouseの空間をあわせているだけだから
### 履く

右手を左足に装着するのがミソ
君は弧の部分を外側にして履いてもよい
### ゲームで使う
ここからは本物のトラッカーを使うときと特に変わらないので更に読まなくていい
VRChatの場合はトラッカーがあると立位座位ボタンがキャリブレーションボタンになるので、それを押すとキャリブレーションに入り、トラッカーが見えるようになる
設定からキャリブレーションミラーをオンにしておくと良い。あとモデルをシステムにしておくとどれがKnuckles かわかりやすいかもしれない

ゲーム的にはどれが何とか気にしてないので、場所に近いトラッカーがその場所のトラッカーとして使われる。どこに使われる予定かは水色の線で見える。
### おわり
<video controls src="https://media.stellaria.network/media_attachments/files/112/710/399/063/556/425/original/3759af2df38dea90.mp4"></video>
ずれるので使いづらいぞ
## 参考資料
- https://najiko.net/vive%E3%82%B3%E3%83%B3%E3%81%AE%E5%B1%A5%E3%81%8D%E6%96%B9/
- https://ask.vrchat.com/t/how-to-convert-those-dusty-old-vive-wands-into-trackers/8823
- configの書き換えはここから
- https://note.com/praecipua/n/nf7268ddd0b2f
- https://hoshigari-gamer.com/vive-controller-tracker-change/
<style>
video {
max-width: 100%;
box-sizing: content-box;
border-radius: 6px;
background-color: initial;
}
</style>
## おまけ: 誤って意図しない機器のconfigを上書きしてしまったら
つまりコントローラーに繋いでいるつもりでHMDにアップロードして終わった場合
```
C:\Program Files (x86)\Steam\config\lighthouse
```
に初回接続時に保存されたconfigがあるはずなので、それをアップロードする
- https://www.reddit.com/r/ValveIndex/comments/kysmv8/i_bricked_my_valve_index_and_i_need_help_fixing_it/
助かりました