Skip to content

About

A portable device featuring a 2.9-inch 16-level grayscale electronic ink screen

Resources

Stars

9 stars

Watchers

0 watching

Forks

Repository files navigation

中文版本见下方。 This is the English version.

欢迎去electron.liware.top查看产品宣传和功能页面. Welcome to visit electron.liware.top to view product promotion and feature pages.

Liware Electron Reader A high-performance, open-source eBook reader firmware for 2.9-inch E-ink displays, powered by ESP32.

📌 This is a PREVIEW RELEASE (v1.1). The stable v1.2 release is scheduled for September 2026 and will include more polish, performance improvements, and additional features.

✨ Features (Implemented in v1.1) 📚 Library & Reading Scan .txt, .md, .csv files from microSD card (/Novels folder)

Two library views: list and card style

Touch navigation (UP/DN/MID buttons) with wrap-around

Recent reading order – recently opened books appear first

Smart page cache – 350-page RAM window (overlap reuse) reduces SD card access

Dual‑core indexing – Core0 handles file parsing, Core1 refreshes the display, making large books open fast

Instant chapter table – embedded in the index file, no need to scan the whole book

Quick page jump – jump by configurable steps (5, 10, 15, 50, 100, 300, 500 pages)

Font & layout preferences – font size (12/14/16px), font family (Default / Source Han Sans / Montserrat), indent, page number display, status bar mode

Progress saving – multiple layers (RTC RAM, EEPROM, SPIFFS, SD) with wear‑leveling and redundancy

🔋 Power Saving EPD power automatically turns off after a user‑configurable idle time

Deep sleep with clock/calendar/cover wake‑up display

Touch wake‑up (MID button) with a simple UP‑DN unlock sequence

Low‑battery shutdown (<3.4V) with wake‑up on charging

🌐 Connectivity & Time NTP time sync – if RTC is invalid, connects to WiFi to sync time

WiFi configuration portal – when no credentials are saved or sync fails, the device starts an AP (Liware Neutron Gen1) for setup

Automatic time calibration – periodic background sync

🖼️ Image Viewer Supports JPEG, PNG, BMP from /picture folder

Multiple display modes:

Floyd‑Steinberg dithering (1‑bit black/white)

Hardware 4‑gray (fast)

Hardware 8‑gray (antirez‑style temporal dithering)

Hardware 16‑gray (experimental, better quality, slower)

Rotate images by 90° steps

Set any image as sleep screen cover (cached in SPIFFS for instant wake‑up)

📖 Word Learning (Vocabulary) Supports .liwarewords dictionary files (6‑line format)

Study mode – browse words, reveal meanings on MID press

Dictation mode – mark words as “weak” and review them later

Sorting – file order, alphabetical, random

Jump‑to – quick alphabetical jump (ak / hs / t~z and further subdivision)

🔄 Over‑the‑Air (OTA) Updates Online update – checks for new firmware, downloads and installs automatically

Phone‑push update – upload firmware via local web page (electron.liware.top/software)

SD‑card update – place firmware.bin in SD root; the device verifies SHA256 and updates locally (no WiFi needed)

📁 File Import Web‑based file sync – open http:///tools/sync on your phone/PC, upload .txt, .md, .csv, images, or .liwarewords files

Files are automatically sorted into /Novels, /picture, or /Words

📋 Logging & Diagnostics Logs are written to SD (/SystemFile/log/YYYYMMDD/YYYYMMDD_HH.log)

If SD fails, logs are temporarily stored in SPIFFS and flushed later

Error logs are automatically copied to /SystemFile/log/ErrorData/ for debugging

🚧 What’s NOT yet implemented (but planned for v1.2) Weather forecast – UI placeholder exists

Games – UI placeholder exists

More font engines – better support for non‑Chinese scripts

Performance optimizations – faster indexing and smoother page turns

Additional configuration options – user‑requested tweaks

Bug fixes and overall stability improvements

The v1.2 release (September 2026) will be a polished, production‑ready version.

🛠️ Building from Source Hardware Requirements MCU: ESP32‑D0WDQ6‑V3 (512KB RAM, no PSRAM)

Display: 2.9‑inch E‑ink (GDEW029T5D / UC8151D) – 296×128

Touch buttons: UP (GPIO32), DN (GPIO27), MID (GPIO33)

SD card: 1‑bit SDIO (CLK=14, CMD=15, DAT0=2, CD=37)

