MRUK queryCompleteEvent error -2 on Horizon OS v203
Title: MRUK queryCompleteEvent error -2 on Horizon OS v203 — permission
verifiably granted, SDK version gap suspected
Hardware/software:
- Quest 3, Horizon OS v203 (PTC, displayed as "v2.3")
- Spatial Persistence Service: Version 84, Build Apr 19 2026
- Meta Quest Link PC app: v201 (MQDH reports persistent version
mismatch)
- Unity 6000.3.14f1
- Meta XR SDKs tried: v201.0.0 (Asset Store latest) and v85.0.0
(resolves to OVRPlugin 1.117 / SDK 1.1.53)
- OpenXR Plugin 1.17.0, Meta Quest Support enabled (Android tab)
- Settings → Apps → Spatial data: ON
- Settings → Developer → Spatial Data over Meta Horizon Link: ON
Symptom:
Every MRUK scene query in a standalone APK build returns:
E/Unity: MRUK Shared: queryCompleteEvent->result returned error
code: -2
E/OVRPlugin: [XREVENT][XR_ERROR_RUNTIME_FAILURE]
XR_TYPE_EVENT_DATA_SPACE_DISCOVERY_COMPLETE_META
Save operations also fail with XR_ERROR_RUNTIME_FAILURE on
XR_TYPE_EVENT_DATA_SPACE_SAVE_COMPLETE_FB.
Meanwhile, Guardian's own concurrent spatial query
(com.oculus.guardian) on the same device at the same time succeeds
and returns 27 scene anchors including a room mesh. So the scene data
exists and is loadable by system-level queries, just not by
dev.hololabs.mrwow's MRUK query path.
Permission verification (per developers.meta.com Spatial Data
Permission doc):
Implemented Option 1 (explicit Unity Android Permission API) with
MRUK Load Scene On Startup disabled and OVRManager Scene checkbox
unchecked, so no request races. Logcat confirms full grant pipeline:
I/GrantPermissionsActivity: onCreate:
requestedPermissionsArray=[com.oculus.permission.USE_SCENE]
mTargetPackage=dev.hololabs.mrwow
V/GrantPermissionsViewModel: Permission grant result
permission=com.oculus.permission.USE_SCENE result=4
V/GrantPermissionsViewModel: Permission grant result
permission=horizonos.permission.USE_SCENE isImplicit=true result=4
I/Unity: [MRUKDebug] PermissionGranted:
com.oculus.permission.USE_SCENE
Permission.HasUserAuthorizedPermission("com.oculus.permission.USE_SCENE")
returns true after the grant. The documented failure modes for missing
permission are "0 anchors, no error" or LoadDeviceResult.NoScenePermission.
Neither matches what I'm seeing.
Diagnostic observations pointing at SDK/firmware version gap:
- OVRPlugin v201 startup log shows ~32 OpenXR extensions requested by
the SDK but reported "unavailable" by the v203 runtime, including
XR_FB_render_model, XR_FB_spatial_entity_sharing,
XR_META_environment_depth, XR_META_colocation_discovery.
- OVRPlugin v117 (downgrade) fails differently: ~20 "MRUK Shared:
Unable to bind OpenXR function" warnings at startup, then the same
-2 error. v117 expects extensions that have been renamed or removed
in v203.
- The RipcClient log reports the Spatial Persistence Service running
on the headset is Version 84, Build Apr 19 2026. This appears to
significantly predate the v201 SDK package release.
This suggests v203 Horizon OS firmware is in a compatibility gap
between currently-released Meta XR SDK packages. v201 SDK expects
v204+ runtime extensions; v85/v117 SDK expects an older extension
set that v203 has moved past.
Questions:
1. Is there a Meta XR SDK release matched to Horizon OS v203 that
isn't on the Asset Store yet?
2. Is there a documented way to roll a Quest 3 back from v203 PTC to
v201 stable for development?
3. Should the v201 SDK release on the Asset Store be considered
pre-release / not-yet-compatible with currently-deployed firmware?
Happy to provide full logcat, AndroidManifest, Packages/manifest.json,
or any other diagnostic info.
cheers!
