Skip to content

The Firmware Directory

Every Xteink X3 & X4 firmware, plugin, and flashing method — in one place

The Xteink ecosystem moves fast and the names blur together. This is the owner-friendly map: what each firmware is, who it is for, how to flash it, and how to do it without bricking a locked device. Every repo, version, and step below was checked against primary sources.

Verified June 15, 2026. Not affiliated with Xteink. Flashing custom firmware can void your warranty.

Start here: which firmware?

Pick the row that sounds like you. When in doubt, the answer is CrossPoint.

The full directory

Seventeen firmware paths for the X3 and X4. supported · ~ partial/unverified · not supported.

Firmware Type X3 X4 Version Risk Best for
CrossPoint Reader Main v1.3.0 Medium The default — best all-round reader
CrossInk Reader fork v1.3.3 Medium Reading stats, Bionic Reading, glyph fixes
Papyrix Reader fork v1.24.1 High FB2 / Markdown / HTML, multi-script
CrossPet Reader fork v1.8.3 Medium Vietnamese UI + gamified virtual pet & games
SUMI Reader fork v0.6.3 Medium Offline apps, dictionary, Lua plugins, emulator
inx Reader fork v1.0.14 Medium Clean reader: annotations + image rendering
CrumBLE Reader fork ~ v4.2.1 Medium BLE page-turner remote + collections
CrossPoint CJK Localization v0.3.4 Medium Chinese / Japanese reading + UI
CrossPoint KO Localization v1.3.0-ko Medium Korean reading + UI (also runs on X3)
Microreader Minimal 2.0-dev Medium Minimal, distraction-free EPUB-only
AvesO3 Niche ~ v1.2.2 High AO3 fanfiction workflow
Biscuit Experimental v0.1.0 High ESP32 "pocket computer" multi-tool
doom-xt4 Experimental v1.0.2 High A DOOM-style raycaster (novelty)
PlusPoint Experimental ~ preview High Experimental user-installable JS apps
TernOS Experimental v0.4.0 High Rust OS w/ PalmOS emulation (needs .trbk books)
TRMNL Repurpose High Turn the X4 into an e-ink dashboard (not a reader)
Stock Xteink Stock None Out-of-box simple reader (what you start on)

Risk is for a non-technical owner: web-flasher installs on unlocked devices are low-risk and revertible; "High" usually means experimental, single-maintainer, or dangerous on locked units.

The firmware, in depth

Benefits, the recommended install path, and the one caveat that matters for each.

CrossPoint Reader

v1.3.0 · ~5.2k★ · MIT

The main community firmware

X3 ✓ X4 ✓ Risk: Medium

Best for: Almost everyone. If you are not sure what to flash, flash this.

  • A real EPUB 2/3 engine: justification, hyphenation, footnotes, images, bookmarks, go-to-percent.
  • Wireless book transfer (web upload UI, WebDAV, OPDS, Calibre wireless) plus KOReader progress sync.
  • Custom fonts, themes (Classic, Lyra, Lyra Extended, RoundedRaff), Focus Reading, RTL, 24+ UI languages.
  • On-device OTA + SD-card updates. Tilt-to-turn pages is an X3-only bonus (gyroscope).
CrossPoint Reader firmware running on the Xteink
CrossPoint’s reader view on the device — justified text, footer with progress and battery.

Recommended install — web flasher

  1. 1 Connect the X3/X4 by USB-C and wake it (a sleeping device won’t appear as a serial port).
  2. 2 In Chrome or Edge, open crosspointreader.com/#flash-tools.
  3. 3 Pick your model (X4 480×800 or X3 528×792) and choose the official CrossPoint release.
  4. 4 Flash, pick the device in the serial-port prompt, and wait ~1–2 min. Coming from stock you may need to flash twice.
  5. 5 When it finishes: press Reset, then hold Power 3–5s to boot. A blank screen here is almost always the missing reboot, not a brick.

Heads-up: Locked retail (AliExpress) units must be unlocked first — see the locked-device section. No PDF rendering by design.

CrossInk

v1.3.3 · MIT

Typography + reading stats fork

X3 ✓ X4 ✓ Risk: Medium

