A couple of months ago, I accidentally stepped on my Kindle Voyage E-reader and cracked the screen on the edge. The E ink display itself was working fine, but the touchscreen stopped functioning, which made it impossible to control. What can we do with such a device before adding it to the pile of E-waste?
Repurpose a broken Kindle as a photo frame, showing a picture of the village Spakenburg.
Fortunately, there is a jailbreak community around Amazon Kindle devices which allows you to run any type of arbitrary software. This enables us for example to play chess on a Kindle or add EPUB support. Jailbreaks are currently only possible if you are using an older, vulnerable version of the Kindle operating system. As I had never connected my Kindle to Wi-Fi (it is a book, why should it be connected?), it was still running a version that was possible to jailbreak. So on a spare evening, I connected the digitizer of another working Kindle to the broken one, jailbroke it and connected it to my Wi-Fi. This enabled me to SSH into the broken Kindle and interact with it again!
So far, so good. Owning a nice low power device with high resolution E ink display that runs any software. Some projects for jailbroken Kindles are very interesting, such as repurposing a Kindle as a dashboard that shows the weather report and the latest news. However, as I would wish to have fewer distractions in my life, I thought it would be really cool to use it as a digital photo frame. Stumbled upon this project that loads a PNG from an external server and shows it on the display on predefined intervals.
Fetching Synology Photos
Just showing photos on a Kindle is not that user-friendly, as the images need to be processed, uploaded and opened manually. Since I am already storing all my photos on a Synology NAS, I wanted it to be a set-and-forget solution and automatically pick photos from a designated album.
I created an album especially for this project and shared it publically with a link. Then I wrote a shell script that parses the internal API from Synology Photos and downloads a random image from that particular album. This image is processed on the device, converted to grayscale with dithering using the
convert binary and rendered on the display. A simple cache makes sure that images that already have been displayed, are not downloaded and processed again.
What I really like about pascalw’s implementation is that it is suspending the device to RAM and using the Real Time Clock Alarm to wake it on a predefined moment. Therefore, it is able to get to sleep and disconnect from the Wi-Fi completely, which should keep it running for eight weeks on a single charge, according to Amazon.
Now that I have been using it for a couple of months, I can say that by updating the picture every morning at 6 AM, the battery life seems to last over a month easily.
I was really surprised to see what such an old (2014) and low power device is capable of doing, even the
wget library seems up-to-date with the latest SSL standards. When I started this project, I expected to do all the processing on an external server in order to work around the limiting capabilities of the Kindle. I planned to write some Python to retrieve the image and parse the API from Synology, but I managed to do all that was needed in pure Bash.
Secondly, I am surprised by the power efficiency of these devices. Keeping it in standby and connecting it to the Wi-Fi once in a while would drain the battery much quicker. Due to the possibility of suspending it to RAM combined with the RTC wake is perfect. I can even refresh the picture manually by pressing the power button, which generates an interrupt, wakes the devices, fetches a new photo and puts it back to sleep again!
The image quality, however, is mediocre. It really depends on the image. In my experience, images with high contrast and non-detailed scenes are best suited for E ink displays. As I am manually selecting images for the photo frame, I am also taking this into account. This also accounts for the orientation, so that it is only showing photos that are taken in landscape.
All in all, I think it is a really nice use case for of a broken Amazon Kindle, that would be worthless otherwise. Waking up with the surprise of a forgotten photo from a holiday two years ago is much more fun than an old-fashioned printed photo that never amazes you again.
|At my local picture frame shop
|90-degrees micro-USB connector
The code can be found at github.com/landgenoot/kindle-synology-photos-photoframe.
Construction adhesive is used to glue it all together. Could look nicer, but I am lacking a workspace and proper tools at the moment.
The 90-degrees connector from AliExpress to charge it without taking it out of the frame.