Firmware
Firmware variants (March 2026 batch)
Section titled “Firmware variants (March 2026 batch)”| Variant | BLE data | BLE OTA | Direct-radio OTA (via base) |
|---|---|---|---|
| fw-base | — | — | ✅ (bootloader default, always there) |
| fw-ble | ✅ | — (upgradeable) | ✅ |
| fw-ble-ota | ✅ | ✅ | ✅ |
Which do I have? Your shipping email’s date + carrier tells you — see What’s new — March 2026. (v3_1 reports version_id 101.)
Flashing over SWD (wired — always works)
Section titled “Flashing over SWD (wired — always works)”- Needs an SWD programmer (STLink V2 + pogo-pin adapter, available with uMyo).
- Flashes the
.hexreleases from the uMyo firmware repo. - The bootloader is un-brickable — a failed flash just means “the device won’t run,” repeat the procedure.
Updating over OTA (wireless)
Section titled “Updating over OTA (wireless)”The bootloader supports two OTA transports, toggled by a button press once you’re in bootloader mode:
Direct-radio (over the base) — the default, and it works on every firmware, including fw-base. It’s the bootloader’s core mode (channel 21) and has been there all along. The gesture-lab host (or the base relay) flashes over the RF link — no STLink, no sudo, fast. This is the OTA path even a plain fw-base device already has.
BLE (phone app) — needs the newer, BLE-capable bootloader (fw-ble-ota). Toggle to it with a button press in the bootloader (it advertises as uMyo2 bootloader); the Android app flashes over BLE in ~4–5 min. fw-ble can be upgraded to this once over SWD, then it’s wireless forever.
Entering the bootloader: device off, hold the button ~2 s → bootloader (defaults to direct-radio). A button press toggles direct-radio ↔ BLE where the bootloader supports both.
BLE OTA steps (Android app):
- Device off. Press and hold the button → LED goes solid blue (not the normal startup sequence).
- Keep holding 5+ s until the LED switches to a slow blue blink — that’s bootloader mode.
- Short-press once — switches the bootloader from base to BLE (no LED change; expected).
- Tap Start OTA — it scans, connects, and uploads in ~4–5 min. Don’t close the app or power off mid-upload.
The bootloader auto-exits after 15 min if a flash is abandoned, and can’t be damaged by a failed upload.
Source
Section titled “Source”Open source: uMyo firmware repo (v3_1; urf_lib submodule) — build instructions in the README.