Best for: Readers who want fonts, reading statistics, and Bionic Reading — and one of the two forks officially supported on locked devices.

  • Reading statistics: books read, time, sessions, pages/minute, with cross-device sync and backup.
  • Bionic Reading and Guide Dots modes; extra reader fonts (ChareInk, Lexend Deca, Bitter).
  • Synthetic-glyph fallback that fixes missing Unicode characters that render as diamonds on stock.
  • EPUB dark mode, Minimal and Lyra Carousel themes, configurable controls.
CrossInk firmware running on the Xteink
CrossInk’s Reading Stats screen — sessions, reading time, pages/min, per book and all-time.

Install — web flasher (Custom .bin)

  1. 1 Download a firmware-*.bin from the CrossInk releases page.
  2. 2 Open crosspointreader.com/#flash-tools and select your model.
  3. 3 Choose the "Custom .bin" option, select the downloaded file, and flash.

Heads-up: A solo "personal" fork — not listed as a default in the flasher (use Custom .bin). Keep folders under ~200 files for speed.

Papyrix

v1.24.1 · MIT

More formats, one binary for both devices

X3 ✓ X4 ✓ Risk: High

Best for: People whose library is FB2, Markdown, or HTML — and who have an unlocked device.

  • Adds FB2, Markdown (.md), and HTML on top of EPUB 2/3 and native XTC/XTCH.
  • One firmware image auto-detects whether it is on an X3 or X4 (I²C panel probe).
  • Knuth–Plass justification, hyphenation, and CJK / Thai / Arabic shaping.
  • WiFi + Calibre wireless transfer; dedicated cross-platform papyrix-flasher CLI.
Papyrix firmware running on the Xteink
Papyrix on the device — book cover view with the Read / Files / Sync / Settings bar.

Install — papyrix-flasher (USB)

  1. 1 Download papyrix-flasher for your OS and the latest firmware.bin from releases.
  2. 2 Connect the device over USB (must be unlocked).
  3. 3 Run: papyrix-flasher flash firmware.bin — it auto-detects, verifies (MD5), and reboots.

