# waveshare73 / v1 Driver for the Waveshare 7.3" 6-color e-ink panel (800×480, Spectra-6) on a discrete ESP32 dev-board breakout. This is the original V1 firmware that shipped on Matt's prototype unit. ## What lives here - `epd_driver.cpp` — implements the `epd.h` interface for this panel: `epd_init`, `epd_sleep`, `epd_fill`, `epd_draw_image_from_file`, `epd_draw_image_with_border`, `epd_draw_qr`, `epd_draw_ap_screen`, `epd_draw_setup_screen`. The init byte sequence at the top of `epd_init()` is verified for this specific controller; do not blind-paste from another panel. - `version.h` — `PANEL_FW_VERSION` string transmitted during provisioning. Bump when the driver changes in a way the server should know about. ## Per-panel data (lives elsewhere) Pre-rendered LittleFS payloads for this panel size live at `data/waveshare73-v1/`: - `ap_bg.bin`, `setup_bg.bin` — captive-portal and account-binding background screens at 800×480 - `img.bin`, `img_portrait.bin` — test images used by the `test-display` build env Regenerate with `scripts/gen_screens.py --width 800 --height 480` after changing the source artwork. ## Build env ```bash pio run -e waveshare73-v1 --target upload # production firmware pio run -e test-display --target upload # single-image hardware test pio run -e sim-yellow --target upload # sync-fail border test pio run -e sim-red --target upload # no-WiFi border test ``` The build flags supplied by `platformio.ini` parametrize `src/config.h` — this folder doesn't redefine pins or dimensions itself. ## QR positions `epd_draw_ap_screen` and `epd_draw_setup_screen` have hardcoded QR coordinates (cell size, x, y) tuned for 800×480 + the bg screens at `data/waveshare73-v1/`. If the bg art changes, the matching constants in `gen_screens.py` and the driver must be re-tuned together.