Skip to content

TEST BUILD — B&W mode + magenta-cast detection

Pre-release
Pre-release

Choose a tag to compare

TEST PRERELEASE — not for the fleet. No `latest.json` is included and this is marked prerelease, so the companion app will NOT offer it; production stays on v1.0.1.81. Built from `loop-firmware` branch `combo/bw-mode-magenta-catch` (= docs/bw-mode-research cb361b4 + investigate/magenta-cam-frames 407c03d, merged clean).

What's in it

B&W Mode (docs/black-and-white-mode.md)

  • Settings → slot 6 "B&W Mode" toggle: the 4 S3 cams shoot grayscale (OV5640 SDE, post-warmup wedge-guarded apply — a marginal sensor reverts to color rather than wedge) AND the viewfinder goes gray (ISP saturation 0; user saturation restored on toggle-off).
  • Camera-entry reconcile keeps cams in sync (IDLE byte 73); mode persists across sleep/reboot on both sides (NVS).
  • Serial: set_bw on|off, get_bw, cam_bw_get. e2e test 101.
  • Validated: reconcile 4/4 both directions, capture 4/4, pixel-proof pure gray (max|R−G|=0), JPEGs ~15% smaller on a dim bench, encode 68s vs 75s.
  • The cams need the embedded S3 blob — the boot reconcile auto-OTAs them on first boot of this image.

Magenta-cast detection (docs/magenta-cam-investigation.md)

  • Per-capture telemetry: lps cast posN: rg=±X bg=±Y per cam on every encode + MAGENTA-CAST suspect posN WARN when the magenta signature (rg>22 && bg>22) appears — catches the "one cam goes magenta until restart" field bug in the act with cam attribution.
  • On-device cast_check <path> probe + tests/e2e/_cast_scan.py historical sweep.
  • Baseline (117 JPEGs): all cams median rg +13/+14, bg≈0; zero suspects. If you see magenta: the logs will name the cam — cam_sensor_soft_reset N (~150 ms) should clear it; please note whether it does (that confirms the remediation for auto-heal).

Flashing

  • P4X: loop.bin / loop-p4x.bin — USB esptool, or scripts/ota_serial.py --image / the app's chunked /firmware/install.
  • Plain P4 (v1.3): loop-p4.bin (+ loop-p4-bootloader.bin if bootloader flash needed).