@@ -17,6 +17,12 @@ Quick start
1717
1818**Step 1 — Start the streaming host with OOB enabled **
1919
20+ On first use, it is recommended to run once **without ** ``--setup-oob `` to
21+ confirm ``adb devices `` sees the headset, verify USB debugging is enabled, and
22+ accept the self-signed certificate in the headset browser manually (both the
23+ web client page and the ``https://<host>:48322 `` proxy page). Once that
24+ baseline works, add ``--setup-oob `` to automate the full flow.
25+
2026Launch the CloudXR runtime with the ``--setup-oob `` flag (add ``--accept-eula ``
2127on first run):
2228
@@ -29,6 +35,8 @@ This will:
29351. Verify a USB-connected headset is available via ``adb devices ``
30362. Start the WSS proxy with the OOB control hub
31373. Open the teleop page on the headset via ``adb shell am start ``
38+ 4. Accept the self-signed certificate and click CONNECT automatically
39+ via Chrome DevTools Protocol (CDP)
3240
3341You should see output confirming the hub is running:
3442
@@ -45,7 +53,8 @@ You should see output confirming the hub is running:
4553 - **Connected to WiFi ** on the same network as the streaming host (for web
4654 page access and CloudXR streaming)
4755
48- No ``adb reverse `` or USB tethering is used.
56+ Streaming and web page access use WiFi, not USB tethering.
57+ ``adb forward `` is used only temporarily for CDP automation.
4958
5059**Step 2 — (Manual fallback) Open the web client on the headset **
5160
@@ -110,11 +119,12 @@ configuration overrides via the HTTP config API:
110119
111120 See ``GET /api/oob/v1/config `` below for all supported keys.
112121
113- **Step 5 — Connect and stream; poll for metrics **
122+ **Step 5 — Stream and poll for metrics **
114123
115- Press **CONNECT ** on the headset to start the CloudXR streaming session. Once
116- streaming begins, the headset reports metrics to the hub every 500 ms. Poll the
117- state endpoint from a PC to collect them:
124+ With ``--setup-oob ``, CONNECT is clicked automatically via CDP. If running
125+ without it, press **CONNECT ** on the headset manually. Once streaming begins,
126+ the headset reports metrics to the hub every 500 ms. Poll the state endpoint
127+ from a PC to collect them:
118128
119129.. code-block :: bash
120130
@@ -128,21 +138,26 @@ ADB automation
128138
129139The ``--setup-oob `` flag automates headset setup via USB ``adb ``:
130140
131- 1. **adb devices ** — verifies exactly one device is connected
132- 2. **am start ** — opens the teleop bookmark URL in the headset browser with
141+ 1. **adb devices ** verifies exactly one device is connected
142+ 2. **am start ** opens the teleop bookmark URL in the headset browser with
133143 the correct ``oobEnable=1 ``, ``serverIP ``, and ``port `` parameters
144+ 3. **CDP connect ** forwards the browser's DevTools socket over ``adb ``,
145+ accepts the self-signed certificate interstitial, and clicks CONNECT
146+ via Chrome DevTools Protocol (``Input.dispatchMouseEvent ``)
134147
135- No ``adb reverse `` ports or USB tethering is used. The headset reaches the
136- streaming host directly over WiFi.
148+ Streaming and web page access use WiFi, not USB tethering. The headset
149+ reaches the streaming host directly over WiFi. ``adb forward `` is used only
150+ temporarily during CDP automation to reach the browser's DevTools socket.
137151
138152Prerequisites:
139153
140154- ``adb `` must be on ``PATH `` (Android SDK Platform Tools)
141155- The headset must be connected via USB with USB debugging enabled
142156- The headset must be on the same WiFi network as the streaming host
143157
144- If adb automation fails, the hub still starts and you can open the URL
145- on the headset manually.
158+ If any step fails, the hub still starts. Fall back to
159+ ``chrome://inspect/#devices `` from the PC or tap CONNECT on the headset
160+ directly.
146161
147162Architecture
148163------------
@@ -161,7 +176,7 @@ Architecture
161176 * - **Streaming host **
162177 - ``python -m isaacteleop.cloudxr --setup-oob ``
163178 - Runs CloudXR runtime + WSS proxy + OOB hub on a single TLS port.
164- Opens the teleop page on the headset via USB adb.
179+ Opens the teleop page and clicks CONNECT via USB adb + CDP .
165180 * - **Operator / scripts **
166181 - ``curl ``, browser, or custom tooling
167182 - Reads state via HTTP, optionally pushes config via HTTP.
@@ -312,10 +327,10 @@ The following URL parameters override their corresponding form fields (and
312327``localStorage `` values) so that bookmarked links always take priority over
313328previously saved settings:
314329
315- - ``serverIP `` — CloudXR server IP address
316- - ``port `` — CloudXR server port
317- - ``codec `` — video codec
318- - ``panelHiddenAtStart `` — hide the control panel on load
330+ - ``serverIP `` CloudXR server IP address
331+ - ``port `` CloudXR server port
332+ - ``codec `` video codec
333+ - ``panelHiddenAtStart `` hide the control panel on load
319334
320335Environment variables
321336---------------------
@@ -342,7 +357,3 @@ Environment variables
342357 - Default video codec for headset bookmarks
343358 * - ``TELEOP_CLIENT_PANEL_HIDDEN_AT_START ``
344359 - Hide control panel on load (``true `` / ``false ``)
345- * - ``TELEOP_CLIENT_PER_EYE_WIDTH ``
346- - Per-eye render width override
347- * - ``TELEOP_CLIENT_PER_EYE_HEIGHT ``
348- - Per-eye render height override
0 commit comments