eenk User Guide

Welcome to the eenk User Guide! This guide covers everything you need to know about using your Xteink e-ink device running the eenk interactive fiction firmware.

Overview & Supported Hardware

eenk transforms your pocket e-reader into a dedicated, distraction-free Interactive Fiction player for stories written in inkle's Ink narrative language.

Supported Devices

Important: Only USB-unlocked Xteink devices are compatible with the eenk firmware.

Device Processor Notes
Xteink X4 ESP32-C3 Reference platform
Xteink X4 Pro ESP32-S3 Touch and backlight are supported; extra PSRAM is used for faster story loading
Xteink X3 ESP32-C3 Same chip as X4 with different screen resolution, now also supported

Flashing eenk

The easiest way to install or update eenk firmware is using your web browser:

  1. Connect your device via USB-C.
  2. Open the Flasher in a browser that supports Web serial such as Chrome.

    Note: you can also use it via the Device Manager window of the eenky IDE if you have it installed.

  3. Select your device model and click Connect.
  4. Follow the on-screen wizard to flash the firmware. Select Factory flash if it's the first time you're flashing eenk, Update otherwise.

Method 2: Offline SD Card Update

TODO: document this alternative method for X4.

Basic Device Interactions

Power & Sleep / Wake

Note: When connected via USB, the microcontroller remains powered by the USB host. To test true deep sleep and battery longevity, disconnect the USB cable.

Hardware Controls & Navigation

The Xteink X3 and X4 have 4 chin buttons that we call (from left to right) BACK, CONFIRM, LEFT, RIGHT. Additionally there are 3 buttons on the right side of the display, from top to bottom: POWER, UP, DOWN.

The Xteink X4 Pro has 3 physical buttons on the sides: LEFT on one side, and RIGHT and POWER on the other. A single additional capacitive button (MENU) is located at the center of the chin below the display.

Buttons are used as follows in eenk:

Control In Story Player In EPUB Reader In Library / Menus In Settings View
UP / LEFT Scroll text up / Previous choice Previous page Move selection up Move selection up
DOWN / RIGHT Scroll text down / Next choice Next page Move selection down Move selection down
BACK / QUIT / MENU Open exit dialog (save & pause) Open exit dialog (save & pause) Open Settings panel Exit Settings (saves automatically)
CONFIRM / SELECT / POWER (Short press) Confirm selected choice Next page Launch selected story Cycle value / Run action
POWER (Long Press) Save progress and sleep Bookmark page and sleep Sleep Save settings and sleep

Generally speaking when there are modal windows or a footer with labels, the corresponding chin button should be used.

In the first example below, the leftmost chin button (BACK) is used to close the modal window, and the rightmost (RIGHT) is used for the Confirm action (the 2 central chin buttons are not used in this case).

Footer buttons

In the second example above, BACK button is for Back, CONFIRM button is for Change, LEFT button for Prev and RIGHT button for Next.

Note: In eenky's simulator, arrow keys are used for UP/DOWN/LEFT/RIGHT and the Enter key for CONFIRM.

Touchscreen Controls (Xteink X4 Pro)

The X4 Pro features a capacitive touchscreen with full touch gestures offering alternative controls:

Quick Settings Menu (X4 Pro)

On the X4 Pro, swipe down from the top edge to access quick controls:

Getting & Transferring Stories

Stories in eenk are distributed as .eenk story packages compiled with the companion eenky IDE or downloaded from the Stories Catalog and author websites. A .eenk file is a self-contained archive (ZIP format under the hood) that bundles everything needed to run your story.

The simplest and fastest way to install stories is over USB without removing the MicroSD card:

  1. Turn on your eenk device and remain on the Library screen.
  2. Connect your device to your computer via USB-C.
  3. Open the Device Manager in the eenky IDE or open the Web Device Manager in a browser that supports Web Serial (such as Google Chrome or Microsoft Edge).
  4. Click Connect and select your device port (typically named USB JTAG/serial debug unit or USB Serial)
  5. Drag your .eenk file onto the upload area. The Device Manager automatically inspects the package and uploads the story into a dedicated folder on your device.
  6. When the transfer finishes, click Disconnect. The device will refresh its library and your new story will be ready to play immediately.

