Kindle 2 Hacks

From ivc wiki
Jump to navigationJump to search

The Kindle 2 was released in early 2009 and is one of many e-ink based readers. The e-ink technology is currently only capable of displaying grey-scale representation of media.

Kindle 2 is based on a ARM6 processor and is running Linux with a Java-based front-end. Wireless connectivity is provided by a cellular network, including roaming for international use of the device.

Kindle 2 international specifications

  • Display: E-Ink Vizplex 6" imaging film, 600x800 pixel, 167 dpi, 16-level grey-scale
  • Processor: Freescale i.MX31 Mario ARM1136JF-S 400 MHz, 128 MB DRAM, 8 MB Flash
  • Storage: 2 GB internal memory, approx 1.4 GB usable for content
  • Connectivity: AnyDATA DPT-600W HSPA mini PCI-E module, USB 2.0 interface, SIM-card holder
    • UMTS 850/1900/2100 MHz, GSM/GPRS/EDGE 850/900/1800/1900 MHz
  • Battery: 3.7V 1530 mAh Lithium-polymer battery, 31 grams
  • Size and weight: 203.2x134.6x9.1 mm, 289.2 grams
  • Designed by LAB126
  • Shipping software version: 2.2 (375490138)


Recovery mode

To enable the recovery mode, reboot and hold the Home-botton when the screen is flashing from black to white.

Connect via USB to a computer and manage the files on the device. Press R to reboot.


Log dump

When a custom package is installed (see below) it has to be removed else a firmware update will exit with an error. Use the commands below to create a log file on the USB-drive with information about the error.

Press HOME and any keyboard key to bring up the search field, enter the following:


Connect via USB to a computer and check the log file on the Kindle drive.

An example:

ota_install: C def:patch:patchinfo="/opt/amazon/ebook/config/netfront.ini":checksum failure


Force reboot

Sometimes it's not possible to use the menu to reboot the Kindle. Hold the slider for 15 seconds to force a reboot of the device.


Applying Hacks

The modifications found below is installed by utilizing the Kindle update process and signing the packages with the correct certificate.

Download a hack, connect the Kindle to a computer, and extract the Update_kindle2_XXXX.bin from the package. Notice the format of the filename, Update_kindle2 is an indicator that this is a Kindle2 update. Also note that the Kindle2 programmed to look in the root of the USB-drive for any file starting with this suffix when the Update my kindle function is issued. If found during boot-up, the content of the update file will be installed/executed.

A note about official firmware updates, firmware updates perform a checksum on vital system files and if one check fails the update will halt. Therefore an uninstall package is usually provided together with the main package.

Creating Packages

Python application to create and sign Kindle firmware update packages.

Note that for the Kindle2 international there are some packages that are self-sign and installs without any further change, and there are packages that require the freekindle-k2i pre-installed. Freekindle will install a new RSA key (our) to the Kindle, the update will fail with Error 004 but this is normal.

In most cases, it's possible to re-compile old packages using a updated Packager if a new Kindle firmware update is released. The RSA key has to be extracted first from the new update.

Python is required to run Packager, use OSX, Linux, cygwin, or ActivePython.

  • Extract package
    Extract the package for the Kindle 2 International
    ./ e update_ufh_droid_install-k2i.bin
    Extract the content
    tar zxvf update_ufh_droid_install-k2i.bin.tgz
    Remove all the files you don't need anymore
    rm *.sig *.dat *.tgz
  • Create package - self-signed
    For Kindle 2:
    ./ m --k2 --sign --ex ufh_droid_install-k2 droid.ttf
    For Kindle 2 international:
    ./ m --k2i --sign --ex ufh_droid_install-k2i droid.ttf
    For Kindle DX:
    ./ m --dx --sign --ex ufh_droid_install-dx droid.ttf




Kindle recovery

This install a hook that will execute a script located in /documents/system/ in case the GUI front-end is failing to spawn. This is a great way to recover from a bad install or experimentation. USBNetwork could also be used in this case.



USB Network

USBNetwork makes it possible to send data traffic over USB to a computer and further out to the Internet, and also allows access to the Kindle Store if the Kindle is pre-registered via the cellular network. Remote access via telnet and ssh/scp is also included.

Works on Kindle 1, Kindle 2, Kindle 2 international, and Kindle DX.

Network details:

  • Computer: (add the new IP or change the current in network settings)
  • Kindle:

Login details:

  • Telnet: User: framework - Password: <none>
  • SSH: User: root - Password: <blank>



Savory Document Processor

This background daemon will automatically convert any epub, lit, odt, rtf, oebzip, fb2 and pdf file into mobi-format that the Kindle can display.

Put the documents in the /documents/ directory on the Kindle. When the conversion is done the original file will be moved to /documents/savory-archive/. Unplug the USB cable to let the daemon resume and identify the new files.

To install, put the savory-image-00x.ext3 file on the root of the Kindle drive in addition to the suitable update_Savory-0.0x-kx.bin file.



Unicode Font Hack

A regular Kindle will only display Latin characters, meaning Cyrillics and Asian Glyphs will not render properly. Also, the normal font can be a bit narrow and hard to read on the Kindle display. The font replacements below will target some of these issues.

The default fonts on the Kindle:

  • Caecilia LT 65/75/66/76 - Serif, used for the main reading font
  • Helvetica LT 65/75/66/76 - San-Serif, used for menus and top bar
  • KindleBlackbox - Mono-spaced, same use as San-Serif above

The difference between Sans-Serif and Serif respectively, Wikipedia images:

209px-Serif_and_sans-serif_02.svg.png 209px-Serif_and_sans-serif_01.svg.png

Some of the font packs below replace Serif with San-Serif fonts, while other keep the typeface (San-Serif, Serif, Mono) as is but change the font style (Droid, Helvetica, Georgia).

Downloads: For firmware v2.3:


Screensaver Hack

This changes the default image shown in sleep mode and makes it possible to display a custom PNG image of your choice.

Install the package and put the images into the new /system/screen_saver/ directory. The preferred image size is 600x800px for Kindle2/2i and 824x1200px for KindleDX.



Change Screensaver Timeout

By default the system will be put into sleep mode after 10 minutes of inactivity. The screensaver will then be activated and the wireless disabled.

To change the timeout value, edit the /etc/powerd.conf file and change the t1_timeout: value. To access the file, use either USBNetwork or install the package below.



JTAG console

A JTAG serial console is can be used to directly send commands to- and read outs from the processor (control and debug). Helpful for understanding and experimentation.



Official firmwares: