UE 5.7 OpenXR "XR_ERROR_RUNTIME_FAILURE" in Headless Linux (Kubuntu 24.04) with SteamVR Null Driver

I am setting up a headless tracking server on Kubuntu 24.04 using SteamVR and Vive Trackers for a Virtual Production camera volume.

Question:

Is there a way to force UE 5.7 to initialize a Headless OpenXR Session (using the XR_MND_headless extension or similar) so I can access tracker poses without a physical HMD or GPU-attached display?**

The Setup:**

  • OS: Kubuntu 24.04 (Noble)

  • Engine: Unreal Engine 5.7.4 (built from source)

  • Runtime: SteamVR (Linux) with driver_null enabled in steamvr.vrsettings.

  • Hardware: Valve Index Base Stations + Vive Trackers.

What works:

The SteamVR backend is healthy. I can confirm the lighthouse driver is active and providing pose data via vrcmd:

Bash

export LD_LIBRARY_PATH=.../SteamVR/bin/linux64
./vrcmd --pollposes
# Result: Valid changing coordinates for Device 1, 2, 3.

The Problem:

When launching Unreal Engine to ingest this data via Live Link XR, the OpenXR handshake fails. Even using -xrtrackingonly, the engine attempts to create a graphics session that fails in a headless environment.

Launch Command:

Bash

export XR_RUNTIME_JSON=/home/me/.steam/debian-installation/steamapps/common/SteamVR/steamxr_linux64.json
./UnrealEditor [Project] -xrtrackingonly -RenderOffscreen -nullrhi -Unattended

The Error:

The engine logs an ensure failure at OpenXRHMD.cpp and crashes:

XR call xrCreateSession(Instance, &SessionInfo, &Session) failed with result: XR_ERROR_RUNTIME_FAILURE

Troubleshooting already performed:

  1. Confirmed ~/.config/openxr/1/active_runtime.json points to SteamVR.

  2. Verified driver_null has a virtual resolution set ($1920 \times 1080$) in steamvr.vrsettings.

  3. Tried xvfb-run to provide a dummy X-display.

  4. Verified Vulkan is functional, but xrCreateSession seems to insist on a graphics binding that SteamVR’s Linux null driver isn’t providing to the OpenXR loader.

This is unlikely to be fixable from the UE side. If the runtime is failing to initialize the session, there is not much you can do.

This really sounds like a SteamVR bug. You should probably report it to Valve. They’re working actively on fixing Linux bugs on SteamVR at the moment, so now might be the optimal time to do it.

If it’s an issue with graphics bindings, writing a custom SteamVR driver might also be an option for a workaround.