Turn an old Kindle into a smart dashboard by jailbreaking it, configuring network settings, disabling the UI, and displaying a grayscale image fetched from a Cloudflare Workers API server.
Turning Your Old Kindle into a Smart Dashboard
Intro Hook
- Ever wondered what to do with that old Kindle lying around?
- How about turning it into a smart dashboard?
Jailbreaking the Kindle
- Easy process with a user-friendly guide at kindlemodding.org.
- Main Steps:
- Identify your Kindle model.
- Install WinterBreak.
- Setup a hotfix.
- Install Kindle Unified App Launcher and a package installer.
- Enable SSH using USBNet.
- Troubleshooting: KindModding Discord community.
Network Configuration
- USBNet package might not work; try USBNetLite.
- Two connection modes:
- RNDIS/Ethernet gadget.
- SSH over network using the IP address.
- Steps to enable SSH:
- Enable USBNet from the KUAL Menu.
- Set the IP address manually (e.g.,
192.168.15.201
). - SSH using the IP address.
- Enter the password from the
/etc/config
file.
Creating the Dashboard
- Challenge: Kindle OS is a stripped-down Linux version with no package manager.
- Approach: Disable the framework and display a PNG image periodically in full-screen mode.
- Key Steps:
- Stop Kindle UI frameworks and screensavers.
- Check internet accessibility.
- Fetch the PNG image from the server using
curl
. - Display it fullscreen using the
eips
command.
- Important: Images need to be in 8-bit Grayscale and match the Kindle's display resolution (find using
eips -i
).
API Server in the Cloud (Cloudflare Workers)
- Using Cloudflare Workers, Hono JS, Cloudflare KV, Bun, and TypeScript.
- Data Sources:
- Weather: Pirate Weather API (via Merry Sky).
- Public Transport: VBB Berlin API.
- School Timetable: Hardcoded data, future KV/D1 integration possible.
Image Processing
- Required: Render webpage, take a screenshot, convert to 8-bit Grayscale.
- Tools: Cloudflare Browser rendering (Puppeteer), cf-wasm.
- Steps:
- Capture a screenshot using Puppeteer.
- Convert the image to grayscale using
cf-wasm
.
- Code Snippet (Grayscale Conversion):
const gray = Math.round(0.299 * r + 0.587 * g + 0.114 * b); grayscaleData[i / 4] == gray;
Final Thoughts
- Fun project with a practical outcome.
- Kindle battery lasts about two weeks.
- Great hacking device; cheap on eBay.
- Code available on GitHub:
- Kindle Dash Client
- [School dashboard backend](https://github.com/samkhawase/school-dash-backend