A few days ago I saw a youtube video about a tiny e-ink reader and why it is very practical (one hand operation, etc). Next to me, I had my Anbernic RG280V which I bought precisely because of how tiny and yet usable it is.

Anbernic RG280V

Two of my favorite features on the RG280V are that its screen can go very dark and you can play games that don’t require quick reactions (such as JRPGs) with one hand!

So naturally I thought, wouldn’t this device be absolutely awesome as an epub books reader?

First I searched for an existing reader, only found a pdf viewer for the device and pdfs are the worst way to read an ebook in my opinion (especially with this limited resolution).

So I set out to create one. And with LLMs, I can turn this silly project from a potentially 3-6 months toy project that I’m not known to ever finish, into a 2 days project that’s feature complete and immediately usable.

I first did some research to figure out what runs on my RG280V (specifically Adam 2.1 firmware, which turned out to be an embedded linux named ‘opendingux’ built via buildroot), I prepared the source code for Adam firmware + a number of applications for reference. Then wrote the entire design of the app in as much detail as possible, first in a BRAINSTORM.md file then polished and organized in PLAN.md then fired up opencode.

The process I wanted is that the project should be broken down into several milestones, I’d test and verify each feature of each milestone on the physical device before accepting it. And I’ll iterate on upcoming milestones as the work progresses.

This way I basically act as the app designer, and the LLM plays the implementer and bug fixer role.

This worked so well and very quickly I had a working app (Milestone 2) that could open one sample epub file on the device and it looked so perfect for it.

From then on I moved to Milestone 3 then 4 then 5, through the process I collected feature requests and changes that I grouped into a new milestone 5.5. The implementation was done by GPT Sol 6.1 (xhigh). Midway I tested GLM-5.3-Flash to see if it can do it (Milestone 2 to 3 specifically), and the result was an app that crashes on launch on the device.. so sadly openweights usable LLMs (ones with generous usage quotas) aren’t at this level yet.

The result at the end is EPUB Reader v0.5.8 with these features:

  • Written specifically for the Anbernic RG280V running on Adam 2.1 firmware
  • EPUB books support
  • Book list organized by read state
  • Book reader with auto bookmarking
  • True-type unicode font and 3 sizes perfect for the RG280V’s screen
  • Embedded ambient mp3 player
  • Shuts down device saving all data when battery is critical (in case user falls asleep)
  • Multiple dark/light themes
  • Easy to use: all button actions and relevant info shown contextually in the UI

EPUB Reader sample screens

The embedded ambient music player is such a powerful feature that in some of my test/verification sessions, I forgot that it was supposed to be a test and spent over an hour actually lost in reading!

My ambient music playlist had these tracks pulled from YouTube (each between 1h and 3h long):

  • ambient space
  • campfire and a river
  • moutain lake and piano
  • relaxing piano
  • gentle night rain
  • night thunderstorm
  • windy woods

Last night, I used the app to fall asleep while reading Dungeon Crawler Carl’s third book by Matt Dinniman, I fell asleep without turning off the device, the critical battery shutdown feature did its job. I’m very happy with this little app.

EPUB Reader v0.5.8 Released

Released version v0.5.8 feature complete for Milestone 5.5

I’d really like to produce releases like these from now on, I have tens of incomplete (or even complete) projects like these that could be usable for someone.

EPUB Reader AI Prompt

This is not a single prompt project. But if you’d like to recreate this app on your own handheld device, here’s an AI written hardware-independent design document that should (in theory) reproduce the app in its current featureset on that platform: Hardware independent design document for EPUB Reader v0.5.8

Happy Prompting!