VR Software Status
Objective: Investigate software such as these native titles on Steam to find whether they actually support virtual reality (VR) on Linux. In addition, Steam Play whitelisted software will also be tracked. Please post what issues you have here.
This document is VR-focused, but augmented reality (AR) applications will also be included. (Together, VR and AR are known as XR.)
Make sure to use the latest graphics drivers and Linux kernel available to you. At a minimum, Linux kernel 4.13 with Mesa 18.2 (AMD) or Nvidia version 430.26 is required for the SteamVR beta. For more details on SteamVR for Linux, click here.
For unsupported games that may work with Proton, see the list on Gitlab or the Steam forum thread.
Confirmed Working
Games
- BallisticNG - discussion
- Balloonatics
- Beat Saber - on Steam Play whitelist
- BeepSaber - native Beat Saber alternative using Godot
- Doom VFR - on Steam Play whitelist - issue for AMD GPUs
- Dungeon Hero
- Everspace - dev comment
- Fake Racing
- Half-Life: Alyx - announcement - issues
- Google Earth VR - on Steam Play whitelist
- Groove Gunner
- Locomancer
- Munch VR - announcement
- Neos VR - announcement
- OpenMW (VR fork) - issue
- Portal 2 VR (mod) - video
- Polynomial 2 - discussion
- RBDOOM-3-BFG
- Serious Sam Fusion 2017
- Serious Sam 3 VR: BFE
- Serious Sam VR: The First Encounter - dev post
- Serious Sam VR: The Second Encounter
- sphereFACE - issue
- The Talos Principle VR
- Universe Sandbox 2 - discussion
- Vivecraft
- X-Plane - discussion
- vkQuakeVR
- Zaccaria Pinball
- ZED - dev post
Other Software
- Beataroni - Beat Saber mod installer
- BeatSaberModManager - Beat Saber mod installer
- Bino - video player with a focus on 3D and VR
- Blender - open source 3D graphics software (modeling, animation, etc.)
- See Configuring Peripherals in the Blender Manual
- Exokit - issue - VR/AR/XR engine for JavaScript
- FreeCAD OpenXR fork - open source CAD modeling software
- Gaia Sky VR - issue - 3D universe application
- Godot - open source game engine, requires plugin
- libsurvive - open source Lighthouse tracking system
- Monado - blog post - free and open source OpenXR runtime
- Open Brush - Linux builds - fork of the open sourced 3D painting app Tilt Brush
- Overte - open-source social VR metaverse, non-profit fork of Vircadia
- ShellSaber - Beat Saber mod manager written in POSIX-compliant shell script
- Simula - VR window manager for Linux that runs on top of Godot
- SteamVR - Valve's VR software system
- SoundStage VR - Linux builds - music app
- Unreal Engine - proprietary game engine; VR on Linux with 4.16+
- Vircadia - issues - open source social VR metaverse, successor of High Fidelity
- vr-video-player - play stereoscopic 3D videos (and some non-VR games) on your VR headset
- WlxOverlay-S - access your Wayland/X11 desktop from within SteamVR/Monado
- xrdesktop - Announcement - interact with the Linux desktop in XR
Confirmed Planned
The developers will try to make a Linux version at some point. May or may not be released.
- Climbey - dev comment
- cyubeVR - dev post
- Holodance - dev comment
- Left-Hand Path - dev post
- Legend of Dungeon - dev post
- Pierhead Arcade - dev post
- QuiVr - dev post
Confirmed Not Working (Natively)
- Distance - mod comment (works with Proton)
Not Currently Planned
Some have great Proton compatibility, but are not whitelisted. Others have more mixed results, but may work well. See the list on Gitlab or the Steam forum thread for more info.
- 5089 - dev post
- Budget Cuts 2 - dev post
- Duck Force - duck force dev
- Job Simulator - dev post
- Legend of Luca - dev post
- Hot Dogs, Horseshoes, and Hand Grenades - dev post
- Racket: Nx - dev post
- Raw Data - dev post
- Sublevel Zero - dev post
- Subnautica - dev post
VR Hardware Status
Confirmed Working
- HTC Vive/Vive Pro and Valve Index via SteamVR (development beta)
- Index base station updates do not work
- Index camera does not work
- Vive/1.0 base station power management does not work
- Try: Lighthouse PM (Android), lhctrl
- Vive Trackers
- Tundra Trackers
- SlimeVR Full-Body Tracker
- Oculus Rift development kits (DK1, DK2) - ArchWiki: Oculus Rift
Unofficial OpenHMD Support
These currently lack positional tracking functionality, and not as many games support OpenHMD yet.
- Oculus Rift S
- Microsoft Mixed Reality
- PSVR
These have experimental positional tracking support from a development branch.
- Oculus Rift CV1
- Oculus Rift DK2
Also check out Monado, the free and open source OpenXR implementation. It relies on OpenHMD for some devices.
If you want official Linux support for the Oculus Rift, add your vote here. If you want, leave a nice comment, too.
Unofficial ALVR Support (Experimental)
Some Oculus headsets are supported by ALVR (Air Light VR).
Stream VR games from your PC to your headset via Wi-Fi.\ ALVR uses technologies like Asynchronous Timewarp and Fixed Foveated Rendering for a smoother experience.\ All games that work with an Oculus Rift (s) should work with ALVR.
Linux support is still in beta. To be able to make audio work or run ALVR at all you may need advanced knowledge of your distro for debugging or building from source.
ALVR currently supports:
- Oculus Quest 1/2/Pro
- Pico 4/Neo 3
- Vive Focus 3/XR Elite
- YVR 1/2
Graphics Cards
You should try to get the latest graphics drivers that are available. For Nvidia users, have at least the NVIDIA 470.42.01 driver installed, available since June 22, 2021. For AMD users, have at least Mesa 18.2 (September 2018). Intel graphics are not currently supported by SteamVR.
Troubleshooting
SteamVR
Rainbow pixels at the edge of my viewport (AMDGPU)
SteamVR only renders what can actually be seen by the player. This results in two ovals being drawn on the HMD. SteamVR does not touch the outside of those ovals. That results in random pixels from the VRAM segment the frame buffer was allocated on. You can probably see these if you move your eyes quick enough and are looking at a dark scene in VR.
You can tell the RADV driver to always zero the frame buffer to avoid this. I am not sure if this results in a performance penalty or not.
Fix
- Add this environment variable to the launch options of SteamVR: RADV_DEBUG=zerovram
- NOTE: You can add multiple options to RADV_DEBUG
by separating them with a comma (,
). Example: RADV_DEBUG=zerovram,nodcc
SteamVR doesn't start on Wayland
If you have environment variables that force Qt or SDL apps to run in Wayland mode, SteamVR might not start at all.
Fix
- Add these environment variables to the launch options of SteamVR: QT_QPA_PLATFORM=xcb SDL_VIDEODRIVER=x11
SteamVR does not use direct mode on Wayland (window appears on monitor)
If this has never worked for you on Wayland, make sure your compositor supports the wp_drm_lease_device_v1
protocol. (As of writing both Sway and KWin support it)
Fix
- Use a compositor that supports wp_drm_lease_device_v1
- Make sure your XWayland version supports wp_drm_lease_device_v1
(X.Org 22.1.0+)
SteamVR occasionally does not use direct mode on Wayland (window appears on monitor)
Sometimes SteamVR fails to use direct mode. This is probably because the last instance didn't release its lease on your HMD. You can kill XWayland
and try again (Sway automatically restarts it when needed)
If your HMD is listed in the output of xrandr
, it probably means that it's available for lease.
Fix - Restart XWayland - Alternatively restart your compositor
No microphone input from HMD
The microphone of the Valve Index is kinda finnicky. Your best bet is to use PipeWire here. PulseAudio can be made to work, if you figure out the correct sample-rate and stuff.
Fix - Use PipeWire - (Maybe) Make sure you have selected the corresponding HDMI output (the Index won't capture the microphone otherwise?)
Double vision when moving head
On SteamVR versions >1.14, asynchronous reprojection is broken on all drivers and hardware. If games generate enough frames, you won't see this, but otherwise, you probably will.
Fix
Either:
- Use SteamVR 1.14, refer to Using older SteamVR versions
- Enable Legacy Reprojection Mode for each game, then reduce the resolution until the experience is stable (otherwise a similar effect will be present)
- If asynchronous reprojection causes issues on SteamVR 1.14, disable it by setting "enableLinuxVulkanAsync" : false
under the steamvr
section at ~/.steam/steam/config/steamvr.vrsettings
Games crash before anything renders
This is most likely caused by the Vulkan driver.
Fix - Refer to "Use alternative Vulkan drivers" in order to try another driver
Use alternative Vulkan drivers
AMD
Short overview of Vulkan drivers - RADV: Ships with Mesa, required by SteamVR - AMDVLK: Open source, reprojection is not broken on SteamVR >1.14, may perform better than RADV - AMDGPU-PRO: Proprietary, reprojection is TODO, performs TODO
Instructions
1. Install AMDVLK drivers and optionally AMDGPU-PRO drivers, however the latter should not be installed system-wide, instead use amdgpu-pro-vulkan-only
2. Since AMD_VULKAN_ICD
causes issues (more on that here), add these entries to /etc/environment
, making RADV the default driver in the process:
DISABLE_LAYER_AMD_SWITCHABLE_GRAPHICS_1=1
VK_ICD_FILENAMES=/usr/share/vulkan/icd.d/radeon_icd.i686.json:/usr/share/vulkan/icd.d/radeon_icd.x86_64.json
%command%
if it's a Steam game launch argument:
- AMDVLK:
VK_ICD_FILENAMES=/usr/share/vulkan/icd.d/amd_icd32.json:/usr/share/vulkan/icd.d/amd_icd64.json
VK_ICD_FILENAMES=/opt/amdgpu-pro/etc/vulkan/icd.d/amd_icd64.json:/opt/amdgpu-pro/etc/vulkan/icd.d/amd_icd32.json
Nvidia
NVK driver has become part of Mesa, however it is not finished yet and does not yield the expected performance.
Graphics artifacts in SteamVR and in overlays (AMDGPU)
Fix
- (Applies to SteamVR >1.14) Reinstall SteamVR and reject superuser access, setting cap_sys_nice
causes issues
- Otherwise, use SteamVR 1.14 as per Using older SteamVR versions
Old fix
- Add this environment variable to the launch options of SteamVR: RADV_DEBUG=nodcc
- NOTE: You can add multiple options to RADV_DEBUG
by separating them with a comma (,
). Example: RADV_DEBUG=zerovram,nodcc
Overlays are wobbling/jittering
This is a SteamVR bug and it can't really be fixed from the outside.
There is some discussion in this Reddit thread about some workarounds, but they can cause issues with some games.
Using older SteamVR versions
SteamVR 1.14 is the version to fall back to in case of certain issues.
Note: It does not work on Wayland.
It fixes asynchronous reprojection, and doesn't crash or introduce graphics artifacts, unlike the newer versions do.
Instructions
- Right click SteamVR in Steam
- Select Properties...
- Go to the Betas tab
- Under Beta Participation, select linux_v1.14
- Refer to this issue comment to fix vrwebhelper
- For each Windows Unity game or any other Windows game that crashes, select Proton 5.13, which should make the game playable
Acknowledgements
Many thanks to:
- All contributors on Gitlab and in Steam comments
- Steam user Teq for compiling the old list (please don't post on it)
- Valve for SteamVR for Linux and the forum
- Reddit communities /r/linux_gaming and /r/virtualreality_linux
- IRC channel #vronlinux on irc.libera.chat
- MkDocs, Material for MkDocs, and LeagueofLinux.org which VRonLinux.org is based on
- Players like you