Hacker News new | past | comments | ask | show | jobs | submit login
Show HN: Low-power Kindle-based dashboard (github.com/pascalw)
284 points by PascalW on Jan 28, 2021 | hide | past | favorite | 71 comments



This code does not render the dashboard itself. It's expected that what to display on the screen is rendered elsewhere and can be fetchd via HTTP(s). This is both more power efficient and allows you to use any tool you like to produce the dashboard image.

I love these “under engineered” solutions. I’d be tempted to do everything in the Kindle itself, but he achieved what he needed with much less effort and higher flexibility.


I think this has been the standard approach for all e-ink displays that have been floating around (both homemade and commercial).

So, yeah, I appreciate it but it's not specifically innovative in this regard.


Sometimes you need to tune down innovation and just finish your project


The only real downsize is that text rendering engines like to know the display pixel layout. However for the display on the kindle it probably isn't a major concern.

On the other hand HTML is nice because you could use the same code on two differently sized devices (to an extent).


Agreed. This is both clever and simple, a rare combo.


It's a pity there isn't more action in the e ink application/device world. Seems like there's so much potential. I'd love a kindle-like laptop for writing.

I guess it's just extremely hard to compete for a beachhead against an incumbent (mobile touch displays) that's more general and mass produced.


My understanding is that it’s heavily controlled by E-Ink (the company). When only 1 company can make the displays and they charge quite a bit of money for them, adoption will always be difficult.

Once the patent expires I expect these to be used everywhere.


> When only 1 company can make the displays

It sounds true but it is inaccurate. E-Ink doesn't even make the displays. They just make the material used in the displays. The actual displays are made by sandwiching the material on TFT and other parts. The displays are made by a whole bunch of different Taiwanese vendors like AU Optronics, and others and then there's a large ecosystem over laminating them with touchscreens, different types of protective hydrobarriers and other things. The reason the panels cost more than LCDs is because the volume is not high. Go ahead, make an order for 10 million panels and specify the price like apple does, and you'll find all these manufacturers jumping to increase their production scale in order to meet your target price.

> Once the patent expires I expect these to be used everywhere.

Again, this keeps getting repeated everywhere but it is totally wrong. There's a simple question you can ask. Which patent needs to expire? The lazy answer you'll get is all 700 patents. But in reality it is not a patent that is blocking things. It is simple. Money. Would you invest hundreds of millions needed in trying to scale, improve or invent a new display technology? Or would you invest in a hot new AI/ML startup? There's your answer. For further proof, google all the dead display startup companies, to show what's really blocking the world from having a great new display technology.


Interesting. I guess we can blame the lack of e-ink devices on the display technologies which are being developed (oled, microled, ips, tn, etc). E-ink has a limited purpose while color/fast updating displays have more use potential in various industries and products. Don’t get me wrong, I love e-ink. It’s just that even in the case of displays, winner takes all.


In terms of a Kindle-like laptop for writing, I’ve seen people enjoy the Freewrite Traveler (though it’s not for me):

[1] https://getfreewrite.com/products/freewrite-traveler


That is a very opinionated writing tool. It has no arrow keys. Does it support editing, or only writing?


I'm skeptical about the narrow horizontal screen. I'd actually prefer in oriented the vertically for writing.


Would love this jailbroken, a text dedicated device would be wonderful for coding, terminal emulation, even e-mail.



While that does look nice it lacks what I consider the killer feature of the above device: e-ink display, and with it the benefits of reduced eye strain and enhanced battery life.


If you don't have a spare Kindle lying around, smallish e-paper modules are nowadays quite cheap, and can be driven easily from a Raspberry Pi (Zero W upwards).

That's what we did on our boat:

https://github.com/meri-imperiumi/dashboard


I am thinking about this (e-paper) but drive it from an ESP (preferably 01) and connect it to a battery where it could last say months/years that would be nice. I was able to do a hardware mod someone posted where you can put it into a self-wake deep sleep if that makes sense for power saving.

Otherwise I currently do desktop notifications/speech text.

I have a basic Kindle too (paper?) And it's amazing the battery life.


I considered this as well but didn't really want to mess with the hardware. But if you're up for that you can buy the components yourself, or go for something like inkplate [1] which is an E-paper display + ESP microcontroller and battery in one package.