Heads-up: High risk: Papyrix has NO OTA. Flashing it on a USB-locked unit can leave no update or recovery path (see issue #120). Unlocked devices only.

CrossPet

v1.8.3 · MIT

Gamified reading + Vietnamese

X3 ✓ X4 ✓ Risk: Medium

Best for: Readers who want a fun, feature-dense build — and the broadest Vietnamese support.

  • A Tamagotchi-style virtual chicken that grows as you read (~20 pages feeds it); streaks and stats.
  • Mini-games (chess vs. AI, Sudoku, 2048, Minesweeper), flashcards with spaced repetition, weather, Pomodoro.
  • Full Vietnamese localization with diacritic fonts; custom SD-card fonts.
  • Runs on X3 as well as X4, with KOReader sync and OTA.
CrossPet firmware running on the Xteink
CrossPet’s Vietnamese home screen — recent books, “Gà Ảo” (virtual chicken), apps and file tools.

Install — web flasher

  1. 1 Connect the X3/X4 by USB-C and unlock it.
  2. 2 Open the flasher at xteink.dve.al and flash the CrossPet firmware (or grab a .bin from releases).
  3. 3 Optional: drop custom font .bin files into /fonts/ on the SD card.

Heads-up: Feature-heavy and playful rather than minimal. The BLE remote build is beta and disables some rendering to fit RAM.

Microreader

2.0-dev · GPL-2.0

Deliberately minimal, EPUB-only

X3 ✕ X4 ✓ Risk: Medium

Best for: Minimalists who want a fast, focused EPUB reader and are comfortable with PlatformIO.

  • Drop EPUBs anywhere on the SD card — it scans recursively from the root, no folder structure needed.
  • Liang hyphenation across 9 languages; custom TTF/OTF fonts via a command-line font script.
  • No apps, sync, games, or BLE — purely a book reader, kept tight to fit the ESP32-C3’s RAM.
  • Desktop SDL2 emulator for tinkering without hardware.

Install — PlatformIO (no web flasher for firmware)

  1. 1 git clone https://github.com/CidVonHighwind/microreader
  2. 2 Connect the X4 by USB-C and note its serial port.
  3. 3 Build & flash: pio run -t upload (then transfer books over Web Serial, Calibre, or CLI).

Heads-up: X4 only. Installing/updating the firmware needs PlatformIO + a cable — a higher barrier than the one-click forks. Dev-tagged, not a polished stable build.

AvesO3

v1.2.2 · MIT

For AO3 fanfiction readers

X3 ~ X4 ✓ Risk: High

Best for: Heavy Archive of Our Own readers with an unlocked X4.

  • An AO3-styled library browser with per-fic status icons (unread / reading / waiting / new chapter / finished).
  • Checks AO3 for and downloads new chapters on-device over WiFi — no PC or sync tool needed.
  • Pin longfics to the homescreen so oneshots don’t bury them.
  • Built on CrossPoint’s reading engine, so the core reading experience is solid.
AvesO3 firmware running on the Xteink
AvesO3’s AO3 Library — fics with metadata squares, tags, chapter counts and update dates.

Install — web flasher (unlocked X4 only)

  1. 1 Download AvesO3_1_2_2.bin from the AvesO3 releases page.
  2. 2 Connect an unlocked X4 by USB-C and open xteink.dve.al.
  3. 3 Flash the .bin. To revert: flash official firmware, or "Swap boot partition" at xteink.dve.al/debug.

Heads-up: Very new, single-maintainer, Issues disabled. Requires an UNLOCKED device — flashing via the unlocker tool is untested. X3 is unverified.

SUMI

v0.6.3 · X3 + X4

Offline apps, dictionary & Lua plugins

X3 ✓ X4 ✓ Risk: Medium

Best for: Tinkerers who want a do-it-all offline device — and the most genuine “plugin” story in the scene.

  • A Lua plugin framework for user-written extensions — the closest thing to a real, scriptable plugin system alongside PlusPoint.
  • ~20 built-in apps: chess, sudoku, notes, even a Game Boy emulator (“SumiBoy”).
  • A StarDict dictionary with fuzzy matching for offline word lookup; reading stats and achievements.
  • Offline-first by design — no WiFi at all. Built on Papyrix + CrossPoint, runs on both X3 and X4.
SUMI firmware running on the Xteink
SUMI’s home screen — the signature sumi-e ink-art border, with Files and Menu controls.

Install — web flasher

  1. 1 Connect an unlocked X3/X4 by USB-C in Chrome or Edge and wake it.
  2. 2 Open sumi.page/flasher and pick your model.
  3. 3 Flash, then reboot (Reset, hold Power 3–5s). Books and dictionaries go on the SD card.

Heads-up: Offline by design — there’s no WiFi transfer, so you’ll load books via SD card or the flasher’s file tools. A younger project than CrossPoint, but actively maintained.

Localization forks

CrossPoint forks that add non-Latin reading and native menus.

CrossPoint CJK · v0.3.4 · X4

Chinese / Japanese reading + UI with external CJK fonts and typography fixes. Simplified and Traditional builds. repo

CrossPoint KO · v1.3.0-ko · X3 + X4

Korean UI + full Hangul/Hanja rendering. Notably, it runs on the X3 as well as the X4 (the CJK build is X4-only). Actively maintained. repo

More reader forks worth knowing

Active CrossPoint/CrossInk forks with a clear niche.

inx · v1.0.14 · X4

A clean-reading CrossPoint fork: bookmarks, annotations, KOReader sync, native image rendering (JPEG/PNG/BMP), and a folder library with favorites. Flashes via xteink.dve.al. repo

CrumBLE · v4.2.1 · X4 (X3 WIP)

A CrossInk fork whose standout is real Bluetooth page-turner remote support, plus a Collections system, configurable bookshelf grid, and dictionary lookup. repo

Experimental & just-for-fun

Real, verified projects — but novelty or bleeding-edge. Treat as high-risk and X4-only unless noted.

Biscuit firmware on the Xteink X4 — a tile dashboard with Network, Recon, Security, Comms, Tools, Games, System and Reader app categories
Biscuit turns the X4 into a tile-dashboard “pocket computer” — and still keeps the reader.
  • Biscuit — turns the X4 into a tile-dashboard "pocket computer" (tools, comms, games) that keeps the reader. v0.1.0 beta. repo
  • doom-xt4 — a DOOM-sprite raycaster (its own README admits it isn’t "real DOOM"). A fun demo, not a game. repo
  • PlusPoint — experiments with user-installable JavaScript apps: the closest thing to a real on-device plugin system. repo
  • cpr-vcodex — a CrossPoint fork that hardened the Lyra Carousel cover view and button-driven formatting (bold, bionic, dark mode). repo
  • TernOS — a from-scratch Rust OS (not a CrossPoint fork) that emulates PalmOS to run legacy apps. Reads books only after converting them to its own .trbk format. repo
  • TRMNL — vendor firmware that turns the X4 into an e-ink info dashboard (calendar/weather), replacing the reader. A different use entirely. flasher

How to flash: the five methods

Most forks share CrossPoint’s flash layout, so these methods apply across the whole directory. Start with the web flasher unless a project says otherwise.

Before you start — pre-flight checklist

  • A desktop computer with Chrome or Edge (Firefox works too; Safari does not).
  • A USB-C DATA cable — charge-only cables silently fail.
  • The device awake, on its home screen — not asleep.
  • Confirmed unlocked — or read the locked-device brief below first.
  • ~5 minutes (add ~25 min if you save a full-flash backup first).

Which path is mine?

  1. 1. Can the web flasher see your device? If yes, you’re unlocked → use the web flasher (method 1) and pick any firmware.
  2. 2. It can’t connect at all? Treat it as locked. Only CrossPoint & CrossInk are supported.
  3. Locked + X3 → SD-card method or OTA Unlocker.
  4. Locked + X4 → OTA Unlocker only. Never the X3 SD trick.

1 · Web flasher (WebSerial)

~5 min Easy

Easiest · revertible · the default

Unlocked X3/X4. Use desktop Chrome or Edge (Firefox also works); Safari is not supported — it has no WebSerial.

  1. 1 Use a USB-C DATA cable (not charge-only) and wake the device — a sleeping reader never registers as a serial port. This is the #1 mistake new owners make.
  2. 2 Open crosspointreader.com/#flash-tools (or xteink.dve.al) in Chrome/Edge.
  3. 3 Pick your model and firmware, click flash, and select the device in the browser’s serial picker.
  4. 4 When flashing finishes, press Reset, then hold Power 3–5s to boot. (A blank screen here usually just means it hasn’t been rebooted yet.)
  5. 5 Tip: before flashing, open "Full flash controls → Save full flash" to back up (~25 min) so you can restore the exact prior state.

2 · esptool (command line)

~10 min Technical

For technical users / custom builds

Unlocked devices, Python installed.

  1. 1 pip install esptool
  2. 2 Download firmware.bin from the project’s GitHub releases.
  3. 3 Find the port (macOS /dev/cu.usbmodem… · Linux /dev/ttyACM0).
  4. 4 esptool.py --chip esp32c3 --port <PORT> --baud 921600 write_flash 0x10000 firmware.bin
  5. 5 Use address 0x10000 (the app) — never 0x0, which would overwrite the OEM bootloader.

3 · SD-card update

~5 min Easy

Works without a PC · rescues locked X3s

Any device whose firmware/bootloader supports SD update (added in CrossPoint 1.3.0). The locked-device rescue path for the X3 — but NOT the X4.

  1. 1 Copy the SD build (update.bin) to the SD card root.
  2. 2 Insert the card and plug in USB power.
  3. 3 Trigger the bootloader flash with the button combo from the project’s docs — community guides use Power + Up (top-left button on the X3). Verify the combo for your firmware.
  4. 4 The device detects update.bin and flashes from the card.

4 · OTA / OTA Unlocker

~10 min Easy

On-device updates · rescue for locked units

WiFi-connected devices. The Unlocker installs CrossPoint/CrossInk over the air on USB-locked X3 AND X4 units.

  1. 1 Normal OTA: Settings → System → Check for updates pulls the latest GitHub release.
  2. 2 Locked units: install the CrossPoint OTA Unlocker (macOS/Windows/Linux/RPi) from crosspointreader.com/unlocker.
  3. 3 It runs a local hotspot that serves CrossPoint/CrossInk during the device’s update check.
  4. 4 This does NOT re-enable USB flashing — only CrossPoint and CrossInk are supported this way.

5 · PlatformIO (build from source)

~30–45 min Developer

For developers and contributors

Anyone building/modifying firmware.

  1. 1 git clone --recursive <repo>
  2. 2 pio run --target upload (builds, flashes, and you can monitor serial logs).
  3. 3 This is the required path for Microreader, and how every fork is built before release.

Plugins & customization

An honest note: CrossPoint itself has no on-device plugin store — and that is by design. What people call "plugins" on CrossPoint is really a set of SD-card and desktop extensions (below). If you want actual scriptable, installable plugins, two forks chase that: SUMI (Lua) and PlusPoint (JavaScript).

Custom fonts (.cpfont)

The real "plugin" layer for CrossPoint. 23+ prebuilt families (Literata, Merriweather, Atkinson Hyperlegible, IBM Plex…). Download over WiFi on-device, upload via the web UI, or copy to /.fonts/ on the SD card. Build your own from any TTF with the font builder.

crosspoint-fonts

Themes

Selectable built-in UI themes — Classic, Lyra, Lyra Extended, RoundedRaff. (Custom user themes are not installable; you pick from the built-ins.)

crosspointreader.com

Sleep-screen images

Drop 24-bit BMPs (480×800 for X4, 528×792 for X3) into /.sleep/ on the SD card, or a single sleep.bmp in the root, for custom wallpapers/screensavers.

guide

Calibre plugin

A desktop Calibre device driver that sends EPUBs to the reader over WiFi/WebSocket with auto-discovery. Installed into Calibre, not the device.

calibre-plugins

.xtc / .xtch converters

Convert books to the device-native format for the fastest rendering and control over grayscale: bigbag/epub-to-xtc-converter (web + CLI) and CrazyCoder/cr2xt (desktop). For manga, comics, and PDFs, varo6/xtcjs adds dithering and spread-splitting.

xtcjs (manga/PDF)

SUMI Lua plugins

The most genuine plugin system in the scene: SUMI firmware ships a Lua scripting framework for user-written extensions, alongside ~20 built-in apps and a dictionary. If you actually want “installable plugins”, this is it.

SUMI

PlusPoint JS apps (experimental)

The other real plugin attempt: an experimental fork running user-installable JavaScript apps (via a tiny embedded JS engine). Bleeding-edge and not for daily use yet.

pluspoint-reader

Before you flash: the locked-device safety brief

This is the part that actually bricks devices. Around April 2026 Xteink began shipping some units with USB flashing disabled. Read this before touching a flasher.

Is my device locked?

There’s no reliable way to tell from the box — weak hints are an outer-box barcode sticker or a plain brown package. The only sure test is to connect over USB and try to flash. Units bought direct from xteink.com or Amazon are reported unlocked; AliExpress and other grey-market imports are the ones that have shipped locked. Correlated, not guaranteed — re-verify at purchase time.

If it is locked

X3: two routes — the SD-card method (rename a build to update.bin, hold the left button + power) or the OTA Unlocker. X4: the OTA Unlocker only — do not improvise the X3 SD trick on an X4, which can brick it. Either way, only CrossPoint and CrossInk are supported on locked units.

The brick risk is real

Flashing unsupported firmware (e.g. Papyrix, which has no OTA) on a locked device can leave no update or recovery path at all. On a locked unit you also lose the USB safety net, so there is no clean rollback if an SD/OTA flash fails. Keep a known-good firmware.bin on the SD card.

Software lock or hardware fuse?

Unconfirmed. The working software workarounds (Unlocker, SD method) suggest the lock lives at the stock-firmware/update layer rather than a permanent silicon eFuse — but no teardown has proven it. Assume some risk and don’t treat "unlocked" as guaranteed reversible.

Golden rules: back up the full flash first (on unlocked units), use a USB-C data cable, wake the device before connecting, only flash CrossPoint/CrossInk on locked units, and never write esptool to 0x0 — use 0x10000.

How to go back (revert & recover)

Custom firmware is reversible on an unlocked device. From easiest to last-resort:

  1. 1Re-flash stock — the same web flasher offers the official Xteink firmware. Pick it and flash.
  2. 2Restore your backup — if you saved a full flash, “Write full flash from file” puts the device back exactly as it was.
  3. 3Swap boot partition — a quick rollback to the previous firmware at xteink.dve.al/debug.
  4. 4Bootloop? Press Reset, then hold Back + Power to reach the home screen. Crashy after a flash? Delete .crosspoint on the SD card.

The hard truth: on a locked unit you lose the USB safety net — unsupported firmware can leave no recovery path. That’s why locked units stick to CrossPoint/CrossInk.

X3 vs X4: what changes for flashing

  • Resolution differs — X3 is 528×792, X4 is 480×800. Pick the right model in the flasher, and size sleep-screen images to match.
  • Some firmware is X4-only — Microreader, AvesO3, Biscuit, doom-xt4, TernOS, TRMNL and the CJK build don’t run on the X3. CrossPoint, CrossInk, Papyrix, CrossPet, SUMI and KO cover both.
  • Tilt-to-turn is X3-only — the X3’s gyroscope can turn pages by tilting; the X4 has no equivalent.
  • Locked-device rescue differs — locked X3 can use the SD method or the Unlocker; a locked X4 must use the Unlocker, and the X3 SD trick will brick it.

Quick answers

The flasher doesn’t see my device.

Almost always: it’s asleep (wake it first), a charge-only cable (use a data cable), or the wrong browser (Chrome/Edge, or Firefox — not Safari). If it truly never connects, it’s likely locked.

Do I really need to flash twice?

Coming from stock firmware, yes — it’s common to flash once, reboot, and flash again before CrossPoint appears. Not a bug.

Will flashing erase my books / SD card?

Flashing writes the firmware, not your SD card. Your books stay on the card. Custom firmware does build its own cache folder (.crosspoint) on the SD.

Can I switch between forks later?

On an unlocked device, freely — just flash another build. On a locked device you’re limited to CrossPoint/CrossInk and should not flash anything else.

Does this void my warranty?

Xteink officially restricts custom firmware and says it can void warranty and risk hardware damage. Flash at your own risk; buying direct keeps you unlocked and supported.

What’s the safest first move?

Flash CrossPoint via the web flasher on an unlocked device, after saving a full-flash backup. It’s revertible and the best-supported path.

"I have this problem" → the fix

The specific community complaints behind this page, and the firmware that solves each.

The problem What fixes it Firmware
Stock firmware feels basic / clunky Flash CrossPoint — it is the whole reason the scene exists. CrossPoint
Missing Unicode characters show as diamonds CrossInk added synthetic-glyph fallback rendering (PR #104). CrossInk
My books are FB2 / Markdown / HTML Papyrix parses those formats natively. Papyrix
I read Chinese / Japanese / Korean Use the CJK or KO localization forks (KO also runs on X3). CJK / KO
I want reading stats and Bionic Reading CrossInk tracks sessions, pages/min, and adds Bionic mode. CrossInk
Buttons should toggle bold / font size / dark mode CrossPoint & forks add button remapping; cpr-vcodex pushed this further. CrossPoint forks
Keeping new AO3 chapters in sync is a chore AvesO3 checks for and downloads new chapters on-device. AvesO3
I just want to dump EPUBs and read Microreader scans the whole SD card — no folders, no fuss. Microreader
I want offline apps, a dictionary, or real plugins SUMI is offline-first with ~20 apps, a dictionary, and a Lua plugin framework. SUMI
I want a Bluetooth page-turner remote CrumBLE (a CrossInk fork) adds BLE remote support and collections. CrumBLE
My device shipped USB-locked and won’t flash X3: SD-card method or the OTA Unlocker. X4: the OTA Unlocker only — never the X3 SD trick. See safety

Keep going

Sources include each project’s GitHub repo, README, and releases, plus crosspointreader.com and community flashing guides, verified June 15, 2026. Device screenshots are from each project’s own repository or project site, used to show the firmware running. PocketInk is independent and not affiliated with Xteink. Firmware names and versions change quickly — check the linked repos for the latest.