Kobo
Background
Since 2011 both me and my wife use Kobo devices for reading e-books.
I have a full-size onyx boox device for working with research papers in PDF; Kobo devices are used mostly for EPUBs.
I use:
- Calibre to manage our library and to side-load books to our Kobo devices;
- Obok plugin for Calibre to back up books that we buy from Kobo (previous; original);
- Quality Check plugin for Calibre;
- rclone to back the library up to Google Drive (and to our home server).
Metadata
I prefer author names being displayed as (and not just sorted by) “Last, First”.
If there are multiple authors, the authors field looks like LN1, FN1 & LN2, FN2.
Kobo, assumes that authors is structured like FN1 LN1, FN2 LN2.
I use Metadata Plugboard by chaley (2022, 2024) to tweak the authors field for KOBOTOUCH devices:
program:
comma = '';
res = '';
for author in $authors separator '&':
res = strcat(res, comma, swap_around_comma(author));
comma = ', '
rof;
res
It flips LN, FN into FN LN and changes author separator to ,.
TODO this probably won’t work when there is a third, “suffix” component in the name: FN, LN, Dr.…
PDF files that have multiple authors listed exactly the way Kobo wants still show up all wrong, as if the string listing them that Kobo splits is quoted: "FN1 LN1, FN2 LN2", so those quotes are displayed as a part of the name!
Firmware Patches
In 2026, my wife asked me how to search her Kobo device for a book by author in Russian?
Turns out, stock Kobo firmware does not have a Russian keyboard.
There is a project that maintains various firmware patches for Kobo: Kobo Patches; one of the patches (Cyrillic Keboard) replaces extended character set on the stock Kobo keyboard with Cyrillics.
Instructions for patching the firmware:
- Download and extract the patches
- Download Kobo firmware and put it into the
srcfolder - Adjust
versionandininkobopatch.yamlto the firmware version you downloaded - Enable patches in the files in the
srcfolder - or use the overrides inkobopatch.yaml - Run
./kobopatch.sh - Copying
KoboRoot.tgzinto the.kobofolder of your device and eject it
Alternative Readers
There seem to be two alternative readers available for Kobo: KOReader and Plato. One does not have to choose what to install: the same installer can be used to install both:
- download latest KOReader, Plato, or combined one-click installer
- download latest installation script
- unzip installation script archive alongside the reader(s)
- connect your device
- run installation script
Plato has a very clean interface, and I’d probably choose it over KOReader even if it misses some non-essential features, but it lacks the ability to use both English and Russian keyboards in search!
By editing Plato’s Settings.toml file on the device Plato is installed on, I can choose between English and Russian keyboards - but I can’t have both :(
Web Apps
There is a number of web apps available that let you browse your library, organize it, and read books; two examples are Calibre Web and Booklore.
Both support a standard protocol for browsing, searching and downloading books directly from your device: OPDS. Plato does not support it, but KOReader does.
KOReader does not support selecting multiple books for download, so the convenience of being able to download books from your library onto your device from anywhere (assuming your self-hosted instance of the web app is accessible from the Internet) is tampered by the inconvenience of doing it one book at a time.
Booklore supports a special “Kobo shelf” where you put all the books you want on your device; this only works with the stock Kobo reader, not with KOReader.
The real deal-breaker with OPDS is two-fold:
- KOReader search by Calibre metadata does not include books downloaded over OPDS - only books placed on the device by Calibre;
- all books downloaded over OPDS end up in the same directory, not in per-author sub-directories like they do when placed on the device by Calibre, so you can not even browse the books on your device by author!
So, to retain the ability to search and browse books by author one can not use OPDS and must use Calibre to put the books on the device. Of course, this also removes the one-book-at-a-time restriction ;)
With Calibre being the way to deliver the books to the device, attractiveness of web apps for me drops precipitously: I can not switch to the library management via web app, so nice features like better metadata retrievers, magic shelves and such are of no use.
Syncthing
https://guissmo.com/blog/how-to-install-syncthing-on-a-kobo/
Connect Kobo to and put public SSH key into KOBO/run/media/dub/KOBOeReader/.adds/koreader/settings/SSH/authorized_keys
On Kobo, run KOReader
-
Cog Network check “Wi-Fi Connection” -
Cog Network SSH Server: - check “Login without password”
- check “SSH server”
- note the IP address: address
Prepare certificates:TODO this is probably not needed; verify
- ssh root@address -p 2222
- mkdir /etc/ssl
- mkdir /etc/ssl/certs
- scp -P /etc/ssl/certs/ca-certificates.crt root@IP address:/etc/ssl/certs/
Install syncthing:
- download the syncthing for Linux ARM (32‑bit) and unpack it
- scp -P 2222 syncthing root@IP address:/mnt/onboard/.adds/
- ssh root@address -p 2222
- ip link set lo up (for some reason, it was not up)
- run syncthing
- scp -P 2222 config.xml root@address:/.local/state/syncthing/config.xml
- change gui/address to from 127.0.0.1:8384 to 0.0.0.0:8384
- ssh root@address -p 2222
- run syncthing
Configure the sync:
- browse to http://address:8384 - syncthing UI
- set user/password (dub/whatwhen)
- set the default folder to /mn/onboard/SyncThing
- add device to sync from
- auto-accept the folders
- start syncthing; in its UI:
- add kobo device
- share folders
On Kobo:
/mnt/onboard/.adds/scripts/syncthing-start:
#!/bin/sh
/mnt/onboard/.adds/syncthing serve &
/mnt/onboard/.adds/scripts/syncthing-stop:
#!/bin/sh
/usr/bin/pkill syncthing
/mnt/onboard/.adds/nm/syncthing:
menu_item :main :Start Syncthing :cmd_spawn :quiet :exec /mnt/onboard/.adds/scripts/syncthing-start
chain_always :nickel_setting :enable :force_wifi
chain_always :nickel_wifi :enable
chain_always :nickel_wifi :autoconnect_silent
chain_success :cmd_spawn :quiet :exec /mnt/onboard/.adds/scripts/syncthing-start
menu_item :main :Stop Syncthing :cmd_spawn :quiet :exec /mnt/onboard/.adds/scripts/syncthing-stop
chain_always :nickel_setting :disable :force_wifi
chain_always :nickel_wifi :disable
Authors of PDF files are displayed badly on Kobo!!
Authors of EPUBs are also not great when not processed by Calibre - can I make it write the metadata into the file itself? Otherwise, syncthing is unusable for epubs…
There seems to be no good way to set author names with titles so that they display correctly both on Kobo (FN LN) and in Calibre (where I use LN FN)…