Virtual reality - ArchWiki

Jump to content

# 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

Entries marked with "Yes" but without store links can be sideloaded from their corresponding project websites.

Device | WiVRn | SteamVR through ALVR | SteamVR through Steam Link
--- | --- | --- | ---
Meta Quest 2/3/3S/Pro | Yes (Meta Quest Store) | Yes (Meta Quest Store) | Yes (Meta Quest Store)
Meta Quest 1 | Yes | Yes (Sidequest) | No
Pico 4/4 Ultra | Yes | Yes | Yes (Pico Store)
Pico Neo 3 | Yes | Yes | Yes (Pico Store)
HTC Vive Focus 3 | Yes | Yes | Yes (Viveport)
HTC Vive XR Elite | Yes | Yes | Yes (Viveport)
Lynx R1 | Yes | Yes | No
Apple Vision Pro | No | Yes (Apple App Store) | No
Samsung Galaxy XR | Yes | No (partially working) | 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) | Yes
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 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 XRizer or OpenComposite, for client applications to utilize.

#### WiVRn

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

Upstream recommends to install wivrn-serverAUR, xrizerAUR or xrizer-gitAUR (for compatibility with Steam games and OpenVR applications), and optionally wivrn-dashboardAUR for the dashboard. It is also available via Flatpak. You can install the Android client from your devices' store, download the prebuilt Android client from the GitHub releases to sideload, 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.

#### 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-gtk2AUR, 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 package.

#### Steam Link

Valve's closed-source Steam Link App allows streaming games from a PC running SteamVR to supported headsets without relying on third-party software. It supports both a VR mode for proper VR games and a flat-screen mode for desktop games. If the App finds your PC but fails to connect to SteamVR, you may have to open some ports in your firewall as described here.

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

### WayVR

WayVR is a lightweight OpenXR/OpenVR overlay that can mirror and control X11/Wayland desktops. It can also act as a Wayland compositor.

Available as wayvrAUR and wayvr-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.

Category:

- Graphics

Hidden category:

- Pages or sections flagged with Template:Expansion

Virtual reality
Add topic