OpenDisplay: the open e-paper standard
Skip to main content
Your data.
Your screen.
Designed for e-paper.
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.
Get started
Read the spec
What makes it different
An open standard, not a closed platform.
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.
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 →
The sender does the work
Server-side rendering, including dithering and color conversion, keeps receivers cheap, simple, and low-power on battery.
How rendering works →
Open spec, open firmware
The protocol, reference firmware, and browser tools are open source. Implement either side your way — no partner program required.
Read the spec →
What it's actually for
Screens in places a cable can't go.
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.
WED · OUT<br>14°<br>rain in 12m · radar 2km
Closet & front door<br>Weather on the way out<br>Forecast while you dress, rain radar as you leave. Two tags, same morning routine, no phone required.
Side table<br>Picture frame, in six colors<br>A 7.3″ Spectra 6 panel on a wireless frame. The sender dithers your photos to the palette; the screen just paints what arrives.
THU · POLLEN<br>Med<br>grasses · oak
Bathroom shelf<br>Pollen before you commute<br>Glance during the morning routine and you know whether hayfever is about to ruin the day.
MEDS<br>AM ✓ PM ·<br>last 08:14
Meds cabinet<br>Did I take it today?<br>Tag with morning + evening buttons, so the source of truth lives where the meds live.
NEXT · 09:30<br>Standup<br>in 12 min
Kitchen wall<br>Next-meeting reminder<br>For people working from home, placed wherever you tend to lose track of time.
TODAY · ENERGY<br>4.3 kWh<br>peak 12:00 · −8% wow
Hallway<br>Energy used today<br>Glance on your way past and you know whether to hold off on the dishwasher until prices drop.
Get started
Buy a screen, or build one in an afternoon.
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.
What hardware to buy
Open the Toolbox
Build your own
01 Step<br>Pick or buy hardware
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 Step<br>Flash in the browser
The Toolbox installs firmware over USB, picks a preset for your panel, and tunes settings. No IDE required.
03 Step<br>Send your first picture
Push an image over Web Bluetooth, straight from the browser, end-to-end, before adding any sender to the loop.
04 Step<br>Pair with a sender
Once the screen is proven, point Home Assistant or any OpenDisplay-compatible sender at it.
Web Bluetooth + Web Serial · Firefox, Chrome, Edge
Battery
Years on a charge
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.
Panel
Battery<br>2000 mAh
CR2450<br>600 mAh
2× CR2450<br>1200 mAh
LiPo<br>2000 mAh
LiPo<br>4000 mAh
Update interval<br>every 2 h
How often the sender pushes a new picture to the screen.
Chip<br>20 µA standby
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.
● Estimated life
9.0years
9 yr 0 mo · 3,297 days
Refresh draw · 21%<br>10.56 µAh / update<br>38 mC/update · 4.26″ mono
Standby draw · 79%<br>0.48 mAh / day<br>20 µA × 24 h · EFR32BG22 deep sleep
Total daily<br>0.61 mAh / day<br>3,297 days from one charge
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 →
For app developers
Implement once, reach every screen
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.
Read the SDK docs
send_to_tag.py
from opendisplay import OpenDisplayDevice
from PIL import Image
async with OpenDisplayDevice(device_name="OD123456") as device:
await device.upload_image(Image.open("photo.jpg"))
Collaboration partner · Open Home...