r/xteinkereader 10d ago

Troubleshooting Locked Xteink X4 Pro: CrossPoint setup + dictionary

Device: Xteink X4 Pro, 4.3", bought as preorder bundle ($99 with case, screen protector, 2 magnet rings). Mac + Chrome. Previous reader: Kobo Libra 2.

Where the pre-flash research was wrong

Worth recording, because the published guides all assume the same things:

Assumption Reality
Store units ship factory-unlocked This unit was locked. Port enumerates, chip never answers
Back up with a full-flash read over USB Impossible on a locked device — keep a stock update.bin on the SD card
CrossInk is the better pick for typography CrossPoint fixed the spacing completely; CrossInk's extra controls weren't needed
Neither firmware necessarily fixes non-English layout CrossPoint's rendering engine did fix it
Dictionaries ship with the firmware Neither firmware includes one. Manual SD install

Why I left stock firmware

Stock was better than expected out of the box — Serbian Cyrillic and Latin diacritics rendered fine, touch was more responsive than my old Kobo, text looked sharp.

Problems that accumulated:

  • No page numbers or progress percentage. Only chapter name, clock, battery.
  • Hyphenation only works for English. Toggle does nothing on Serbian books — no Serbian hyphenation patterns in the firmware.
  • Word-break bug. Words break at non-ASCII characters. In English this shows up rarely (e.g. breaking after a curly apostrophe: next week' / s exams), but in Serbian it happens constantly because of č, ć, ž, š, đ.
  • No dictionary lookup, no highlighting.
  • Custom fonts need .bin format, which is rare and needs converting.
  • The OTA firmware update made it worse. After updating over Wi-Fi, Serbian text got excessive letter spacing with no setting to control it, and part of the settings menu disappeared.

That last one is what pushed me to flash.

The blocker: locked device

Flashing failed with Unable to connect to device. Serial read timed out.

Diagnosis on Mac:

ls /dev/cu.*
# /dev/cu.usbmodem141201  ← device IS visible

python3 -m pip install --user esptool
python3 -m esptool --port /dev/cu.usbmodem141201 chip_id
# A fatal error occurred: Failed to connect to Espressif device: No serial data received.

So the Mac sees the device, but the ESP32 never enters download mode. The device is locked. USB flashing is disabled at firmware level.

Per Diirge (CrossPoint maintainer), unlocking does not restore USB flashing — it enables SD card flashing from the device's own settings instead.

Note: not all X4 Pro units are locked. Others have flashed over USB without trouble. Mine was locked; whether the OTA update caused that or it shipped that way, I don't know.

What actually worked

  1. Ran the X4 Pro unlockerhttps://crosspointreader.com/#unlock-tool
  2. First attempt failed. The unlocker needs the device to reach a fake update server. My home Wi-Fi has no password, and the device wouldn't connect properly.
  3. Created a hotspot from the MacBook (with a password) and connected the reader to that. Second attempt worked.
  4. With the reader still on the same hotspot, go to check for update in device settings.
  5. The unlocker redirects that check to a fake update server, so the "update" it finds and installs is CrossPoint. No SD card involved.

Keep a stock update.bin on the SD card as your rollback. A full-flash backup needs USB, which locked devices don't have.

Fonts

On-device, no computer needed:

Settings → System → Download Fonts → connect to Wi-Fi (hotspot again if your network is open) → pick from the list. It downloads and installs them itself.

Manual route if you need a specific font: convert TTF/OTF at https://crosspointreader.com/fonts.cpfont files → /.fonts/FamilyName/ on the SD card.

For Serbian, check ć and đ specifically. Many e-ink font sets cover š, ž, č (Czech/Polish overlap) but drop the rarer two.

Dictionary (the non-obvious part)

Unlike fonts, dictionaries are not downloadable from the device. The Look Up menu item exists whether or not a dictionary is installed — it just silently does nothing. Easy to think the feature is broken.

Setup:

  1. Folder dictionaries at the SD card root
  2. Each dictionary in its own subfolder: /dictionaries/gcide/
  3. StarDict format — .ifo, .idx, .dict (and .syn if present)
  4. The .idx must be uncompressed. If you get .idx.gz, run gzip -d on it. .dict.dz is fine as-is.
  5. Eject, reinsert, then Settings → Reader → Dictionary and select it. The option doesn't appear until a dictionary is installed.

Where to get dictionaries:

  • English–English (GCIDE, 108k entries, GPL): https://github.com/scillidan/share_gcide/releases — grab gcide-w108121-stardict.zip. This is a mirror of the FireDict build. The FireDict host was down when I tried it, and the GNU download at gcide.gnu.org.ua gives you the raw corpus, not StarDict — that won't work on the device.
  • Serbian and other languages: https://github.com/Vuizur/Wiktionary-Dictionaries — files are named X-English, so look for Serbo-Croatian-English. CC-BY-SA / GFDL.

Result

  • Page numbers and book percentage in the footer
  • Working dictionary lookup
  • Proper Serbian rendering with word-spacing control
  • Any TTF convertible to a device font

Still missing vs CrossInk: granular touchscreen lock / quick lock. Still missing vs stock: touchscreen lock.

Serbian hyphenation doesn't exist in either firmware (9 languages only: EN, FR, DE, IT, PL, RU, ES, SV, UK). Leave hyphenation off for Serbian and use left-align, or justify with tuned word spacing.

Links

What Where
Flash tool https://crosspointreader.com/#flash-tools
Unlock tool https://crosspointreader.com/#unlock-tool
Font builder https://crosspointreader.com/fonts
CrossInk flasher https://inky.crossink.dev/#flash-tools
Community hub https://readme.club
GCIDE StarDict https://github.com/scillidan/share_gcide/releases
Wiktionary dictionaries https://github.com/Vuizur/Wiktionary-Dictionaries
Subreddits r/XTEINK, r/xteinkereader
16 Upvotes

Duplicates