[1] https://inkplate.io/


The Inkplate 10 is being crowdfunded right now for 129$ + shipping.[1] I hope it will be available directly on the website soon as well, as they get shipped from Croatia to the US to be shipped to customers, which would make it unnecessarily expensive to me in Sweden, as I'd have to pay customs duty.

[1]: https://www.crowdsupply.com/e-radionica/inkplate-10


$100? hmm this price may not be that bad though, considering the display seems to be the most expensive aspect and I'm not finding a similar price/size on Amazon.

One thing I want to learn/address personally is a charging circuit so I'd rather build it myself. Still it is nice to know this is out there ready to go.

Also I have to use these ESP01's I bought haha. The code itself I imagine wouldn't be difficult eg. an http get request firing at whatever interval to your own local/remote endpoint. Would have to see about the ESP driver part to display to eInk.


The price definitely seems great for the size of the display, but it might be worth looking at the Waveshare e-paper displays if you want to do something a bit more DIY.


Yeah those look great. I'm hoping they have a built in driver or whatever and you just send the display data as serial/i2c or something.


Yes they have a peripheral mode with its own commands

https://inkplate.readthedocs.io/en/latest/peripheral-mode.ht...


I saw this recently https://m5stack.com/products/m5paper-esp32-development-kit-9...

The company M5 makes incredible gear for this. Their ESP32-Pico Atom chips are all I use.


What is special about those particular chips? Haven’t been on the embedded scene in a few years


That's an interesting form factor, almost looks like a phone.


Since updating an eInk screen is relatively expensive, I suspect this system could be made more efficient by issuing conditional HTTP requests (last-modified or eTag) and only refreshing the screen when the dashboard image changes. This assumes both the ht client and dashboard server support conditional requests.

The system consists of a set of shell scripts that run on a jailbroken Kindle. It includes ht, an HTTPie clone written in Rust that makes requests to a dashboard server using software like Dashbling.


The ht program doesn't appear to support conditional downloads. It also doesn't support a HEAD request, which is odd, as it supports GET, POST, PUT, PATH, DELETE. With a HEAD request, you could do the Etag or Last-Modified comparison yourself.

I suppose you could just download the image and do a "diff -q" or compare an MD5 checksum, or even just file size.

Or use a different tool maybe? I see that rural supports head requests. https://crates.io/crates/rural

Edit: Appears that ht may be able to get response headers. It's sort of a documentation bug. It has a -p/--print option, but the README doesn't document what the arguments are.

Found it.. "ht -p h https://google.com" returns the headers, so you could extract the Etag or Last-Modified header.


I could replace ht with another HTTP client. I just picked it because it was the easiest way I knew to compile an HTTP client with statically linking openssl.

If anyone knows an easy way to compile curl with statically linked openssl, let me know!

It would also not be difficult to build a small custom client based on Hyper or Reqwest.

Though I'm not sure if it would actually make a large difference with only 20 screen refreshes per day.


I wrote something like this using reqwest for a Waveshare 7.5inch display. Also includes a dithering step so all that is needed is a web server serving an image. No conditional requests though but should be easy to add. It is fully statically compiled (even uses musl and rustls), runs on a very bare-bones Linux environment on a Raspberry.

https://git.pixelspark.nl/pixelspark/sparkboard


Nice work!


If it's really just the screen refresh that's to be avoided, I think just comparing old download /new download with "diff -q" would be a reasonable solution. Of course, perhaps the Kindle doesn't have a diff binary. But maybe it has "sum" or "md5sum" or something else in that space.


HTTPie supports headers using header-name:value CLI parameters; I didn't check whether ht supports these. You would have to save the proper response header between requests. The question then turns to how the 304 Not Modified response is handled.


That's an interesting idea! It depends a bit on the data that is shown on the dashboard, but I guess in many cases the data is quite static. The data on my dashboard can change at any time in theory, but there are many times where the data remains the same for 2-3 hours.


Very cool! I've been thinking about this.. let me just paste my tweets thread from a few weeks ago:

--

An issue with mobile UX is that it's tricky to maintain 'ambient awareness'. How do you 'keep an eye' on Slack? You have to foreground it & disable screen locking, or get push notifications.

