Tilt → gravity moves across axes, |a| ≈ 1.0 g. Tap → spikes.
Stock rate is ~4–25 Hz (that slowness is the point — see docs/14).
Emergency trigger
EMERGENCY · OFF
turn ≥
300°
max pause
1.0s
turned 0° · dir —
Controls
Measurements — these turn the green (HR) / red (SpO₂) sensor LEDs on
Raw sensor streams — A1 04 floods the link & may stop responding to commands; if stuck, use Disconnect
LED isolate (test) — enable accel first, then try killing one emitter / scanning the A1 04 mask; watch which LED stays + that Hz holds
Device
The R02 has no NFC and no screen or RGB indicator — the only LEDs are the
green (HR) + red/IR (SpO₂) sensor emitters, which light while a measurement or raw stream runs.
QRing commands for display clock / brightness / orientation are smartwatch leftovers and do
nothing on the R02. Poke anything else from the raw console below.
Firmware (OTA over Bluetooth) connect first
⚠ Flashing replaces the ring firmware. A bad image can require SWD recovery via the P00/P01 pads, and your stock 3.12.01 is not restorable (only 3.00.06 is public). Use a spare ring for the first flash. Keep the ring still and this tab open until it finishes.
Baseline test — one click, known-good image (stock 3.00.06 + faster accel, pre-loaded)
Or flash your own .bin (later — custom firmware)
no file selected
idle
Recorder
Label this run
idle — 1) Enable accel 2) pick a label 3) Record
Saves to ringon/data/ on Stop (via the collector server). Hit
Mark gesture at the instant you perform each triple-tap+hold so the gestures are easy
to find in the data. Do ~5–10 reps per run. If saving fails you're on the plain server — run
python tools/collect_server.py instead.
Console
Checksum is appended automatically (sum of bytes & 0xFF), padded to 16.
Try 03 battery · A1 04 accel on · A1 02 accel off.
Web Bluetooth · Chrome or Edge · must be served over http://localhost or https (not file://).
If "Connect" does nothing, you're on an unsupported browser or an insecure origin.