Summary
After updating to SteamVR 2.14.x, Vive Tracker poses are no longer available via OpenXR
when SteamVR is in "Standing by" (no HMD worn) state.
This breaks the workflow described in this repository, which relies on
SteamVR + OpenXR providing tracker poses without an active HMD.
The same setup worked correctly in SteamVR 2.13.x and earlier.
Environment
- OS: Windows 10 / 11
- SteamVR:
- Working: 2.13.x
- Broken: 2.14.0+ (confirmed in 2.14.4)
- Runtime: SteamVR OpenXR
- Devices:
- Vive Tracker (Ultimate / 3.0)
- API:
- OpenXR
XR_HTCX_vive_tracker_interaction
- (optionally
XR_MND_headless)
- HMD state:
- Not worn / SteamVR shows "Standing by"
Expected behavior (SteamVR ≤ 2.13)
- SteamVR shows Standing by
- Vive Trackers are connected and have assigned roles
- OpenXR app can successfully call:
xrSyncActions
xrLocateSpace
XrSpaceLocation.locationFlags contains:
XR_SPACE_LOCATION_POSITION_VALID_BIT
- Tracker poses are available even without wearing the HMD
Actual behavior (SteamVR ≥ 2.14)
- SteamVR shows Standing by
- Vive Trackers are connected and roles are assigned correctly
xrLocateSpace succeeds but always returns invalid location flags
XR_SPACE_LOCATION_POSITION_VALID_BIT is never set
- No tracker poses are available until the HMD is worn and VR becomes active
This occurs even when:
- Using
XR_MND_headless
- Using
time = predictedDisplayTime or time = 0
- All OpenXR API calls succeed without errors
Notes
- This appears to be a runtime policy change, not an application error
- SteamVR UI still shows trackers as active, which is misleading
- The same code and hardware setup works immediately after downgrading to SteamVR 2.13.x
- OpenVR-based applications still receive tracker poses without an HMD
Impact
This breaks:
- Tracker-only workflows
- Motion capture setups
- Robotics / teleoperation systems
- Research systems that do not require an HMD
All of these previously worked with SteamVR + OpenXR without requiring the headset to be worn.
Question
Is this behavior change intentional in SteamVR 2.14+?
If so:
- Is there a supported way to obtain Vive Tracker poses via OpenXR
without requiring an active HMD?
- Or is OpenVR now the only supported path for tracker-only use cases?
Clarification would be greatly appreciated.
Summary
After updating to SteamVR 2.14.x, Vive Tracker poses are no longer available via OpenXR
when SteamVR is in "Standing by" (no HMD worn) state.
This breaks the workflow described in this repository, which relies on
SteamVR + OpenXR providing tracker poses without an active HMD.
The same setup worked correctly in SteamVR 2.13.x and earlier.
Environment
XR_HTCX_vive_tracker_interactionXR_MND_headless)Expected behavior (SteamVR ≤ 2.13)
xrSyncActionsxrLocateSpaceXrSpaceLocation.locationFlagscontains:XR_SPACE_LOCATION_POSITION_VALID_BITActual behavior (SteamVR ≥ 2.14)
xrLocateSpacesucceeds but always returns invalid location flagsXR_SPACE_LOCATION_POSITION_VALID_BITis never setThis occurs even when:
XR_MND_headlesstime = predictedDisplayTimeortime = 0Notes
Impact
This breaks:
All of these previously worked with SteamVR + OpenXR without requiring the headset to be worn.
Question
Is this behavior change intentional in SteamVR 2.14+?
If so:
without requiring an active HMD?
Clarification would be greatly appreciated.