Files
cottongin 065d80ca89 fix: eliminate diagonal dither pattern from display driver
Root cause: Panel_ED2208's epd_quality mode applies _dither_row_rgb_pair
(diagonal bias pattern with dither=140) during _exec_transfer(). Since our
ImagePipeline already does proper Floyd-Steinberg dithering, the driver's
additional dithering was creating visible diagonal artifacts.

Fix: setEpdMode(epd_fastest) selects _dither_row_none (clean nearest-color
lookup, no spatial bias). On Panel_ED2208 this only affects the dither
function — NOT refresh quality or waveform.

Also: default dither_noise setting to OFF since error scatter was targeting
the wrong layer (it made gradient areas fuzzier without fixing the real
problem in the display driver).

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-03 19:52:22 -04:00
..

Testing

Native Tests (host machine)

Run algorithm tests that don't require hardware:

pio test -e native

Tests:

  • test_photo_queue.cpp — queue cycling, favorites weighting
  • test_image_pipeline.cpp — nearest color, dithering correctness

On-Device Testing

Flash and monitor:

pio run -e m5stack-papercolor -t upload && pio device monitor

Verification Checklist

  • Device boots and prints version to serial
  • AP mode activates on first boot
  • Captive portal serves setup page at 192.168.4.1
  • WiFi credentials save and device reboots to station mode
  • mDNS resolves at papercolor.local
  • Web UI dashboard shows battery/WiFi/uptime
  • Albums page lists Immich albums
  • Album selection persists across reboots
  • Photos download and display correctly
  • Portrait photos pair side-by-side
  • Slideshow advances at configured interval
  • BTN_UP: next photo (LED flashes white)
  • BTN_TOP: random photo (LED flashes white)
  • BTN_DOWN: pause/play toggle
  • BTN_TOP+BTN_DOWN 3s: deep sleep
  • BTN_UP 5s: factory reset
  • Battery LED: orange at 25%, red at 10%
  • OTA upload succeeds via web UI
  • Device recovers from WiFi disconnect (reconnect on next cycle)