Back to the workbench
In progress 2 min read

DIY Ereader - OpenPage

A distraction-free, open-source e-reader built on the LilyGo T5-4.7-S3 with AI-powered daily briefs and support for EPUB, TXT, and CBZ.

Built with
Logged
Links
Spec sheet
Display
4.7″ e-paper, 16-level grayscale
Resolution
540 × 960 portrait buffer
MCU
ESP32-S3
Memory
16 MB flash · 8 MB PSRAM
Formats
EPUB · TXT · CBZ
Firmware
C++ / Arduino via PlatformIO

Overview

OpenPage is a dedicated, distraction-free reading device built around the LilyGo T5-4.7-S3 e-paper display.

It is designed to read .epub, .txt, and .cbz files directly from an SD card, offering a high-contrast 4.7-inch display. A standout feature is the “Daily Brief” mode, which uses the OpenAI API to generate and deliver a curated summary of current events straight to the device over WiFi.

Why I built it

I wanted a reading device that was completely under my control—no proprietary stores, no tracking, and no notifications.

The goal was to combine the longevity of e-paper with the extensibility of the ESP32, allowing for features like AI-powered summaries and custom layout engines that commercial devices don’t offer.

Build notes

  • Custom Portrait Pipeline: Developed a rendering pipeline to work in a 540x960 portrait buffer on hardware that is landscape-native.
  • Intelligent Power Management: Implemented a dual-sleep strategy using Light Sleep for instant wake during reading and Deep Sleep for long-term power savings.
  • PSRAM Optimization: Heavy use of the ESP32-S3’s PSRAM to store framebuffers and large EPUB chapters without crashing.
  • AI Daily Brief: Integrates OpenAI’s Responses API with web-search tools to generate offline-readable briefs stored on the SD card.

Parts / Stack

  • Hardware: LilyGo T5-4.7-S3 (ESP32-S3, 16MB Flash, 8MB PSRAM).
  • Firmware: C++/Arduino via PlatformIO.
  • AI: OpenAI API (GPT-4o) for curated content.
  • Storage: SD card for local library and bookmark persistence.

Challenges

  • EPUB Pagination: Creating a fast, memory-efficient pager that handles word wrapping and image placement on an embedded chip.
  • Battery Accuracy: Mapping the non-linear LiPo discharge curve to provide accurate percentage feedback during high-current WiFi tasks.
  • Image Scaling: Implementing a grayscale-aware blitter to scale high-resolution CBZ and EPUB images for the 16-level grayscale display.

What’s next

  • Enhanced Typography: Support for custom fonts and full text justification.
  • WiFi Book Syncing: Wireless delivery of books via a local server or cloud integration.
  • Local Dictionary: Long-press word lookups using an on-device database.
  • UI Polish: Cover art previews in the book picker menu.

Parts list

  • LilyGo T5-4.7-S3 ESP32-S3 dev board with the 4.7″ e-paper panel attached
    ×1
  • microSD card Local library, bookmarks, and cached daily briefs
    ×1
  • LiPo battery Gauged against its real discharge curve, not a straight line
    ×1

Talk shop about this build

Questions, corrections, or "why didn't you just…" — all welcome.