Skip to content

Instantly share code, notes, and snippets.

@estysdesu
Last active September 21, 2024 13:11
Show Gist options
  • Save estysdesu/c90478aac75b732820be6720254aeda7 to your computer and use it in GitHub Desktop.
Save estysdesu/c90478aac75b732820be6720254aeda7 to your computer and use it in GitHub Desktop.
[Kindle 4: Jailbreak and SSH] #kindle #ssh #jailbreak

Following this guide: https://wiki.mobileread.com/wiki/Kindle4NTHacking#SSH.
Using Kindle 4.1 and macOS 10.14.

  1. Connect the Kindle. It should be recognized as a USB Mass Storage Device.
  2. Download the jailbreak archive
  3. Copy data.tar.gz, ENABLE_DIAGS, and diagnostic_logs to the Kindle folder.
  4. Restart the Kindle into Diagnostics Mode.
  5. Reboot the Kindle from the Diagnostics Mode. Reboot screen should show jailbroken screensaver.
  1. Download the USBNetwork archive needed to enable SSH over network access.
  2. Edit the usbnet/etc/config file if needed. I changed:
    1. K3_WIFI="true"
    2. USE_OPENSSH="true"
    3. (Optional) K3_WIFI_SSHD_ONLY="true" (only after first time connecting via SSH and setting up auto-enabled USBNetwork)
  3. (Optional) rename usbnet/DISABLED_auto to usbnet/auto to enable USBNetwork Utility start on device startup.
  4. Enable the USBNetwork Utility from the Kindle (enable the keyboard if needed); type:
    1. ;debugOn
    2. ~usbNetwork
    3. ;debugOff
  5. Connect the Kindle again.
  6. Manually configure the device IPv4:
    • IP Address: 192.168.15.201
    • Subnet: 255.255.255.0
  7. Obtain the Kindle root user password:
  8. SSH into the Kindle: ssh [email protected] and enter password from previous step
@Inc0n
Copy link

Inc0n commented Apr 27, 2020

Hi do you know how to get kindle ssh over usb to work?

@estysdesu
Copy link
Author

estysdesu commented Apr 29, 2020

It's in the guide. Follow the steps:

  1. Jailbreak 1-5
  2. SSH 1-2.i-ii (skip 2.iii for now)
  3. SSH 4-8.

These steps work for me on the Kindle 4. If this doesn't work for you, I need more info. It's been a while since I did this to mine, but provide me more context and maybe I can help. What is your: OS, Kindle version, etc.? This really isn't for the faint of heart. Took my roommate and I a few days to figure all of this out for both of our kindles.

@Inc0n
Copy link

Inc0n commented Apr 29, 2020

Thanks for the reply!
My kindle is PW3
I am using Manjaro linux OS
ssh over network works, but i am not sure for ssh over usb.

Now you have mentioned do step SSH 2.ii, I haven't done that yet, beside this option.
For example on sshing from my host machine, what IP do i use, is it the IP like u said here:

Manually configure the device IPv4:

Also, a slightly off topic one, my machines doesn't quite recognize my kindle on some occasions, would that affect the ssh over usb connection? (I should not burden u with fixing the issue of unable to recognize my kindle, however)

Should there be more information supplied, please tell me

@estysdesu
Copy link
Author

estysdesu commented Apr 30, 2020

I'm not sure all the steps for other Kindles. I followed multiple sources with the source of truth being mainly this guide. That contains both the jailbreak files and the USBNetwork files.

Now you have mentioned do step SSH 2.ii, I haven't done that yet, beside this option.

I think you need SSH 2.ii.

For example on sshing from my host machine, what IP do i use, is it the IP like u said here:

Manually configure the device IPv4:

You definitely need to do this. You need to grab the kindle-usbnetwork-<version>-<kindle version>.zip from the link I posted above in this comment and unzip it and read the readme_first.txt and readme.txt. Those docs will probably help you understand this issue better.

Essentially you need to:

  1. Plug in your Kindle.
  2. Move the Kindle USBNetwork binary (update_usbnetwork_*_install.bin) to the root of your device (SSH 1).
  3. Update your Kindle (same as when you install the jailbreak).
  4. Change the file in usbnet/etc/config (while the kindle is plugged into your computer as a normal usb device) (SSH 2).
  5. Activate USBNetwork on Kindle (SSH 4).
  6. You have to change the IP address associated with that USB/Ethernet device. On macOS, that looks something like this. On linux, you can use ifconfig I believe and it looks something like this ifconfig usb0 192.168.15.201 with usb0 being the port the usb is plugged into. The IP can be different depending on the kindle device. That is why you need to read the readme*.txts for USBNetwork. (SSH 6). Note, when you do this (at least on macOS), I don't think I was able to use my other network interfaces to connect to the internet anymore until the Kindle was unplugged; this seems like it prioritizes over your computers network say with a router (I assume this is an expected behavior of network interfaces with a computer and not a bug).
  7. SSH into the Kindle using the root password obtained from the Kindle root password tool (SSH 7-8).

Also, a slightly off topic one, my machines doesn't quite recognize my kindle on some occasions, would that affect the ssh over usb connection? (I should not burden u with fixing the issue of unable to recognize my kindle, however)

