A look at CrossPoint e-reader firmware
There are a number of small, inexpensive, low-powered e-reader or e-paper devices that have promise as ebook readers with one minor problem: the firmware they ship with does not realize their full potential. To solve that problem, the CrossPoint Reader project looks to provide replacement firmware that offers necessary features, better performance, and a more pleasant reading experience. On August 7, the project released version 1.5.0, which opens large EPUBs more quickly, provides offline dictionary lookups, and has reworked settings for changing layout and font options. The release also improves support for right-to-left text as well as Chinese, Japanese, and Korean (CJK) text rendering.
Tiny e-readers
Mainstream e-readers, such as the Kindle and Kobo devices, have large, high-resolution screens with crisp fonts, lots of features, and are reasonably fast even when reading large ebooks. But they can be somewhat expensive, come tethered to proprietary services, and are too large to comfortably stash in one's pants pocket.
Last year, a Chinese company called Xteink started shipping pocket-sized e-readers globally. The first device was the Xteink 4, which uses an ESP32-based system-on-chip (SoC). It weighs less than three ounces (77g), has a 4.3-inch (114mm) screen with 480x800 resolution (no backlight) at 220PPI, and has physical buttons rather than a touchscreen.
Xteink is not the only vendor shipping tiny e-readers, there are several available with similar specifications, though it did seem to spark the most interest. The big tradeoff for these devices is their resource constraints—they have slow CPUs, only a few hundred kilobytes of RAM, and the display resolution means that fonts are never going to look as good as they do on the larger e-readers. Some of that can be overcome with the right firmware, though. Soon after the Xteink 4 went global, Dave Allie released the first version of CrossPoint to try to get more out of its limited hardware.
Since the first release, CrossPoint has grown well beyond a one-person show. There are more than 200 contributors to the MIT-licensed project, which now supports six tiny e-reader devices, based on the ESP32-C3 or ESP32-S3 chipsets, from a variety of vendors. All of the devices supported by CrossPoint are relatively cheap—one is as little as $50, and most are less than $80. The project aims for a monthly release cadence but missed with 1.5, which came out about six weeks after 1.4.0. 1.5.0 was also the first release with support for an ESP32-S3 device, the reTerminal Sticky "family notes display" device. Adding a new hardware target probably required a bit more testing than usual.
It is worth noting that CrossPoint does allow use of large-language-model (LLM) tools for contributions, since that's an important consideration for some users. However, the project asks that contributors disclose use of such tools in pull requests. It does not, however, accept features (LLM-assisted or not) outside of the narrow scope of providing a good reading experience.
The project's vision
and scope document explains that CrossPoint's goal is to focus on
"lightweight, high-performance firmware that maximizes the
potential of ESP32-based e-reader hardware, prioritizing legibility,
performance, and usability
". Features that, for example, improve EPUB
rendering, ebook library management, or provide optimizations for rendering on the
devices' eInk screens are
welcome. On the other hand, the project does
not want RSS readers, PDF rendering, writing tools, or other interactive
applications because such features are too resource intensive and
likely to drain the battery far faster than simply displaying an EPUB.
CrossPoint in a flash
I purchased the Xteink 4 in June, with the plan to use it as shipped, and install CrossPoint if the default firmware was unsatisfactory. The Xteink uses an SD card for storage, rather than built-in storage. Its battery is supposed to last for up to two weeks of reading; I can't verify that, but it's certainly good for several days of heavy use without a charge. The default firmware supports EPUB, Mobipocket, plain-text files, PDFs, as well as PNG and JPEG images.
The default firmware for the Xteink 4 is not terrible, but it does leave a bit to be desired. For example, its rendering of EPUB books was both slow and not very attractive. I found the navigation to be a bit clunky; the buttons are unlabeled, and sorting out which button was "Confirm" versus "Back", etc., was mildly frustrating. There is also little ability to tweak font settings, or justification.
The firmware is functional enough to get the job done, but it's not particularly pleasing while reading. After reading a few chapters of an ebook with the Xteink's standard firmware, I was ready to make the switch. However, in fairness, it should be noted that Xteink continues to update its stock firmware to add more features and enhancements. It's possible that, at some point, it will catch up to or even surpass what CrossPoint is providing.
The recommended method for installing CrossPoint is to use the web-based flash tool while the device is connected via USB-C—but some Xteink devices have USB flashing disabled. If that's the case, it's still possible to install CrossPoint by flashing new firmware from the SD card. In either case, flashing the CrossPoint firmware onto a device is not difficult and only takes a few minutes.
Managing CrossPoint
The first order of business is to get some reading material copied over to the reader. Devices with locked firmware may not allow connecting to the reader's storage over USB; and some of the devices supported by CrossPoint, such as the Xtenink 3, do not have a USB-C connector at all. So, copying files over USB-C may not be possible in many cases.
One way is to take out the reader's SD card, connect it to a computer, and copy files over; the simpler way is to copy files to the device over WiFi. Xteink's default firmware only lets users connect to a hotspot running on the device; the user has to disconnect from their current WiFi network and connect to the device's to copy files.
CrossPoint, on the other hand, has a built-in web server for file transfer and device configuration. CrossPoint devices can connect to a local 2.4GHz WiFi network and acquire an IP address using DHCP. Users can then reach the device by visiting "crosspoint.local" in their browser, or by using the IP address assigned by DHCP. Note that CrossPoint does not set up a secure connection; everything is served over HTTP, so it might be a bad idea to connect the device to public WiFi. If there is no local network available, CrossPoint also supports setting up a hotspot to connect to the device directly.
The web-based interface (shown below) allows users to upload files, create directories, rename or delete files, and so forth. When uploading EPUBs, it offers to optimize them for the device. It also lets users manage all of the device settings from the web interface, which tends to be a lot more convenient than thumbing through the settings interfaces on the device. Users can change the button assignments, modify display settings, adjust user-interface settings, change the CrossPoint theme, customize the book layout, font choices, and more. The User Guide has a good overview of the various settings that are available and should be up-to-date with the most recent release of CrossPoint.
A few features are missing from the web interface, such as font downloads: CrossPoint's firmware includes two fonts, but there are a number of additional fonts that can be downloaded from the Reader Settings menu on the device, but not via the web menus.
If none of the fonts provided by CrossPoint prove satisfying, it is possible to upload custom fonts with a bit of extra work. CrossPoint uses its own font format, cpfont, rather than the BIN format used by Xteink. It does not support OpenType or TrueType formats directly, but the project provides a web-based font builder that can convert those formats into cpfont. Users can then copy the files onto the device through the web manager or just by copying the files to the SD card.
There is a CrossPoint plugin for Calibre for users who manage their ebook library with Calibre. It not only manages copying ebooks to the reader; it can also optimize EPUBs for devices running CrossPoint to help reduce memory usage. The plugin's optimizer converts images in the EPUB to a size more appropriate for small screens, removes embedded fonts, and may split large chapters to reduce their memory footprint.
Reading
The CrossPoint reading experience is best described as "adequate", it handles novels and non-fiction content well, but technical content suffers a bit. For instance, when reading an LWN article as an EPUB on the device, it does not display text styled as code any differently than the rest of the content. Subheadings blend in with regular text as well; and, of course, all links are stripped out since it does not have any form of web browser.
Those minor complaints aside, though, reading non-fiction history, science-fiction, and fantasy novels on the device has been pleasant enough that I am quickly absorbed in the reading material rather than thinking about the specifics of the reader. It even has one feature I don't recall seeing on the Kobo or Kindle: auto page turn. Users can configure the reader to turn pages automatically at up to 12 pages per minute. This can be useful for hands-free reading—just place the e-reader on a table while holding a coffee and doughnut, perhaps—or just to save wear and tear on the buttons.
CrossPoint has support for looking up words in a dictionary, but users have to bring their own in the StarDict format. Happily, the project includes some suggestions on where to find such a dictionary in their documentation. Dictionaries for any of CrossPoint's supported languages should work, though there does not seem to be much documentation on installing dictionaries in multiple languages currently.
The firmware does have support for synchronizing reading progress with other readers, if they support KOReader's protocol. The project provides a free synchronization service with open registration, or users can set up their own server. It also has support for the Hardcover book-tracking service.
The project has a guide for setting up a CrossPoint development environment for those who would like to contribute or just modify their own firmware.
CrossPoint's roadmap is
split into three phases. Phase zero was about finishing the work in
progress before the project decided to be more disciplined about the
way it was working; according to the roadmap page, that phase is now complete.
Phase 1 is focused on expanding support to new ESP32-based
devices, reducing memory usage, and cleanup. It's unclear how long
this phase will last; the project's issue
tracker does not have tags or labels for phases or specific
releases. Phase 2's goal is to "make reading great in every
language
", with user-interface translations, better font support,
more themes, and so forth.
The project has come a long way in a short time, and new ESP32-based e-readers seem to be popping up all the time. It will be interesting to see how CrossPoint evolves and what new devices it supports, especially since the project and devices are not constrained by the need to keep users in a vendor's walled garden.
The LWN site is currently under high scraper load, so comment display has been suppressed for anonymous users. If you are a human, you may read the comments by clicking the button below:
Note: you can avoid this step in the future by logging into your LWN account.
