The goal of this project is to use a Kindle Touch as an interactive kiosk for Home Assistant Lovelace pages. To achieve this, we jailbreak the Kindle and put a VNC client on it. We run a VNC server in a docker container (on another machine), with Chromium browser full-screen, pointed at whatever URL is desired.
It is not perfect, you will see some artifacts typical of e-ink screens, and the framerate is not stellar, but it is totally usable as an interactive kiosk.
This is the short version Here is the long version, which has a LOT more information.
This repository is a repackaging of other people's work. Credit to NiLuJe, hwhw, schuhumi, and all the other fine people on MobileRead forums who made all this work, and shared it with us.
- We presume you are using the Kindle Touch, model D01200
- connect to wifi
- check firmware version, if it is lower than 5.3.7.3, go ahead and update
- that is the last version that supports this hardware, and it can be jailbroken easily
- plug in usb, mount internal kindle storage
- in this repo, find
PutOnKindle.zip
and extract its contents into the root of kindle storage- you do NOT want a folder named
PutOnKindle
, take everything inside that folder and put at root of kindle storage - why is this in a zip file? Need to preserve extended attributes which git does not track
- you do NOT want a folder named
- eject and unplug kindle
- on kindle, go to settings and update
- this will just print a jailbreak message at the bottom
- restart the kindle
- plug in usb, mount internal kindle storage
- inside
ManualPackages/
, grabUpdate_KUALBooklet_v2.7_install.bin
, and put it on the root of kindle internal storage - eject and unplug kindle
- go update software again, this will actually install the package you just put on internal storage (and then delete the package when done)
- you now have a new "book" on the kindle home screen named KUAL
- open KUAL, tap Helper+, then Install MR Packages
- watch it install two packages (jailbreak hotfix, and usbnetwork)
- you now have usb networking!
- make sure your kindle is NOT conneted via usb
- open KUAL, tap USBNetwork
- Tap Enable Verbose Mode
- this will cause it to print status messages at bottom of the screen, super helpful for debugging
- Tap Toggle USBNetwork
- when usb networking is toggled, it does some funky stuff on the usb bus that almost always crashes whatever device it is plugged into. This is why you should not toggle usb network while usb connected
- Tap Enable Verbose Mode
- connect usb to computer (ideally a mac)
- configure the new RNDIS/Ethernet Gadget device that should be listed in network settings on your desktop
- set ip to
192.168.15.201
- set ip to
- ssh to your kindle:
ssh root@192.168.15.244
- the jailbreak will have cleared the root password, so you can login with blank password
- blank password only works via usbnet, using the default DropBear server. you MUST set root password for ssh to work via wifi
- change root password
- switch to read/write mode:
mntroot rw
- change password:
passwd
- switch back to readonly mode:
mntroot ro
- readonly mode only affects the system partition, not userdata (
/mnt/us/
)
- switch to read/write mode:
- on the kindle, the internal storage is at
/mnt/us
and you whould put your ssh key in/mnt/us/usbnet/etc/authorized_keys
- the jailbreak will have cleared the root password, so you can login with blank password
- once you have changed password and installed your key(s), exit the ssh session and unplug usb
- open KUAL and toggle usb network
- Now lets enable ssh via wifi only, at boot
- first, toggle usbnet (you need it off to change these settings)
- tap Enable SSH at boot
- tap Restrict SSH to WiFi, stay in USBMS
- now when you connect usb it will always do the storage thing, but ssh works via wifi
- tap SSHD: Use OpenSSH
- OpenSSH is a bit faster than the default DropBear server on the kindle
- reboot the kindle and confirm that you can ssh to it via wifi, and that usb works for storage
- ssh to the kindle (via wifi)
cd /mnt/us/
./setup_kiosk_autostart.sh
nano vnc_config.txt
- change the ip, port, and password
reboot; exit
- it helps to include
; exit
because sometimes you dont get kicked out of the ssh session properly and you just end up with a frozen terminal
- it helps to include
- at next boot, it will start the vnc client
- logs are at
/mnt/us/kiosk.log
From now on, when the kinde boots up it will launch vnc client instead of the normal GUI. If the vnc client crashes, or fails to connect, it will restart with a 10 second delay. During the delay it will display battery information. You can manually force it to quit (and be restarted) by pressing the home button.
to undo this, there is another script named undo_kiosk_autostart.sh
, after which you should reboot and it will launch the normal kindle GUI
Inside docker-vnc-kiosk-server
are the pieces for a docker container running chromium in kiosk mode, pointed at your url, and a vnc server.
Edit docker-compose.yml
and make sure to adjust the password and url.
This container can persist the chromium profile, so you can save cookies and credentials.
It is also specifically designed to not use the host GPU, so that you can run as many containers on a single host as you wish.
This is the only original work included in this repo, and it is provided without license. You are welcome to use it however you want, without limitations.