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 Proton - Functional Titles or the Steam forum thread.
Native/Supported
Games
- BallisticNG - discussion
- Balloonatics
- Beat Saber - on Steam Play whitelist - also see this modding guide
- 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
- Envision - experimental graphical tool to get you a full Monado or WiVRn setup up and running (unstable)
- 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
- LÖVR - Lua XR engine, written in C, which supports overlays on monado
- lovr-playspace - Room boundary overlay for OpenXR, made with LÖVR
- Monado - blog post - free and open source OpenXR runtime
- Open Brush - Linux builds - fork of the open sourced 3D painting app Tilt Brush
- OpenComposite - Reimplementation of OpenVR, translating calls to OpenXR - play SteamVR games without SteamVR
- 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
- SPHVR - spherical media player using Vulkan for rendering - can play stereoscopic videos to your headset
- Stardust XR - XR display server for Linux-based distros - allows developers to make XR widgets or interfaces, run them among others
- 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
- WiVRn - OpenXR streaming application - lets you run OpenXR apps on a computer and display them on a standalone headset
- WlxOverlay-S - access your Wayland/X11 desktop from within SteamVR/Monado
- xrdesktop - Announcement - interact with the Linux desktop in XR
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
- Bigscreen Beyond - does not work on Nvidia, but works with Monado on AMD with a kernel patch; SteamVR works on AMD after Monado has run
- Vive Trackers
- Tundra Trackers
- SlimeVR Full-Body Tracker
- Oculus Rift development kits (DK1, DK2) - ArchWiki: Oculus Rift
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/3/Pro
- Pico 4/Neo 3
- Vive Focus 3/XR Elite
- YVR 1/2
- Lynx R1
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
- Linux VR Adventures wiki and community
- MkDocs, Material for MkDocs, and LeagueofLinux.org which VRonLinux.org is based on
- Players like you