Skip to content

v1.7.0 — Connectivity + Real OTA

Choose a tag to compare

@Caldis Caldis released this 21 May 16:43
· 60 commits to master since this release

Connectivity + real OTA. Closes the gap between the v1.6 `?ota` skeleton (info / mark-valid / rollback only) and a device that can actually pull a new image over the air. Pairs with WiFi STA connect + NVS-backed credential persistence so the loop is one command per side: connect once, then `?ota download url=…` whenever a new build lands.

Aurora firmware

  • `peripherals/wifi_creds.{h,c}` — NVS-backed credential store (namespace `wifi_cred`, 5-function API).
  • `peripherals/wifi.c` — STA-mode connect: `wifi_connect(ssid, pass, timeout_ms)` with event-group + IP_GOT gate + 3 automatic retries. Plus `wifi_disconnect / wifi_is_connected / wifi_get_status`.
  • `wifi` console command — rewritten as multi-subcommand: `scan | connect ssid=… pass=… save=1 | disconnect | forget | status`.
  • `?ota` console command — gains `download url=…` via `esp_https_ota` streaming with integer-percent EVT progress. Does not auto-reboot — host decides when to flip slots.
  • `partitions.csv` — switched from `factory 8M + storage 7M` to dual `ota_0 5M + ota_1 5M + storage 5M`. `otadata` (2 sectors) added.
  • `sdkconfig.defaults` — `CONFIG_BOOTLOADER_APP_ROLLBACK_ENABLE=y`, HTTP client HTTPS, dev-friendly `OTA_ALLOW_HTTP`.

Toolkit + build infra

  • `core/patches.py` — centralizes `managed_components/` patches. First entry: the `waveshare__qmi8658` upstream bug pair (missing `esp_driver_i2c` REQUIRES + `M_PI` without `#ifndef` guard).
  • `build.py` — applies patches pre-build; on failure inspects stderr for known retry signatures and retries once.
  • `examples/aurora/CMakeLists.txt` — `esp_harness_apply_known_patches()` CMake fallback. A fresh clone now builds without needing the toolkit at all.

Verification

  • Target build: clean rebuild 65.5s, 0 warnings, all artifacts produced
  • Sim diff: 13 / 13 scenes identical (no UI regression)
  • pytest: 3 / 3 passing (doctor / manifest / sim-diff)
  • Manifest: 17 toolkit commands surfaced

Deferred to v1.8

  • BLE-peripheral WiFi provisioning UI (NimBLE GATT receiver writing to the v1.7 `wifi_creds` API). API surface is ready; only the BLE side is missing.

🤖 Generated with Claude Code