Skip to content

Version History

Ravi Singh edited this page May 7, 2026 · 2 revisions

Version History

A short history of how AmbiSense got from a hobby Arduino sketch to a kit-ready ESP-IDF firmware.

v6.x (single-sensor architecture) — v6-idf-rewrite (2026-05-07 →)

🚨 The big architectural pivot. v6.0.0 shipped with dual-device ESP-NOW master/slave. v6.x drops it entirely. One device, one LD2450 sensor, one LED strip.

See Migration from v6.0 and the FAQ for the why.

v6.1.0-alpha.1 (2026-05-07) — single-sensor pre-release

  • Removed: mesh + topology components, peer broadcast, coordinator election, pairing window, fusion modes, LD2410-family drivers, the Mesh tab in the UI, all /api/mesh* and /api/topology* endpoints, the mesh and topo NVS namespaces, STATUS_LED_PAIRING / IDENTIFY patterns.
  • Locked: ld2450 and sim only in radar registry.
  • Net: −1569 lines, +340 lines across 28 files.
  • C3 PCB rev preparation: documented discrete LDO power-rail recommendation for the upcoming kit PCB.
  • 6-screen Web UI (Live · LEDs · Motion · Hardware · Network · System).
  • Build: ambisense.bin 1158 KB (20% partition free), UI bundle 25 KB gzipped.
  • Release page

Why the architectural pivot

Bench testing v6.0 on real U-shape and L-shape stair installs surfaced ESP-NOW round-trip jitter (5–100 ms with retries) that added visible LED lag, and the LD2450's (x, y, speed) target stream from one sensor at the inside-corner mounting position covered both arms of an L or U inside its 60° cone — making the second sensor redundant for the geometries users actually install.

The trade-off accepted: single-sensor mode requires the LD2450 to have line-of-sight to both arms of the LED run (mount at inside corner of L or centre-back of U). For arms longer than 5 m, range-test at the far end before locking the kit configuration.

For the full reasoning see FAQ → Why was the mesh dropped.


v6.0 (dual-device ESP-IDF rewrite) — main (2026-05-05)

The full ground-up rewrite from Arduino to ESP-IDF + FreeRTOS. Shipped as a 5-PR plan over March–May 2026.

v6.0.0 (2026-05-05)

  • ESP-IDF v5.5.2 + FreeRTOS, custom 4 MB partition layout.
  • Independent FreeRTOS tasks for radar / motion / LED render / web — no more cooperative loop() starving the LEDs under HTTP load.
  • LD2450 multi-target tracking + LD2410-family drivers in a runtime-selectable registry.
  • Board picker with editable pin map (C3 SuperMini, classic ESP32, S3-Zero, C6).
  • ESP-NOW peer mesh: every device broadcasts its reading at 5 Hz, runs identical fusion locally, lowest-MAC peer hosts the canonical web UI.
  • Asymmetric pairing (3-second BOOT-button hold; either device opens the window, both auto-connect).
  • Kalman motion filter (v3) — 3 user knobs replacing v5's 5 cryptic gain values; advanced PI gains kept as overrides.
  • 20 Hz /api/live WebSocket telemetry.
  • OTA with rollback, captive portal, PBKDF2-SHA256 admin auth, MCU-mismatch boot guard.
  • Modern Preact web UI (7 screens including Mesh tab) on phone + desktop.
  • 300 ms client-side debounced settings save (slider drag won't saturate httpd).
  • Release page

v6.0.0 — what stayed and what changed in v6.x

Area v6.0 v6.x
Architecture Dual-device peer mesh Single device, single sensor
Sensors LD2410 / 2412 / 2420 / 2450 / sim LD2450 / sim
Pairing flow 3-s BOOT hold + 30-s window Removed
Fusion modes Most recent / Slave first / Master first / Zone Removed
Topology blob NVS topo blob with segment ranges Removed
Mesh tab in UI Present Removed
/api/mesh* endpoints 3 routes Removed
Recommended board ESP32-S3 ESP32-C3 SuperMini
Motion Kalman v3 Kalman v3 (unchanged)
OTA / auth / captive portal All present All present
Web UI screens 7 6

v5.x (Arduino, mature) — legacy/v5-arduino (2024–2025)

The last Arduino-era line. Mature and shipped to dozens of users.

v5.1.1 (2025-06-07)

  • Final patch release on the Arduino line.
  • Bug fixes for the cooperative loop() priority issues that v6 architecturally fixes.
  • Release page

v5.1 (2025-06-01)

  • Multi-device master/slave fully working with EEPROM-saved peer list.
  • Asymmetric stair topology support.

v5.0 (early 2025)

  • Web UI rewrite (still plain HTML, no SPA framework).
  • LED-mode framework with 11 modes.
  • ESP-NOW peer discovery on AP-only mode.

v4.x — legacy/v4 (2025)

v4.1 (2025-04-25)

  • Distance-window-based LED rendering (replaces continuous mapping).
  • Trail / direction-light / background modes.
  • Release page

v4.0

  • Color modes added (single color / breathing / rainbow).
  • LD2410 baud auto-detect.

v3.x — early prototype

v3.1 (2025-03-22)

  • First public release with web UI.
  • Single device + LD2410 only.
  • Release page

v1 / v2 — bench-only proofs of concept

Never released publicly. Single-mode "lights follow distance" demos.


Branch and tag map

Branch / tag Status Purpose
main stable v6.0.0 (dual-device) — current canonical firmware
v6-idf-rewrite active v6.x development — single-sensor architecture
legacy/v5-arduino frozen v5.x Arduino source preserved
tag v6.1.0-alpha.1 pre-release First v6.x cut
tag v6.0.0 release Last dual-device build
tag v5.1.1 release Last Arduino release
tag v5.1 release Multi-device stable
tag v4.1 release Color modes added
tag v3.1 release First public release

Going forward

v6.x is in alpha through bench validation and PCB design. Once the prototype PCB is built, range-tested, and validated, v6.1.0 stable will tag from v6-idf-rewrite and merge to main.

See docs/V6-ROADMAP.md for the full v6.x roadmap.

Clone this wiki locally