Commit Graph

4 Commits

Author SHA1 Message Date
James L
adc330dc15 fix: flash.py binary detection, boot_app0 discovery, add --erase flag
- Fix merged binary detection: check partition table magic (0xAA50) at
  offset 0x8000 instead of bootloader magic (0xE9) at offset 0 — both
  merged and app-only binaries start with 0xE9, causing app-only
  binaries to be flashed at wrong address
- Fix boot_app0.bin discovery: handle versioned PlatformIO package
  directories (e.g. framework-arduinoespressif32@3.20009.0)
- Add --erase flag: full flash erase before writing (recommended for
  recovery from corrupted flash)
2026-02-22 21:47:00 -05:00
James L
760e92f186 Fix flash address detection: use bootloader magic byte, not file size
The merged binary (1,257,328 bytes) was below the 1.5MB size threshold,
causing it to be misidentified as app-only and flashed at 0x10000 instead
of 0x0. This corrupted the flash layout and bricked the device.

Now checks for ESP32 bootloader magic byte (0xE9) at offset 0 to reliably
distinguish merged binaries from app-only binaries, regardless of size.
2026-02-22 21:24:06 -05:00
James L
8561e9d5ba Fix esptool discovery: prefer pip-installed over bundled
Bundled esptool.py runs via sys.executable, which may be a Python
that lacks pyserial (e.g. miniconda). Reorder find_esptool() to
prefer pip-installed esptool first (handles its own deps), and
only fall back to bundled/PlatformIO scripts if pyserial is
importable. Give a clear error message if neither works.
2026-02-22 21:19:59 -05:00
James L
840f51da16 Add flash utility, display fixes, and comprehensive README
- flash.py: standalone flash utility with serial port listing, merge-bin,
  GitHub Releases download, and esptool flash support
- Display.h: hide LAN row when Local TCP disabled, show local TCP port
  instead of backbone port
- README.md: comprehensive documentation — Quick Start with 3 flash options,
  OLED display layout, interface modes, routing customizations, path table
  fix, interface name uniqueness, hardware rationale (PSRAM/flash)
- Release/boot_app0.bin: bundled for flash.py standalone use
- .gitignore: exclude merged firmware binary build artifact
2026-02-22 20:58:44 -05:00