Skip to main content

Monado & Envision VR Setup (Nobara / Fedora)

This guide covers setting up a custom, open-source Linux VR stack bypassing SteamVR, specifically tailored for the Bigscreen Beyond 2e and Valve Knuckles controllers.

1. Core Installation

Envision is the GUI orchestrator, but Monado must be installed natively on the system first.

Prefer a launcher over Envision?

This guide uses Envision because it's the established tool. If you'd rather not deal with Envision's GTK UI and .desktop-file plugin system, I built Monadeck — a SteamVR-style launcher that installs the Monado fork and Xrizer for you (no building), manages the runtime, and adds an in-headset dashboard. It's the path I use day-to-day. You can follow this Envision guide, use Monadeck, or mix the two — both drive the same underlying Monado.

Install Monado (via COPR for Fedora/Nobara):

sudo dnf copr enable joviatrix/monado-git
sudo dnf install monado

Install Envision:

  1. Download the latest Envision AppImage from their GitLab.
  2. Make it executable if not already (Right Click -> Properties -> Allow Executing).
  3. Launch it.

Install Proton GE-RTSP:

VRChat needs a specialized Proton build for in-game video players to work. See Proton GE vs GE-RTSP for details and installation steps.

2. Hardware Permissions & Calibration

By default, Linux won't let standard users access VR USB devices.

  1. Install udev rules:
sudo dnf install xr-hardware
sudo udevadm control --reload-rules && sudo udevadm trigger
  1. Place the headset on the floor, facing "forward", and ensure controllers are OFF.
  2. Click Calibrate in Envision (SteamVR Quick Calibration).

3. Installing Xrizer (OpenVR to OpenXR Translation)

Games like VRChat stubbornly rely on OpenVR. Xrizer translates this to OpenXR so Monado can read it.

wget https://nightly.link/Supreeeme/xrizer/workflows/ci/main/xrizer-nightly-release.zip -O /tmp/xrizer.zip
unzip /tmp/xrizer.zip -d ~/.local/share

(This extracts to /home/USERNAME/.local/share/xrizer)

4. VRChat Specific Configuration

VRChat requires strict settings to work through this custom stack without crashing.

Prerequisites:

  • SteamVR must be installed in Steam, but never running.
  • Proton EasyAntiCheat Runtime must be installed in Steam Tools (normally automatically handled by Steam).
  • Force VRChat Compatibility to Proton GE or Proton GE-RTSP.

Steam Launch Options: Paste the following into VRChat's Launch Options (replace USERNAME with your actual Linux username). This string also disables Monado's strict 45 FPS lock (U_PACING variables) and prevents video player freezes (avpro flag):

U_PACING_APP_USE_MIN_FRAME_PERIOD=1 U_PACING_APP_IMMEDIATE_WAIT_FRAME_RETURN=1 VR_OVERRIDE=/home/USERNAME/.local/share/xrizer PRESSURE_VESSEL_IMPORT_OPENXR_1_RUNTIMES=1 %command% --enable-avpro-in-proton

5. Custom Controller Bindings (No SteamVR UI)

Without SteamVR, bindings must be edited manually via JSON files. Here is an example of how to edit for knuckle controllers:

  1. Create a folder named xrizer in your root VRChat game directory.
  2. Copy bindings-knuckles.json from VRChat_Data/StreamingAssets/SteamVR/ into this new folder, renaming it to knuckles.json.
  3. Edit the "output" fields to change controls.
  • Example: Changing /user/hand/right/input/a from "/actions/global/in/jump" to "" unbinds it. Changing a joystick click to "/actions/global/in/mic" maps it to mute.

6. Known Limitations

No device hotswap (official Monado): Monado does not currently support hotswapping controllers or trackers. All devices (controllers, trackers, etc.) must be powered on before starting Monado. If you start in half-body and want to switch to full-body tracking mid-session, you will need to fully restart Monado and VRChat — the reload button in Envision will crash VRChat.

I maintain a custom fork of Monado that fixes this and more:

  • Device hotplug — connect or disconnect controllers and trackers on the fly without restarting Monado or VRChat. Start in half-body, power on your trackers, and switch to full-body mid-session.
  • Controller freeze — hold a chosen app's hands at their last pose (e.g. a VRChat cuddle) while every other overlay keeps tracking your real hands. Driven from Monadeck's Monado page.
  • In-headset screenshots — capture what you see straight from Monado: open the built-in menu and trigger-click to take a shot. This is baked into the compositor itself (no external overlay needed).
  • UdCap glove driver built in, plus the steamvr_lh driver for the Bigscreen Beyond.

You don't need to compile it. The fork ships a portable prebuilt release on GitHub (monado-fork-<tag>-linux-x86_64.tar.gz) that runs on any modern distro — just point your launcher at it. Monadeck can download and set it up for you automatically.

7. Troubleshooting

Error: "Unable to find HMD" / Monado Exits with Code 11

  • Fix 1: Unplug the headset's USB, wait 5 seconds, and plug it back in.
  • Fix 2: A rogue SteamVR process hijacked the headset. Run killall -9 vrserver vrmonitor in the terminal to kill it.
  • Fix 3 (Bigscreen Beyond): The Beyond isn't a Vive/Index, so Monado's open-source vive/lighthouse driver can't drive it and you'll see Unable to find HMD / XRT_ERROR_DEVICE_CREATION_FAILED. It needs the SteamVR lighthouse driver instead, enabled with STEAMVR_LH_ENABLE=true (do not set LH_DRIVER=steamvr — newer Monado errors on it). Envision and Monadeck set this for you when you pick the SteamVR/lighthouse driver; it only bites if you launch monado-service by hand.