My Bitcoin Status Display made with a jailbroken Kindle. Original idea and setup taken from @naltatis' kindle-display.
This is a two part setup: The hacked Kindle pulls a screenshot that is taken from the webpage the server displays. The server updates this screenshot in regular intervals and the Kindle also updates regularly.
+------+ update X minutes +------+
| | ------------------> | |
| | wifi | |
| | <------------------ | |
+------+ greyscale image +------+
kindle server
The code in this repository is my personal setup which pulls in data from my own network.
I recommend you fork this repository and modify the ./data.sh
and visual representation to fit your needs.
- Node.js (assembles the data and runs the webserver)
- firefox (takes the screenshot of the webpage)
- pngcrush (converts the screenshot to a greyscale image)
- jq (to process the JSON data)
- jo (to generate the JSON data file)
# Clone the repository
git clone git@github.com:username/kindle-display.git
# Go to the server directory
cd kindle-display/server
# Copy sample env file and adapt the settings
cp .env.sample .env
# Install the dependencies
npm install
# Start the server
npm start
# Update data and create the screenshot
./cron.sh
# Preview the greyscale in your browser
open http://localhost:3030/display.png
Once everything works, deploy the server app and setup a cronjob to trigger the cron.sh
script regularly.
You need to jailbreak your Kindle using the packages from the mobileread forum.
I installed these according to the info in their particular READMEs:
- Jailbreak
- USBNetwork
- MKK
- KUAL
# Connect your Kindle via usb and ssh into it
ssh root@kindle
# Make the Kindle file system writable
mntroot rw
# Create the mnt/base-us scripts according to the files in the kindle directory
vi /mnt/base-us/RUNME.sh
# Set the BASE according to your local network setup to address the server
vi /mnt/base-us/update.sh
# Create a cronjob to run the update script in regular intervals
#
# For instance:
# */5 6-22 * * * /mnt/us/update.sh
# 0 23,0,5 * * * /mnt/us/update.sh
vi /etc/crontab/root
# Execute the init script and trigger an the first render
sh /mnt/base-us/RUNME.sh
Some hints via openoms) and grnqrtr, also see the mobileread forum.
Unmount and eject your Kindle. Also unplug it, as some devices behave strangely when toggling usbnet/usbms while plugged in.
Toggle USBnetwork ON
in the launcher and plug in the cable again.
Kill any automation or configure your Kindle to do so.
sudo ip link set up dev usb0 (It may already be up)
sudo ip address add 192.168.15.201 peer 192.168.15.244 dev usb
Use the networking until your done (telnet 192.168.15.244
).
Un-plug cable and toggle USBnetwork OFF
in launcher.
You'll need to be in debug mode to run private commands. So, on the Home screen, bring up the search bar (by hitting [DEL] on devices with a keyboard, or the keyboard key on a K4, for example), and enter:
;debugOn
# now we can enable usbnet
~usbNetwork
On the desktop:
dmesg | grep usb0
# example output
> [367478.835928] cdc_subset 1-2:1.1 enp0s20u2i1: renamed from usb0
Use ifconfig enp0s20u2i1 192.168.15.201
To log in ssh root@192.168.15.244
and just press enter.
naltatis
Matthew Petroff
hahabird