Kobo Glo, WiFi, 2.8.1 and some more hacks

Kobo LogoOne inconvenience of the Kobo Glo is that it turns off the wireless very soon. That means that if you are logged into your Kobo via ssh, you might get dropped out soon. This post describes how to change this behaviour by binary editing the respective libnickel library. Other modifications are possible in the very same way, e.g., margin adjustments.

Already when I started playing around with the Kobo I found the following page which gives nice ideas. Unfortunately it didn’t apply to the current firmware (2.8.1). Fortunately some Russian developer found the right places to fix it, and prepared a patch program that changes the necessary bytes in libnickel. The original thread in Russian is here, the discussion on MobileRead here, and the actual zip with the program and config files and copies of the libnickel.so.1.0.0 for 2.6.1 and 2.8.1 firmwares is available here.

Now the nice things of the patch program is that it does not code the changes into the program, but carries a configuration file giving locations (offsets) in the libnickel, and which values should be changed. The program just executes these changes.

Currently, as far as I can see, the patcher, only available for Windows, allows for changing bytes, integers, and whole strings. For bytes this is straight forward, for integers I guess they have to be converted in a specific form to binary representation. For strings zlib compression and encoding seems to be used, as the respective directive in the configuration files is replace_zlib.

If you have Windows (or Wine, or Windows in some virtual environment) available, then just copy the config file and the libnickel.so.1.0.0 from 2.8.1 directory to the directory where the patch program is, edit the configuration file and run the program. If you are a hardcore Linux user, either get the libnickel.so.1.0.0 from the mentioned zip file, or one of the updates (see my other posts), then start up your favorite hex editor and start changing directly the file libnickel.so.1.0.0.

I only changed the following settings for now:

  • Wi-Fi insomnia: change the two bytes at 0x704678 from “11 B9” to “00 46”
  • Fix page breaks with long paragraphs: change the two bytes at 0xC13B6E from “E8 D0” to “E8 E7”

This can be achieved easily with your favorite hex editor. Here are two screenshot of editing libnickel.so.1.0.0 in bliss, before and after the change for WiFi insomnia:
Before:
kobo-wifi-autooff-enabled

After:
kobo-wifi-autooff-disabled

The program provides for more changes, specifically customization of the footer (which I might try), changing of line spacing values, advance font control everywhere, custom font sizes, custom left and right margins, remove system fonts in reader list, fine tune brightness control, additon of cyrillic keyboard, browser without network (might be interesting to have a offline WikiPedia), margins fine tuning.

After you have completed all the necessary changes, create a KoboRoot.tgz which only contains the modified libnickel.so.1.0.0 in /usr/local/Kobo/libnickel.so.1.0.0, upload it to your reader into the .kobo directory, and after unplugging the unit should automatically update.

All thanks go to the original author of the program, who did the big task to find the correct locations.

Leave a Reply

Your email address will not be published. Required fields are marked *