Inkmere

Build Log · Firmware

Thirty milliamps

Most of the time, Newsboard does nothing, which is what it's for. It shows the page and waits. But on the bench, "waiting" meant the ESP32 sat fully awake, holding a network connection open and burning current it didn't need. The case ran faintly warm even when nothing was happening. That bugged me. Something that's idle should act idle.

Doze while you wait

The panel spends nearly all its life in one state: a long wait for the next edition, listening on an open connection that only wakes when a fresh page is ready. That wait was where the power was leaking, so that's where I went to fix it.

While it waits, I now let the Wi-Fi radio drop into modem-sleep and scale the processor down to a slow idle clock. The moment a refresh is due, both jump back to full power for the fetch and the paint, then settle down again. On a USB power meter, idle draw fell from about 160 mA to roughly 30 mA, around an 81% cut, and the warmth in the case went with it.

A USB power meter inline on the panel's cable, reading about 4.78 volts and 0.18 amps.
The meter I lived by for a few nights, reading the draw straight off the USB line. Watching that current number drop was the whole reward.

Without dulling the reflexes

The usual problem with power saving is that it makes everything feel sluggish. I wasn't willing to give up the one interaction people actually notice: you tap Refresh now in the app, and the page changes. So the sleep only touches the dead time between editions. The fetch-and-paint path still runs at full clock with the radio wide awake, and the recessed button still wakes the panel through a hardware interrupt rather than a polling loop. Refresh now feels the same as it always did. It just takes a fraction of the standby power to get there.

It all runs on USB, so this was never about battery life. I just wanted the thing to draw almost nothing while it sits there, and save the real current for the half-second it's actually working.

← Back to the Build Log