Lock Screens for CrossPoint Reader (Xteink X3/X4)
Adds a Lock Screens folder to the home menu with three always-on, periodically-refreshing e-ink dashboards, plus a set of stability fixes. Based on upstream CrossPoint Reader 1.4.1.
Dashboards
- GitHub — contribution heatmap, streaks, and stats for a public GitHub profile (no token needed).
- Weather — current conditions + 5-day forecast for a US ZIP, via Open-Meteo (free, no API key).
- Tempest — live local readings from a WeatherFlow Tempest station over its LAN UDP broadcast (no cloud account).
Each polls on its own configurable interval and arms a timed deep sleep between refreshes, so the display stays visible with minimal battery drain. Portrait/landscape both supported; a failed refresh keeps the last good frame instead of blanking. Optional Sleep Screen → Lock Screen makes the device sleep directly into a chosen dashboard.
Stability fixes in this build
- CPU frequency restored before WiFi bring-up. Entering a lock screen from the idle sleep timeout ran
WiFi.mode()at the 10 MHz power-saving clock, which the WiFi PHY can't initialize — it hung the device with no crash. Now restored to full speed first. - Loop-task stack raised to 24 KB. The dashboards' HTTPS poll (mbedTLS) overran the 8 KB Arduino loop-task stack on the ESP32-C3, panicking with a
loopTaskstack overflow. Fixed. - USB-safe deep sleep. Sleeping while on USB no longer bounces into an unrecoverable boot loop.
- DST-aware clock. Timezone is re-detected each poll, so the clock isn't an hour off after a DST change.
How to flash
SD card (no tools): download firmware.bin, copy to the SD card root, power off, hold Up + Power to enter Recovery Mode, pick firmware.bin.
USB: see Install firmware in the README.
Works on both Xteink X3 and X4 (same binary, detected at boot).