Meta XR Simulator v205 viewport stops updating when the Meta XR Operator API Layer is enabled
Context
We updated Meta XR Core SDK and Meta XR Simulator to v205 to set up and use Meta XR Operator, following the workflows described in Meta’s blog post:
Meta XR Operator: Close the Build-Test-Verify Loop for VR
These workflows rely on querying the head pose and capturing the Simulator’s composited image for visual verification.
However, the behavior changes depending on whether the Meta XR Operator API Layer is enabled. We have not found a configuration in which the Operator server is connected and the Simulator viewport continues updating normally at the same time.
Environment
- Meta XR Simulator: 205.0
- File version: 205.0.0.42.1262
- Unity Editor: 6000.3.10f1
- Meta XR Core / All-in-One SDK (com.meta.xr.sdk.all): 205.0.0
- Unity OpenXR Plugin (com.unity.xr.openxr): 1.17.1
- OS: Windows 11 Pro, build 10.0.26200
- GPU: NVIDIA GeForce RTX 5070
- GPU driver: 32.0.15.8157
- No legacy com.meta.xr.simulator Unity package is installed.
- Only the Standalone Meta XR Simulator is present.
Observed behavior
Meta XR Operator API Layer enabled
When XR_APILAYER_METAX_operator is enabled:
- The Meta XR Operator server can connect.
- An OpenXR session can be established.
- openxr_get_head_pose can return valid tracked position and orientation data.
- However, the Meta XR Simulator viewport does not continue updating.
- The viewport remains blank, white, or frozen on the first or a previously rendered frame.
- Therefore, openxr_capture_composited_image cannot be used reliably for visual verification.
Meta XR Operator API Layer disabled
When XR_APILAYER_METAX_operator is disabled:
- Meta XR Simulator connects successfully.
- The Simulator viewport updates normally.
- However, the Meta XR Operator server is unavailable.
- As a result, Operator tools such as openxr_get_head_pose and openxr_capture_composited_image cannot be used.
Therefore, we have not been able to achieve all of the following at the same time:
- A connected Meta XR Operator server
- A stable OpenXR session
- A continuously updating Simulator viewport
- Reliable use of openxr_get_head_pose
- Reliable use of openxr_capture_composited_image
Disconnect loop
During some tests with the Operator API Layer enabled, the session also entered a disconnect loop shortly after entering Unity Play Mode.
In one case, the following occurred approximately 2.7 seconds after entering Play Mode:
Frontend pushes EXIT_INSTANCE EXIT_SESSION
The Simulator then reported:
Frontend is disconnected. XrSession synchronization ... cancelled. Runtime will continue.
The following message was subsequently logged approximately every two seconds, sometimes for tens of seconds:
[sim_compositor_readback_service.cpp:87] Met Expectation: sessionData == nullptr
Another EXIT_INSTANCE / EXIT_SESSION sequence sometimes occurred approximately 30 seconds later.
The native Simulator log also showed impl_xrDestroyInstance() immediately before the repeated sessionData == nullptr messages:
[sim_xrapilayer_core.cpp:157] === BEGIN: XrApiLayerCore::impl_xrDestroyInstance() === [sim_xrapilayer_core.cpp:161] === END: XrApiLayerCore::impl_xrDestroyInstance() === ... [sim_compositor_readback_service.cpp:87] Met Expectation: sessionData == nullptr
The issue is intermittent and not 100% reproducible. Restarting Play Mode, Unity, or Meta XR Simulator does not consistently resolve it.
Configuration checked
- Meta XR Simulator and Meta XR SDK are both version 205.
- No legacy com.meta.xr.simulator Unity package is installed.
- The XR_APILAYER_METAX_operator API Layer loads successfully when enabled.
- HKLM\SOFTWARE\Khronos\OpenXR\1\ActiveRuntime points to the Standalone Simulator’s v205.0\meta_openxr_simulator.json.
Question
Has anyone encountered this behavior with Meta XR Simulator v205, Meta XR Operator, and Unity?
Is there a known solution or required configuration that allows XR_APILAYER_METAX_operator to remain enabled while the Meta XR Simulator viewport continues updating normally?
We would like to use openxr_get_head_pose and openxr_capture_composited_image together in the same Play Mode session, as described in the Meta XR Operator workflows.
