-
Mateo de Mayo authoredMateo de Mayo authored
title: "Monado - Setup Monado, libsurvive and OpenComposite for the Valve Index"
layout: main
Setup Monado, libsurvive and OpenComposite for the Valve Index
- TOC {:toc}
This guide will walk you through installing the free VR stack on an Arch Linux system.
Important note: The following is a guide on how to bypass steamvr entirely. Make no mistake: this is not a SteamVR plugin, you will be entirely subverting the use of Valve's SteamVR. In any case, it is still possible to go back to SteamVR.
It will focus on using a Valve Index HMD, lighthouses V2 and Valve Index knuckles. It will also assume you have a recent AMD GPU (Polaris and newer) running the latest stable mesa graphics stack.
This stack is composed of:
- monado - OpenXR runtime and hardware drivers
- libsurvive - Open source lighthouse tracking software
- OpenComposite - Converts OpenVR calls to OpenXR
1. Initial setup
You will need to install libsurvive-git
as well as monado-git
(both available in the AUR), in this order. It's important to install libsurvive first since otherwise monado won't recognize it at build time and fail to use it for 6 degree of freedom (6dof) motion tracking.
After installing these packages, it is essential to run the following:
sudo setcap CAP_SYS_NICE=eip /usr/bin/monado-service
Should you be using an AMD GPU, you will also need to set your GPU power state to VR mode for an acceptable experience:
sudo sh -c 'echo "4" > /sys/class/drm/card0/device/pp_power_profile_mode'
2. Calibration
Make sure your lighthouses are powered on and in the "On" state (as opposed to "Sleep").
Make sure your controllers, VR knuckles and VR trackers are powered off as they may disrupt the solve.
Plug in your HMD and place it on the floor at the center of your room, making sure it has an uninterrupted line of sight with the lighthouses.
Run the following:
survive-cli --steamvr-calibration
Wait approximately 20 to 30 seconds, then terminate the command with ^C
.
Because of a bug, you will need to run the above command again, wait again around 20 to 30 seconds, then terminate the command with ^C
.
2.1 Import the SteamVR calibration into libsurvive
If you find that the calibration isn't working well enough for you (tracking is still inconsistent, it jumps a lot), you can try the following:
If you're coming back here after following section 5, make sure to relink your openvrpaths
file back to the SteamVR one, then back to the OpenComposite one once you're done.
The above section 2 method attempts to import your OpenVR/SteamVR calibration into libsurvive's config, bypassing the native lighthouse solving difficulties of libsurvive. Should you still notice tracking is poor it may actually be your OpenVR calibration at fault.
Plug in your HMD (plugging in the DisplayPort cable is optional, we are purely looking to have it attached by USB so it can track on the proprietary drivers) and run steamvr as you are best able (either on Windows or Linux).
Take your HMD while SteamVR is running and while the HMD icon is active green and gently carry it all around the room posing it in many different orientations your head would naturally assume while playing. SteamVR will produce a better quality solve that survive will naturally be able to import from this data.
If you primarily use Windows for your playspace it would be a good idea to simply import the lighthousedb.json
file directly from your Windows install drive/partition, as it will feature the strongest solve and highest runtime usage.
Delete the existing libsurvive calibration:
rm ~/.config/libsurvive/config.json
Place again your headset in the middle of the room, on the floor, in direct line of sight with the lighthouses.
Run the calibration like this twice, waiting 20-30 seconds before stopping each run:
survive-cli --steamvr-calibration ~/.steam/steam/config/lighthouse/lighthousedb.json
3. Configure the OpenXR runtime
Edit this file: ~/.config/openxr/1/active_runtime.json
, changing its contents to the following:
{
"file_format_version": "1.0.0",
"runtime": {
"library_path": "../../../../../usr/lib64/libopenxr_monado.so"
}
}
Please note that library_path
must be a relative path from the ~/.config/openxr/1/
directory to the monado libopenxr file.
If you installed monado through the AUR, or via another system wide package, then the above should be set automatically at a system level in the file /usr/share/openxr/1/openxr_monado.json
, if not please adjust it accordingly in the home folder.