Screens & compatibility¶
Tesserae renders a dashboard headlessly and pushes the frame over MQTT; a small client on the other end paints your panel. What panel you can drive comes down to which client you flash and which renderer feeds it.
Panel presets¶
Built-in sizes (Settings → Panel). Pick custom for anything not listed, the dimensions are all that matter to the renderer.
| Preset | Native resolution | Panel |
|---|---|---|
inky_13_3 |
Inky Impression 13.3", 1600x1200 | |
inky_7_3 |
Inky Impression 7.3", 800x480 | |
inky_5_7 |
Inky Impression 5.7", 600x448 | |
inky_4 |
Inky Impression 4", 640x400 | |
waveshare_e6_7_5 |
Waveshare E6 7.5", 800x480 | |
waveshare_photopainter_7_3 |
S3), 800x480 | Waveshare 7.3" PhotoPainter (ESP32 |
waveshare_e6_13_3 |
Waveshare 13.3" Spectra 6 (ESP32), 1200x1600 | |
custom |
any (set width + height) | anything the inky / Waveshare path drives |
Renderers¶
A renderer turns the composition PNG into the exact bytes a client wants. Each ships as a drop-a-folder plugin under renderers/<id>/.
| Renderer | Output | Target client(s) | What it's for |
|---|---|---|---|
esp32_bin |
.bin |
tesserae-esp32-bin-client (13.3" Waveshare) tesserae-photopainter-7.3-bin-client (7.3" PhotoPainter) |
Composition PNG packed into the Waveshare E6 4-bpp buffer the ESP32 firmware streams to SPI. |
pi_bin |
.bin |
tesserae-pi-bin-client | Composition PNG packed into the panel-native 4-bpp buffer the .bin Pi client consumes. |
pi_png |
.png |
tesserae-pi-png-client | Composition PNG, rotated to the Pi client's landscape-native pixel grid. |
trmnl_png |
.png |
tesserae-trmnl-client | Composition PNG fitted to the device's panel size, then quantised to 1-bit black/white with the selected dither. |
Device kinds¶
The bundled client kinds Tesserae knows how to talk to. A flashed client announces itself on tesserae/<device-id>/status and shows up under Settings → Devices → Discovered. See Install a client and Set up a device.
| Device kind | Default panel | Renderers | What it is |
|---|---|---|---|
esp32_client |
800×480 | esp32_bin |
Battery-powered ESP32 firmware that subscribes to tesserae/esp32/frame/bin (retained), paints the panel via SPI, and goes back to deep sleep. |
pi_bin_client |
1424×1200 | pi_bin |
Raspberry-Pi-side client that consumes the 4-bpp .bin frame. |
pi_png_client |
1424×1200 | pi_png |
Raspberry-Pi-side client that consumes the PNG frame. |
trmnl_client |
800×480 | trmnl_png |
HTTP-polled e-paper client compatible with the TRMNL BYOS protocol. |
What's been tested on real hardware¶
Honest status from the maintainer's own bench. Untested doesn't mean broken, it means nobody's confirmed it yet. Got one working? Open a PR or issue and we'll mark it.
| Renderer | Hardware | Status | Notes |
|---|---|---|---|
esp32_bin |
Waveshare 13.3" Spectra 6 (ESP32-S3-WROOM-2) + Waveshare 7.3" PhotoPainter (ESP32-S3) | Tested | Primary daily driver, battery-powered, deep-sleep. The 13.3" client lives at tesserae-esp32-bin-client; the 7.3" PhotoPainter client at tesserae-photopainter-7.3-bin-client. Both pair with the same renderer; the panel preset (waveshare_e6_13_3 vs waveshare_photopainter_7_3) selects the firmware-native row stride. |
pi_bin |
Pimoroni Inky Impression (Spectra 6 / Waveshare E6) | Tested | Fastest Pi path, packed buffer written straight to inky's _buf. |
pi_png |
Pimoroni Inky Impression (via inky set_image) | Tested | Works on every inky-supported panel; quantises on the Pi each frame. |
trmnl_png |
Amazon Kindle Paperwhite 2 (jailbroken) via KOReader trmnl-display plugin | Tested | 1-bit greyscale PNG fitted to the panel + dithered server-side. Native TRMNL hardware is supported but not yet confirmed here. |