RTC: DS1302 (RST=16, DAT=22, CLK=13)

Power: VCC=25 (SD power), EPD=26 (display power, active low)

Software PlatformIO (recommended) – or Arduino IDE with ESP32 core

Libraries (included in lib/ folder):

GxEPD2 – E‑ink driver

U8g2_for_Adafruit_GFX – font rendering

LiwareSmartPrint – fast UTF‑8 printing with LRU cache

TJpgDec – JPEG decoder

pngle – PNG decoder

DS1302 – RTC library

Compilation Steps Clone this repository.

Open the project in PlatformIO (or import into Arduino IDE).

Choose the correct display variant:

If you have the old panel, set -D EPD_T5D_PANEL_VARIANT=0 in platformio.ini (or modify lib/GxEPD2/src/epd/GxEPD2_290_T5D.h).

For the new panel, set EPD_T5D_PANEL_VARIANT=1.

Build and upload to your ESP32.

📖 User Operation Guide Buttons UP – move up / previous item / previous page

DN – move down / next item / next page

MID – select / confirm / open

Long press (≈2.5s) – special actions (see below)

Main Menu (Home) 6 icons: Reading, Gallery, Words, Weather, Games, Settings

Use UP/DN to cycle, MID to enter.

Library (Reading) Browse books from /Novels.

List or Card view (change in Settings).

MID to open a book.

Long‑press MID to enter Settings while reading.

Reading Page UP/DN – turn pages.

Long press UP/DN – open quick jump menu (choose step size, then use UP/DN to jump).

MID – full refresh (cleaner image).

Long press MID – enter Settings.

Gallery (Image Viewer) Browse images from /picture.

MID to open image.

In image view:

UP – rotate clockwise 90°

DN – rotate counter‑clockwise 90°

MID – full refresh

Long‑press MID – exit to gallery

Long‑press MID in gallery – enter image settings (algorithm, contrast, set as cover).

Words (Vocabulary) Select a .liwarewords file to open.

In normal mode:

UP/DN – browse words

MID – full refresh

Long press UP/DN – jump‑to (alphabetical search) if sorted alphabetically.

In dictation mode:

MID – reveal the word and mark it as “weak”.

At the last word, DN goes to the review page.

Long‑press MID in word page – enter word settings (sort, start learning, dictation mode, etc.).

Settings Accessible from the home menu or by long‑pressing MID in library/reading.

Configurable options:

Screen angle (0° / 180°)

Screen‑off timeout

Auto‑sleep timer

Refresh frequency (performance / quality)

Library style (list / card)

Font size, font family, indentation, page numbers, status bar

Sleep screen mode (white / calendar / cover / clock)

Manual sleep (go to deep sleep)

Time sync (manual)

Check for OTA updates

About device (serial number, firmware version, SD usage, etc.)

File import (starts web‑based sync service)

Liware Electron Reader 固件 预览版 v1.1 – 开源电子纸阅读器固件 正式版 v1.2 预计于 2026 年 9 月 发布,届时将带来更多功能与优化。

📖 项目简介 Liware Electron Reader 是一个基于 ESP32 和 2.9 英寸电子纸(E-ink) 的开源阅读器固件。它支持:

阅读 TXT、Markdown、CSV 等文本文件

图片浏览(JPG/PNG/BMP)

单词学习(.liwarewords 词库)

WiFi 时间同步、OTA 在线更新

深度休眠与低功耗管理

本固件为 纯开源项目,采用 GPL-3.0 许可证,欢迎开发者参与贡献。

✅ 已实现功能 📚 书库与阅读 书库扫描:自动扫描 SD 卡 /Novels 目录下的 .txt、.md、.csv 文件

两种显示模式:列表式 / 卡片式(可设置)

排序:按最近阅读时间排序(最近在前)

阅读引擎:

350 页 RAM 缓存窗口(重叠复用,越界重建)

双核索引构建(Core0 处理文件,Core1 刷新屏幕)

支持 目录、快速翻页(步长可调)

字号(12/14/16)、字体(默认/思源黑体/Montserrat)

阅读偏好:首行缩进、页码显示、顶部状态栏内容

进度保存:多重冗余(RTCRAM、EEPROM、SD 卡、SPIFFS 页码表)

🖼️ 图片浏览 支持格式:JPG、PNG、BMP

显示算法:Floyd-Steinberg 抖动 / 4 级灰度 / 8 级灰度 / 16 级灰度

