Profile picture showing a purple space pirate folf with some darker accents. His fur is starry and he has a cybernetic collar. The background is a snowy landscape. Art by me.

blog.fawx.news


The Linux VR experience

5 min

So, let me guess… You finally want to have a fuzzy avatar, or play that Half-Life game, but your OS is special?

That was me until recently, and so I got myself a treat!

Quest 3

First thing I had to do was decide on a headset. The fact only Zucc had options that seemed affordable enough for their specs definitely made me uneasy, but I had to swallow that sadly.

Now I’m not sure if I’d make that choice with hindsight, but that has to do with other issues I’ll talk about in a bit.

The thing is, of all the wired options, none of them seem to approach the affordability, despite not needing to have the latest mobile chip onboard as well as a battery, their displays and optics tend to be outdated, and on top of all this they somehow still manage to be heavier unless you really want to pay up.

As far as hardware goes, the Quest 3 is an impressive piece of gear. The software still leaves things to be desired, it has bugs in various places, but in the end all it needs to do is launch ALVR for me to be happy… at least in theory.

Oh the streaming

This was the part that scared me the most, I know streaming video in real time is NEVER easy, and don’t let anyone tell you otherwise. Actually forget “real time”, there is gonna be a delay, and some tricks to compensate. You won’t beat a wire with video.

The real issue here is you need very high bandwidth to avoid compression artifacts, which despite what certain people like to say will be noticeable, especially in VR. Even at 200mbps h264 (I cannot use AV1 due to lack of HW encoding) with the picture looking great in most settings, there are still artifacts that appear when the scene gets too complex. One example of this are raindrops on windows in certain worlds, which cause a similar degradation as confetti does for online video, except now it’s glued to your head.

That’s also the part where Meta’s firmware and WiFi come in. It sounds simple, you just need a dedicated router that can provide the bandwidth you need, right? Wrong, very wrong. There is this thing called beam forming that modern WiFI devices do, and as it turns out it can have a dramatic effect when in motion. On some routers and firmware versions the bandwidth would heavily drop when moving my head side to side.

You could say I should just buy expensive router someone recommends and maybe I should, but it kinda stings after spending so much money already.

The Linux

Surprisingly, in most cases Linux doesn’t cause many problems for wireless VR. You even get async reprojection on the headset side, so you can avoid SteamVR’s broken implementation, and you don’t need DRM leasing on Wayland.

WlxOverlay provides a nice overlay for interacting with your desktops on Wayland, since Steam doesn’t directly support that.

I’ve had some issues with SteamVR crashing, which seemingly went away after fiddling with the setup, including at some points using older versions. It was incredibly painful to figure this out and I could rant forever about all the minor things in SteamVR that are annoying, but that wouldn’t leave much space for other things! Hopefully it will soon become more viable to ditch SteamVR entirely thanks to OpenComposite and an OpenXR runtime like Monado or WiVRn. Check out the LVRA Wiki for more info about the Linux VR stack, as well as any other tips.

Most games I’ve tried just seem to work on Proton, in fact I would recommend avoiding native ports, even for Half-Life: Alyx, simply because the performance is worse!

There are hiccups for VRChat with EAC sometimes not initializing, and some people have reported it not working at all on their systems, but it seems to work fine for me at least.

VR is quite demanding in general, so the performance overhead from Proton could matter in some cases, especially with a high-res headset like the Quest 3.

Resonite

I love Resonite for what it is, and I’ve spent some time on it already. The community is very helpful and friendly, I’ve definitely had a better experience there than VRC.

The biggest issue currently is definitely performance. It’s bad, and it’s not even a Linux thing, it’s just terrible for everyone.

One thing you’ll want to do is lower your resolution by A LOT. Seriously, it scales very poorly with resolution, what may seem like just a small bump could ruin your performance. Hopefully this will be addressed once the new rendering engine is in, but that could take a while.

There are still some significant Linux-specific issues however. I’ve experienced nasty freezes in heavier sessions that take SteamVR with them, and usually happen at the worst possible moment.

The native Linux version is completely broken on AMD GPUs without installing a mod, and it has Z-fighting in many places still, video players also don’t work or render correctly. I don’t know if the crashes I experienced on Proton happen with the native build, hopefully it’s not the case and all the other problems can eventually be fixed, or we get less crashing on Proton, either would be great!

Conclusion

Is it still fun, despite all of that? Well yeah, it was a new experience for me!

I wouldn’t say it’s ready for most people, especially hardcore VR users. I’m a special kind of masochist who played games on Linux before Proton or DXVK, back when you’d be lucky to get half the performance, or if the game ran at all.

Half-Life: Alyx was basically flawless for me (aside from the streaming issues mentioned) and it’s a game I can really recommend, it’s very different from seeing it on a screen!

Comments

With an account on the Fediverse or Mastodon, you can respond to this post. Just copy the link into the search bar on your home instance.

Learn how this is implemented here.