Field Log

Iris Notes: Green LEDs and Ragnar Link

A short Iris follow-up on solving the StopWatch green LED mystery and starting the ESP-NOW bridge toward Ragnar.

irism5stackesp-nowfirmware

Since the first Iris post, the M5Stack StopWatch project has picked up a few practical pieces that make it feel less like a watch-face experiment and more like a little platform. The firmware is now at 0.3.13, and the recent work has mostly been around hardware behavior: the green status LED, better notification/charging behavior, and the first pass at an ESP-NOW link for Ragnar.

The green LED took more digging than expected. On the StopWatch, the light near the USB-C port is not an RGB status LED exposed through the usual M5Unified LED path. M5Stack support confirmed that it is a single-color green LED controlled by the M5PM1 power-management chip. That sounds small, but it matters because the code has to treat it as a real on/off hardware line instead of a color-capable indicator.

Iris now has StatusLightService handling that path. On StopWatch hardware it initializes M5PM1 and controls the LED through setLedEnLevel(). When the status light is enabled, Iris can use it for a slow charging pulse, a faster low-battery alert, and explicit diagnostics from the hardware diagnostics screen. Since the physical LED is only green and only really on/off, the charging “breath” is implemented as a gentle pulse instead of a true brightness fade.

The other big thread is Ragnar Link. Iris now includes a listen-only Ragnar Link v1 ESP-NOW receiver for status broadcasts from the Ragnar gateway. The first version tracks packets with a compact status payload: sequence, uptime, camera count, WiFi count, BLE count, Ragnar state, GPS state, capture state, gateway RSSI, valid packets, and invalid packets. There is also a dedicated Ragnar Link screen on the watch for connection state and channel control.

The channel work is important because ESP-NOW lives in the same 2.4 GHz radio world as WiFi. Iris defaults Ragnar Link to channel 6, but the channel can be changed from the watch or the web control panel. If Iris is connected to normal WiFi, the router decides the active channel, so the gateway has to match that channel. Iris marks the link stale after 15 seconds without a valid packet, which keeps the watch useful even when Ragnar is offline.

This is still early, but it is exactly the kind of early I like: one solved hardware mystery, one new service boundary, and one more step toward having Iris act as a small wrist display for larger tools. Next up is more ESP-NOW work, tightening the Ragnar packet flow, and figuring out how much useful status can fit on a round screen before it turns into tiny unreadable nonsense.

The project is here: github.com/drgncabe/m5stack-stopwatch-iris.