Kobo Reader Modifications with Koreader
Jan 21, 2023
Huy Le
5 minute read

Purchasing Options

Use Unable to resolve reference to r-1srxq3rl from wiki/r-60vlyxpa.mdNickelMenu mod to enable 3rd party software to run on reader. One of those testing software is KoReader. Integration Kobo lines of ereaders are fully supported ko NickelMenu and Koreader.

Optional #

  • back up your sd card – Unable to resolve reference to r-be6b5mm9 from wiki/r-60vlyxpa.mdClone SD card Image

Initial Research #

Koreader and Calibre Interaction #

Questions to address:

  • How to push books from Calibre over; Calibre is able to run an OPDS(Open Publication Distribution System) server locally (if enabled)
  • Calibre Sync - able to wirelessly connect to device by acting as the service, and device would directly connect to it; default on port 9090

Setup for Koreader and Calibre #

Use Unable to resolve reference to r-5drkmuxh from wiki/r-60vlyxpa.mdCalibre directly on laptop or devmachine

  • expose port :8080 as for ODPS
  • expose port :8081 as for Web reader
  • export port :9090 for direct connection When setting this up on your system, remember your Unable to resolve reference to r-uaffn3k7 from wiki/r-60vlyxpa.mdfirewall settings! Depending on the system that you are on, your firewall settings might be different. It could be different based on the network that you are on, and whether it is trusted or not. And it could also be different depenging on the interface that you are connected to; e.g. wifi vs ethernet.

There are two ways people are trying to get highlights to work:

how-to using - https://github.com/koreader/koreader-sync-server

Final route for some people is through Koreader, with OPDS Server in Calibre-web It is a hassle free setup

Process Highlights #

Read koreader-highlights in a QT GUI - https://github.com/noembryo/KoHighlights/releases

Highlights can be read from any connected Koreader, just simply mount (if necessary) and tell the GUI to scan the directory.

File Sync #

dropbox - https://www.dropbox.com/developers/apps This integration is not working yet

SSH is only avail on koko, kindle, and cervantes using ssh to install syncthing on koreader? scripts to help here - http://www.mobileread.mobi/forums/showthread.php?t=330426

When creating the syncthing folder, I am syncthing the entire /mnt/onboard folder. This allows me to update /mnt/onboard/.adds/koreader/plugins relatively fast.

.adobe-digital-editions, .kobo and .kobo-images are ignored in the .stignore file

Folder Structure:

├── .adds
├── .adobe-digital-editions
├── Books
├── .kobo
├── .kobo-images
├── News
├── Screenshots
├── scripts
├── .stfolder
├── .stignore
└── Wikipedia

I already have a ~/docs folder being synced, and this koreader is living inside this docs folder as ~/docs/koreader, because it is a syncthing folder within a syncthing folder, it is best to have the upper level (docs) ignore the koreader during sync. Doing it this way, make syncing faster.

News Reader - Using Wallabag #

it took a bit of work to get Unable to resolve reference to r-f2d6okfj from wiki/r-60vlyxpa.mdWallabag to work. Once you can get to the Client ID and Client Secret, it’s going to be difficult to manually type it all it. Instead go to /mnt/onboard/.adds/koreader/settings/wallabag.lua and update the files in there with the credentials through SSH

Installation #

Nickel is used by Kobo, so NickelMenu is not really a hack.

installed all - Plato, Koreader, KFmon

all live in the same folder on computer

added the example nm configuration - starting from line 197 it contains plato twice in the menu

Getting Sync to Work with Syncthing #

highlights and other metadata are stored in the same folder as the ebook this is nice, because we’ll be able to syncthing the entire folder where all the ebook lives

To setup syncthing - follow this guy

backup instructions here

Here is how I installed and started Syncthing at first:

Download the latest version for ARM extract the archive copy the syncthing binary into …/KOBOeReader/.adds/ login over SSH (see above on how to enable) with -p 2222 -l root create the following directory: ~/.config/syncthing/ create the following configuration file, named config.xml:
copy a valid ca-certificates.crt file (say from your Linux desktop) into /etc/ssl/certs/ on the Kobo (otherwise syncthing cannot bootstrap discovery servers) launch syncthing over SSH: /mnt/onboard/.adds/syncthing

Dictionary #

  • download dictionaries directly from devices
  • Good big list of dictionaries here

Using #

Multiswipe gestures is pretty nice - references of all predefined gestures. Not exactly the best though, we don’t need too much functionality

Possible Future Hacks #

Upgrade SD card, maybe save yourself from yourself with all the hacking

  • Track this reddit post for Clara 2e

  • : 2023-02-06 Looking into ways to use lua to merge metadata.epub.lua files for merging highlights and location

    • This was taken out, in favor of using syncthing and syncing everything in /mnt/onboard

Logs #

Thu 02/02/2023 #

  • 03:43 Update koreader plugins, recent OTA changed the directory

  • 04:20 using git diff to create patch and apply it to master branch - some notes about git patching

Mon 02/06/2023 #

  • 05:16 Reader is now working, and let’s keep it this way for awhile. Meaning, so software updates, nothing. Just use it. date

Fri 03/03/2023 #

  • 16:33 Accidentally factory resetted the reader. Took these steps to set it back up..
  1. Turned it on, can copied everything on local ~/docs/koreader/ over to /mnt/onboard
  • the only thing that is missing the the syncthing configuration, that is located in ~/.config/syncthing/config.xml and the certs, from /etc/ssl/certs/ca-certificates.crt
  1. Followed this instruction to install KFMon - on github
  2. this will get us NickelMenu going. KOReader did not show up yet, need to updated the /mnt/onboard/.adds/nm/ to get Koreader manually added. Before, the one click installed did this work, I believe
  3. Setup the Syncthing again to Laptop, and Phone, and Nas
  4. Done.

Lessons learned.. dont be hasty with the power button.