Virtual Reality on Linux - 3 years later

It’s been a while, so let’s go over VR on Linux and see if anything has improved!

As always you can watch the video, or simply read along below:

I’ve had my Valve Index headset for 3 years now. Let’s go over what’s great about VR on Linux, what isn’t so great, and if you can potentially avoid Windows 11 in a few years for your VR gaming setup.

Let’s start with the GPU driver situation.

This will most likely spark a flame war below to please keep it civil. Historically AMD’s drivers have always been sub-par on Windows and Linux, only recently having been added to the kernel via amdgpu. As it currently stands, the AMD driver in the kernel is excellent if you just want to plug right into a game. There are some missing features which require the proprietary version of their driver, but the open source kernel module will work for most people.

Nvidia on the other hand still has only their proprietary driver available. Is this an issue in the real world? Well for people like me who actually get things done instead of arguing in Reddit threads, no. Just sudo apt install, reboot and you’re done. If you are on Ubuntu or other easy distros it is just one click install. This is really not that difficult. Nvidia did take their sweet time adding asynchronous reprojection, only having implemented it in driver 470 which was a few months ago (AMD already had this for a long time). This is critical for VR as it essentially allows the GPU to buffer frames and keep the headset tracking at a constant rate when your game framerate drops. This is extremely important for people who are sensitive to motion sickness, like myself.

As it currently stands, the drivers are very well matched, with nvidia supporting a few more vulkan extensions than AMD which may show better shader compatibility in games you run through Proton.

So what’s great about VR on Linux?

Thanks to SteamVR, it is possible to run VR on Linux. Without SteamVR, it’s a nightmare. Some things like pairing the HTC Vive trackers for full body tracking are very easy, and is really just plug and play. On Windows I’ve had issues with drivers not behaving, but on Linux you don’t have to deal with any of that.

Unfortunately, the list of pros for VR on Linux ends there. Which brings us to…

What sucks about VR on Linux?

With SteamVR, quite a lot. And for the most part it is quality of life issues.

Turning the lighthouses on and off with SteamVR? Broken.
Even if you have working bluetooth on your PC, SteamVR has no option in settings to turn the lighthouses on and off.
You can use a Python script to do it for you: lh.py · GitHub
There is also this great Android app as well: GitHub - jeroen1602/lighthouse_pm: A Flutter app for controlling the power state of Valve Index® lighthouses

Switching your audio input and output to the headset automatically? Broken.
The Index shows up just fine in Pulseaudio, but SteamVR will not switch to the headset on launch. You have to manually change your input and output devices to the headset after launching SteamVR.

The Index’s cameras for the room preview in the overlay? Broken.
For some reason you can open the Index’s cameras in VLC as a capture device, and they display fine, but SteamVR won’t show them in the overlay or generate the “ghost” room boundaries. ([BUG] Valve Index camera not working · Issue #231 · ValveSoftware/SteamVR-for-Linux · GitHub)

Once in VR, the SteamVR guardian boundaries (the grid that shows up close to the edge of your playspace) are incredibly broken. This may be an Nvidia issue related to asynchronous reprojection. When the boundaries appear, they are around 200ms delayed from the actual tracking of the headset and are incredibly dizzying to look at.

Pressing the system menu button to bring up the SteamVR dash/overlay will sometimes crash the game you currently have open. If it does work, the desktop monitor capture will also sometimes not work, either rendering a black screen or showing an error.

What about game compatibility?

The good news is that thanks to Proton, there are a lot of titles available. Out of my library of 15 VR games, every single one has a gold or higher rating on ProtonDB. This is great for the recovering Windows user, but the number of native Linux VR games is very small. Only two games in my library have native Linux builds, NeosVR and Half Life: Alyx.

Half Life: Alyx runs flawlessly as you would expect, and you will have no issues playing on most systems.

NeosVR on the other hand, while it does have a native binary, has some issues as it relies on some Windows-only Unity extensions for things like Viseme (the processing library that makes your avatar’s mouth move with your speech) and in-game video players don’t work. Neos has open issues to resolve these, but they are stalled awaiting Unity to add support in their rendering system for Linux. I ran NeosVR in Proton for this video to have working Viseme, and for those who watched the video you can see it runs pretty well.

VRChat runs perfectly through Proton, so if you just want to hang out with your furry or anime friends, you should have no issues.

Hardware compatibility

if you don’t own a Valve Index or HTC Vive, don’t bother. No Facebook headsets work AT ALL on Linux, so if you have a Quest or Rift, just don’t even try.

So what’s the verdict?

VR on Linux is absolutely possible, I do it many times a week. There are still those open issues to consider though, which at the moment are mostly quality of life issues. Yes, when you boot SteamVR you have to manually turn the lighthouses on, manually change your audio device, and I would recommend disabling the system button on your controller so you don’t open the SteamVR overlay and crash your running game.

I would really like to see Valve fix these quirks to lower the barrier for VR on Linux. For most people all this manual work every time you launch is just a headache and will push them to stay on Windows.

If you are already a Linux user, go right ahead and give it a try. You might be surprised how easy it is to run.

So how has your Linux VR experience been? I’ll be around for questions or comments below. And if you want to come hang out in NeosVR, add me: GrayBoltWolf

3 Likes

Oh, I know a ton of people using NeosVR now. Shame the Linux version was improperly configured. It was that way with “Distance” where custom soundtracking used a Windows only plugin and I had to use Proton.

Good. However I heard there was a DXVK issue with how it can’t be optimized further because of how inefficient VRChat is.

BTW, a good person to hangout in Neos (this is furry inside baseball) is “Tinytig” AKA Ian. https://twitter.com/Tinytig/status/1319865011481792512

With VRChat and Neos it’s really not a DXVK issue, it’s Unity. Unity is nice in how it supports a wide variety of platforms, but it runs like garbage. VRChat definitely has that issue on Windows as well, load in about 10 avatars will full IK and you’re looking at 20 FPS.

Neos is a custom game engine, but uses the Unity graphics stack so it suffers from the same issues.

Honestly the Proton performance is about on par with Windows in my experience in both games.

I don’t think I’ve see a TinyTig around, but I definitely know someone by the in-game username Ian.

Yeah, they’re either a corvid or a feline (can’t remember which specific feline)

So if I have enough CPU headroom the performance aspect should just be identical between both? That’s my concern, is that DXVK overhead adds a lot to it.

Thanks for this. Just listened to Accursed Farms Ross Scott’s monthly QA video chat and he mentioned plans to do a Linux video. That had me wondering about the state of VR on Linux, so this is very conveniently timed.

Sounds like VR/Linux is probably only worth trying for experienced Linux users right now. Hope things continue to improve. It probably is unrealistic to think the Steam Deck being Linux will feed into improving VR on Linux, but I will hope anyway.

Curious if you’ve dabbled in hacking VR into games that aren’t “VR games.” Just getting stereoscopy with head tracking is enough for some really cool experiences. I remember playing that early hl2vr thing Valve made on my OSVR HDK2 and it was awesome. Mouse and keyboard with stereoscopy and head tracking.