Skip to content

[Bug]: SteamVR Home and games don't load after Steam client update: ~/.steam/bin/steam-runtime/run.sh missing (check reports OK) #7

Open

Description

@tynew999

Before you file

  • I searched the existing issues and the README's Known issues, and this is not among them.
  • I am on the latest release and can still reproduce it.
  • I quit SteamVR, started it again, and the problem is still there.

RiftLinux version

0.1.3

How did you install it?

.deb package (Debian, Ubuntu and others)

Distribution, desktop and session

Linux Mint 22.3 (Ubuntu 24.04 base), Cinnamon, X11, kernel 7.0.0-31-generic

Graphics card and driver version

AMD Radeon RX 9070 XT, Mesa 25.2.8 (radv)

SteamVR version, sensors and their USB ports

SteamVR 2.18.4 (stable, build 25998080), two sensors. Steam client 1794424036 (updated 12 Nov 2026).

Steps to reproduce

  1. Let the Steam client update to the build with the new steamrt32/steamrt64 layout (12 Nov 2026 here).
  2. Start SteamVR with the Rift CV1 (direct mode on).
  3. Wait for SteamVR Home, or start a VR game.

What you expected

SteamVR Home loads, and VR games start.

What happened instead

The headset works (direct mode, steady 90 Hz, tracking fine), but SteamVR Home never appears and VR games don't load.

Cause: the Steam client's steam.sh now sets ~/.steam/bin -> ~/.steam/bin32 -> debian-installation/steamrt32. That folder has no steam-runtime/ subfolder. SteamVR Home's launcher, SteamVR/tools/steamvr_environments/game/steamtours.sh, runs $HOME/.steam/bin/steam-runtime/run.sh on line 32, gets "No such file or directory", and exits immediately. vrserver then relaunches Home about every 200 ms (over 1,000 attempts in a few minutes). As far as I can tell, this loop also keeps games from taking the scene-app slot.

This is not a RiftLinux bug as such. It comes from the Steam client's new layout combined with SteamVR's launcher script. I'm reporting it because riftlinux-setup check reports everything OK while it happens, and riftlinux-setup repair could detect and fix it.

Workaround that fixed it (Home loads, games start):

ln -s ../steamapps/common/LegacySteamRuntime/steam-runtime \
      ~/.steam/debian-installation/steamrt32/steam-runtime

Pitfall: pointing the link at ubuntu12_32/steam-runtime does NOT work. Its run.sh is a legacy-run-stub.sh that doesn't set STEAM_RUNTIME, so steamtours.sh re-execs itself forever.

Suggestion: have check flag a missing ~/.steam/bin/steam-runtime/run.sh (or a stub without STEAM_RUNTIME), and have repair create the link above. It may also be worth reporting upstream to ValveSoftware/SteamVR-for-Linux.

Output of riftlinux-setup --json check (required)

Taken while the problem was happening. Every check reported ok/info; nothing caught it.

