Customize & Sync

How to use KOReader Sync, the sleep screen, custom fonts, and screenshots.

3.5.5 KOReader Sync — Quick Setup

CrossPoint can sync reading positions with a KOReader-compatible sync server, and is interoperable with KOReader apps or devices that use the same server/account.

Option A: Free public server ( sync.koreader.rocks )

  1. (If needed) Register a user account once. If you already have a KOReader sync account you can skip this step.
  2. On the device go to Settings → System → KOReader Sync and enter your Username and Password. Enter the password as plain text — CrossPoint computes the MD5 hash internally.
  3. Leave Sync Server URL empty or set it to https://sync.koreader.rocks, then run Authenticate.
  4. While reading, press OK to open the reader menu and pick Sync Progress.
    • Apply Remote: Jump to the remote progress position
    • Upload Local: Upload the current progress position

Option B: Self-hosted (Docker Compose)

You can also run a sync server on your home network:

mkdir -p kosync-quickstart && cd kosync-quickstart
cat > compose.yaml <<'YAML'
services:
  kosync:
    image: koreader/kosync:latest
    ports:
      - "7200:7200"
      - "17200:17200"
    volumes:
      - ./data/redis:/var/lib/redis
    environment:
      - ENABLE_USER_REGISTRATION=true
    restart: unless-stopped
YAML

docker compose up -d
# 또는: podman compose up -d
  1. Verify server: curl -H "Accept: application/vnd.koreader.v1+json" "http://&lt;server-IP&gt;:17200/healthcheck" &rarr; {"state":"OK"}
  2. User registration uses the MD5-hashed password (default KOReader kosync behavior).
  3. On the device set Sync Server URL to http://&lt;server-IP&gt;:17200 (or https://&lt;server-IP&gt;:7200 when using HTTPS port 7200).

Security warning: Sending an MD5 password over plain HTTP is not safe. If the device's traffic ever leaves your LAN or you use public WiFi, switch to HTTPS (https://&lt;server-IP&gt;:7200) and create a sync-only account — don't reuse your main account password.

Tip: When KOReader Sync is enabled, opening the chapter selection screen also shows the chapter name of the remote progress position so you can easily see where you left off on another device.

3.6 Customizing the Sleep Screen

The image displayed depends on the sleep screen setting:

  • Dark (default): CrossPoint logo on a dark background
  • Light: CrossPoint logo on a white background
  • Custom: User image from the SD card (see below). Falls back to Dark when there is no image
  • Cover: Cover of the currently open book. Falls back to Dark when no book is open
  • Cover + Custom: Show the cover only while a book is open, otherwise fall back to Custom (v1.2.0)
  • None: Blank screen

When using Custom or Cover + Custom, place your images on the SD card:

  • Multiple images (recommended): Create a .sleep folder (hidden) on the SD card root and drop in any number of .bmp images. One is picked at random each time the device sleeps. (For backwards compatibility, a sleep folder is also recognized as a fallback.)
  • Single image: Place a sleep.bmp file in the root directory. Used as a fallback when no valid image is found in the .sleep/sleep folder.

Note: To use these images, set Sleep screen image to Custom in Settings.

Tip: For best results, use uncompressed 24-bit BMP files at 480x800 resolution. X4 Wallpaper Converter makes it easy to convert images into the right format.

3.7 Custom Fonts

You can use custom fonts in the EPUB/TXT reader. Font changes take effect immediately without rebooting, and your current reading position is preserved. Switching fonts does invalidate the rendering cache and re-runs indexing.

Prepare the font file

  1. Prepare a font file with the .epdfont extension. (You can convert TTF/OTF fonts using the font converter.)
  2. Copy the font file to /.crosspoint/fonts/ on the SD card or to the root /fonts/ folder.

Apply the font

  1. Go to Settings &gt; Font setting.
  2. Pick the font you want from the list.
  3. The chosen font is applied to the EPUB/TXT reader instantly.

Note: The default font is KoPub Batang, optimized for Korean reading.

Limitations: Variable Fonts, color fonts (Emoji), and bitmap-only fonts are not supported. See the Korean Font page for details.

3.8 Screenshots

Save a screenshot of the current screen as a BMP file.

  • Method 1: Press Power + Volume Down simultaneously
  • Method 2: Open the chapter menu while reading and pick the Screenshot option

Note: Screenshots are saved to the SD card's /.crosspoint/screenshots/ folder.

3.9 Reading Timer

Since v1.2.0-ko.14 the device automatically tracks accumulated reading time per book. Time accrues from the moment you open a book in either the EPUB or TXT reader, and continues across closes/re-opens. The accumulated value is stored as a 16-byte binary in that book's cache directory (/.crosspoint/&lt;hash&gt;/reading_stats.bin on the SD card).

Where it's shown

While reading, press the OK button to open the reader menu — an accumulated time chip is shown on the right of the top progress line, e.g. Reading Time: 1h 23m. Values are formatted compactly (45m, 1h 23m, 1d 5h, 123d) and shown identically in both EPUB and TXT reader menus.

Accumulation rules

SituationBehavior
Flipping pages or returning from a menu to the reading screenContinues to accumulate
Auto Page Turn activeContinues to accumulate (uninterrupted during long unattended reading)
No input for 5 minutesPauses (auto-resumes on next input)
Entering reader menu / chapter select / sub-activitiesTime during these is excluded from the total (menu time is excluded)
Sessions shorter than 30 secondsSkipped to save (avoid SD card wear)
After 5 minutes of active readingAuto checkpoint save
Reader exit / book closeDrains remaining time and writes a final save

Resetting the timer

Pick Reset Reading Timer in the reader menu — after a two-step confirmation, that book's accumulated value is reset to 0. Other books' reading time is unaffected.

Compatibility notes

  • The existing progress.bin, book.bin, and section.bin cache formats are unaffected.
  • reading_stats.bin is a new per-book file; if it doesn't exist the timer starts at 0.
  • For previously read books, the timer starts at 0 the first time you boot the v1.2.0-ko.14 build.