Open-source firmware · Xteink X3

Technical books deserve better firmware.

Tables stay structured. Formulas stay legible. Books open before they finish decoding.

Target
ESP32-C3
Memory
256 KB heap
Panel
792 × 528
Engine
Async + cached
DEVICE PROFILEXTEINK_X3 / REV.01
Xteink X3 technical drawing Front elevation with screen, buttons, dimensions, and construction lines. 01 02 01 / E-INKACTIVE PANEL 02 / IMAGEFOUR TONES
FR-X3-792
Try before flashing

01 / TRY BEFORE FLASHING

Try the reader before you install it.

The emulator runs the same deterministic application state machine as the firmware. Browse a library, open a technical EPUB, and test the controls without touching your X3.

Launch live emulator
localhost / ferris-emulator / x3
Ferris Reader emulator showing an illustrated EPUB cover
ACTIVITY readerROTATION portraitREFRESH fast

02 / THE READING ENGINE

Built for the pages that break other firmware.

Ferris Reader treats technical material as first-class content—not an edge case.

03 / READER CAPABILITIES

Technical books are the baseline.

Concrete support across parsing, layout, navigation, display, and reopen.

FORMAT / 01

Technical EPUB support

Tables with captions and colspan, image-based formulas, figures, headings, nested lists, blockquotes, emphasis, Greek symbols, and exact fragment targets.

  • EPUB 2 + EPUB 3
  • Four-tone images
  • Inline formulas
OPEN / 02

Resume-first loading

The saved section becomes readable first. Nearby pages and the remaining book decode afterward in bounded background slices.

NAVIGATION / 03

EPUB contents and targets

Nested chapters, breadcrumbs, page jumps, current-chapter feedback, and links to exact EPUB fragments.

STORAGE / 04

SD-card library and cache

Folder browsing, recent books, per-book progress, missing-file cleanup, and cached reopen.

DISPLAY / 05

X3 e-ink rendering

Reading refreshes, periodic ghosting scrubs, four image tones, text smoothing, sleep/wake, clock, and battery status.

SETTINGS / 06

Fonts, keys, and refresh

Four font sizes, front-button remapping, refresh cadence, image tones, inactivity timeout, and boot orientation.

VERIFICATION / 07

Emulator and device checks

The same deterministic Rust application core runs in the browser emulator and on the X3. UI snapshots cover rendered pixels; hardware benchmarks cover the device.

04 / MEASURED ON THE GLASS

No synthetic victory laps.

Same X3. Same SD card. Same technical EPUB. User-visible timings over repeated runs.

BENCHMARK PLAN / TTFRDeep-book resume → readable pixels
DATA PENDING
0time to readable page →MAX
Stock XteinkBenchmark
CrossPointBenchmark
Ferris ReaderBenchmark

Bars are layout placeholders—not performance claims. Final results will publish firmware versions, cache state, median, and range.

05 / ASYNC DECODE PIPELINE

Start reading now.
The rest catches up.

Work is split into bounded slices. The foreground stays responsive while Ferris builds a reusable SD-card cache behind it.

ONE CORE / ASYNC PIPELINEReadable first. Then decoding keeps advancing behind the page.FOREGROUND ALWAYS GOES FIRST
01OPEN BURSTforeground priority
OPENRead package RESUMESection 21 text TTFRReadable page FOREGROUNDYou start reading
PAGE PRESENTED↓ BACKGROUND LOOP STARTS HERE ↓YIELDS ON INPUT
02 → ∞BACKGROUND LOOPkeeps advancing
05 194204 212IMAGES 223233243↑ INPUT / YIELD253263 END5
  1. 1 Saved section text → readable
  2. 2 Saved-page images
  3. 3 ~5 pages forward
  4. 4 ~2 pages back
  5. 5 Remaining book → SD cache

YOU KEEP READING WHILE THE LOOP ADVANCES. Input pauses the current slice, gets the foreground, then background decoding resumes where it stopped.

06 / ACTIVE DEVELOPMENT

Next on the drawing board.

WIP / 01

Xteink X4

Emulator support exists. Physical-device validation and the grayscale driver are in progress.

WIP / 02

Wi-Fi + Calibre

Wireless library syncing through a companion Calibre plugin is under development.

07 / WEB FLASHER

From browser to book
in one cable.

Connect an unlocked Xteink X3 over USB-C. The installer verifies compatibility before it writes anything.

Locked device?The installer refuses to flash. Ferris Reader does not yet provide a safe recovery path for USB-locked units.
FERRIS FLASH / WEB SERIALSECURE STATE: IDLE
01Browser checkWeb Serial availableREADY
02Connect X3USB-C data cable · device awakeWAITING
03Verify + installUnavailable until device check passesLOCKED

Prototype only—no device access is requested.