Skip to content

Isaac Sim 6.1 XR Teleop Bridge returns zero stage-space and procedure-address handles; Teleop Connect fails after XR starts #1151

Description

@Snekkie

Summary

I am using a Meta Quest 3S with CloudXR and Isaac Teleop for stereo VR teleoperation in Isaac Sim 6.1. The headset renders the Isaac Sim scene and tracks head movement, but connecting Teleop after XR starts fails with “OpenXR unavailable.”

The isaacsim.kit.xr.teleop.bridge extension is installed and enabled. Its instance and session handle getters return nonzero values, while its stage-space and procedure-address getters return 0.

Environment

  • OS: Ubuntu 24.04
  • GPU: NVIDIA GeForce RTX 4070 Laptop GPU
  • Isaac Sim: 6.1.0, ZIP installation
  • Launch script: ./isaac-sim.xr.vr.sh
  • Isaac Teleop: 1.3.131
  • CloudXR Runtime: 6.2.0
  • isaacsim.kit.xr.teleop.bridge: 1.1.4
  • omni.kit.xr.system.openxr: 109.1.0
  • Headset: Meta Quest 3S, connected through the Isaac Teleop CloudXR web client

Steps to reproduce

  1. Start the CloudXR runtime in a separate terminal with python -m isaacteleop.cloudxr --accept-eula.
  2. Pair the Quest headset with the CloudXR web client.
  3. Launch Isaac Sim using ./isaac-sim.xr.vr.sh with the CloudXR environment sourced.
  4. Start XR and confirm that the simulated scene renders in the headset and follows head movement.
  5. Open Tools → Replicator → Teleop and click Connect.

Actual result

Teleop reports:

[Teleop][Session] Command connect: Error: OpenXR unavailable
[Teleop][Session] Failed to open live input: Kit XR is active, but its OpenXR instance, session, stage-space, or procedure-address handle is not ready. Wait for the headset session to start, then reconnect Teleop.

While XR is rendering in the headset, I ran the following in Isaac Sim’s Script Editor:

import isaacsim.kit.xr.teleop.bridge as bridge

for name in ("get_instance_handle", "get_session_handle",
             "get_stage_space_handle", "get_instance_proc_addr"):
    fn = getattr(bridge, name, None)
    print(name, "function exists:", callable(fn),
          "value:", fn() if callable(fn) else "N/A")

The result was:

get_instance_handle function exists: True value: [nonzero]
get_session_handle function exists: True value: [nonzero]
get_stage_space_handle function exists: True value: 0
get_instance_proc_addr function exists: True value: 0

The corresponding native Kit check reported get_stage_space_handle as ready, while the Bridge returned zero.

If I reverse the order and connect Teleop before starting XR, its head and controller frame markers move and the VR view works. However, the visible controller frames are displaced from the physical controllers, with a common position and rotation offset across the head and both controllers. Recenter does not correct it. I do not know whether this alignment symptom has the same cause as the missing Bridge handles.

Expected result

With XR active and rendering, Teleop should connect to Kit XR’s OpenXR session. Its head and controller frames should use the same tracking origin as the stereo headset view.

Additional checks

  • Confirmed that isaacsim.kit.xr.teleop.bridge is enabled and starts in the Kit log.
  • Reproduced after a full restart.
  • XR renders and responds to headset movement before the failed Teleop connection.
  • The Kit log records the Bridge startup and its OpenXR helper polyfill, with no obvious Bridge error nearby.

Could you advise why get_stage_space_handle() and get_instance_proc_addr() return zero while Kit XR has an active headset session, and whether there is a compatible Bridge update or configuration for Isaac Sim 6.1.0?

kit_20260928_142137.log

Activity

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

    No labels
    No labels

    Type

    No type

    Projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions