Fixed
- Server config push failing with HTTP 400 on DHCP devices — esp32-photoframe-server mirrors back the full config snapshot it fetched from the device, including blank
static_ip/static_netmask/static_gatewayfields on a frame using DHCP. The firmware rejected the empty strings as invalid addresses, so every config push from the server failed with "Invalid static IP address". Empty static address fields are now accepted as "not set" (matching the DNS server field); switching to static IP mode still validates that all addresses are set and valid. - Better diagnostics for rejected config updates — config validation failures are now logged with the actual reason instead of only the generic
httpd_uri: uri handler execution failedwarning.
Installation
Web Flasher (Easiest)
Flash directly from your browser (Chrome/Edge/Opera required):
https://aitjcize.github.io/esp32-photoframe/#flash
Manually
Choose the appropriate merged binary for your board:
photoframe-firmware-waveshare_photopainter_73-merged.bin: For Waveshare 7.3" 7-color e-paperphotoframe-firmware-seeedstudio_xiao_ee02-merged.bin: For Seeed XIAO EE02photoframe-firmware-seeedstudio_reterminal_e1002-merged.bin: For Seeed reTerminal E1002photoframe-firmware-seeedstudio_xiao_ee04-merged.bin: For Seeed XIAO EE04photoframe-firmware-seeedstudio_reterminal_e1004-merged.bin: For Seeed reTerminal E1004photoframe-firmware-seeedstudio_reterminal_e1003-merged.bin: For Seeed reTerminal E1003 (10.3" grayscale)
esptool.py --chip esp32s3 --port /dev/ttyUSB0 --baud 921600 write_flash 0x0 photoframe-firmware-[board]-merged.bin