Tesserae
Free, open-source dashboard server for e-ink displays. Compose dashboards in a browser, render dithered frames, and push them over MQTT or REST to e-ink panels. Self-hosted, AGPL-3.0, no tracking.
Install firmware on a LilyGo T5 e‑reader using a web browser
Translation pending
AI summary · website content
Developer toolsC · C++GitHub @DaafipOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
The maker's introduction consists of the line above. Read the repository README for more details. Repository README ↗
Loading the full README.
Read the full README ↗[!WARNING]
Although tested by myself, this project was fully coded by AI without human review of the code itself, use at your own risk.
Inspired by Paul Lagier, but his code was only for the Heltec V1 e-ink board, so i took the idea and expanded it to other models with my own twist.
Install from the browser: https://daafip.github.io/esp32-ereader/ (Chrome or Edge, reader on USB; leave "Erase everything" unticked to keep your settings).
Firmware available at the releases or build yourself pixi run fw-build.
Flash with platform io, esptools or pixi run fw-flash
| Board | Flash over USB (at 0x0) | Update over Wi-Fi | Tested? |
|---|---|---|---|
| LilyGo T5-2.13 | t5-reader-x.x.x.bin | t5-reader-x.x.x-ota.bin | Yes |
| LilyGo T5-4.7" S3 | t5-47-reader-x.x.x.bin | t5-47-reader-x.x.x-ota.bin | NO - let me know! |
| M5Stack M5PaperS3 | m5papers3-reader-x.x.x.bin | m5papers3-reader-x.x.x-ota.bin | NO - let me know! |
| M5Stack M5Paper | m5paper-reader-x.x.x.bin | m5paper-reader-x.x.x-ota.bin | NO - let me know! |
| FireBeetle 2 ESP32-C6 + Waveshare 7.5" (home-built) | firebeetle-75-reader-x.x.x.bin | firebeetle-75-reader-x.x.x-ota.bin | Not with a card yet |
| the same without a microSD card | firebeetle-75-flash-reader-x.x.x.bin | over USB only | Yes |
The 4.7" boards and the M5 boards have not run this firmware yet: see
docs/checkpoints.md for what to check. The 7.5" build is a
FireBeetle 2 ESP32-C6 with a Waveshare 7.5" HAT, three buttons and a microSD breakout,
readable in portrait or landscape: docs/hardware-firebeetle-75.md.
Without a card it keeps about 170 pages in its flash (firebeetle-75-flash-reader-x.x.x.bin,
updates over USB only).
Books are typeset ahead of time into 1-bit page images (.t5b), so the reader only
copies pages to the screen. Drop an EPUB or TXT on the reader's Wi-Fi page and your
phone does the typesetting (font, size, margins, hyphenation), or convert on a PC with
pixi run prep book.epub. More in docs/usage.md; hardware notes in
docs/hardware.md, docs/hardware-t5-47.md
and docs/hardware-m5paper.md.
Also on board: chapters, bookmarks, search (on the phone, jumping the reader to a hit), library folders, reading statistics, a lock, sleep screens (book, cover, your own pictures, a square picture beside the book, or the page itself), a status bar that can shrink or hide, OpenDyslexic and bionic reading, English and Dutch menus, and settings, home Wi-Fi and factory reset from the phone.
The FireBeetle 7.5" can run ESPHome too (a Home Assistant dashboard, say). The Android
app fw-switch-x.x.x.apk from the releases
puts either firmware on it over a USB-C OTG cable, no PC needed: choose the two
firmware files once (the reader's firebeetle-75-flash-reader-x.x.x.bin and ESPHome's
factory image), then tap Install. It resets the board into download mode itself (or
asks for BOOT + RST when it sleeps), writes only what changed, checks it and restarts
the board. Android 10 or later, on a phone with USB OTG; build it yourself with
pixi run android-build. Releases signed with the project's key are also in its own
F-Droid repository, https://daafip.github.io/esp32-ereader/fdroid/repo (the release
notes give the link with the key's fingerprint), so F-Droid keeps the app up to date.
How it works, its limits, and how to keep the books in the flash across switches:
docs/firmware-switcher.md.
Hardware and display drivers:
Firmware build and flashing:
Book conversion:
Tooling: pixi runs everything (pixi run --list).
GPL-3.0-or-later, see LICENSE. The firmware links bb_epaper (GPL-3.0-or-later), so the firmware images are under the GPL as well.
Third-party parts keep their own licences:
firmware/src/fastepd_panel.cpp contains its waveform table)firmware/lib/qrcodegen: MITfirmware/include/fonts) and SIL OFL 1.1 (Literata, Atkinson Hyperlegible,
Merriweather, OpenDyslexic; OpenDyslexic is shipped unmodified, as its Reserved
Font Name requires)The reader serves the full font licences and the pattern notices at /licenses.txt
on its Wi-Fi page.