{
  "checks": [
    {
      "id": "arch",
      "title": "Computer",
      "state": "ok",
      "detail": "x86-64",
      "kind": null,
      "root_cmds": [],
      "fixable": false
    },
    {
      "id": "steam",
      "title": "Steam and SteamVR",
      "state": "ok",
      "detail": "SteamVR (build 1792185270) at /home/tyler/.steam/debian-installation/steamapps/common/SteamVR",
      "kind": null,
      "root_cmds": [],
      "fixable": false
    },
    {
      "id": "package",
      "title": "Driver package",
      "state": "ok",
      "detail": "/home/tyler/.local/share/riftlinux/steamvr/rift-cv1",
      "kind": null,
      "root_cmds": [],
      "fixable": false
    },
    {
      "id": "registered",
      "title": "Driver registered with SteamVR",
      "state": "ok",
      "detail": "/home/tyler/.local/share/riftlinux/steamvr/rift-cv1",
      "kind": null,
      "root_cmds": [],
      "fixable": false
    },
    {
      "id": "others",
      "title": "Other headset drivers in SteamVR",
      "state": "ok",
      "detail": "None: SteamVR uses this driver for the headset.",
      "kind": null,
      "root_cmds": [],
      "fixable": false
    },
    {
      "id": "sandboxed",
      "title": "Driver registered with Flatpak or Snap Steam",
      "state": "ok",
      "detail": "no Flatpak or Snap Steam",
      "kind": null,
      "root_cmds": [],
      "fixable": false
    },
    {
      "id": "nvidia-vrr",
      "title": "NVIDIA and adaptive sync (Wayland)",
      "state": "ok",
      "detail": "not an NVIDIA GPU",
      "kind": null,
      "root_cmds": [],
      "fixable": false
    },
    {
      "id": "enabled",
      "title": "Driver enabled in SteamVR",
      "state": "ok",
      "detail": "Enabled, not blocked.",
      "kind": null,
      "root_cmds": [],
      "fixable": false
    },
    {
      "id": "devices",
      "title": "Rift connected",
      "state": "ok",
      "detail": "headset, 2 sensor(s).",
      "kind": null,
      "root_cmds": [],
      "fixable": false
    },
    {
      "id": "lsusb",
      "title": "Steam's headset detection",
      "state": "ok",
      "detail": "lsusb is installed; Steam can tell that the Rift is connected.",
      "kind": null,
      "root_cmds": [],
      "fixable": false
    },
    {
      "id": "access",
      "title": "Device access",
      "state": "ok",
      "detail": "6 USB devices and 3 HID interfaces usable.",
      "kind": null,
      "root_cmds": [],
      "fixable": false
    },
    {
      "id": "usbpower",
      "title": "USB power saving",
      "state": "ok",
      "detail": "Off for the Rift's devices.",
      "kind": null,
      "root_cmds": [],
      "fixable": false
    },
    {
      "id": "holders",
      "title": "Other programs using the Rift",
      "state": "ok",
      "detail": "None (only SteamVR, Steam and RiftLinux use it).",
      "kind": null,
      "root_cmds": [],
      "fixable": false
    },
    {
      "id": "headset",
      "title": "Headset mode",
      "state": "info",
      "detail": "In use by SteamVR or the runtime now (checked when they are closed).",
      "kind": null,
      "root_cmds": [],
      "fixable": false
    },
    {
      "id": "display",
      "title": "Headset display",
      "state": "ok",
      "detail": "On card1-HDMI-A-1 (connected); desktop session: x11.",
      "kind": null,
      "root_cmds": [],
      "fixable": false
    },
    {
      "id": "priority",
      "title": "SteamVR compositor priority",
      "state": "ok",
      "detail": "vrcompositor-launcher has CAP_SYS_NICE.",
      "kind": null,
      "root_cmds": [],
      "fixable": false
    },
    {
      "id": "openvr",
      "title": "OpenVR runtime (what Steam's games load)",
      "state": "ok",
      "detail": "SteamVR.",
      "kind": null,
      "root_cmds": [],
      "fixable": false
    },
    {
      "id": "launch",
      "title": "SteamVR settings games depend on",
      "state": "ok",
      "detail": "SteamVR's defaults (no forced headset, a compositor for games).",
      "kind": null,
      "root_cmds": [],
      "fixable": false
    },
    {
      "id": "steamvr-tool",
      "title": "SteamVR's compatibility tool",
      "state": "ok",
      "detail": "None forced (SteamVR runs as a Linux program).",
      "kind": null,
      "root_cmds": [],
      "fixable": false
    },
    {
      "id": "env",
      "title": "Variables that take games elsewhere",
      "state": "ok",
      "detail": "None set (XR_RUNTIME_JSON, VR_OVERRIDE, VR_CONFIG_PATH, VR_LOG_PATH).",
      "kind": null,
      "root_cmds": [],
      "fixable": false
    },
    {
      "id": "launchopts",
      "title": "Games' launch options",
      "state": "ok",
      "detail": "None point games at another VR runtime.",
      "kind": null,
      "root_cmds": [],
      "fixable": false
    },
    {
      "id": "handles",
      "title": "Leaked GPU handles in the desktop session",
      "state": "ok",
      "detail": "None found (Steam and the desktop shell).",
      "kind": null,
      "root_cmds": [],
      "fixable": false
    },
    {
      "id": "watchdog",
      "title": "SteamVR start watchdog in Steam",
      "state": "info",
      "detail": "Not loaded now (Steam is not running, SteamVR runs, or Steam has not loaded it yet: it does as it starts and after SteamVR quits).",
      "kind": null,
      "root_cmds": [],
      "fixable": false
    },
    {
      "id": "openxr",
      "title": "OpenXR runtime",
      "state": "ok",
      "detail": "SteamVR (OpenXR games go through SteamVR and this driver).",
      "kind": null,
      "root_cmds": [],
      "fixable": false
    },
    {
      "id": "room",
      "title": "Room setup",
      "state": "ok",
      "detail": "None saved: the driver gives SteamVR a standing 2 x 2 m room at each start, so no Room Setup is needed (SteamVR's Room Setup sets your own).",
      "kind": null,
      "root_cmds": [],
      "fixable": false
    },
    {
      "id": "settings",
      "title": "RiftLinux settings",
      "state": "ok",
      "detail": "Direct mode on; SteamVR starts by itself: on, when the Rift is put on or picked up; quits again when it is not put on; Steam's menu over a starting game: closed; SteamVR's standby ends when the headset is worn; controllers sleep: 5 min after the headset is off; headset taken off: black, switched off after 10 min black; moving as on a head counts as worn after 20 s (medium), for a face shield or pad; /home/tyler/.config/riftlinux/settings.json.",
      "kind": null,
      "root_cmds": [],
      "fixable": false
    },
    {
      "id": "realtime",
      "title": "Real-time priority",
      "state": "ok",
      "detail": "RealtimeKit present; Steam (pid 2490) may use it.",
      "kind": null,
      "root_cmds": [],
      "fixable": false
    },
    {
      "id": "calibration",
      "title": "Sensor calibration",
      "state": "ok",
      "detail": "Saved (/home/tyler/.config/monado/constellation/rig.json); a moved sensor is found and placed again.",
      "kind": null,
      "root_cmds": [],
      "fixable": false
    },
    {
      "id": "native",
      "title": "Own runtime (OpenXR without SteamVR)",
      "state": "ok",
      "detail": "/usr/lib/riftlinux/native, every library found; start it with `riftlinux-runtime`",
      "kind": null,
      "root_cmds": [],
      "fixable": false
    }
  ]
}

