Monado 21.0.0/master comes with a SteamVR plugin.

It enables the use of Monado’s VR hardware drivers with Valve’s SteamVR runtime.

It does not make it possible to run OpenVR games and applications on Monado/OpenXR runtimes. See OpenComposite for an in-development project focusing on this use case.

Current status

Registering the plugin

The SteamVR plugin is built by default and is installed in $PREFIX/share/steamvr-monado. SteamVR will use the plugin only after it is registered with SteamVR’s vrpathreg tool.

If Monado was installed in the /usr prefix, the command is

~/.steam/steam/steamapps/common/SteamVR/bin/ adddriver /usr/share/steamvr-monado

The SteamVR plugin will also be placed in the Monado build tree where it can be registered with SteamVR without installing Monado.

~/.steam/steam/steamapps/common/SteamVR/bin/ adddriver ~/monado/build/steamvr-monado

Depending on the distribution or Steam installation method, Steam may be installed in ~/.local/share/Steam rather than ~/.steam/steam.

~/.local/share/Steam/steamapps/common/SteamVR/bin/ adddriver /usr/share/steamvr-monado

Running vrpathreg without arguments lists currently registered plugins listed in “External Drivers”.


External Drivers:

Plugins can be unregistered from Steam by using removedriver.

~/.steam/steam/steamapps/common/SteamVR/bin/ removedriver /usr/share/steamvr-monado

After starting SteamVR, debug output for the plugin can be found in ~/.steam/steam/logs/vrserver.txt. It will be prefixed with monado:.

Input Profiles

Since v21.0.0 Monado automatically generates input profiles for SteamVR.

The source database for this generator is bindings.json and the generated profiles are placed in build/steamvr-monado/resources/input. Note that not all of the generated input profiles actually have an associated driver in Monado just yet.

Even though no default bindings are generated at this time quite a lot of the SteamVR functionality works out of the box. Unfortunately not everything works well, especially games using the legacy Steam input APIs.

There are various tutorials how to create legacy bindings for games arund, for example here. Some games or applications also require the Pretend to be this type of controller option set to Vive Controller.

As an alternative, Monado-SteamVR offers an option to use SteamVR’s own Index Controller input profile and emulate an Index controller with any of Monado’s controllers. Note that with this profile games may expect inputs that are not possible to produce on other controllers.

To enable Index Controller emulation, use STEAMVR_EMULATE_INDEX_CONTROLLER=1. SteamVR can be started from a command line:

STEAMVR_EMULATE_INDEX_CONTROLLER=1 ~/.steam/steam/steamapps/common/SteamVR/bin/

Or in the Steam Library in the SteamVR properties the variable can be added to the startup options: