Virtual reality

From ArchWiki

This article or section needs expansion.

Reason: Rewrite in progress: many things in this article are outdated (Discuss in Talk:Virtual reality)

Virtual reality is the process of simulating an environment for a user, using a variety of peripherals, head mounted displays or CAVEs, and trackers. Instead of showing you a static viewpoint from a screen, it renders your viewpoint relative to where you are standing, on a head-attached or projected surface, to give an effect identical to your own eyes.

A number of peripherals have been released or are about to be released recently which have brought affordable, extremely immersive virtual reality to everyone. Most of these peripherals have full or partial Linux support, and many have AUR packages.

Hardware compatibility

The following is a non-exhaustive list of currently supported VR/XR devices, and what software supports them.

PCVR HMDs

Device SteamVR Monado
Valve Index Yes Yes
HTC Vive/Vive Pro Yes Yes
HTC Vive Pro Eye Yes (eye tracking WIP) Yes (eye tracking WIP)
HTC Vive Pro 2 Yes (custom driver and patches needed) Yes (AMD GPUs only, 2 kernel patches required: 1 2)
Bigscreen Beyond Yes (AMD GPUs only, kernel patch required) Yes (AMD GPUs only, kernel patch required)
Pimax HMDs No (planned) WIP (might work with kernel patch)
WMR Yes (common HMDs, Monado SteamVR plugin) Yes (6DoF controllers experimental)
Oculus Rift CV1 Yes (OpenHMD recommended) Yes (OpenHMD recommended)
Oculus Rift S Yes (Monado SteamVR plugin) Yes (6DoF controllers experimental)

In addition, there's an experimental PC-PC stream client for WiVRn that might work with the above HMDs that are supported by Monado.

Standalone HMDs

Device SteamVR (through ALVR) WiVRn
Meta Quest/2/3/Pro Yes Yes
Pico 4 Yes Yes
Pico Neo 3 Yes No (broken SDK)
HTC Vive Focus 3 Yes Yes
HTC Vive XR Elite Yes Yes
Lynx R1 Yes Yes
Apple Vision Pro Yes No

Tracking devices

Device SteamVR Monado WiVRn
Vive/Tundra trackers Yes (native or spacecal) Yes (native or motoc) Yes (motoc)
SlimeVR trackers Yes OSC only (merge request) OSC only (merge request)
Project Babble Yes (oscavmgr) Yes (oscavmgr) Yes (oscavmgr)
Eyetrack VR Yes (oscavmgr) Yes (oscavmgr) Yes (oscavmgr)
Mercury hand tracking No Yes (survive driver only) No
Lucid VR gloves ? Yes (survive driver only) No
Kinect based FBT Yes Yes (experimental) WIP
Standable FBT No No No

Supported runtimes and toolkits

OpenXR

OpenXR is an open, royalty-free standard for access to virtual reality and augmented reality platforms and devices. It is maintained by the Khronos Group and adopted by most of the industry. Most runtimes support OpenXR.

Monado

Monado is an open source OpenXR runtime developed by Collabora. It is under heavy development and aims to provide a common runtime supporting most headsets. Current progress can be found here: https://monado.freedesktop.org/

Install using monadoAUR.

Envision

Envision is a graphical app that acts as an orchestrator to get a full Monado or WiVRn setup up and running with a few clicks. Envision attempts to construct a working runtime with both a native OpenXR and an OpenVR API, provided by OpenComposite or XRizer, for client aplications to utilize.

WiVRn

WiVRn is a Monado fork/wrapper capable of streaming to standalone headsets. It currently supports most available Android based HMDs, and also has experimental support for PC to PC streaming.

Install the server using wivrn-serverAUR and the (optional) configuration dashboard with wivrn-dashboardAUR. You can download the prebuilt Android client from the GitHub releases, or compile it yourself according to the build documentation.

OpenVR / SteamVR

OpenVR is an effort by Valve to create an open API for VR development. Unfortunately, while the API is open, the actual default implementation (SteamVR) is not. SteamVR also provides an OpenXR runtime.

SteamVR notes

