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.
- 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
- 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
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
- Distance - mod comment (works with Proton)
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
- 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
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
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.
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
- NOTE: You can add multiple options to
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
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+)
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
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?)
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 thesteamvr
section at~/.steam/steam/config/steamvr.vrsettings
This is most likely caused by the Vulkan driver.
Fix
- Refer to "Use alternative Vulkan drivers" in order to try another driver
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
- Install AMDVLK drivers and optionally AMDGPU-PRO drivers, however the latter should not be installed system-wide, instead use amdgpu-pro-vulkan-only
- 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
- In order to use AMDVLK or AMDGPU-PRO Vulkan drivers for games, set these variables only for the games (not SteamVR), appending
%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
- AMDGPU-PRO (depends on where it's installed):
VK_ICD_FILENAMES=/opt/amdgpu-pro/etc/vulkan/icd.d/amd_icd64.json:/opt/amdgpu-pro/etc/vulkan/icd.d/amd_icd32.json
NVK driver has become part of Mesa, however it is not finished yet and does not yield the expected performance.
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
- NOTE: You can add multiple options to
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.
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
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