On desktop you can just alt+tab to it every so often, plus the taskbar icon lights up.

I sometimes use Chrome on desktop to address a similar requirement (they have a feature to 'pin' a tab, so you can have GMail plus stuff like WhatsApp pinned.)

Would be cool if there was a cheap always-on tablet that could display arbitrary web widgets like a calendar, slack etc

Just thinking about this ambient computing thing reminds me of the ‘Chumby’, a cute smart alarm clock from the early 2000s.

Apparently the Amazon Echo Show is a bit of a successor. And I came across a wall-mounted calendar display called ‘Dakboard’ (it’s like $400 though.)

I have a use case that sounds ridiculously lazy, but I guess has been a problem for me for most of this decade: I need to know the time in various cities without doing any work besides a glance

---

Addendum: over the last couple days I've been looking into stuff like Arduino, Raspberry Pi etc but re-using a Kindle is cool if you don't want to do a whole electronics project


Some time ago Das Keyboard launched a keyboard where each individual led could be configured to light up on the basis of some external input. https://www.daskeyboard.com/p/5q-cloud-connected-rgb-mechani...

So you could theoretically bind Slack status to a key (say your F1) key and have it turn red when there was an unread message.

I think that was/is a great solution to ambient awareness


> Would be cool if there was a cheap always-on tablet that could display arbitrary web widgets like a calendar, slack etc

You can do this with any $100 Android tablet or - to a lesser degree - a left-over iPad that's too old for anything relevant.

Software-wise you have a bunch of options: Magic Mirror and Home Assistant are the most common ones. Dakboard works as a SaaS solution without their custom hardware, the free option is way too limited. HA is more for home automation though and Magic Mirror's actual purpose is to mount the display behind a two-way mirror (thus the "Magic" part)

I've got a cheapo chinese dual boot Atom Windows/Android tablet mounted on my kitchen wall with an analog clock, our shared family calendar, Netatmo data (indoor+outdoor) and weather forecast. Works like a charm.

If it wasn't so crappy I could use something like Kiosk Browser[1] to have it use the front-facing camera and only turn the display on when it detects motion. Now I just use Tasker to turn the display off at night and dim it during evenings.

A bunch of people are just mounting old computer monitors on the wall and using a Rasperry Pi (Zero/2/3/4) as a kiosk-browser. The Wife Acceptance Factor is a bit lower on those though. Most likely you'd need to disassemble the display and add some fancy frames.

[1] https://play.google.com/store/apps/details?id=de.ozerov.full...


I tried to jail break my kindle a while back. But Amazon auto pushed a new firmware and prevented it minutes before I could reboot with the crack. So now my device is up to date and catching dust again. Thanks Amazon.


Yeah they seem to actively prevent jailbreaking on more recent devices. I specifically picked up a used Kindle 4 NT for this project, because it's so easy to jailbreak.


Try Onix Boox. They have stock Android. Some of them have internal SD card, which is easy to replace with your own.


That's cool.

I've build a similar thing for my kindle.

https://github.com/makepanic/eink-weather

It is a simple website, which a headless chrome screenshots to use with the online screensaver app.

A browser might be overkill but I wanted to avoid manual layouting.


I love this idea - roughly how long do you think the battery would last if you had a dashboard that updated every hour?


I don't know exactly yet, but from what I'm now seeing it consumes 3-4% battery per day, with the dashboard updating every 30 minutes for 10 hours a day.

I'm only letting it update during office hours, so I reckon I should get around a month of battery life with this usage.


That is great. A month of usage is what I would consider acceptable for this kind of product.


Nice project!!! I love these e-ink based projects that enable you to provide data without looking it up.

Is there a way to enable real-time messaging on to an e-ink device ? For e.g. I would love to keep a kindle running that can show a message when I am on the road.


In addition to the power efficiency, one advantage of an e-ink screen is that it does not illuminate a room at night. And interestingly, a Kindle or similar device still seems to be the cheapest way to get a touch-enabled e-ink display of a reasonable size.

FWIW the Kindle Paperwhite also has an Experimental "Beta Browser" that can display websites and execute some JavaScript - I am using that for a similar project, a basic dashboard / light switch web application hosted on a Raspberry Pi.

https://github.com/janhapke/screendle


I made an eink clock / status display a while back. The thing ran on a tiny lithium-ion battery for weeks, which was nifty. But the flash when the screen refreshes every minute is super distracting if it's anywhere in your field of view. That to me was a dealbreaker. (If it helps, the datasheet says that it damages the display to refresh it every minute, and it did indeed die mysteriously after a year or so!)

I think I like normal LCDs for status displays. It is possible to redraw the screen without inverting it and drawing a lot of attention, so it is more "ambient".


That's a good point. I'm using partial refresh for this reason, which works quite well because the screen is relatively static (I do a full refresh after 4 partial refreshes, to remove the minor ghosting that does occur). But if your dashboard shows a lot of different content you'll have to do full refreshes, which on the Kindle at least also cause a flash.


It's possible to refresh e-ink without a global flash if you are careful and have a clever controller. I don't think this video directly addresses this but it gives a good overview on the problem space https://www.youtube.com/watch?v=MsbiO8EAsGw


Yeah, I've seen Ben's video but used a different controller and didn't get very good results with my (very cursory) tweaks to the various tables that controlled the refresh.


Reminded me of the tool turning Pocketbook E-Ink readers into computer monitors, which I made several years ago:

https://github.com/borzunov/remoteink

This could also be used for the dashboards if connected to a remote server or a Raspberry Pi (no screen updates happen if the content doesn't change).

Besides that, it allows to zoom in/out, switch between the opened windows, and move around the screen with keyboard shortcuts. No jailbreak is needed for the reader.


I just jailbroke my Kindle the other day – PaperWhite 4. Loving KOReader, and looking for more things to run. Awesome to see that there are still modders out there.


I'd love to use this on my working Kindle. Is that possible? Basically, replace the "screensaver" program with this dashboard?


Yes that should be possible. You could use this as a starting point: https://www.mobileread.com/forums/showpost.php?p=3812831&pos.... With that you can wait for the 'goingToScreenSaver' event and then write your dashboard to the screen.

There are some minor downsides though. If you keep the built-in Kindle UI running it will draw a menubar on the screen when the Wi-Fi connection status changes and power consumption will be a bit higher with this setup. All in all still a good tradeoff if you want to keep using the Kindle for it's original purpose too.

Edit: someone else posted a link to this tool which does exactly this: https://www.mobileread.com/forums/showthread.php?t=236104


How you learned the jail breaking and figure out all this? How much time it took to create? Can you please tell me i am interested. Thanks


https://wiki.mobileread.com/wiki/Kindle4NTHacking and the mobileread forums have a wealth of information on this topic!


This type of idea would work nice with Boox; easy to program (android) and so far the battery life has been stellar.


Might be a nice fit indeed. I considered doing this on my Remarkable 2, but it's a bit tricky to combine a dashboard with actually using the product as it's intended (for note-taking, in this case).

The advantage of using a Kindle like this is that it's cheap enough that I don't have to use it for anything else. I bought the Kindle used for €25.


Very cool. If someone is looking for a device with even better battery life: I created something similar -- albeit with a different approach to its visual appearance.

See: https://framelabs.eu/en/


I would love to buy it if you can provide a way to push the message.


Can you also use it to send real-time messages ?


You can configure it to poll for messages on a fixed interval. Pushing is not possible since it would sacrifice the battery life.


What if you could build this product but to also allow for the direct power supply connection ?


There is a micro-USB connector on the back which you could just permanently hook up to a power supply. When the battery life is not part of the equation anymore, making push available is not a problem.


Made a pull request to fix a small typo in the readme of this, noticed after the fact I had a typo in my commit description. Muphry's Law in action! Oh well, I'm leaving it and blaming it on this macbook pro keyboard.


Nice! I have always wanted to build one of these for my car. Can you report on the latency of your dashboard?


Nice. How hard it will be install this on a Kindle Paperwhite with completely broken touch sensor?


You do need the screen to kick off the jailbreak process I'm afraid.


Which models of the Kindle can be jailbroken?


Nice job and thanks for the mention.


This is excellent work, well done!




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: