2026-03-24 13:30:20 -04:00
2021-04-13 11:46:53 -05:00
2026-02-17 09:58:41 +00:00
2026-02-17 13:09:42 -06:00
2025-10-23 12:05:18 +01:00
2026-09-12 09:45:38 +10:00
2025-01-24 10:12:01 +00:00
2025-01-24 10:12:01 +00:00
2019-09-18 09:30:16 +01:00
2025-12-09 15:57:50 -06:00

Rift S on Linux

Oculus Rift S support for Monado and SteamVR on Linux. It has inside-out head tracking with Basalt SLAM, Touch controller tracking from the controller LEDs, and room setup with a play-area boundary.

This is a fork of thaytan's Monado Rift S branch, dev-constellation-controller-tracking. The original Monado readme is in README-monado.md.

Status

Rift S head and Touch controller tracking run inside the SteamVR driver. Saved-room recovery and controller behavior still need physical validation on each release.

Known rough edges:

  • Controller behavior when the controllers leave the camera view is still rough.
  • The boundary does not persist reliably across restarts.

Build and install

Head tracking needs Basalt. Clone Basalt, apply the patches in patches/basalt/ in order, then build and install it by its own readme using the same installation prefix as Monado. The driver finds libbasalt.so in that prefix's library directory automatically. System library installations also work. VIT_SYSTEM_LIBRARY_PATH is an optional override for development builds.

git clone https://gitlab.freedesktop.org/mateosss/basalt.git
cd basalt
git submodule update --init --recursive
for p in /path/to/this/repo/patches/basalt/*.patch; do patch -p1 < "$p"; done

The patches were made against Basalt main at df6e970.

Then build Monado. OpenCV, Vulkan and Eigen are required on top of Monado's usual dependencies.

cmake -B build -G Ninja -DCMAKE_BUILD_TYPE=RelWithDebInfo \
  -DXRT_BUILD_DRIVER_RIFT_S=ON -DXRT_FEATURE_SLAM=ON -DXRT_FEATURE_STEAMVR_PLUGIN=ON
ninja -C build
sudo ninja -C build install

The install puts the SteamVR driver in /usr/local/share/steamvr-monado. It installs a user session service that registers the driver with SteamVR's vrpathreg. Registration also works when SteamVR is installed later and when its library is on another drive. Other registered drivers and Steam settings are preserved. The installer applies cap_sys_nice to monado-service for standalone Monado use.

Install SteamVR from the Steam library, connect the Rift S, open Steam normally, and launch SteamVR. The SteamVR driver uses Monado in-process; a separate running monado-service is unnecessary. Driver and native Room Setup support are enabled by default. The driver's camera integration configures native Room View.

On Arch, the package uses /usr/share/steamvr-monado and starts the same registration service for active user sessions. The local packaging recipe is a release draft; it must point to published source before an AUR submission.

Unit tests build with the default BUILD_TESTING=ON and run with ctest --test-dir build.

Settings app

settings-app/ is a small desktop app (Tauri + React) for the headset. It shows tracking state for the headset and controllers, the room boundary, and lets you set software IPD, recenter, start room setup, export logs and restart SteamVR. It talks to SteamVR through OpenVR, so SteamVR has to be running.

cd settings-app
pnpm install
pnpm tauri build

License

Boost Software License 1.0, the same as Monado. See LICENSE. Third-party files keep their own licenses in LICENSES/.

Contact lbgos at contact@lbgos.dev.

r30
Latest
2026-10-17 15:00:55 +02:00
Languages
C 64.9%
C++ 27.7%
CMake 2.7%
Python 1.9%
Rust 0.6%
Other 1.9%