Skip to content

Tux with VR headset

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

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.)
  • 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
  • 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

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
3. 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

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)

Upstream issue

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

Upstream issue

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

  1. Right click SteamVR in Steam
  2. Select Properties...
  3. Go to the Betas tab
  4. Under Beta Participation, select linux_v1.14
  5. Refer to this issue comment to fix vrwebhelper
  6. 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: