Reading Your Ebooks Anywhere

I wouldn’t normally stick my head above the parapet and write a post like this but DRM on ebooks really annoys me as it impacts my enjoyment of the books I’ve bought. I personally find the default option of black text on a white background a little difficult to read especially if there isn’t a lot of ambient light. Most e-readers have an inverse option which is an improvement but can still be difficult.

My e-reader of choice (as of 2020) is ReadEra Premium previously it was Moon+. There’s nothing wrong with my previous choice of Moon+ for epub but ReadEra has better PDF support. The problem is you can’t read DRM encumbered books in Moon+ (or any other third party software reader that I can think of). The other problem with DRM encumbered ebooks is what happens if the company you bought them from goes bust? You can no longer download them to your new device, effectively they are lost. This nearly happened to me but fortunately I had a DRM free version I could use.

In the past it was quite a game to remove the DRM from ebooks, you had to install Python with some fancy crypto libraries and dance around an enchanted pentagram while chanting a magic incantation. Fortunately things have got simpler and most of the heavy lifting is now done by a Calibre plugin. Before we get started though you need to get some software. I’m going to assume that you are working on a Windows PC, as far as I’m aware the decryption can also be carried out under Linux but you probably can’t install some of the downloading software for book providers so you’ll have to play about with encryption keys.

Install Software

The first piece of software you want to install is Calibre, this is an ebook manager and while I find it a little unusual in it’s design it’s easily the best piece of software out there for the job. If you’ve bought any books through Amazon you’ll need the Kindle for PC software. Books bought though Google Play can be downloaded using Adobe Digital Editions see here for more information. Note: Digital Editions comes complete with it’s own bloatware in that it tries to install Norton Security, you have to uncheck the box in order to stop it being installed (slimy bastards).

Library Locations

You need to know where the various readers store your books so here are the default locations:

  • Adobe Digital Editions: C:\Users\<username>\Documents\My Digital Editions
  • Kindle for PC: C:\Users\<username>\Documents\My Kindle Content

Installing the Calibre Plugin

Next get Apprentice Alf’s DRM removal tools, as the software on that site probably breaks numerous ridiculous laws (DMCA I’m looking at you) I suppose it could vanish at any moment so best save a copy of whatever you download. Unzip Apprentice Alfs toolkit and open the root folder in there you should find a Calibre plugin folder and inside that a zip file that contains the actual plugin. Installing this plugin into Calibre is a little more convoluted than regular plugins but it’s done like this. Click the downward pointing arrow to the right of the Preference button on the tool bar and select “Change Calibre Behaviour”

change_behaviour

Select Plug-Ins under the advanced section and then click “Load Plug-In From File”. Point Calibre at the zip file containing the plugin and select Ok. Calibre gives you a generic warning about untrusted plugins being a virus risk, select yes if you feel it’s safe to do so. You’ll then get a dialog telling you that the plugin has been installed, restart Calibre to be on the safe side.

If you are only using Adobe Digital Editions and or Kindle for PC and they are installed on your machine and they run under the same account as Calibre then you are ready to start importing your ebooks. If you meet this list of requirements then it’s likely the Calibre plugin has access to the encryption keys used by Adobe Digital Editions and or Kindle for PC. If you are using other systems to download ebooks then you will probably need to extract the encryption keys for them. There are instructions in the tool kit for doing just that.

Freeing your Books

Kindle for PC

Last Checked August 2020 – Broken with version 1.29 of the Kindle for PC app, verified working with version 1.25 and reported working with everything up to 1.28.

All credit to Amazon they have a pretty slick system for their ebooks, until you want to read a book it’s held in the cloud and (presumably) can be put back there when you are done. In order to remove the DRM you need get the file so download the book from the cloud by right clicking on it and selecting download. In the Kindle for PC library folder on your machine you’ll now have to hunt around for the correct book as they don’t have sensible names but if you sort by date you can probably pick the newest. Simply drag and drop the file into Calibre and the book will be imported. For Kindle books to be useful anywhere where other than a Kindle you’ll need to format shift to epub. To format shift just right click on the book in Calibre and select Convert Books > Convert Individually. In the conversion dialog ensure all the settings you want are filled in and then set the output type as epub if it isn’t already.

If you have version 1.28 or earlier of the Kindle for PC application then you should still be able to import books into Calibre. The latest version at the time of writing (August 2020) is version 1.29 and books downloaded with this version won’t import. There’s a six year gap in releases for the Apprentice Alf tools so it’s probably fair to say that support for Kindle for PC version 1.29 might take a while to appear. To make matters more complicated Amazon now ships most books in KFX format which requires an additional plugin for Calibre and decryption only works up to version 1.27 of Kindle for PC.

What can you do? The easiest solution is to find an older version of the Kindle for PC application and install that as detailed in this excellent post. If you verify the checksum it should be safe but it’s still a risk I’m not willing to take. As a stroke of luck though I found a workaround.

Kindle for PC Version Workaround

My old PC had version 1.25.1 of the Kindle of PC application installed and I discovered it was surprisingly easy to move this installation to another machine. Unlike most applications Kindle for PC installs into “C:\users\{username}\AppData\Local\Amazon” rather than Program Files which makes it very easy to move. Simply zip the Amazon folder and transfer it to the PC you want to run it on, unzip it and you are ready to go. The executable you need is: .\Kindle\application\Kindle.exe

In my case I moved it to a PC with version 1.29 already installed and activated. When I ran version 1.25.1 it picked up the same activation as the later version and was able to download books. The books that were downloaded could be imported into Calibre (with the DeDRM plugin and KFX plugins installed). I also verify that I couldn’t import books if they were downloaded with version 1.29.

Note that Kindle for PC is extremely aggressive about updating itself. Even if the auto-apply updates is unchecked it will often update so keep your old versions handy.

Google Play

Last Checked August 2020 – Working

Go to My Books on Google Play and click the three dots next to the book you want to download and select the option “Download EPUB”. This will trigger the download of a .acsm file which you can drag and drop into Adobe Digital Editions. The first time you use ADE you’ll need to authorise your computer by entering your Adobe account details (which if you’ve had an Adobe account for any length of time got hacked a while back). ADE will then download the book pointed at by the .acsm file. You can now import this book into Calibre but opening the ADE library on your machine, finding the relevant epub file and dragging it into Calibre.

Note 1: it appears you can only download an epub version of a book if you actually bought it. If you have access to the book via the family library feature downloading is blocked.

Note 2: some books on Google Play have no DRM, in that case the download link will give you the epub file directly and you can import that into Calibre.