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-source firmware · Xteink X3
Tables stay structured. Formulas stay legible. Books open before they finish decoding.
01 / TRY BEFORE FLASHING
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 ↗
02 / THE READING ENGINE
Ferris Reader treats technical material as first-class content—not an edge case.
528 px
792 px
03 / READER CAPABILITIES
Concrete support across parsing, layout, navigation, display, and reopen.
Tables with captions and colspan, image-based formulas, figures, headings, nested lists, blockquotes, emphasis, Greek symbols, and exact fragment targets.
The saved section becomes readable first. Nearby pages and the remaining book decode afterward in bounded background slices.
Nested chapters, breadcrumbs, page jumps, current-chapter feedback, and links to exact EPUB fragments.
Folder browsing, recent books, per-book progress, missing-file cleanup, and cached reopen.
Reading refreshes, periodic ghosting scrubs, four image tones, text smoothing, sleep/wake, clock, and battery status.
Four font sizes, front-button remapping, refresh cadence, image tones, inactivity timeout, and boot orientation.
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
Same X3. Same SD card. Same technical EPUB. User-visible timings over repeated runs.
Bars are layout placeholders—not performance claims. Final results will publish firmware versions, cache state, median, and range.
05 / ASYNC DECODE PIPELINE
Work is split into bounded slices. The foreground stays responsive while Ferris builds a reusable SD-card cache behind it.
FOREGROUND ALWAYS GOES FIRSTYOU KEEP READING WHILE THE LOOP ADVANCES. Input pauses the current slice, gets the foreground, then background decoding resumes where it stopped.
Emulator support exists. Physical-device validation and the grayscale driver are in progress.
Wireless library syncing through a companion Calibre plugin is under development.
07 / WEB FLASHER
Connect an unlocked Xteink X3 over USB-C. The installer verifies compatibility before it writes anything.