Seems like a hardware issue if it's still in USB mode. I'm not an expert, but mine wasn't really finicky like that. All the more reason to get the SSH working properly so you can then enable SSH over wifi.

@banagale
Copy link

banagale commented Jun 5, 2021

@estydesu How are you able to turn off airplane mode and not have the device update to 5.13.15? I made a mistake thinking that the hotfix in the main guide did this, and during testing of the USBnetwork binary had the device update to 5.13.5. :(

@estysdesu
Copy link
Author

@banagale Can you elaborate your issue? I haven't done anything new to my Kindle in a while, but still actively use it and connect it to WiFi.

@equinix5
Copy link

equinix5 commented Feb 1, 2022

Tyler, Thanks for your tutorial. =)

When I try to SSH into my kindle PW2 (5.12.2.1.1) and it asks for the password it keeps saying "Permission denied, please try again"

I have followed your steps
SSH

  1. Downloaded and installed kindle-usbnet-0.22.N-r18833

  2. edits in usbnet/etc/config
    USE_WIFI="true"
    USE_WIFI_SSHD_ONLY="false"
    USE_OPENSSH="true"
    QUIET_DROPBEAR="false"
    TWEAK_MAC_ADDRESS="true"

  3. I've changed the file once to see if it worked after that I used the Enable SSH at boot option and did a reboot.

  4. (See 3. , still would like to know where you would write these commands ?)

  5. Done

  6. Done on Linux Mint, it says its connected

  7. This website gives me 4 passwords mario fiona3a0 fionaf97 fionaf974 (The first time I requested the passwords I didn't capitalize the Letters in my serial number, I did so after which gave me these passwords)

  8. When I type ssh [email protected] it will ask me for the root password but none of the provided passwords from 7. seem to be working (I get this message Permission denied, please try again.)

Any idea what I'm doing wrong ?

@Inc0n
Copy link

Inc0n commented Feb 1, 2022

https://phoenixnap.com/kb/ssh-permission-denied-publickey
It might have something to do with the permission of your authorized_keys

@cyrillkuettel
Copy link

USB device name

Just a heads up for anyone in the future: Sometimes, especially on newer systems, the device name is a weird name like enxee4900000000 (instead of usb0). I think this is because of PredictableNetworkInterfaceNames.

Configure Network interface in Ubuntu

For anyone wondering what "Manually configure the device IPv4" exacly means, here the instructions for Ubuntu. (Tested on Ubuntu 22.04)

  • Open your network settings
  • Open "USB Ethernet" settings
  • In the "IPv4" tab:
  • Set "IPv4 Method" to "Manual"
  • Under "Addresses", set "Address" to 192.168.15.201 and "Netmask" to 255.255.255.0
  • Click "Apply"
  • Restart the connection by disabling it and re-enabling it

This assumes the public keys are stored, in OpenSSH format, in usbnet/etc/authorized_keys.

@zenminimalist
Copy link

zenminimalist commented Nov 17, 2022

@cyrillkuettel @Inc0n @equinix5 Yeah, nothing is working for me. I have tried the 4 passwords from the password generator site. It still keeps me asking for a password when trying to ssh into my Kindle PW Sig. Edition.

Any idea what other things to try?

@cyrillkuettel
Copy link

The password tool did not work for me. I had to put my public key in usbnet/etc/authorized_keys, as far as I remember.

Do you have a new(ish) device? They tend to be quit tricky for this stuff. I can highly recommend mobileread threads like this one, they have extensive writeups of information. I can also recommend posting a question there in the Kindle Developer's Corner . These people can help you, they know everything about this sort of stuff.

@zenminimalist
Copy link

@cyrillkuettel Thanks for the quick reply!

Yeah it's Amazon's newest Kindle. I actually had that exact tab from Mobileread open, but couldn't get it to work. I also didn't see authorized_keys folder or files named that on my Kindle.

I'm actually trying to find a solution how to upload files from KOReader to Dropbox (download obviously no problem). One user seems to have developed a quick & dirty solution here on Github.

So since I have no idea how to get his solution up & running I thought I'd try the whole syncthing, which requires USBNetwork hack, SSH and so forth.

@DavidBuchanan314
Copy link

DavidBuchanan314 commented Aug 30, 2024

I'm on a PW5, I enabled SSH and usbnet/auto. I have networking working, but the password doesn't work. From what I read above, I need to drop a pubkey in usbnet/etc/authorized_keys.

However, my device no longer shows up as a USB storage device. How do I make it do that? Am I screwed?

Edit: Ahhh, went into KUAL and turned usb network off again.

@cyrillkuettel
Copy link

cyrillkuettel commented Aug 30, 2024

By the way, you can just use telnet. This is a great trick if anyone has trouble with ssh [email protected],

Telnet is installed [source] from here easier to use:

telnet 192.168.15.244
mntroot rw
cd /mnt/us/usbnet/etc
# just put your public key in authorized_keys, so ssh will work in the future

Edit: And no, telnet doesn't require password :)

@Olzz20
Copy link

Olzz20 commented Sep 21, 2024

please make a video tutorial

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment