Thank you for helping. RiftLinux is a driver for one headset, the Oculus Rift CV1, its sensors and its Touch controllers, so most help comes as bug reports from people with the hardware, and as changes tested on it. This document says what a useful report contains and what a change needs before it is merged.
- Something does not work? Open a bug report: see Reporting a problem.
- An idea? Open a feature request before writing code: see Proposing a feature.
- A security problem? Do not open a public issue: see SECURITY.md.
- A change ready? See Sending a change.
Everyone in the project's spaces follows the Code of Conduct.
A report we can act on has these parts:
- What you did, step by step: which game or app, what you did in it, when the problem appeared.
- What you expected, and what happened instead, with any message the headset, SteamVR or the desktop showed.
- Your setup:
- the RiftLinux version (
cat /usr/lib/riftlinux/steamvr/rift-cv1/VERSION); - the distribution, the desktop and its session (for example Ubuntu 25.04, GNOME, Wayland);
- the graphics card and driver version (for example NVIDIA RTX 3080, driver 615.78);
- the SteamVR version, and how many sensors, on which USB ports (USB 2 or 3).
- the RiftLinux version (
- The output of
riftlinux-setup --json check: it shows the state of everything the driver depends on. - SteamVR's logs from the session with the problem:
~/.local/share/Steam/logs/vrserver.txt(the driver's lines start withdriver_monado) and, for picture problems,vrcompositor.txt. Attach them or paste the part around the problem. - What you already tried (optional, but it saves a round trip).
The logs contain the serial numbers of your headset and sensors and your user name in file paths. That is fine to share; remove anything you prefer to keep private.
For tracking problems (jitter, jumps, a lost controller), say where the sensors stand (height, distance, angle) and
whether it is day or night in the room, and attach a recording of a session that shows it: run
riftlinux-setup record on, start SteamVR and do what shows the problem, then attach the newest
~/.cache/riftlinux/riftlinux-*.ctdata and ~/.steam/steam/logs/vrstartup-linux.txt (the tracker's details).
Recording changes nothing you see; turn it off afterwards with riftlinux-setup record off. Recordings are large:
if the issue does not take the file, say so and the maintainer asks for another way.
Open a feature request first and describe what you want and why. RiftLinux has a few fixed rules (below); a short discussion before the code saves work on both sides.
- Fork the repository, make a branch from
main, and open a pull request againstmain. - One change per pull request. For a large change, open a draft pull request early.
- Fill in the pull request template; its checklist is checked automatically.
Every commit carries a Signed-off-by: line with your name and e-mail (git commit -s). With it you certify the
Developer Certificate of Origin 1.1: that you wrote the change or have the right
to submit it under the project's licence. Only a person can certify it; if a change has several authors, each of
them signs off, and one sign-off matches the commit's author. A check on every pull request lists commits without
it. To add it to commits you already made:
git rebase --exec 'git commit --amend --no-edit -s' origin/main
git push --force-with-lease- One summary line, the area first, as in the existing history:
d/rift:(the Rift driver),t/constellation:(tracking),st/ovrd:(the SteamVR driver),a/render:(the compositor's shaders and passes),c/main:(the compositor),scripts/riftlinux:(tools and packaging),README:. - Then a body that explains why: what was wrong, how you found it, how you checked the fix.
- Plain words; a reader of the history should understand the change without anything else.
- Style: Monado's
.clang-formatfor C and C++ (scripts/format-project.sh); the surrounding code's style elsewhere. No formatting changes to code you did not otherwise change. - Comments say why, in plain words, and stand on their own.
- Every new or changed file has SPDX headers (
SPDX-FileCopyrightText: <year> <your name> <e-mail>andSPDX-License-Identifier: BSL-1.0for code).reuse lintmust pass. - The build has no new warnings.
Say in the pull request how you tested, on which hardware.
- Every change: the SteamVR driver builds (
scripts/riftlinux/steamrt-build.sh <out dir>) and SteamVR starts with it; SteamVR's log shows no new errors. - Tracking: replays of recorded sessions (
monado-constellation-replay) show the same accepted solves as before where the change is not meant to alter them, and the change's effect where it is. Tracking changes are not merged without replay results. - Picture: the panel's output before and after (
display.capture_outputin the settings file), on the same scene, the view's edges included. - Install and first run: a fresh user (no settings, no SteamVR configuration) still gets a picture and tracking from the package alone.
- Other headsets. RiftLinux supports the Rift CV1 only; for other headsets use upstream Monado or their own drivers.
- A required setup step. Installing the package must be enough: no command the user has to run, no Room Setup.
- Telemetry, phone-home or anything that sends data without the user asking for it.
- Tracking changes without replay evidence, or changes that make tracking worse in any recorded session.
- Mass reformatting, or unrelated changes in one pull request.
RiftLinux is under the Boost Software License 1.0 (BSL-1.0), as Monado, which it is built on. Contributions are accepted under the same licence; the sign-off certifies that you may contribute them.
RiftLinux follows its own rules, in this file. A fix to Monado's general code (not specific to the CV1) can also be offered to Monado at https://gitlab.freedesktop.org/monado/monado, under Monado's own rules.