Skip to content

VR and headsets

"Enter VR" is disabled / isSupported() returns false

You're not on a secure context. WebXR refuses to start over plain HTTP from a non-localhost origin. This is a browser rule, not a Nori one, and there's no flag to talk it out of it.

Serve the page over HTTPS. The hosted VR page already is; if you're running one locally, you need a certificate — see the HTTPS setup notes.

Other candidates, once HTTPS is confirmed:

  • The headset's browser doesn't support WebXR.
  • No VR-capable device is connected.

The headset connects but there's no video

Check the room name first. A mismatch between what the handoff link carries and what the robot is actually in produces a session that looks connected and carries no media.

Then: Connection troubleshooting — everything there applies equally to VR, because VR is just another SDK client.

The link looks like:

https://<vr-domain>/nori/vr?room=<robot>#token=<token>

The token is in the fragment (#token=…) deliberately, so it never reaches a server log. Two consequences that bite people:

  • Anything that rewrites or strips the fragment breaks the link. Some chat apps and URL shorteners do exactly that. Send the link in a way that preserves it verbatim.
  • The page scrubs the token from the address bar once it's read. That's expected — the link in your history won't work a second time if you copy it back out.

🚧 To write

  • Getting a link onto a Quest without typing it (the actual recommended flow).
  • The on-device acceptance checklist: what a working session looks like step by step.

Controls feel wrong

Grip is squeeze-to-move — it's a clutch, so the arm only follows while you're squeezing. People who expect continuous tracking read this as "the arm keeps stopping."

Trigger is that arm's gripper.

Full map: DEFAULT_BINDINGS. See SDK: VR.

An arm stops mid-motion in VR

If one joint stopped and the rest still work, that's a stall and it's working as designed — jog it away from whatever it's pushing against. Safety states.

Guide: VR.

Apache-2.0