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.

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

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.