Plato Reader Kobo

0 views
Skip to first unread message

Octavia Leithoff

unread,
Aug 4, 2024, 7:50:49 PM8/4/24
to oxunconmisp
Theother reason I figured I would mention it is that I have almostnever talked about Wallabako on this blog at all, so many of myreaders probably don't even know I sometimes meddle with inGolang which surprises even me sometimes.

Wallabako is a weird little program I designed to read articleson my E-book reader. I use it to spend less time on the computer: Isave articles in a read-it-later app named Wallabag (hosted by agenerous friend), and then Wallabako connects to that app, downloadsan EPUB version of the book, and then I can read it on the devicedirectly.


When I'm done reading the book, Wallabako notices and sets the articleas read in Wallabag. I also set it to delete the book locally, but youcan actually configure to keep those books around forever if you feellike it.


Wallabako supports syncing read status with the built-in Kobointerface (called "Nickel"), Koreader and Plato. I happen touse Koreader for everything nowadays, but it should work equally wellon the others.


Wallabako is actually setup to be started by udev when there's aconnection change detected by the kernel, which is kind of a grosshack. It's clunky, but actually works and I thought for a while aboutswitching to something else, but it's really the easiest way to go,and that requires the less interaction by the user.


I wrote Wallabako because I read a lot of articles on theinternet. It's actually most of my readings. I read about 10 books ayear (which I don't think is much), but I probably read more in termsof time and pages in Wallabag. I haven't actually made the math, but Iestimate I spend at least double the time reading articles than Ispend reading books.


If I wouldn't have Wallabako however, I would be either spend thattime reading on the computer -- which I prefer to spend working onfree software or work -- or on my phone -- which is kind of better,but really cramped.


So I tried to make this separation: the ebook reader is for cool bookstuff. The rest is work. But because I had the Wallabag Android app onmy phone and tablet, I could still read those articles there, which Ithought was pretty neat. But that meant that I was constantly lookingat my phone, which is something I'm generally trying to avoid, as itsets a bad example for the kids (small and big) around me.


Then I realized there was one stray ebook reader lying around athome. I had recently bought a Kobo AuraHD to read books, and I like thatdevice. And it's going to stay locked down to reading books. Butthere's still that old battered Kobo Glo HD reader lying around, andI figured I could just borrow it to read Wallabag articles.


But oh boy that was a lot of work. Wallabako was kind of a mess: itwas using the deprecated go dep tool, which lost the battle withgo mod. Cross-compilation was broken for older devices, and I hadto implement support for Koreader.


So I had to learn go mod. I'm still not sure I got that part right:LSP is yelling at me because it can't find the imports, and I'mgenerally just "YOLO everythihng" every time I get anywhere closeto it. That's not the way to do Go, in general, and not how I like todo it either.


The hard part was different. You see, Nickel uses SQLite to storemetadata about books, so Wallabako actually needs to tap into thatSQLite database to propagate read status. Originally, I just linkedagainst some sqlite3 library I found lying around. It's basicallya wrapper around the C-based SQLite and generally works fine. But thatmeans you actually link your Golang program against a C library. Andthat's when things get a little nutty.


In any case, the problem is we are cross-compiling here. And Golang ispretty good about cross-compiling, but because we have C in there,we're actually cross-compiling with "CGO" which is really just Golangwith a GCC backend. And that's much, much harder to figure out becauseyou need to pass down flags into GCC and so on. It was a nightmare.


That's until I found this outrageous "little" project calledmodernc.org/sqlite. What that thing does (with a hefty does ofdependencies that would make any Debian developer recoil in horror) isto transpile the SQLite C source code to Golang. You read thatright: it rewrites SQLite in Go. On the fly. It's nuts.


The last part was something I was hesitant in doing for a long time,but that turned out to be pretty easy. I have basically switch tousing Koreader to read everything. Books, PDF, everything goes throughit. I really like that it stores its metadata in sidecar files: Isynchronize all my books with Syncthing which means I can carrymy read status, annotations and all that stuff without having to thinkabout it. (And yes, I installed Syncthing on my Kobo.)


I had originally thought I should add some sort of graphical interfacein Koreader for Wallabako as well, and had requested that featureupstream. Unfortunately (or fortunately?), they took my idea andjust ran with it. Some courageous soul actually wrote a fullWallabag plugin for koreader, in Lua of course.