旋转、缩放、对比度/浓度调节

锁屏封面:可设置任意图片为休眠封面(缓存至 SPIFFS,省电)

📖 单词学习 支持 .liwarewords 词库(二进制格式,最多 8192 词)

普通浏览 + 背诵模式(隐藏释义,手动露出,标记待掌握)

排序:按文件顺序 / 字母顺序 / 乱序

跳转至:按首字母快速定位(字母排序下)

进度持久化:掌握状态保存至 SD 卡

⚙️ 系统设置 屏幕角度(0°/180°)

屏幕断电时间(30~120 秒)

自动休眠时间(1~30 分钟)

刷新频次(极速/中档/保守)

时间同步(通过 WiFi 校准 RTC)

OTA 更新(网络下载 / 手机推送)

导入文件(通过局域网网页上传)

关于本机(序列号、版本、SD 容量、MAC、UID)

🌐 网络与 OTA WiFi 配网:AP 模式配置,自动保存凭据

NTP 同步:RTC 无效时自动校准

OTA 更新:

网络下载(http 明文,速度快)

手机推送(局域网 POST 固件)

SD 卡本地更新(匹配远程 SHA256 后直接刷写)

💤 低功耗与休眠 无操作自动断电(EPD 关闭)

深度睡眠(定时唤醒 / 触摸唤醒)

休眠画面可选择:白屏 / 日历 / 封面 / 时钟

❌ 未实现 / 计划中 (v1.2) 天气(主界面入口,目前提示“功能开发中”)

游戏(主界面入口,目前提示“功能开发中”)

蓝牙音乐(硬件预留,暂不支持,后续 OTA 探索)

更多图片格式(如WEBP)

更丰富的阅读统计(阅读时长、速度等)

云端书库同步(规划中)

🕹️ 操作指南 设备配有 三个触摸按键(物理位置可能随屏幕旋转而左右/上下互换):

UP(上)

DN(下)

MID(中间/确认)

基本操作 操作 功能 短按 UP/DN 列表/菜单上下移动,翻页(阅读时) 短按 MID 确认选择,进入子菜单,打开文件 长按 UP/DN 快速滚动(列表/菜单),快速翻页(阅读时) 长按 MID 进入/退出设置菜单,返回上一级 主要页面 主界面:六个图标(阅读、图库、单词、天气、游戏、设置),UP/DN 选择,MID 进入

书库:UP/DN 选书,MID 打开,长按 MID 进入设置

阅读界面:UP/DN 翻页,长按 UP/DN 弹出快速跳转菜单(含目录、快速翻页等)

设置菜单:可调整所有系统参数,按 MID 进入子选项,长按 MID 退出

🛠️ 编译与烧录 硬件平台 主控:ESP32-D0WDQ6-V3 (512KB RAM, 无 PSRAM)

屏幕:2.9 英寸黑白电子纸 (GDEW029T5D, UC8151D) 296×128

触摸:3 个电容按键 (UP=GPIO32, DN=GPIO27, MID=GPIO33)

SD 卡:1-bit SDIO (CLK=14, CMD=15, DAT0=2, CD=37)

RTC:DS1302 (RST=16, DAT=22, CLK=13)

电池:VBUS=34, BAT=35, CHG_STAT=36, FULL_STAT=38

开发环境 推荐使用 PlatformIO (VS Code 插件)

依赖库(已在 platformio.ini 中声明):

GxEPD2 (电子屏驱动)

U8g2_for_Adafruit_GFX (字体渲染)

LiwareSmartPrint (自定义排版引擎)

DS1302 (RTC 驱动)

TJpgDec (JPEG 解码)

pngle (PNG 解码)

ArduinoJson (可选,用于配置)

编译步骤 克隆仓库

用 PlatformIO 打开项目文件夹

根据需要选择屏幕变体(EPD_T5D_PANEL_VARIANT 0 或 1)

编译并上传至 ESP32

📜 许可证 本项目使用 GNU General Public License v3.0,详情请见 LICENSE 文件。

🤝 贡献指南 欢迎提交 Issue、Pull Request 或参与讨论。 请确保代码风格统一,并遵守 行为准则。

📮 联系方式 项目主页:GitHub

作者邮箱:ycy2130631146@163.com

感谢您的关注与支持! 期待您在 v1.2 正式版中见证更多精彩功能。

About

A portable device featuring a 2.9-inch 16-level grayscale electronic ink screen

Resources

Stars

9 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages