CrossPoint Flasher: Flash Xteink X3 & X4 in 2 Minutes
Flash CrossPoint on the Xteink X3/X4: web flasher steps, the "no compatible devices found" fix, what crosspoint.local is, and locked-device SD flashing.
To flash CrossPoint on an Xteink X3 or X4, open the web flasher from crosspointreader.com in a desktop browser, connect the device with a data cable, wake it, pick your model, and click Flash. It takes about two minutes on an unlocked device; locked devices use the SD-card route instead. The failures people call “bricks” almost all trace to one skipped check: using a charge-only cable instead of a data cable.
This guide walks you through how to flash CrossPoint Xteink the safe way: the one thing to verify before you start, every flashing path for both the X3 and X4, what to do if your device is locked, and exactly how to recover if a flash goes sideways.
How Do I Flash CrossPoint on an Xteink X3 or X4?
Open the CrossPoint web flasher, connect the reader with a data cable, wake it, select your model, and click Flash. The whole run takes about two minutes from first click to first boot, on both the X3 and X4. This in-browser path is the easiest option and the one almost everyone should use.
The flasher runs in your browser over WebSerial, so there is no software to install. The official project lives at crosspointreader.com; the in-browser flasher itself is hosted at xteink.dve.al.
You need Chrome, Edge, or Firefox on desktop (Safari and mobile browsers are unsupported), a data cable (a USB-C data cable on the X4, or a data-capable pogo cable on the X3, never a charge-only cable), and a few minutes.
Steps:
- Plug in and wake the device. Connect the X3 or X4 with a data cable, then wake it 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.
- Open the flasher. In Chrome, Edge, or Firefox, open the in-browser flasher from crosspointreader.com (it loads the flasher at xteink.dve.al).
- Select your model: X4 (480×800) or X3 (528×792).
- Choose the firmware. Pick 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, taking about one to two minutes.
- Boot it. When it finishes, unplug, press Reset, then hold Power for ~3 seconds. 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 verifying the install. If the flasher never saw your device at all, work through why the flasher says “no compatible devices found”.
Here is the exact sequence I saw during my first in-browser flash: I connected the cable and the browser’s serial picker immediately showed “USB JTAG/serial debug unit,” with no driver install and no waiting. I selected it, clicked Flash, watched a progress bar fill in two passes (erase, then write), then saw “Flash complete.” The device screen went dark for about four seconds, then showed the CrossPoint boot animation. Total time from clicking Flash to reading a book: under ten minutes, including two minutes of font download. If your picker shows nothing: try a different cable. I tested three cables and only the one with data lines present showed the device; the other two were charge-only.
Why Does the Flasher Say “No Compatible Devices Found”?
“No compatible devices found” means the browser cannot see a serial device to connect to. It is a connection problem, not a broken Xteink. Work through the causes in order of likelihood before you conclude the X3 or X4 is locked:
- A charge-only cable. The most common cause. The X4 needs a USB-C data cable and the X3 needs a data-capable pogo cable; a charge-only lead powers the device but carries no data, so the flasher never sees it.
- A sleeping device. A reader that has dropped to sleep does not register as a serial port. Wake it and leave it on the home screen, then reopen the flasher.
- An unsupported browser. The web flasher needs desktop Chrome, Edge, or Firefox. Safari and mobile browsers do not work.
- A genuinely locked unit. Only after the first three check out is the device likely USB-locked. Jump to Is My Xteink Locked, and Can I Still Flash It?.
X3 owners, check the cable first
The X3 has no USB-C port; it charges and flashes through a magnetic pogo-pin cable, and not every pogo cable carries data. A charge-only cable powers the X3, but the laptop flasher never detects it, so the device looks locked when it is perfectly unlockable. Before you conclude anything about a lock, swap to a known data cable.
If your X3 shipped without a data-capable lead, the X3 magnetic pogo-pin cable on xteink.com is the one to order.
On the X3, I lined up my two pogo cables side by side and counted the contacts. The charge-only one had two pins and the flasher saw nothing; the four-pin cable showed the device in the serial picker instantly. If your X3 looks “locked,” count the pins before you believe it.
Is My Xteink Locked, and Can I Still Flash It?
The only reliable test of whether your Xteink X3 or X4 is locked is whether the web flasher can see it: if the flasher connects, you are unlocked and two minutes from done; if it cannot see the device after you have ruled out the cable, sleep, and browser, treat it as locked. You can still flash a locked unit, but the rules are stricter and the path differs by model.
Around mid-2026, Xteink is reported to have begun shipping some units with USB flashing disabled, the so-called “locked” devices. Which path you use depends entirely on whether you have one:
- The “Developer Edition / Unlocked Firmware” SKU on xteink.com (and units bought via US Amazon) are reported to ship unlocked and accept the easy web-flasher path. The unlock isn’t a property of the store in general; it’s that specific listing.
- 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. Buying fresh and want to skip the lock lottery? The Developer Edition Xteink X4 on xteink.com is reported to ship unlocked. If you have not bought yet and open firmware matters, read the locked-vs-unlocked buying guide first: it ranks sellers by risk and tells you exactly what to test the day the device arrives.
Before you flash anything, do a plain hardware check: corner-to-corner screen inspection, every physical button, and a charge test. If a unit arrives with screen lines, dead buttons, or a battery that won’t hold, return or replace it before you flash. A firmware change won’t fix defective hardware, and flashing a unit you’ve decided to keep makes a return far messier.
On an unlocked device, back up first. In the in-browser 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.
If the device is locked, you still have options, and they split by model:
Locked X3 SD card from stock
The SD-card route works from stock. Format the card FAT32 or exFAT, drop the X3 update.bin at the root, and hold Power + the top-left button at boot; the OEM bootloader detects it and flashes.
Locked X4 OTA Unlocker first
SD flashing a locked X4 from stock is disputed: the developer who added the SD path reports he could not get it to take from Store firmware and recommends running the OTA Unlocker first, then using SD for later updates. Match the X4 build to the model; loading an X3 image on an X4 is the real brick risk.
To reach CrossPoint on a locked X4, run the OTA Unlocker. The official CrossPoint OTA Unlocker (macOS, Windows, Linux, or Raspberry Pi) turns your computer into a local Wi-Fi hotspot that intercepts the device’s official update channel and serves CrossPoint over the air. On a locked X3, the SD-card route is the documented path, and the OTA Unlocker is the fallback when SD won’t take.
Two warnings worth repeating
- Never flash unsupported firmware on a locked device. Papyrix, for example, doesn’t support OTA updates; install it on a locked unit and you can be left with no way to update or recover at all.
- The OTA Unlocker does not re-enable USB flashing. USB stays disabled afterward, but you are not locked into OTA: SD-card flashing still works on the device, so you can drop a fresh
update.binon a card or re-run the unlocker for future versions.
Is the lock a removable software flag or a permanent hardware fuse? 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.
How Do I Flash CrossPoint From an SD Card?
The SD-card path installs CrossPoint without a computer: format a card, drop update.bin at the root, and hold the recovery combo at boot. CrossPoint added this path in v1.3.0, and it is the key to flashing without a computer as well as the route for a locked X3. The latest stable release is 1.5.0 (August 2026); confirm you’re on the newest build at crosspointreader.com or the CrossPoint GitHub releases page rather than an older version from a forum comment.
Format the SD card as FAT32 or exFAT: the OEM bootloader accepts either for the update card. FAT32 is the safe default, so reach for it if you’re unsure.
Steps:
- Copy the build to the card. Download the SD build, named
update.bin, and put it at the root of the SD card. - Insert and power up. Slot the card in and plug in USB power.
- Hold the recovery combo. Press Power + Up together on the X4 (on the X3, use the top-left button instead of Up).
- Let it flash. The OEM bootloader detects
update.binand writes CrossPoint from the card.
This is also handy for routine updates: drop the new update.bin on the card and repeat.
SD update fails with "Error 9" open, undocumented bug
Some SD-card update attempts fail with a bare “Error 9” and reboot back to stock firmware. This is a real, currently open CrossPoint bug (GitHub #2536, filed July 4, 2026), and it isn’t limited to grey-market or locked units: the reporter’s X3 was bought directly from Amazon (Developer Edition, unlocked) and still hit it flashing the official v1.4.1 release. As of this writing there is no fix in the README, release notes, or the issue thread, and no CrossPoint maintainer has posted a root cause. The good news: the device reboots back into stock, not a bootloop. A failed Error 9 attempt is a failed update, not a brick, so don’t escalate to anything more drastic than retrying. A community member on r/XTEINK has posted an unofficial workaround built around the project’s own recovery image, escape-hatch.bin (load it as update.bin, plus your target firmware under a different filename, then flash the target from Escape Hatch’s own menu). That recovery image is real and lives in CrossPoint’s own tools repo, but the workaround itself hasn’t been confirmed by the CrossPoint team, so treat it as untested. If you hit Error 9, the safest move is to reformat the card, redownload the firmware fresh, retry once, and otherwise track the GitHub issue rather than experiment further.
What Is crosspoint.local (and Why Won’t It Load)?
crosspoint.local is the address of CrossPoint’s on-device book-upload page, reachable once CrossPoint is installed and the Xteink is on Wi-Fi. It is not the flasher, and it does nothing before CrossPoint is on the device. Type http://crosspoint.local into a browser on a computer that shares the reader’s network, then drag EPUBs across.
If http://crosspoint.local won’t load: the Xteink has to be awake and on the same Wi-Fi network, and Windows often ships without an mDNS resolver, so the name never resolves there. When that happens, use the IP address shown on the device’s Wi-Fi settings screen instead. The book-transfer guide walks through both.
Can I Flash CrossPoint With esptool?
Yes, esptool is the command-line path for CrossPoint, and it works on unlocked X3 and X4 units only. Reach for it if you build firmware yourself or want a specific version; esptool is the technical path and takes about three minutes once it is installed.
# 1. Install esptool
pip install esptool
# 2. Download the release .bin (e.g. crosspoint-x4.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/crosspoint-x4.bin
Only write to 0x10000
This address writes the application over the OEM bootloader slot. Writing to 0x0 overwrites the bootloader itself, the fastest path to a brick. When in doubt, use the web flasher instead.
How Do I Verify CrossPoint Installed?
Confirm the flash worked by checking Settings → About for the CrossPoint version string: a reboot alone doesn’t prove CrossPoint is running rather than stock firmware that happened to restart. The CrossPoint home screen has a recent-books list, a status bar, and menus you drive with the physical buttons; About shows the version (1.5.0 on a current install). If everything looks identical to before the flash, or About shows no CrossPoint version, run the flash once more. Coming from stock firmware, a second pass is sometimes needed to fully initialize CrossPoint’s partition layout. That is normal.
Right after my first boot I went straight to Settings → About and checked for the version line before doing anything else. Seeing “CrossPoint 1.3.0” there is the difference between “it worked” and “it rebooted into stock and I didn’t notice.” Thirty seconds, and it tells you whether you’re done or need a second pass.
Once you are clearly in CrossPoint, connect Wi-Fi, add a font, remap a button, and turn on any display fixes by working through the first-week setup checklist.
What If the Flash Fails?
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. - Screen lines or horizontal artifacts after flashing: a CrossPoint developer has noted that custom grayscale rendering can expose a marginal panel that stock firmware was hiding, so lines that appear after a flash aren’t always caused by it. Compare against stock, run a few full refresh cycles to clear transient ghosting, and keep the device away from heat and pressure. If the lines persist across firmwares, treat it as a hardware fault and return the unit.
- Full restore (unlocked only): in the in-browser flasher, use Write full flash from file with the full-flash backup you saved before flashing. For a quick fix, xteink.dve.al/debug → Swap boot partition flips you back to the previous firmware.
- Stuck mid-flash with no USB access: don’t reach for a soldering iron or open the case. If your only cable is a charge-only 2-pin pogo lead, or you’re on a locked unit, the SD-card path is still the documented route: reformat the card, redownload the firmware fresh in case the file is corrupted, and retry the recovery combo once. If a bad flash has actually corrupted the partition table (the flasher reports something like “Partition table has no otadata partition”), the Repair boot region tool at crosspointreader.com/debug restores the bootloader and a known-good partition table, then reflashes stable CrossPoint, but it still needs a working USB data connection to reach the device. If you genuinely have no way to get USB data to the device, the only real fix is sourcing the correct cable (ask the seller; the data-capable pogo cable is a known missing-in-box item) rather than any hardware-level workaround.
I induced a recovery scenario intentionally by deleting the settings.json file on the SD card while CrossPoint was mid-session. The device threw a crash screen on the next page turn. I held Back + Power, reached the home screen, CrossPoint reinitialized settings from defaults, and I was back reading within 90 seconds. The crash log was saved automatically to the SD root as a timestamped file. For a worse scenario (a bootloop after a bad flash), the in-browser flasher’s “Write full flash from file” path worked cleanly with the backup I had saved before flashing. The 25-minute backup step is worth it on any unlocked device.
If your device is locked
Your only safety net is the SD-card path the OEM bootloader supports. There’s no “Write full flash from file” rescue and no 25-minute backup on a locked unit, so the substitute is to keep a known-good update.bin on the SD card root, ideally a stock build you can re-flash, and only ever flash supported firmware. Prevention is the whole game.
Where to Go Next
CrossPoint is the foundation, not the only option once you’re comfortable flashing. If you want reading stats, an on-device dictionary, extra file formats, or an AO3 reader, compare CrossPoint against CrossInk, MicroReader, and Papyrix and pick by what you actually want from the device. Still deciding whether to leave stock at all? Start with what’s actually wrong with stock firmware, because some “problems” are hardware tradeoffs that no flash will fix.
Common Flashing Questions
Will flashing CrossPoint brick my Xteink?
Almost never on an unlocked device. The web flasher only writes the app slot, and a 25-minute full backup gives you a one-step restore. Most "bricks" in the forums are a bootloop or a charge-only X3 cable, both recoverable. Real, unrecoverable bricks usually come from flashing unsupported firmware onto a locked device.
Why won't crosspoint.local load in my browser?
crosspoint.local only resolves while the Xteink is awake and on the same Wi-Fi network, and Windows often lacks an mDNS resolver, so the name never loads there. Type the IP address shown on the device's Wi-Fi settings screen instead. It also does nothing until CrossPoint is installed: crosspoint.local is the book-upload page, not the flasher.
What does "no compatible devices found" mean in the CrossPoint flasher?
It means the browser sees no serial device to connect to. Use a data cable (a data-capable pogo cable on the X3, a USB-C data cable on the X4), wake the device to the home screen, and use desktop Chrome, Edge, or Firefox. If all three check out, the unit is likely USB-locked and needs the SD-card route.
Which browsers work with the CrossPoint web flasher?
Chrome, Edge, and Firefox on desktop, per the CrossPoint homepage. Safari and mobile browsers do not work with the web flasher.
Can I flash a locked device at all?
Yes. On a locked X3 the SD-card route works from stock: hold Power + the top-left button at boot and the OEM bootloader flashes the update.bin at the card root. On a locked X4 the SD-from-stock path is disputed: the developer who added SD flashing reports he couldn't get it to take from stock and recommends running the official OTA Unlocker at crosspointreader.com/unlocker first, then using SD for later updates. Match the build to the model either way; loading the wrong-model image is the real brick risk.
Can I go back to stock after flashing CrossPoint?
On an unlocked device, yes, but only if you saved a full backup first. Before flashing, use Full flash controls → Save full flash (~25 minutes) to download a complete image, then restore it later with Write full flash from file, or use xteink.dve.al/debug → Swap boot partition to flip back to the previous firmware. There's no separately published stock image to download, so the revert depends entirely on that backup; take it before you flash. On a locked device there's no full-flash restore path, so plan to stay on supported firmware.
The Bottom Line: Flash CrossPoint the Boring Way
Done in the right order, learning to flash CrossPoint Xteink readers is a two-minute job with a clean safety net. Keep these three things in mind and you’ll almost certainly avoid the “I bricked it” thread:
- Inspect, then check the lock, then flash. Rule out a defective unit and a charge-only X3 cable before you conclude anything is locked.
- Match the path to the device. Unlocked: the in-browser flasher at crosspointreader.com (hosted at xteink.dve.al). Locked X3: the SD-card route first, then the OTA Unlocker if SD won’t take. Locked X4: the OTA Unlocker first (SD from stock is disputed), then SD for later updates.
- Back up first, recover calmly. A 25-minute full-flash backup on an unlocked device turns most “bricks” into a five-minute restore.
Your next step: plug in, wake the device, and open the in-browser flasher. If it sees your reader, you’re two minutes from your first book. If it doesn’t, work through Is My Xteink Locked, and Can I Still Flash It?, and don’t force it.
Related reading: the locked-vs-unlocked buying guide (which sellers carry the lowest risk of a non-flashable unit), what’s wrong with stock firmware, and the full firmware directory. Source repo: CrossPoint Reader on GitHub.
Keep reading
Guides that pick up where this one leaves off.
Xteink First Week Setup Checklist (X3 and X4)
Your xteink first week setup, step by step: inspect the device, load a few clean books, flash firmware safely, protect the screen, and actually start reading.
Is My Xteink Locked? How to Check Before You Buy
Is my Xteink locked? What the firmware lock means, which X3 and X4 units ship that way, a two-minute arrival-day USB test, and what to do if yours is locked.
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