I thought I’d have a go at jailbreaking my spare Kindle 3G to use it as a display for my Raspberry Pi (unfortunately it seems you can’t use it like a serial console, you essentially just use the Kindle to SSH over USB to the Pi). Its unregistered and has no wifi configured, so will never get any over-the-air firmware updates from Amazon.

Anyway, after remembering that my Kindle is actually a US model, not a UK one as I bought it in France, I downloaded the lastest 3.4 firmware Update_kindle_3.4_B006.bin from here, so I could do an offline update from 3.3 that was on there.

Next I downloaded the various files from this thread on MobileRead. Below is a quick’n’easy set of instructions I made as the various threads and README files made what should have been a 15min exercise into about 3 hours of reading.

0. Update firmware:
a. Copy Update_kindle_3.4_B006.bin to Kindle
b. Eject
c. [HOME] -> [MENU] > Settings -> [MENU] > Update Your Kindle

1. Jailbreak:
a. Copy update_jailbreak_0.11.N_k3g_install.bin to Kindle
b. Eject
c. [HOME] -> [MENU] > Settings -> [MENU] > Update Your Kindle

2. Install Launchpad hotkey app launcher:
a. Copy update_launchpad_0.0.1c_k3g_install.bin to kindle
b. Eject
c. [HOME] -> [MENU] > Settings -> [MENU] > Update Your Kindle

3. Install myts terminal emulator:
a. Create a customupdates directory on the Kindle and copy myts-6.zip to it (don’t unzip it)
b. Press Shift, Shift, I (quickly) to install into Launchpad
c. Press Shift, T, T which should bring up a terminal

4. Install usbnetwork hack:
a. Copy update_usbnetwork_0.47.N_k3g_install.bin to Kindle
b. Eject
c. [HOME] -> [MENU] > Settings -> [MENU] > Update Your Kindle
d. Copy your ~/.ssh/id_rsa.pub public ssh key from your PC to usbnet/etc/authorized_keys on the Kindle
e. Set USE_OPENSSH="true" in usbnet/etc/config on the Kindle
f. Eject
g. Press Del, then type ;debugOn
h. Press Del, then type ~usbNetwork
i. Press Del, then type ;debugOff
j. On host PC type: sudo ifconfig usb0 192.168.2.1 up
k. On host PC type: ssh root@192.168.2.2
l. On Kindle type: mntroot rw then: passwd root to change the root password

Note that you can change the HOST_IP/KINDLE_IP in usbnet/etc/config on the Kindle, but it must not be the same network as your LAN, its a private network over USB.

As I didn’t want USB networking mode by default but also didn’t want to have to remember the debug commands to enable it, I created a Launchpad script to toggle USB net/disk modes:

5. usbnetwork toggle script for launchpad:
a. Create launchpad/usbnet.ini containing the following:

` [Actions]

Toggle USB Network

Shift N = !/test/bin/usbnetwork


b. Press Shift, Shift, I to reload launchpad  
c. Press Shift, Shift, N to toggle net/disk modes (make sure to unmount disk or exit console sessions first)

Also I found that you can setup hotplugging on the host PC so that whenever the Kindle is plugged in in usbnetworking mode, the usb0 device is upped:

**6. usbnetwork hotplugging:**  
a. Add this to /etc/network/interfaces on the host PC:

```bash
allow-hotplug usb0
mapping hotplug
	script grep
	map usb0

iface usb0 inet static
	address 192.168.2.1
	netmask 255.255.255.0
	broadcast 192.168.2.255