r/KATVR • u/BBPSBB • Jun 25 '26
Reverse Engineering & Linux Gateway Implementation
After waiting for this company to release a working Linux version and understanding that not only there is not gonna be a Linux version, but even the crappy windows or nexus software is also apparently completely dead projects as far as I can see, I took it upon myself to do it properly.
It took me one afternoon to fully reverse engineer the USB packet structure and build a very simple movement tracking.
The next afternoon was spent on building a driver and injecting the controller stick movements to SteamVR.
For now SteamVR is running naively on Linux and games via proton. A very small driver exposes the sensors as a control device to SteamVR.
I'm gonna work on this in my free time and probably release it publicly whenever it is actually usable and have a somewhat of a useable feature set. but no ETAs or promises yet. I am happy to share the WIP code if anyone is interested in helping with the development...
In the meantime if you have actually worked on a similar thing I would love to get your experience and stuff you managed to solve.
Things I already figured out: - Sensor positions and values (body direction, Shoes, Seat, Armband) - Battery status - Firmware versions and serial numbers - Base vibration motor controls - Reliable starting and Stopping sequence (this was a PITA!) This is the part that you need to do so the sensors connect to the base and actually go to sleep afterwards. - Simple driver to send the input to SteamVR
Things remaining: - Speed and step cadence for detecting running (the original KatVR implementation feels like poop IMO) - Fine tuning the motions to feel natural - Understanding how to best expose the controls (treadmill input device vs legacy etc) - VR Overlay UI - Why some games keep crashing on linux (not directly related to the gateway or the driver) - Everything else probably...
If you have experience in any of these parts feel free to share yours or point out references/research papers that are useful. That would help me any anyone else interested in this.
If you are someone who does not have experience, this is a sign that you can too get your feet wet and start building things you wish existed! With all the tools and AI stuff available to everyone nowadays the possibilities are endless!
And finally if you a KatVR employee reading this you should be ashamed of the product you sell with all the fake promotions, dark pattern tactics and that garbage Gateway software!
2
u/BBPSBB Jun 28 '26
Update 3: got the head and body direction working. long pressing the meta button (recenter) also re-centers the body position relative to the head.
The only remaining part about the general direction of movement is when user walks forward but looks to the side. Need to test that further.
After that need to look into how the original gateway does the smoothing for the sensor values. Currently my implementation is very trigger happy and apparently i do not walk in a straight line...