Skip to content

Flash guide · Method 4 of 5

Flash with esptool

~10 min Technical Unlocked X3 & X4

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. 1

    Install esptool with pip.

    pip install esptool
  2. 2

    Download firmware.bin from the firmware project's GitHub releases page.

  3. 3

    Connect the Xteink over USB-C, then find its serial port:

    • macOS/dev/cu.usbmodem…
    • Linux/dev/ttyACM0
    • WindowsCOM3 or similar (check Device Manager under Ports)
  4. 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
Run 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
Lower the baud rate: replace 921600 with 460800. Also check the cable and port, and make sure the Xteink is awake.
Permission denied: /dev/ttyACM0 on Linux
Add yourself to the dialout group, then log out and back in.sudo usermod -a -G dialout $USER
No serial ports found on Windows
Install the CP210x or CH340 USB driver for the ESP32-C3. Check Device Manager for an "Unknown device" under Ports.
Device bricked after flashing to 0x0
Writing to 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.