Kevin Chen

Paperbin on the X4 E-Paper Reader

I already had Paperbin running on my Bigme tablet. But I also have an Xteink X4 running CrossPoint Reader, and I wanted RSS on that too.

CrossPoint is an open-source firmware for the X4. It’s an ESP32-C3 with an e-paper display, five front buttons, and two side buttons. The whole thing runs on ~380KB of RAM. No touchscreen, no browser — just buttons and a framebuffer.

So I added a native Paperbin client directly into the firmware. The X4 connects to my Paperbin server over WiFi, pulls articles via the API, strips HTML to plain text, and paginates it for the e-paper display.

The implementation:

Button mapping ended up being: side buttons (up/down) scroll pages within an article, front buttons (left/right) navigate between articles. Front confirm button stars. Navigating to the next article auto-marks the current one as read.

One gotcha: Paperbin’s article IDs are 64-bit integers (Feedbin entry IDs). I originally used int which silently overflowed and broke mark-read/star. Switched to int64_t.

Article body renders in Bookerly 12 — a serif font that’s already bundled with CrossPoint for epub reading. Header and UI chrome stay in the system font. Title text word-wraps with a dynamic header height so long headlines don’t overlap the body.

No image support yet. The renderer can handle BMPs but downloading, converting, and inlining images from article HTML on 380KB of RAM would be a project in itself. Text-only is fine for now — most of what I read is news and blog posts anyway.

I like this better than the tablet for casual reading. The X4 is smaller, the battery lasts forever, and there’s something nice about physical buttons with no distractions.

Links: CrossPoint Reader · My fork (paperbin branch) · Paperbin

#Home Lab