OpenDisplay – open standard for e-paper screens

balloob1 pts0 comments

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...

open screen sender panel opendisplay battery

Related Articles