I managed to get a Valve Index a few weeks ago (which has been great), but the reliability of SteamVR could be a lot better. Especially with the base station power management feature, where it only puts the lasers on standby by default, which causes it to emit a high-pitch whine as the motors are still moving.
Turning on the proper standby power management feature only sometimes works, and often SteamVR won't successfully wake or put base stations on standby, which I've tried to work around by restarting, forcing a discover and connection retry, all of which are extremely annoying to deal with.
There are tools on Github that allow management of these, namely https://github.com/nouser2013/lighthouse-v2-manager (Python/Windows) and https://github.com/jeroen1602/lighthouse_pm (Android, potentially works on iOS), however both seemed like more effort than it was worth.
Looking at the code in
lighthouse-v2-manager, specifically https://github.com/nouser2013/lighthouse-v2-manager/blob/master/lighthouse-v2-manager.py#L146, it reveals that it's a simple BLE characteristic write to turn them on and off. Why this appears to be such a difficult thing to do for SteamVR, I'll never know.
I attempted to hack something together in Node with
noble as it seemed like the most mature BLE library for the languages I'm familiar with, however I ran into some low-level looking errors so I gave up.
Using the app, I was able to:
- See my base stations as indicated by
- Tap on it to reveal the menu, and tap
- Tap the service indicated by UUID
- Tap the characteristic as indicated by
00001525-1212-efde-1523-785feabcd124(the first part of the UUID is
- You can query its current value with
- You can set the power state with
Write w/response characteristic. Sending
0x00will turn it off, and
0x01will turn it on
This is obviously not a great solution, but considering I don't have to get either of those tools working or build my own, this will have to do until SteamVR can write a byte to their own BLE devices.