Fixing a Role-Changed VIVE Tracker

Update 2/20/2020: I “decompiled” the Vive Tracker Role Changer tool and figured out it’s just self-extracting batch file packaged with lighthouse_console. Will try to get in touch with Valve or HTC to see if there’s a more direct way of getting configuration data.

I recently picked up a used 2018 VIVE Tracker from Amazon so I could start building a full-body tracking kit over the next few months. The kit was relatively complete: I received the original box, manual, warranty information, etc. I was only missing a USB micro data cable, and those aren’t exactly hard to come by. All in all, everything was in fairly good condition, other than a scuff on the plastic and the faint scent of cheap perfume. It paired with SteamVR just fine (albeit with a VIVE controller icon), so I ziptied it to an old belt and jumped into VRChat. Things quickly went downhill from there.

It would work fine for a bit, but then I would be unable to move (this ended up being an unrelated problem), so I would turn off an Index controller, and would find my character’s hand firmly attached to my groin and one controller would be unusable. Restarting both controllers would only make the situation worse.

I was flabbergasted, and hours of Googling and reading through ancient reddit threads resulted in multiple attempts at fixing the problem, all to no avail. Finally, I found someone with a similar situation, and was able to solve the problem, with a few tweaks.

Hopefully, the following post will make someone’s life easier.

Symptoms

Here’s what I experienced in my situation (will make searching for this problem easier, lol SEO):

  • Tracker detected as controller in SteamVR (stick icon)
    • Sometimes it will show up as an Index controller because SteamVR has more bugs than an ant farm.
  • Tracker does not respond to factory reset procedure (stays in pairing mode)
    • To (try to) factory reset, plug your tracker into your computer with a data-carrying USB cable and then hold the power button on the tracker for 15s.
  • Tracker shows up in Device Manager as Steam Controller
  • SteamVR System Report shows tracker as a Vive Controller, even though the name says it’s a tracker.
  • Manage Vive Trackers doesn’t appear in SteamVR > Controllers menu OR the tracker in question is missing from Manage Vive Trackers
  • USBDeview shows tracker as a Steam Controller when it’s plugged in.
  • lighthouse_console.exe deviceinfo command lists the tracker as device_class=controller

What (Probably) Happened

A while ago, there were a few games that wouldn’t work with trackers because they only were designed to work with actual controllers. A workaround was to use a now-defunct utility called the Vive Tracker Role Changer to change the firmware of the tracker so that it told the computer that it was a controller rather than a tracker. The steps below effectively reverse the effects of this tool. I have a suspicion that there are more values that were changed, but I’d need a stock, un-fucked-with tracker to verify this.

Solution

WARNING: This solution will involve screwing with files stored in the firmware of your device. You will likely void your warranty, and carry the risk of bricking your VIVE tracker by following these instructions. Proceed at your own risk.

The following set of instructions are based on a post on reddit by iEatAssVR. Kudos to them for doing the legwork. This just expands on some things that were glossed over.

  1. Unplug and turn off everything VR-related. This includes your HMD (just disconnect the breakaway connector) and VIVE dongles. Lighthouses can be left alone.
  2. Open your Steam Library.
  3. Right-click SteamVR.
  4. Manage > Browse Local Files.
  5. Navigate to tools\lighthouse\bin\win64.
  6. Exit Steam completely (File > Exit)
  7. Plug in your wonky VIVE Tracker with a USB data cable.
  8. Execute lighthouse_console.exe. A console window should appear.
  9. Type in deviceinfo and make sure you see your tracker (it’ll have a device_class of controller). If you see anything else, disconnect them, close the window and try again from step 8. Take note of the serial number (LHR-XXXXXXXX).
  10. Plug in your HMD, then close and re-open lighthouse_console.exe.
  11. Type in deviceinfo again. You should now see your HMD (device_class=hmd) in addition to the wonky tracker (device_class=controller).
  12. Run downloadconfig – You’ll now see two json files appear in the same directory as lighthouse_console.exe: one for your HMD, and one for your tracker.
  13. Open the one with the same serial number as your tracker in notepad or any other text editor.
  14. If you see anything other than "device_class": "controller" at the top of the file, you have the wrong file! Close it and open the other one.
  15. Once you’ve found the correct file, delete all the other JSON files so we don’t get confused later.
  16. Change "device_class": "controller" to "device_class": "generic_tracker" This is case-sensitive and critical, type it in exactly as shown. Do not change anything else in the file. (Leave the comma as-is)
  17. Save the file and exit your editor.
  18. Back in the lighthouse_console.exe window, type in uploadconfig
  19. If all goes well, run deviceinfo again. You should now see your tracker as device_class=generic_tracker. If not, go back and double-check your spelling in the JSON file, then retry step 18 and 19.
  20. Close lighthouse_console.exe
  21. Plug all your peripherals back in.
  22. Open Steam.
  23. Open SteamVR and verify your VIVE Tracker shows up properly.

You should now be all set!

I plan to make an automatic tool to perform the same actions at some point in the future. If the creator of the Vive Tracker Role Changer tool would get in touch, I would be grateful. “Decompiled”, it ended up just being a batch file in a self-extracting executable that does the above procedure.