How to Flash CrossPoint on the Xteink X3 & X4 (Without Bricking It)
A careful, owner-tested walkthrough for installing CrossPoint Reader on the Xteink X3 or X4 — the web flasher, the SD-card and esptool paths, what to do on a locked device, and how to recover if a flash fails.
CrossPoint Reader is the reason most people get excited about the Xteink in the first place. It turns a minimal, button-only pocket reader into a genuinely good EPUB machine — wireless book uploads, KOReader sync, custom fonts, themes, and reading controls the stock firmware never had. It is open source, free, and runs on both the X3 and the X4.
It is also a firmware flash, which means a careless step can scare you or, on a locked device, leave you stuck. This guide is the careful version. The goal is not to make flashing sound scary — for most people it is a two-minute browser task — but to make sure you do the one check that matters before you start, and know exactly how to recover if something goes wrong.
If you only remember one thing: find out whether your device is locked before you touch a flasher. Everything else follows from that.
Before You Start: The One Check That Matters
Around April 2026, Xteink began shipping some units with USB flashing disabled — “locked” devices. The flashing path you use depends entirely on whether you have one.
- Units bought directly from xteink.com or US Amazon are reported to ship unlocked and accept the easy web-flasher path.
- AliExpress, Taobao, and other grey-market units are the ones that have shipped locked.
This is a strong correlation, not a guarantee, and there is no reliable way to tell from the packaging. The only certain test is to connect the device over USB and see whether the web flasher can talk to it. So the honest first step is: try the web flasher (below). If it connects, you are unlocked and you are done in two minutes. If it cannot see the device at all, treat it as locked and jump to Flashing a Locked Device.
A second, optional-but-smart step on an unlocked device: back up first. In the web flasher, open Full flash controls → Save full flash to download a complete backup (it takes ~25 minutes). If anything ever goes wrong, you can write that file back. Locked devices cannot do this, which is exactly why they are riskier.
Method 1: The Web Flasher (Start Here)
This is the easiest path and the one almost everyone should use. It runs in your browser over WebSerial, so there is no software to install.
You need desktop Chrome or Edge (Firefox and Safari do not reliably support WebSerial), a USB-C data cable (not a charge-only cable), and a few minutes.
- Plug the X3 or X4 into your computer with a USB-C data cable, then wake the device and leave it on the home screen. This is the single most common mistake: a sleeping reader does not register as a serial port, so the browser never sees it.
- In Chrome or Edge, go to crosspointreader.com/#flash-tools.
- Select your model — X4 (480×800) or X3 (528×792).
- Choose the official CrossPoint release. (If you are installing a fork like CrossInk, pick Custom .bin and select the
.binyou downloaded from that project’s releases page.) - Click flash and pick your device in the browser’s serial-port prompt. The tool validates the partitions, downloads, and writes — about one to two minutes.
- When it finishes, unplug, press Reset, then hold Power for ~3 seconds to boot. Coming from stock firmware, you may need to flash twice before CrossPoint appears the first time. That is normal.
That’s it. If the device booted into CrossPoint, skip ahead to First Boot.
Method 2: esptool (Command Line)
If you build firmware yourself or want a specific version, esptool is the technical path. It only works on unlocked devices.
# 1. Install esptool
pip install esptool
# 2. Download firmware.bin from the project's GitHub releases page,
# then find your serial port:
# macOS -> /dev/cu.usbmodemXXXX
# Linux -> /dev/ttyACM0 (run `dmesg` right after plugging in)
# 3. Flash to 0x10000 — the app slot. NEVER write to 0x0.
esptool.py --chip esp32c3 --port /dev/ttyACM0 --baud 921600 \
write_flash 0x10000 /path/to/firmware.bin
The address matters. 0x10000 writes the application over the existing OEM bootloader. Writing to 0x0 would overwrite the bootloader itself — the fastest way to brick the device. When in doubt, use the web flasher instead.
Method 3: The SD-Card Path
CrossPoint 1.3.0 added an SD-card update path, and it is the key to flashing without a computer — and the supported rescue route for a locked X3.
- Download the SD build, named
update.bin, and copy it to the root of the SD card. - Insert the card and plug in USB power.
- Hold Power + Up together on the X4 (on the X3, use the top-left button instead of Up).
- The OEM bootloader detects
update.binand flashes CrossPoint from the card.
This is also handy for routine updates: drop the new update.bin on the card and repeat.
Flashing a Locked Device
If the web flasher cannot see your device no matter what cable, port, or browser you try, it is locked. You still have options — but the rules are stricter, and only CrossPoint and CrossInk are supported on locked units.
- Locked X3: use the SD-card method above. This is the documented, working rescue path for locked X3s.
- Locked X4: the SD trick is not a safe substitute here — attempting the X3 SD workaround on an X4 can brick it. Instead use the official CrossPoint OTA Unlocker (download it for macOS, Windows, Linux, or Raspberry Pi from crosspointreader.com/unlocker). It turns your computer into a local WiFi hotspot that intercepts the device’s update check and serves CrossPoint over the air.
Two warnings that are worth repeating, because this is where devices actually die:
Do not flash unsupported firmware on a locked device. Papyrix, for example, removed OTA support — install it on a locked unit and you can be left with no way to update or recover at all.
And: the OTA Unlocker does not re-enable USB flashing. Updates stay OTA-only afterward, and you keep using the unlocker for future versions.
Is the lock a removable software flag or a permanent hardware fuse? Honestly, nobody has published a teardown that proves it. The fact that software workarounds exist suggests it lives at the firmware/update layer rather than a burned silicon eFuse — but assume some risk and don’t treat “unlocked” as guaranteed reversible.
First Boot: Do These Three Things
Once CrossPoint is running, three quick wins:
- Connect WiFi and upload a book. CrossPoint’s web upload UI (and WebDAV, OPDS, and Calibre wireless) makes transfer far nicer than copying files by hand. Settings → WiFi, then open the device’s web page from your computer.
- Add a font. CrossPoint has no app store, but custom
.cpfontfonts are the real “plugin” layer. Settings → System → Manage Fonts downloads them over WiFi; there are 23+ families (Literata, Atkinson Hyperlegible, IBM Plex, and more). - Pick a theme and remap a button. Classic, Lyra, Lyra Extended, and RoundedRaff are built in, and you can remap the side/front buttons to whatever you reach for most.
If a Flash Fails: Recovery
Don’t panic — most “bricks” are recoverable on an unlocked device.
- Bootloop or stuck screen: press Reset, then hold Back + Power to reach the home screen.
- Crashes after flashing / weird behavior: delete the
.crosspointfolder (or justsettings.json/state.json) on the SD card. Crash logs are auto-saved to the SD root if you want to investigate. - Full restore (unlocked only): in the web flasher, use Write full flash from file with the backup you saved earlier. For a quick fix, xteink.dve.al/debug → Swap boot partition flips you back to the previous firmware.
On a locked device, your only safety net is whatever SD/OTA path its current firmware supports — which is exactly why you keep a known-good firmware.bin on the SD card and only ever flash supported firmware.
Where to Go Next
CrossPoint is the foundation, but it is not the only option. If you want reading stats and Bionic Reading, look at CrossInk; if your books are FB2 or Markdown, look at Papyrix; if you read CJK, there are localization forks. The full, verified map — with X3/X4 support, risk levels, and install steps for each — lives on the Xteink firmware directory.
And if you are still deciding whether to leave stock at all, start with what’s actually wrong with stock firmware — some “problems” are hardware tradeoffs that no flash will fix.
Working References
- CrossPoint Reader: https://github.com/crosspoint-reader/crosspoint-reader
- Web flasher & unlocker: https://crosspointreader.com/
- Full firmware directory: /firmware
Got an Xteink X3 or X4?
Every guide here is built from real community evidence and hands-on testing — covering setup, firmware, transfer, and the day-to-day of living with a pocket e-reader.
Browse all how-tos