SteamVR's log (required)

vrserver.txt (repeats ~5x/second):

Thu Nov 12 2026 20:41:25.119249 [Info] - [OnMsg_LaunchApplication( openvr.tool.steamvr_environments )] from 368827: vrstartup
Thu Nov 12 2026 20:41:25.119439 [Info] - Starting process steam-runtime-launch-client --alongside-steam --directory=/home/tyler/.steam/debian-installation/steamapps/common/SteamVR/tools/steamvr_environments/game --pass-env=STEAMVR_APPKEY -- /home/tyler/.steam/debian-installation/steamapps/common/SteamVR/tools/steamvr_environment
Thu Nov 12 2026 20:41:25.123038 [Info] - SetApplicationPid appkey=openvr.tool.steamvr_environments pid=370402, external transition
Thu Nov 12 2026 20:41:25.123077 [Info] - SetApplicationPid: Setting app openvr.tool.steamvr_environments PID to 370402
Thu Nov 12 2026 20:41:25.319796 [Info] - ClearAppTransition: Reason: Abort. Was LaunchingApp_Key for 'openvr.tool.steamvr_environments'
Thu Nov 12 2026 20:41:25.319808 [Info] - Attempting to start home app openvr.tool.steamvr_environments (NoMoreSceneAppTransition)

vrstartup-linux.txt:

[2026-11-12 20:44:31] .../SteamVR/tools/steamvr_environments/game/steamtours.sh: line 32: /home/tyler/.steam/bin/steam-runtime/run.sh: No such file or directory

Symlinks after the Steam client update:

~/.steam/bin   -> /home/tyler/.steam/bin32
~/.steam/bin32 -> /home/tyler/.steam/debian-installation/steamrt32   (no steam-runtime/ inside)

With the stub link (pitfall above), vrstartup-linux.txt loops:

[2026-11-12 20:45:21] steamtours.sh[630046]: Relaunch under scout LDLP runtime.
[2026-11-12 20:45:21] legacy-run-stub.sh: WARNING: Running .../steamtours.sh on the host, not in the legacy runtime
[2026-11-12 20:45:21] legacy-run-stub.sh: Try using steamapps/common/LegacySteamRuntime/{setup,run}.sh instead

What you already tried (optional)

  • Restarted SteamVR and Steam: no change.
  • Added the symlink to the legacy runtime as above: fixed.
  • Extra data point for AMD (the README says AMD is untested): on this RX 9070 XT, SteamVR showed "SteamVR Fail (-203)" (vrcompositor crashed after amdgpu GPUVM page faults) until I ran riftlinux-setup direct-mode on. Since then it runs at a steady 90 Hz. The page faults still turn up now and then (Mesa 25.2.8). Crash IDs: bp-75cd7de0-3819-49a7-931b-c75412261112, bp-ea311a46-ae61-4137-82c0-e937c2261112. I can open a separate issue for this if you prefer.

Activity

  1. added
    bugA reproducible defect
    in-progressA fix or investigation is actively underway.
    steamvrThe SteamVR driver, games under SteamVR
    on Nov 13, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugA reproducible defectin-progressA fix or investigation is actively underway.steamvrThe SteamVR driver, games under SteamVR

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions