Skip to content

Connectivity

uMyo transmits over a 2.4 GHz radio. How you receive it decides what data you get, what hardware you need, and your latency. There are two radio worlds — direct radio (to a USB base, an Arduino, or an ESP32) and BLE (to a phone that bridges to your PC) — and four practical paths.

Under the hood the firmware emits a raw binary format (over BLE GATT or the base’s serial); a small adapter converts it to the tools’ interchange format, UF1. See Data & Protocol for the wire details — this page is about choosing a path.

PathHardwareDataLatencyBest for
USB base stationUR nRF52 USB receiverFull — raw EMG + FFT + IMU + quat + mag~10 msThe default; most people buy this
Arduino + nRF24 (incl. RF Nano)Arduino + nRF24 moduleFull direct-radio streamLowEmbedded / DIY
ESP32 (BLE)ESP32Compact / derived — not full raw EMGLowLightweight; community, see caveats
BLE + phone bridgeAndroid phone + appFull — EMG + IMU + magnetometer~20 msNo base station; newest path

Cycle with the button; the LED colour shows the mode: 🟢 green — base / PC-station · 🩷 pink — nRF24 · 🔵 blue — BLE. After the startup sequence a short press blinks 3× in the current mode’s colour.

The three modes differ in the actual radio protocol:

  • 🟢 base (green) — a star-network protocol: the UR base station coordinates and schedules all the uMyos, 64-byte packets on channel 21. This is what makes the base reliable and high-capacity.
  • 🩷 nRF24 (pink) — a plain broadcast, 32-byte packets on channel 83, receivable by any nRF24 hardware (nRF24 module, RF-Nano, ESP32 + module). No coordination, so bandwidth is shared and the raw stream can gap with several devices.
  • 🔵 BLE (blue) — standard BLE GATT to a phone (or BLE advertisement to an ESP32).

USB base station — recommended, and what most people buy. An nRF52 USB receiver. It takes the direct radio and forwards the full stream — raw EMG (~1150 Hz), the 4 FFT bins, IMU, quaternion, and magnetometer — over USB at 921 600 baud. Lowest latency, best timing.

Multiple units: one base receives all your units at once — the channel time-divides between them. No hard limit; ~6 is comfortable (~10 ms average latency, ~20 ms worst-case at 6 units), a sane ceiling is ~8, the library supports 16, and with the base it reliably scales to ~32.

Arduino + nRF24 (including the RF Nano). Any Arduino with an nRF24 module receives the direct radio via the uMyo_RF24 library. The convenient option is the Arduino RF Nano v3 — a combined Arduino + nRF24 board, no separate module. Good for embedded / DIY. (The raw stream is available here too, but can have interruptions with several devices — the broadcast protocol shares bandwidth without a coordinator.)

ESP32 (BLE) — community path, with caveats. An ESP32 receives uMyo over BLE (advertisement scanning) via the uMyo_BLE library. Two honest limits: (1) bandwidth — full raw EMG is hard to get over ESP32/BLE, so you get compact data (muscle activity, roll/pitch/yaw, 4-bin spectrum), not the full raw stream; (2) the library may lag current firmware (the data encoding changed and it wasn’t fully updated). A real path for lightweight use, not for full-resolution data.

BLE + phone bridge — new (2026). With fw-ble / fw-ble-ota firmware, uMyo streams the full data (EMG + IMU + magnetometer) over BLE to an Android phone running the uMyo app, which forwards to your PC over WiFi. No base station. Needs a phone/central that negotiates a decent MTU (≥53 bytes; cheap CSR8510- / HM-10-class dongles can’t). ~20 ms jitter; no theoretical device cap, the practical one needs testing.

  • Best signal, lowest latency, least fuss → USB base (most people).
  • Embedded / Arduino project → Arduino + nRF24 / RF Nano.
  • Already have an ESP32, need only light/derived data → ESP32 BLE (mind the caveats).
  • No base station, have an Android phone → BLE bridge.