Skip to content

Loop Firmware v1.0.1.18

Choose a tag to compare

@NickEngmann NickEngmann released this 01 Jul 23:57

Persistent cam-OTA buffers (plain-P4 NO_MEM fix) + C6 flash MD5 verify

What

Fixes the two reliability holes found while pipeline-testing v1.0.1.17 on a plain-P4 v1.3 device:

  1. Cam OTA NO_MEM on plain P4 — spi_camera_ota_send allocated its 2×4 KB aligned DMA-internal chunk buffers per call; on the v1.3 build the pool is too fragmented by OTA time and every cam OTA failed chunk buffer alloc failed. The buffers are now claimed eagerly at spi_camera_init (the established s_chunk_rx pattern), per-call alloc kept as a degraded fallback, all frees gated. 8 KB permanent DMA-internal.
  2. C6 flash verify — app_c6_flash had no write verification; a UART glitch shipped a silently-corrupt network_adapter (C6 dead on SDIO, and since a non-handshaking C6 never fires TRANSPORT_UP, the auto-update's retry never triggered). Each image now gets esp_loader_flash_verify() (stub-side MD5) + one in-place retry.

Validation (v1.3 rig)

  • Boot cam reconcile: "4 updated, 0 already current, 0 absent", ~10 s per cam — previously failed 4/4 with NO_MEM.
  • Full c6_flash cycle: all four images flash + MD5-verify (~15 s added for the 1.2 MB image), slave boots, c6_version match=yes attempts=0.
  • heap_caps / SD / viewfinder healthy after; both variants build clean.

https://claude.ai/code/session_01QYRWm2rbLEWHAqCW3RgM3B


Merged PR #17 by @NickEngmann — commit 1eefdf6aa302a5338a6296f3f86957161b582890