If you're even slightly interested in getting into jailbreaking/hacking of devices, the Kindle is a great place to start.
There's a lot of low-hanging fruit there. Particularly because the device has a USB port and, by design, exposes a user partition that you can read/write to (so you can upload files and documents and ebooks to the device).
There's definitely been an effort by Amazon to lock them down, but just taking your reverse-engineering tool of choice and decompiling their firmware binary will give you tons of readable code to dig through. They use a mix of java, native c, and javascript.
Fun fact, at startup the Kindle looks for certain files in the user partition, with certain naming patterns. You can, for example, disable the screensaver by dropping a file with a special name there. They patched this once, but after doing a grep for the user-partition mount location (to see all the places in their code where they read from user partition files) I was pretty quickly able to find another way to do this. It's fun stuff.
I looked into it precisely once, and found a bunch of results that the newer firmware versions didn’t have jailbreaks available, and that downgrading wasn’t feasible. I’m hoping to be proven wrong though…
The most fun part of these projects is seeing people quickly build ad-hoc renderers for E-Ink. Very quickly you find out you need render passes, dithering, debanding, etc.
The one display I got takes about 2 seconds to cycle. You can make it shorter with partial redraws, but for my purposes, the cycle was the right thing to do.
2. It is in stock. :) Raspberry Pi Zero 2 and the waveshare displays are in a bit of a stock crunch, and the frame I ended up mounting this in, along with the special flat USB cable, pushed the project cost to the same price. It's my own aEsTheTic tho.
If you’re not up for DIY, I’ve been using a unit from https://www.invisible-computers.com/ for years and I love it. Not affiliated; just a happy customer.
My heart made a little jump when I saw this, I've been working on this project for years and I do not take it for granted that my users are starting to recommend the product.
I am here to answer any questions anyone might have.
I understand your desire to build out an "ecosystem" of app and everything, however, I'd really like an option to go fully on my own and skip your iOS/android app.
Is it something that you plan on doing and document? Or is there an easy way I can ssh into the device and figure out on my own?
Oh man, glad you’re still going. For some reason I remember you getting a ton of critical feedback last time this was posted - glad you’ve persisted. Keep on my friend.
This thing looks like a lot of fun, however it looks like the device is "tethered" to some kind of back-end service you provide, rather than just being a standalone device on the network. Can you explain how communication with the device works?
Ooh that looks interesting and not TOO expensive, for a "out of the box" solution. Does it work well / is it self-sufficient without phone once you set it up? Can you adjust the scale, scroll easily, etc?
Founder here. You can adjust how many of the upcoming days are shown, and you can adjust the first and the last hour of the day.
This really allows you to dial in the information density.
For scrolling, I am not quite sure what you mean - are you referring to a button that would allow to move the time forward on the calendar? (That doesn't exist yet)
I repurpose all my old ereaders (Kindles and Kobos) into displays for something, weather, agendas, some even do images (albeit very low resolution). It's great to have these around the house, quietly doing their thing.
One thing I will point out from observation, the radios on ereader devices aren't great for heavy use; they were originally created for occasional syncing. Projects like these will require an HTTP request to somewhere to fetch data, on a regular basis, and the radio eventually stops working. It's not a terrible thing considering it's just an unused device. If you're looking for something longer lived, the waveshare screen are worth considering for mini projects.
I agree, dithering on these devices works really well. After this project I worked on displaying images of the sun from the NOAA satellite. Until I got dithering working displaying the image with just 4 levels of grey was was very lackluster.
Resolution is more important than grayscale for e-ink - not only are they two sides of the same coin for dithering, but e-ink renders far faster in black-and-white so with sufficient resolution you've got a snappier page turn.
What I really want is a simply end-to-end way to program these devices to display something: basically, something as easy as QBasic, P5.js, or Scratch.
What I don't want is to run a server to host something for them to display. I want it self-contained, so once made, it's alive until the device breaks. My experience is 95% of the cost of these is maintenance, and that goes away once a project is no longer new, glitzy, and flashy.
What I actually want to build myself is a clock which displays time in time zones where my friends, relatives, and family are. Most of the other things I'd like are equally esoteric. I'd like this to be a <3 hour project (so it sustains a child's attention span too).
WaveShare screens are very reasonably priced and are starting to have 3+ color options. Using a RasPi and Python one can simply display any image via Python Imaging and some code to transmit the data via the connector pins. The image remains fixed on the screen even when it's powered down.
I got a little screen and the demo code worked, didn't know Python well enough at the time to keep running with it (part of the motivation to learn Python in the past year). Might need some work to build a case/enclosure, but beyond that it's a little piece of hardware that does what you wish. I'm thinking similar things, some specific cases in mind.
(I can be hired to do work like this for $15/hr for the first 90 days, contact info in profile).
I did something similar with a first gen kindle. Some day it stopped working, I opened the enclosure to find a completely cracked-open kindle with a battery the size of a weather balloon inside.
This was about a month after I returned from a six week trip during which I kept that thing running.
Reminder that a lot of battery-powered devices really don't like to be connected to power all the time.
That's not an issue for a device like this. The typical use case is refreshing the screen once every 5, 10, 15, etc. minutes, which takes a few seconds (including connecting to wifi, downloading the data, etc.), and then spend the rest of the time in some super low power deep sleep mode, drawing maybe tens of microamps. Or maybe checking over Bluetooth LE whether to trigger an update, once every couple seconds. This will never get hot enough to the point where it would matter.
An aside but I’ve long thought that if Apple was truly committed to the environment and equipment reuse they’d let us use old iPads for stuff like this. I’d love to make a digital photo frame/day planner from an old iPad mini I have kicking around. They could even integrate Siri etc.
(I know you can get some way toward this with various apps but it’s definitely not the same as something OS-level)
They have by far the longest support historically compared to the rest of the ecosystem. It’s not even close. A while ago my parents bought an android device that SHIPPED one version behind and was never updated. Totally pathetic. I’ve seen fixes for surprisingly old iOS devices and even new features often go back some generations.
My work does something like this with Surfaces and unfortunately if you leave devices like that plugged in all the time the batteries swell and bend the screen and frame.
Maybe they could soft lock them to 50% or something but under normal circumstances it's too dangerous.
I have an old ipad Mini running ios9. there is an app called liveframe and it has integrations with google photos. i have been running it as a picture frame for a couple of years now
Another option for displaying things on a jailbroken Kindle is to use kterm to ssh into a computer and then connect to a tmux session. I've used this to read man pages - it's quite satisfying to press 'f' on my laptop and see the page scroll on the Kindle.
Connectivity is easy, as you can connect over USB or WiFi (my Kindle connects to my iPhone's hotspot).
There's a lot of low-hanging fruit there. Particularly because the device has a USB port and, by design, exposes a user partition that you can read/write to (so you can upload files and documents and ebooks to the device).
There's definitely been an effort by Amazon to lock them down, but just taking your reverse-engineering tool of choice and decompiling their firmware binary will give you tons of readable code to dig through. They use a mix of java, native c, and javascript.
Fun fact, at startup the Kindle looks for certain files in the user partition, with certain naming patterns. You can, for example, disable the screensaver by dropping a file with a special name there. They patched this once, but after doing a grep for the user-partition mount location (to see all the places in their code where they read from user partition files) I was pretty quickly able to find another way to do this. It's fun stuff.
Here's my weather E-Ink board (which consistently gives a faster result than waiting for the iOS weather app to fetch & render): https://github.com/OmerShapira/theres-some-weather-outside
It worked way better than I thought it would and is a pretty decent size.
Little pricey.
[1] https://www.youtube.com/watch?v=-ZXrJRpA0Jw
[2] https://www.amazon.com/DASUNG-Paper-Monitor-Knight-Version/d...
1. His project does allow rendering any HTML: https://www.invisible-computers.com/programmable-e-paper-scr...
2. It is in stock. :) Raspberry Pi Zero 2 and the waveshare displays are in a bit of a stock crunch, and the frame I ended up mounting this in, along with the special flat USB cable, pushed the project cost to the same price. It's my own aEsTheTic tho.
I am here to answer any questions anyone might have.
There are some more pictures on the shop page here: https://shop.invisible-computers.com/products/invisible-cale...
Is it something that you plan on doing and document? Or is there an easy way I can ssh into the device and figure out on my own?
TIA!
EDIT : well, 1 minute later you answered part of my question here : https://news.ycombinator.com/item?id=37645339. How about ssh-ing?
For scrolling, I am not quite sure what you mean - are you referring to a button that would allow to move the time forward on the calendar? (That doesn't exist yet)
One thing I will point out from observation, the radios on ereader devices aren't great for heavy use; they were originally created for occasional syncing. Projects like these will require an HTTP request to somewhere to fetch data, on a regular basis, and the radio eventually stops working. It's not a terrible thing considering it's just an unused device. If you're looking for something longer lived, the waveshare screen are worth considering for mini projects.
Dithering works brilliantly on these devices. I made a photo frame out of one of these by calling some imagemagick from golang.
I agree, dithering on these devices works really well. After this project I worked on displaying images of the sun from the NOAA satellite. Until I got dithering working displaying the image with just 4 levels of grey was was very lackluster.
Do you have any pointers on where to start?
What I don't want is to run a server to host something for them to display. I want it self-contained, so once made, it's alive until the device breaks. My experience is 95% of the cost of these is maintenance, and that goes away once a project is no longer new, glitzy, and flashy.
What I actually want to build myself is a clock which displays time in time zones where my friends, relatives, and family are. Most of the other things I'd like are equally esoteric. I'd like this to be a <3 hour project (so it sustains a child's attention span too).
I got a little screen and the demo code worked, didn't know Python well enough at the time to keep running with it (part of the motivation to learn Python in the past year). Might need some work to build a case/enclosure, but beyond that it's a little piece of hardware that does what you wish. I'm thinking similar things, some specific cases in mind.
(I can be hired to do work like this for $15/hr for the first 90 days, contact info in profile).
This was about a month after I returned from a six week trip during which I kept that thing running.
Reminder that a lot of battery-powered devices really don't like to be connected to power all the time.
Shitty ones don't, yeah. A thing you can do with those is remove the battery fully, so it's not being recharged/used at all.
(I know you can get some way toward this with various apps but it’s definitely not the same as something OS-level)
Because they claim to be!
Maybe they could soft lock them to 50% or something but under normal circumstances it's too dangerous.
Connectivity is easy, as you can connect over USB or WiFi (my Kindle connects to my iPhone's hotspot).