SteamVR on Linux is known to have many unfixable issues as of January 2025, and is widely considered abandonware by many in the Linux VR sphere. If you are looking for an actual solution for VR on Linux, use Monado or WiVRn if possible.

Setting up SteamVR

Install Vulkan and Steam. If using NVIDIA drivers, you may need to set the VK_DRIVER_FILES environment variable. Required dependencies for 32-bit packages are: lib32-gtk2, lib32-libva, lib32-libvdpau.

From Steam, install SteamVR from the tools menu.

ALVR

ALVR is a SteamVR driver which allows streaming to standalone headsets like the Meta/Oculus Quest. It is available in the alvrAUR and alvr-gitAUR packages.

OpenHMD

OpenHMD is currently not maintained, and should be treated as deprecated for all but older HMD's. It aimed to provide a Free and Open Source API and drivers for immersive technology, such as head mounted displays with built in head tracking. The aim was to implement support for as many devices as possible in a portable, cross-platform package.

OpenHMD only supports older devices such as Oculus Rift, HTC Vive, Sony PSVR, Deepoon E2 and others, so it is not needed for newer devices, and should not be considered. Most of the HMD driver efforts are now going towards Monado. There's a fork focusing on Oculus Rift CV1 tracking, and it's still recommended for that specific headset; use Monado otherwise.

SteamVR support

It is possible to use OpenHMD with SteamVR. To do that, you need to install steamvr-openhmd-gitAUR and create a symlink that points to the OpenHMD SteamVR driver inside your SteamVR drivers directory, for example:

$ ln -s /usr/lib/steamvr/openhmd ~/.steam/steam/steamapps/common/SteamVR/drivers/openhmd

Other software

vr-video-player

A simple tool to view any X11 window inside your VR headset. vr-video-player supports stereoscopic/180°/360° videos/games. vr-video-player also lets you view regular videos/games/windows inside VR as a flat screen.

Available as vr-video-playerAUR.

xr-video-player

A fork of vr-video-player for OpenXR and wayland that uses pipewire to capture a window or screen/s.

Available as xr-video-player-gitAUR.

SideQuest

SideQuest can be used to install APK files to your Oculus Quest. It is available as sidequest-binAUR.

See https://sidequestvr.com/setup-howto for installation steps:

  1. Create an Oculus developer account.
  2. Turn on Quest in developer mode (e.g., with your phone) and connect your Quest via cable.
  3. Press Allow USB debugging inside Quest.

See the SideQuest website for more information.

wlx-overlay-s

wlx-overlay-s is a lightweight OpenXR/OpenVR overlay that can mirror and control X11/Wayland desktops. It can also act as a Wayland compositor if compiled with the wayvr feature.

Available as wlx-overlay-s-gitAUR.

Stardust XR

Stardust XR (GitHub) is a modular XR display server. It can act as an overlay (and can run side by side with wlx-overlay-s) or as a standalone application. It can provide a Wayland compositor using stardust-xr-flatlandAUR, an application launcher with stardust-xr-protostarAUR, skyboxes/home environments with stardust-xr-atmosphereAUR and several other features using other packages. Install the server with stardust-xr-serverAUR; you can also install stardust-xr-telescopeAUR for a premade startup script.

Troubleshooting

SteamVR support

Configuration or startup errors

SteamVR/OpenVR creates a directory ~/.openvr that can get misconfigured over the various versions. Delete that directory and completely uninstall/reinstall SteamVR.

It can also apparently have trouble accessing different HMD's under some configurations. Please refer to the HMD compatibilty chart to see if your headset is compatible.

Games/Programs

Most XR applications run without major issues through Proton. Proton-GE (can be installed with protonup-qtAUR or protonup-rsAUR) or Proton-GE-RTSP might be required for some games or specific functionality. If a game has issues running through Proton, please refer to the game's Linux/Wine compatibility information, ProtonDB and documentation for the XR runtimes and compatibility layers in use for possible fixes.

Other Issues

Because of the nature of VR on Linux it is very common for a wide variety of issues to pop up, and because of the sheer amount of possible issues, it is not possible to write out everything here. Instead, please refer to either the software's respective documentation, the Linux VR Adventures Wiki, or the Linux VR Adventures Discord for help on any possible issue you are facing.