Skip to content

Remote Management over WCB

greghulette edited this page Jul 28, 2026 · 2 revisions

Remote Management over WCB

You don't have to tether a USB cable to the NaviCore board to manage it. If the controller is buried inside a droid, you can reach it wirelessly from the config tool by plugging into any WCB on the same ESP‑NOW network and letting that WCB relay traffic to the controller. This is "Via WCB" mode.

This page is the end‑to‑end walkthrough. For the credential details see WCB Network; for the connection basics see Config Tool Guide.


How it works (the short version)

[Browser config tool] --USB--> [any WCB] --ESP-NOW--> [NaviCore @ device ID 20]
  • The config tool wraps each JSON command as ;w20,<json> and the tethered WCB forwards it over ESP‑NOW to the controller, which always lives at special‑peer device ID 20.
  • The controller continuously broadcasts lightweight telemetry back (heartbeat, channel snapshot, trigger/mode events) so the tool can discover and live‑monitor it.
  • Large payloads (a full GET_CONFIG / SET_CONFIG) are fragmented into ESP‑NOW‑sized packets and reassembled on the other end.

One‑time setup

  1. Put the controller on the WCB network. In Config Tool Guide over direct USB, open Config → WCB Network and set the MAC octets, password, quantity, and WiFi channel (1-13) to match your system — every field must match every other WCB on the mesh. Read them off a known‑good WCB with ?WCBM / ?WCBP / ?WCBQ / ?WCBCH. Leave Device ID = 20. Save and reboot the controller (WCB credentials only take effect at boot).
  2. Confirm it's online. From any WCB's USB serial, or the config tool's WCB Status panel, the controller should show up as board 20 online.

Connecting Via WCB

  1. Plug the config tool into any WCB on the network over USB.
  2. Hit Connect and pick Via WCB in the connect method modal (the modal offers USB, Via WCB, and Shared port). Choosing Via WCB skips the direct probe and immediately wraps traffic for the relay. See Connecting for the full method picker.
  3. The tool now relays to the controller at ID 20. You'll see the SBUS monitor, mode, and live channels populate from the controller's telemetry — the same UI as a direct connection.

🚀 Auto‑fallback. If you pick plain USB but the port doesn't answer a direct PING (because it's a WCB, not a NaviCore), the tool automatically retries the same port Via WCB — so tethering to a WCB and hitting Connect usually just works. The Via WCB checkbox in the top bar is still there as a manual toggle if you want to force it on or off mid‑session.

The tool sends a quiet keep‑alive ping every ~10 s so the controller keeps streaming channel data while you're parked on the page.


What works Via WCB

Task Via WCB? Notes
Live SBUS monitor (channels, fps, mode) fps is the controller's real SBUS rate (from its heartbeat), not the 20 Hz relay rate
See button/switch/knob activity event‑driven trigger/mode notices
Trigger a button remotely fires the mapped actions exactly like a physical press
Load config (GET_CONFIG) fragmented + reassembled
Save config (SET_CONFIG) the tool sends only the changed branches (a diff), so a typical save is a handful of fragments, not the whole config
Firmware update — OTA over WCB 📡 Update over WCB (OTA) streams new firmware through the relay over ESP‑NOW; brick‑safe, SHA‑verified, keeps config — see below
Calibration needs ~30 Hz sampling; even the 20 Hz relay is too slow — use direct USB
Firmware — full/bootloader flash & OTA‑over‑USB esptool bootloader flashing and the ⚡ Update over USB (OTA) path both need a direct USB connection to the board

Saving config Via WCB

  • Saves are diff‑based: the tool ships only the top‑level branches you changed since the last load, which keeps the payload small and reliable over the radio.
  • A save isn't considered done until the controller returns an ACK. If no ACK arrives within ~12 s, the tool warns you — click Refresh to see what actually persisted, then re‑save.
  • Network‑identity fields are protected. The controller refuses to change its own wcbNetwork device ID, MAC octets, password, and quantity from a Via‑WCB save — it strips those from any incoming SET_CONFIG that arrived over the bridge, otherwise a save could cut the very link it arrived on.

⚠️ The WiFi channel is NOT auto‑protected. Unlike the fields above, the firmware does not strip wcbNetwork.channel from a Via‑WCB save, so changing the channel over WCB will apply on the next boot and can silently take the controller off the mesh. Always change the channel (and the other network‑identity fields) over direct USB.

If a save over WCB ever feels flaky (RF congestion, a busy network), just tether USB for that one save — it's always the most reliable path.


Firmware update Via WCB (OTA)

You can flash the controller's firmware without ever touching it — the tethered WCB relays the whole image over ESP‑NOW to a buried board. This is the headline remote‑management capability: update a droid whose NaviCore you can't physically reach.

While connected Via WCB, the Firmware panel's 📡 Update over WCB (OTA) button lights up (it's enabled only in Via WCB mode). Pick a .bin and the tool drives an ACK‑paced transfer through the relay:

  1. BEGIN — the target erases its inactive OTA slot (~1.2 MB, a few seconds) and ACKs.
  2. DATA — the image streams in base64 chunks, each awaiting the target's ACK; a dropped packet is resent from the target's authoritative cursor instead of aborting the transfer.
  3. END — the target SHA‑verifies the image, switches its boot slot, and reboots into the new firmware. It re‑joins the mesh on its own and the Via‑WCB session resumes — no USB reconnect needed.

It's brick‑safe (writes the inactive slot, only switches after verify) and keeps your config. Under the hood the relay carries ?OTA,BEGIN/DATA/END lines that the firmware handles in processOtaRelayCommand.

This is distinct from ⚡ Update over USB (OTA) and the full esptool/bootloader flash, both of which require a direct USB connection. See Flashing the Firmware for all three paths.


Limits & expectations

  • One controller per network at ID 20. The bridge addresses a single special‑peer slot. Multiple controllers would need distinct IDs and an explicit picker (not the default setup).
  • Telemetry is gated. The controller only streams 20 Hz channel data while a tool is actively listening (it sees your pings); on an idle network it just sends a 0.5 Hz heartbeat, so it isn't spamming the ESP‑NOW airwaves. If ~15 s pass with no inbound message it stops the channel stream until a tool checks in again.
  • Bridges are interchangeable. The WCB you tether to is just a relay — its own ID doesn't matter, it only needs to be on the same network with the special peer enabled.

Troubleshooting Via WCB

  • Controller not found / no telemetry: confirm it booted on the network (board 20 online), and that MAC octets/password/quantity and WiFi channel match. A failed WCB network init latches a STEADY orange status LED — that's distinct from a FLASHING orange LED, which means the radio came up fine but there's no SBUS signal. See WCB Network and Failsafe and Signal Loss.
  • Save says "no ACK": RF congestion or the controller briefly offline — Refresh and retry, or save over USB.
  • Calibrate greyed out or blocked: expected — calibration requires direct USB.
  • OTA button greyed out: 📡 Update over WCB (OTA) is enabled only while connected Via WCB; the ⚡ USB OTA and bootloader flash are the direct‑USB paths.

See Troubleshooting for the full list.


Clone this wiki locally