Tip: You can also install curated stories with a single click directly from the Stories Catalog!

Manual Transfer via MicroSD Card

Warning: Direct MicroSD card transfer is not recommended because .eenk packages cannot be read by the firmware as a single file on the SD card. You must manually extract the package contents first.

If you cannot connect your device via USB, you can unpack and copy stories manually:

  1. Turn off your device, remove the MicroSD card, and connect it to your computer using an SD card reader.
  2. Rename your story package file from storyname.eenk to storyname.zip.
  3. Extract the ZIP archive on your computer. You will find story.bin and any accompanying .media or .epdfont files.
  4. On the MicroSD card, navigate to the /stories/ folder (create it if it doesn't exist).
  5. Create a new subfolder named after your story (e.g. /stories/my_adventure/).
  6. Copy the extracted story.bin and sidecar files into that subfolder:
MicroSD Root
├── stories/
│   ├── the_intercept/
│   │   ├── story.bin
│   │   ├── story.media
│   │   └── SpecialElite.epdfont
│   └── my_adventure/
│       ├── story.bin
│       └── story.media
├── books/
│   └── frankenstein.epub
├── fonts/
│   ├── Literata.epdfont
│   └── Literata-bold.epdfont
└── .eenk_saves/
    └── the_intercept.sav
  1. Eject the MicroSD card safely, insert it back into your device, and power on.

Playing Stories on eenk

The Library Browser

When you power on the device, the Library displays all available stories found on your SD card:

Loading & Memory Architecture

The loading process differs depending on your hardware model:

Reading, Scrolling & Making Choices

Automatic Save States & Resuming

eenk automatically saves your full story state whenever you exit or put the device to sleep:

Exiting or Restarting a Story

System Settings

Access the Settings View by pressing BACK or MENU from the Library screen.

This UI screen is still a work in progress and likely to be adjusted in the near future.

EPUB reading

eenk also includes a basic EPUB reader so you can take the occasional break between your adventures and read some traditional books.

EPUB files can be uploaded via the Device Manager or copied directly to the /books folder on your MicroSD card. Books will appear in your Library alongside your interactive fiction stories.

Important Note on Large EPUB Files (> 2 MB): Due to USB serial bandwidth limitations and hardware transfer timing constraints, transferring EPUB files larger than 2 MB over USB serial may be very slow or fail with transfer errors. For books larger than 2 MB (especially EPUBs containing illustrations or complex layouts), copying files directly to the /books folder on your MicroSD card via an SD card reader is strongly recommended.

A bookmark is stored in .eenk_saves/ for each book you open. The .eenk_cache folder contains processed content such as images for faster loading between readings. This cache is cleaned up when you delete the book from the device manager.

Font Management

eenk features a versatile typography engine adapted from the Papyrix firmware.

Built-in Fonts

The firmware includes embedded bitmap fonts ready to use out of the box:

Custom Fonts

Custom fonts can be bundled with stories, but you can also manually add global fonts by placing .epdfont files created with the eenky IDE into the /fonts/ directory on your SD card.

Font Family Naming

To support bold and italic formatting, provide matching style suffixes:

Note: If your custom font does not include separate bold or italic files, eenk automatically generates synthetic bold and oblique styles on the fly. These fallbacks are not as good as a dedicated font variant.

Creating global custom fonts

You can convert standard TrueType (.ttf) or OpenType (.otf) fonts to .epdfont format using the eenky IDE.

  1. Create a new (empty) ink project file.
  2. Use the metadata header to attach your .ttf font to the story.
  3. Build the story to trigger the coversion tools
  4. Rename the resulting .eenk file to .zip and unpack it.
  5. Retreive the .epdfont file(s).
  6. Place them in the fonts/ directory on your MicroSD card.
  7. Reboot your device and select the font from the settings menu.

Creating custom fonts per story

You can also embed fonts in individual stories. See Fonts for more information on how to do this.

Recovery & Troubleshooting

If you ever encounter an issue or a corrupted firmware flash, eenk provides built-in recovery mechanisms:

Hardware Recovery Modes

Frequently Asked Questions

TODO !

✓ Link copied to clipboard