Connect Device
1. Select transport (BLE or USB) 2. For BLE: optionally enter a serial number to filter devices For USB: serial number is auto-extracted from the device name 3. Press "Connect" to pair and auto-initialize all interfaces
🔍 Device Capabilities
Press "Check Capabilities" to query the device for its supported interfaces (local data, secure connection) and MDN hostname.
📡 Sync
Ready
Press "Start Sync" — server URL auto-resolves via getDeviceAssignment(). Optionally check "Override server URL" for manual testing. Note: Sync and UTO share the same transport — starting sync will stop UTO if active.
⚙️ UTO Interaction
Press "Init UTO" to start UTO communication. Note: UTO and Sync share the same transport — only one can be active at a time.
🔐 Secure UTO (Companion Auth)
Runs the full handshake: keypair → cert (POST /api/1/companion/cert) → AT+COMPCERT → ECS → encrypted UTO. Inputs are persisted in localStorage. Requires the debug transport (AT channel).
Dev only: the cert request is rerouted to the Vite dev server (same-origin) and the host below is forwarded as the x-target-host header so CORS doesn't apply. Production builds call the host directly.
skews every minted stamp — the device clock follows the STAMPS query (CA-392)
Phase: idle
Fill in MDN host + access token + subject UUID, then press "Init Secure UTO" to run the CompanionAuthManager flow. Phases will appear above and in the Console panel.
🔄 Offline Sync
Download the site DB from the companion-sync endpoint and reconcile it with the connected device. Host and token are shared with the Companion Auth fields above. Requires an active UTO connection (plain or encrypted).

Connect and authenticate first.


					
🗂️ DDE Mapper
Downloads the connected device's site-db and app-data-db (site_info → apmid/version → DDE "xml"), parses the DDE, and reads a config container or a timeseries range through the DdeMapper. Host and token are shared with the Companion Auth / Offline Sync fields above. Requires an active UTO connection.

Connect and press "Init UTO", then "Load Databases".


					
📡 Live Mode
Sends ESC LIVE_ON on the open UTO link and collects the device's unsolicited / live histdata frames into an in-memory overlay (never written to the site DB). Requires an active UTO connection and a loaded DDE — press "Load Databases" in the DDE Mapper sub-panel first. The flag online must be set on the device (cn-set-lifecycle), otherwise an interval-mode device sends nothing.

State: ⚪ idle

Container Stamp (UTC) Kind Age
🐛 Debug Console
Quick:
📊 Local Data
Not checked
Press "Check Support" to verify the device supports local data, then "Fetch Metadata" to load data point descriptors.
📶 RM2M State
Press "Fetch State" to query AT+RM2MSTATE? and display the parsed result.