Compared to the Wallabako implementation however, the koreader pluginis much slower, probably because it downloads articles seriallyinstead of concurrently. It is, however, much more usable as the useris given a visible feedback of the various steps. I still had toenable full debugging to diagnose a problem (which was that Ishouldn't have a trailing slash, and that some special charactersdon't work in passwords). It's also better to write the config filewith a normal text editor, over SSH or with the Kobo mounted to yourcomputer instead of typing those really long strings over the kobo.


There's no sample config file which makes that harder but aworkaround is to save the configuration with dummy values and fix themup after. Finally I also found the default setting ("Remotely deletefinished articles") really dangerous as it can basically lead to dataloss (Wallabag article being deleted!) for an unsuspecting user...


So basically, I started working on Wallabag again because the koreaderimplementation of their Wallabag client was not up to spec for me. Itmight be good enough for you, but I guess if you like Wallabako, youshould thank the koreader folks for their sloppy implementation, asI'm now working again on Wallabako.


You're weird please stop. But if you want to use Wallabako, head overto the README file which has installation instructions. Itbasically uses a hack in Kobo e-readers that will happily overwritetheir root filesystem as soon as you drop this file namedKoboRoot.tgz in the .kobo directory of your e-reader.


Note that there is no uninstall procedure and it messes with thereader's udev configuration (to trigger runs on wificonnect). You'll also need to create a JSON configuration fileand configure a client in Wallabag.


And if you're looking for Wallabag hosting, Wallabag.it offers a14-day free trial. You can also, obviously, host it yourself. Which isnot the case for Pocket, even years after Mozilla bought thecompany. All this wouldn't actually be necessary if Pocket wasopen-source because Nickel actually ships with a Pocket client.


The image can either be based on the vendor kernel or the mainline kernel. The latter works without modification to the X server, and the framebuffer can be used directly with either kernel, but most free e-reader programs such as koreader, plato, and inkbox are developed for the slightly different framebuffer API used in the vendor kernel.


The demo below relies on Sxmo UI optimized for the PinePhone, and Martijn Braam notes that it can be pretty hard notably because only one hardware button is present on the Kobo device while the interface requires 3 hardware input buttons. But it should be possible to run or develop a UI better suited to Kobo Clara HD hardware.


This is a list of software modifications that can be made to kobo e-readers that are poorly documented or not publicly documented by Kobo, ordered from least intrusive and least effort to most.Since nearly all kobo e-readers use the same firmware, these should work on all of them (with some exceptions).This page shouldn't list hardware modifications unless they apply to more than one device model, instead list those on the device's page. When known, each of these should list the firmware revisions that support them.


Some of the information here is incomplete, this page is a work in progress.Items are being added from old forum threads, some of these are obsolete and should be replaced with newer ones.If your favorite item (that still works) is missing from this page, add it!


The option Settings -> syncing and updates -> Automatic sync causes a full synchronization to occur in the background at the scheduled time if the wifi is on. However, the kobo will also do full and partial synchronizations at other times when the wifi is on:


Files of multiple types can be copied to the top level or a subdirectory of the device and will be recognized and added to the book catalog after it is ejected and restarted. Different formats are read with different reader applications.


Additional fonts can be added and the font families will show up in the font list in the Kobo menus.If the font has the same name as a built in font, it will replace the built in font. Also, pdfs and epubs that use fonts not embedded in the document or on the kobo by default will find the added fonts.


A number of features can be enabled that are not available from the settings screens.These features are probably "beta" features, either depricated, buggy, not stable, under development, or considered too complicated for exposure to the average user. Kobo periodically adds and removes features from this list on firmware upgrades.


The Kobo Clara HD is a 6" eBook reader from 2018. I bought it to study and read eBooks on the train to and from work before COVID-19. Since then, it has been collecting dust with my company allowing 100% work from home. I have recently had the urge to read eBooks again and thought to document the process I went through.


Update to the latest version. At the time of writing it is 4.38.21908. I followed the official guide from Kobo. It is also possible to download it directly from Kobo's servers and install it manually by extracting it into the .kobo folder on the device.

3a8082e126
Reply all
Reply to author
Forward
0 new messages