Flash guide · Method 4 of 5
Flash with esptool
esptool flashes CrossPoint onto an unlocked Xteink X3 or X4 straight from the terminal: install esptool with pip, find your serial port, write firmware.bin
to 0x10000.
No IDE, no build step. About ten minutes if Python is already on your machine.
Unlocked devices only
esptool needs USB access, so this method only works on unlocked Xteink devices. If the web flasher can't detect your device, use the OTA Unlocker instead.
What you need
- Python 3.x installed
- pip available
- USB-C data cable (not charge-only)
- Xteink device unlocked and awake
How to flash Xteink firmware with esptool
-
1
Install esptool with pip.
pip install esptool -
2
Download
firmware.binfrom the firmware project's GitHub releases page. -
3
Connect the Xteink over USB-C, then find its serial port:
- macOS →
/dev/cu.usbmodem… - Linux →
/dev/ttyACM0 - Windows →
COM3or similar (check Device Manager under Ports)
- macOS →
-
4
Run the flash command. Swap
<PORT>for the port you found in step 3.esptool.py --chip esp32c3 --port <PORT> --baud 921600 write_flash 0x10000 firmware.bin
Offset warning: 0x10000, never 0x0
CrossPoint and its forks flash to 0x10000.
Writing to 0x0
overwrites the OEM bootloader. The one exception: Microreader ships a full image that flashes to 0x0.
Always follow each project's README for the exact offset.
Flashed and booted? Load your books next
The flash was the hard part. Now send your library over with Calibre or OPDS, then add custom fonts, themes and sleep screens.
Troubleshooting esptool errors
esptool.py: command not found
python -m esptool or python3 -m esptool instead. Or check that your Python Scripts/bin directory is on your PATH. Failed to connect to ESP32-C3
921600 with 460800. Also check the cable and port, and make sure the Xteink is awake. Permission denied: /dev/ttyACM0 on Linux
dialout group, then log out and back in.sudo usermod -a -G dialout $USER No serial ports found on Windows
Device bricked after flashing to 0x0
0x0 overwrites the bootloader. Recovery requires a hardware programmer or JTAG. Always use 0x10000 for CrossPoint firmware.Still stuck, or hit a different error? Browse every fix in the Xteink firmware help & FAQ — searchable by problem.