Rescuing an old Kobo Aura H2O that keeps bricking itself

I used to be a big fan of Kobo ereaders because they let you install your own fonts and gave you (often, not always) DRM-free ePub files. But my opinion changed a little when they bricked my beloved Kobo Aura H2O via a regular software upgrade.

To add insult to injury, the built-in recovery procedure is broken as well. Once your device is restored, Kobo claims that it must connect to a wireless network in order to add an account. Otherwise it won’t even let you read books you copy over via USB. But it can’t connect to wifi, presumably because the rescue firmware is so old.

Both of those claims are lies, as we can prove:

  • Grab a newer firmware (but not the latest one) from this website. The only one that was still functional for me was 4.35.20400.
  • Install it by extracting the ZIP file to the .kobo directory on the device.
  • Once you can mount the device on your PC, you might want to skip logging into a Kobo account. This can be accomplished by manipulating the onboard sqlite database at .kobo/KoboReader.sqlite:
insert or replace into user
  (UserID, UserKey)
  ('-', '-');

drop index if exists analytics_events_timestamp;

create trigger if not exists delete_analytics
after insert on AnalyticsEvents begin
  delete from AnalyticsEvents;
Code language: SQL (Structured Query Language) (sql)

Source: Jacob Albano’s blog (thanks!)

Unmount, restart and now you can use your Kobo entirely offline, prevent any future broken firmware updates and also sidestep the account requirement. Note that your user will simply be called “- -” and you’ll have no way to retrieve any purchases from the Kobo store this way, at least not from the device itself. You’ll have to copy over the .epub files from your PC.

But hey, at least your hardware works again and you don’t have to bring it in for recycling. I’ve been using the same reader for over 10 years now and I don’t see any compelling reasons to get a new one.

Leave a Reply

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