---
weight: 200
title: Monado
---

# Monado

- [Monado home page](https://monado.freedesktop.org/)
- [Monado GitLab repository](https://gitlab.freedesktop.org/monado/monado)

![Monado icon](/images/monado_icon_medium.png "The Legendary Big M")

> Monado is an open source XR runtime delivering immersive experiences such as VR and AR on mobile, PC/desktop, and other devices. Monado aims to be a complete and conformant implementation of the OpenXR API made by Khronos. The project is currently being developed for GNU/Linux and aims to support other operating systems such as Windows in the near future.

Essentially, Monado is an open source OpenXR implementation, it can be used as an alternative to SteamVR.

Depending on the game, Monado can offer a better overall experience (if with less features) compared to SteamVR, or it might not work at all.

Monado should always be utilized with the environment variable `XRT_COMPOSITOR_COMPUTE=1` to avoid stuttering when application is below maximum refresh rate of the HMD.

Check your logs and ensure that the keywords REALTIME and COMPUTE vulkan queue has been created as opposed to MEDIUM and GRAPHICS queue types before opening issues about failing reprojection.
If your monado-service is unable to acquire these properties in the debug logs `sudo setcap 'cap_sys_nice=eip' <monado-service-binary>` to ensure it can request the priority it needs.

Monado's space may be modified with the environment variables OXR_TRACKING_ORIGIN_OFFSET_X=0.0, OXR_TRACKING_ORIGIN_OFFSET_Y=1.0, OXR_TRACKING_ORIGIN_OFFSET_Z=0.0 to force a defined space or origin offset throughout the session. Useful for seated mode configurations, offset units are floating point in meters, positive or negative.

Monado is made for PCVR headsets, if you have a standalone headset you can check out [WiVRn](/docs/fossvr/wivrn/) or [ALVR](/docs/steamvr/alvr/).

## Steam

To use Monado as the OpenXR runtime with Steam, or if you're planning to use the SteamVR lighthouse driver in Monado, make sure to [run the room setup first](/docs/steamvr/).

In order to use the SteamVR lighthouse driver in Monado, you just need to set the environment variable `STEAMVR_LH_ENABLE=true`.

You may want to disable SteamVR automatically starting whenever you turn on your controllers, because this will interfere with trying to use them with Monado.
To do this:
1. Launch SteamVR at least once, to create the `<steam install directory>/config/steamvr.vrsettings` file
    - `<steam install directory>` is probably `~/.steam/steam` or `~/.local/share/Steam`
2. Add the following section to the end of the file, before the last closing brace:

        "power" : {
          "autoLaunchSteamVROnButtonPress" : false
        }
    - This is a JSON file, so be sure that you add a comma to the end of the previous close brace.
3. Launch SteamVR again to apply the config.

OpenComposite is REQUIRED to operate Monado in conjunction with Steam games. Proton requires a functional OpenVR API to utilize OpenXR at all and Proton itself is required for VR to function as normal wine does not carry any of the needed patches nor does "protonified" wine something like Lutris would provide.

### Fix View

In Steam OpenVR games, the eye's are not calibrated properly, and result in double vision or cross eye effect.

You can add "OXR_PARALLEL_VIEWS=1 %command%" to the launch options to fix this.

## Envision

[Envision](/docs/fossvr/envision/) provides a fairly low-barrier setup and development of both Monado and OpenComposite on most any modern distro.

# Troubleshooting


## [NVIDIA-specific] "NVIDIA: No allowlisted displays found!"

This may be caused by a few different issues:
 - NVIDIA driver misnaming the display: If you see a display simply named "NVIDIA" in the output, the NVIDIA driver may be using a fallback name.
   This can be worked around by setting the environment variable `XRT_COMPOSITOR_FORCE_NVIDIA_DISPLAY="NVIDIA"` in your Envision profile or otherwise passed to Monado.
 - HMD display completely missing from the list: Try unplugging and replugging the power adapter.

## [NVIDIA-Specific] "I'm getting screen tearing inside of my wired VR headset!"
This is caused by having a monitor with VRR enabled, while using a Nvidia GPU. Turning it off in KDE Plasma's display settings will not fix it. You need to add the kernel parameter `nvidia-modeset.conceal_vrr_caps=1` to your boot loader.

ArchWiki has a guide on [how to add kernel parameters](https://wiki.archlinux.org/title/Kernel_parameters#Boot_loader_configuration) in general, but here's an example if you boot with GRUB.

1. Open your terminal and type `sudo nano /etc/default/grub`
1. Add `nvidia-modeset.conceal_vrr_caps=1` inside the parameters of `GRUB_CMDLINE_LINUX_DEFAULT=`
1. Close nano after saving the changes to the text file
1. Update your grub config by typing `sudo grub-mkconfig -o /boot/grub/grub.cfg`
1. Restart your PC


## "vkAcquireXlibDisplayEXT: VK_ERROR_UNKNOWN (0x000058b7a0764a80)"
Try unplugging and replugging the power adapter. If the issue still occurs and you are on a Wayland session, try setting the environment variable `XRT_COMPOSITOR_FORCE_WAYLAND_DIRECT=1`.

