I’m a happy owner of the Valve Index. When I found mine used on Facebook Marketplace for a great deal, I jumped at the opportunity.
I primarily bought it for VRChat, which is rather unfortunate as VRC is a scummy company run by awful people. However, it is where the people I want to interact with are. So at least for now I have to put up with them, and considering that they (somehow) survived implementing Easy Anti-Cheat, it seems they’ll remain a powerhouse well into the future. If that didn’t kill them, what will?
I’ve known some SteamVR on Linux users, but they were all using the HTC Vive headset. The Valve Index, up until now, seems to have been unusable on Linux…
However, with the holidays approaching, I decided to get into VR for the first time in a couple months by attempting it on Linux once again. It would seem that a series of changes have occurred in recent months to make the experience not only usable, but genuinely pleasant and vastly superior in quality and comfort to my experience on Windows.
Of course, this being Linux on the desktop, tinkering is necessary to make it boot up correctly. So here’s what I have working today. I hope it helps someone else out there.
(Side note: Hats off to this person who put a lot of effort in to get a usable experience ten months ago.)
CPU: AMD Ryzen 9 3950X
GPU: AMD Radeon RX 6800
OS: Arch Linux
Noting these is important, since we have to do some tinkering on both devices to squeeze out the best performance with AMD devices.
This guide was absolutely invaluable, as it’s a series of tips and tricks to make VR work correctly on Linux. I followed the following sections:
“Launching any VR Game Fails”: It is not currently possible to boot SteamVR from the Steam UI. It must be launched manually by going to the SteamVR directory and launching
“Boost performance in VR”: These settings change the performance governors on the CPU and GPU for AMD devices.
cpupower frequency-set --governor performance
GPU: These settings enable the “VR” power profile for the GPU. This setting alone doubled my FPS. Discovering it was a lifesaver.
echo "manual" > /sys/class/drm/card1/device/power_dpm_force_performance_level
echo "4" > /sys/class/drm/card1/device/pp_power_profile_mode
I strongly encourage that the source material be read as well. I am only posting this here to ensure that if the page changes in the future this material is preserved.
Additionally, since I am using a multi-die AMD CPU, I followed the documentation on the VRChat website to bind it to the first CCX, which also delivered a substantial performance improvement: add to the VRChat launch options
--affinity=FFFF to pin it to the first 16 threads. Note that, once again you should read the source material, as this option is specific to my CPU.
I also had to set the sound output and mic input in KDE Plasmas desktop settings after launching SteamVR for the first time. Note that the devices only appear once SteamVR is booted. Subsequent boots of SteamVR seem to set this automatically.
The Subjective Experience
At first, I was confused as to why my experience was locked at 60FPS when I was running my headset at 120FPS. Then I read about asynchronous reprojection. Reprojection locks the frame rate at half if the system can’t render at full speed and interpolates the frames in between.
Reprojection is not something I experienced on Windows. The frame rate ran at what it ran at, and that was it.
I am extremely sensitive to motion sickness. As it turns out, alongside the inherent performance increases of running on Linux and VRChat updating to Unity 2022, reprojection created by far the smoothest experience I’ve ever had in VR. I was so blown away by the lack of motion sickness at the end of my session that I wrote this post the day after.
That said, the experience is not yet perfect. If the FPS drops below 60, reprojection fails and an extremely stuttery and uncomfortable experience proceeds. This is not something I experienced on Windows. Fortunately, at least from the experiences I’ve had so far, this doesn’t seem to happen much.
Additionally, once every few minutes the audio cuts out for about two seconds. I’m unsure why this is.
I’ve been waiting a long time to do this:
Goodbye forever, dual-booting! My last reliance on you is finally gone.