garysimpson.dev
Mobile development with swift and flutter

Kindle Firmware Downgrade for the Win

August 08, 2024 at 1:28PM


Recently turned on kindle and found it had auto updated to the last supported version of Amazons firmware v5.16.2.1. I and apparently some others hate the update. Since a picture is worth a thousand words I'll simply post a side by side of the two home screens and you be the judge as to which you prefer to see when you open your e-reader.


Did I mention there is NOT an option to remove the Discover Books section from the new version. Also why is there a distinction between home and library at all. My kindle should have my library displayed at all times. Should I want to discover new titles that should be possible. Also, what the hell is up with making this a swipe based interface? That works great for iPad because the UI has the fluidity of feeling like sliding a piece of paper across a table. Not so with the e-ink kindle. You swipe then wait never totally certain your touch registered.

Nope, I dont want to purchase another e-reader and migrate my books to a different service or build some kind of Linux based option from scratch. I simply want my device the Kindle Oasis Generation 2 (KOA2) to work the way it did prior to this firmware update being forced upon me. Thus began my journey into the interesting world of Kindle rooting/jailbreaking.

Steps to Downgrade:

Download links appear here for brevity in overall post.
  1. Jailbreak Kindle (LanguageBreak one click github link, local version)
  2. Install KUAL () and MRPI ()
  3. Install KAUL downgrader extension
  4. Revert OS Firmware
  5. System Restore (after verifying version number)
  6. Block future updates (optional)

Jailbreak Kindle (LanguageBreak one click github, local version) (step 1/3)

For this step I use the Language 1-click after failing many manual attempts.


Jailbreak

  1. Make sure your kindle is tied to an amazon account
  2. Turn on airplane mode
  3. Copy contents of LanguageBreak to the kindle (show hidden & replace if asked)
  4. Restart kindle
  5. Open the store - press yes to connect to wifi
  6. A page with a button saying jailbreak should appear
  7. Press the button
  8. Wait - there will be text and then the device will reboot - if it doesn't in 3 minutes then restart and try again
  9. Your kindle should reboot and you should see some log message on the screen

Post Jailbreak (Skipped)

  1. Connect the device to a PC and copy updatehotfixlanguagebreak-{languageCode of your choice}.bin to the root of the Kindle storage
  2. Eject the device and enter the device settings menu
  3. Select Update Your Kindle to install the custom hotfix
  4. This will do its best to make everything work :)

After jailbreak

  1. After the device has rebooted, type ;uzb into the search bar
    • Add other LanguageBreak Files to root Optional: found in the non-one click method.
      • .demo hidden folder
      • patchedUks.sqsh 2. Connect the device to a PC and copy Update_hotfix_languagebreak-{language you want to end up with}.bin to the root of the Kindle storage 3. Eject the device and either enter ;dsts or swipe down and select the settings icon to enter the device settings menu 4. Select Update Your Kindle to install the hotfix 5. This will take your device out of demo mode and clean up unneeded jailbreak files. 6. You will now probably be in managed mode

Install KUAL/MRPI, local KUAL local MRPI (step 2/6)


For this step I use the Language 1-click after failing many manual attempts.

  1. Connect your Kindle to your PC.
  2. Extract MRPI's extensions and mrpackages folder to Kindle's visible storage's root. This is where the document folder resides.
  3. Drop the KUAL files in.
    • Using KUAL Booklet or KUAL Booklet (coplate), drop KUALBooklet_*_install.bin into mrpackages folder.
      • To identify which is which, Booklet (coplate) variant will have a commit string in its version number in the file name, such as KUALBookletff4134dinstall.bin, while Booklet will have the version number in its file name, such as KUALBookletv2.7.29install.bin. 4. Once everything is in place, eject/disconnect your Kindle, then enter ;log mrpi to start MRPI. Hush, little baby... should pop up at the bottom half of the screen.
    • If nothing happens, check and make sure you've placed everything in place correctly.
    • If for whatever reason ;log doesn't exist, You can still install by dropping UpdateKUALBooklethotfix_*_install.bin into Kindle's visible storage's root, then go into Settings > Update Your Kindle to install it.
      • Obviously this won't work if your Kindle firmware is too new, and the package hasn't been updated, in which case you'll have to wait for an update.

Install KUAL downgrader (step 3/6)


At this stage there should be a book named KAUL in you library. Open that book to proceed with the steps below.

  1. Before you proceed, if you have disabled OTA updates, restore it now to prevent complications later.
  2. Install the Downgrader extension as you would any other KUAL extension.
    • Drag and drop the downgrader folder containing the bin, config.xml, menu.json into the extensions folder on your Kindle's visible storage's root.

Downgrade OS Firmware KUAL downgrader (step 4/6)


  1. Launch KUAL, then Downgrader.
  2. Pick the device (KOA2) that you have, make sure it is the right device as this tool sets up the version.txt file to match that of the lowest denominator of the device, thus tricking the Kindle's updater to force an "upgrade".
  3. Once you've selected your device, your Kindle will restart, now with the lowest version possible spoofed in the system.
  4. Plug in your Kindle (making sure that USBNetwork is off and USBMS is on), then copy the update file you've downloaded earlier to the Kindle's visible storage root.
  5. DO NOT eject or unplug the USB cable, as this will make the Kindle's OS auto delete the update file we just copied to. Instead, hold the power button until your Kindle restarts. Now it should boot into the updater, and begins your firmware downgrade.

System Restore (step 5/6)

.



Block future updates (step 6/6)

My initial thought for blocking updates was to simply fill the storage to about ~150mb remaining. That should sufficiently block updates. However, see below for installing renameotabin KUAL extension

  1. Download the renameotabin extension.
  2. Plug in your Kindle to your computer (Make sure that USBNetwork is disabled!), drag the renameotabin folder into extensions on your Kindle's drive.
  3. Eject then unplug your Kindle from your computer.
  4. Go into KUAL, Tap on Rename OTA Binaries
  5. Tap on Rename, your Kindle will reboot.
  6. That should be it. Now if you put in an update file in the root of your Kindle's storage, the update button should still be greyed out. Do note that if you're planning to factory reset, don't forget to repeat step 4 and 5, but do Restore instead of Rename.

Other Useful Commands

  • ;dsts: Opens Kindle settings. (useful in demo mode)
  • ;uzb: Enables the usb mode
  • ;log: Check if KUAL & MRPI installed
  • ;log mrpi: start MRPI. (Hush, little baby... shows on bottom half of screen)
  • enter_demo:
  • ;demo: press the right button it should "enter demo" but it will actually reset into normal mode with English After this check if you have mkk folder on your kindle - if it's missing reinstall the hotfix and have fun :)

Notes about Kindle UI taken from here


By default, 5.14.1.1 has the new old UI that was introduced in 5.13.7. So it is the newer UI but does not have a scroll bar or the new collection system introduced in 5.14.2

If you want the old old UI from 5.13.6 and before, you can enable it by making a quick change to a file called CHROME_CONFIG located at /local/var. Just change the line isKPPChromeEnabled=true to isKPPChromeEnabled=false. Here is a post that katadelos made that will walk you through it:


KUAL broken after downgrade. What do I do?

  • re-install by dropping Update_KUALBooklet_hotfix_*_install.bin into Kindle's visible storage's root, then go into Settings > Update Your Kindle to install it.
  • Once kindle restarts use ;log mrpi command. (KUAL should be functional again)