ESP32 firmware 0.8.13: sensors that go quiet now fix themselves
Pre-release. Built from pull request #2050, which has not been merged into main yet. Tested on one ESP32-C6 board; see "Known limits" below.
What's new, in plain terms
1. Boards recover on their own when sensing stops (#1941)
Previously an ESP32 sensor could stop sensing while still looking healthy: connected to WiFi, answering pings, printing logs. One board stayed like that for almost 8 minutes, and nothing noticed.
The board now checks every second that sensing data is really flowing. If it stops for 15 seconds while WiFi is up, the board works through a short recovery checklist:
- restart just the sensing part of the radio (stays online);
- if that doesn't help, reconnect to WiFi;
- if that doesn't help either, reboot.
It stops as soon as data flows again.
2. About a quarter of the sensing data is no longer thrown away
A timing mismatch between two speed limits inside the firmware quietly dropped 21–28% of the snapshots the board had already collected. That's fixed: measured loss is now 0.08–0.15%, which is normal WiFi loss.
Measured results (one ESP32-C6, real home WiFi)
| Before (0.8.12) | After (0.8.13) | |
|---|---|---|
| Sensing snapshots lost | 21–28% | 0.08–0.15% |
| Time without data when sensing stops (test fault, fixed by step 1) | unbounded (8 min seen) | ~15 s |
| Same, worst case (fault needs a reboot) | unbounded | ~53 s |
| False alarms over 14 minutes of normal use | — | 0 |
Known limits
- The recovery was tested with deliberately triggered faults. The original real-world fault hasn't happened again on the test board, and its root cause is still unknown.
- Only one ESP32-C6 board was tested on hardware. The ESP32-S3 builds are compiled and CI-tested, but not hardware-tested with this change.
- Boards set to accept data from a single WiFi source (optional MAC filter) are handled in the code but untested on hardware.
Upgrading
Download the bundle for your board below and verify it against SHA256SUMS.txt. Flashing the app, bootloader and partition table keeps your saved WiFi settings and node ID. No new settings are required; the recovery timeout can be changed with CONFIG_CSI_STALL_TIMEOUT_S (default 15 s).
Plain-language write-up: https://gist.github.com/ruvnet/e72e09092ffa2d381d34d3c51ee2e223
Technical design: docs/adr/ADR-364-csi-capture-stall-watchdog.md