Sender ↔ receiver, by design
Senders generate the image; receivers display it. Two clean halves, one shared protocol, and either side can be swapped for a different implementation.
Read the protocol →OpenDisplay is an open standard and open firmware that lets any sender put pictures on any screen. Local, low-power, no cloud in the middle.
Most e-paper projects today reinvent the wheel every time, and lock you into using their screen with their app or cloud. OpenDisplay is the open standard that separates the two sides cleanly, so nobody has to rebuild every part.
Senders generate the image; receivers display it. Two clean halves, one shared protocol, and either side can be swapped for a different implementation.
Read the protocol →Server-side rendering, including dithering and color conversion, keeps receivers cheap, simple, and low-power on battery.
How rendering works →The protocol, reference firmware, and browser tools are open source. Implement either side your way — no partner program required.
Read the spec →Wireless means a screen can sit on a closet shelf, a bathroom cabinet, or a hallway hook — doing one job well, without running a cable. A handful we use ourselves.
Forecast while you dress, rain radar as you leave. Two tags, same morning routine, no phone required.
A 7.3″ Spectra 6 panel on a wireless frame. The sender dithers your photos to the palette; the screen just paints what arrives.
Glance during the morning routine and you know whether hayfever is about to ruin the day.
Tag with morning + evening buttons, so the source of truth lives where the meds live.
For people working from home, placed wherever you tend to lose track of time.
Glance on your way past and you know whether to hold off on the dishwasher until prices drop.
Pick a supported screen from our hardware guide, or wire a dev board and panel yourself. Either way: flash OpenDisplay firmware in the browser, send a test image, then connect your sender.
Build your own
A supported dev board (ESP32-S3/C3/C6, nRF52840) and any compatible e-paper panel, or a ready-made screen from the guide above.
02 StepThe Toolbox installs firmware over USB, picks a preset for your panel, and tunes settings. No IDE required.
03 StepPush an image over Web Bluetooth, straight from the browser, end-to-end, before adding any sender to the loop.
04 StepOnce the screen is proven, point Home Assistant or any OpenDisplay-compatible sender at it.
Web Bluetooth + Web Serial · Firefox, Chrome, Edge
Why BLE boards can run for years on a coin cell — and why we don't recommend battery power on ESP32. Adjust the inputs below using measured panel data where available.
Not recommended for battery use. ESP32 idle draw (~80 mA) is far higher than BLE MCUs, use USB power, or pick a BLE board in our hardware guide.
Approximation using measured panel refresh energy where available. Real-world numbers vary with temperature and BLE overhead. Use the full calculator for other displays. We currently do not recommend battery-powered operation on ESP-based displays. Open full calculator →
Home Assistant is the reference sender today. The Python SDK is for everyone else: photo apps, custom dashboards, anything that wants to put a picture on a screen. A picture is a picture; what's in it is up to you.
The sender does the heavy work, including dithering for whatever panel the receiver advertises, so screens can stay cheap, simple, and battery-powered.
OpenDisplay is built around the values the Open Home Foundation stands for. They aren't decorative. They're the constraints that shape every decision about the protocol, the firmware, and the tools.
Senders run locally. Receivers talk to senders over Bluetooth. No cloud sits in the middle reading what's on your wall, and no account is required to use the protocol.
The standard is open and free to implement. Swap the screen, swap the data source, swap the firmware. Hardware vendors and DIY makers ship into the same ecosystem on equal terms.
Server-side rendering keeps receivers low-power. From a coin cell to a frame LiPo, that can mean years on a charge, even on Spectra 6 when updates are sparse.