Hacking an old Kindle to display bus arrival times

(mariannefeng.com)

162 points | by mengchengfeng 5 hours ago

13 comments

  • thegrey_one 1 hour ago
    I took an even simpler route. After jailbreak and ssh I just made two scripts on the Kindle, one is triggered every minute, the other every half hour. Both draw the same image from the same location, the 30 minute one just adds a full refresh. This way the display is not fully refreshed every minute, but in time image is degrading so full refresh once every 30 minutes seems work out fine.

    This way Kindle has a very simple job, no apps installed no anything, just two extra cronjobs to run the oneliner bash scripts that draw the image. And I use rsync from a raspberry pi to push a new image every minute. That image is assembled with a python script, rpi side, with air quality data. Connects to local mysql server, pulls the values and then assembles it.

    • nine_k 10 minutes ago
      A pretty dumb eInk display that could do one thing, that is, receive and blit a bitmap at a given location, would suffice for great many uses. It only needs a way to connect to wifi or zigbee securely, e.g. using TLS.
    • password4321 1 hour ago
      > even simpler route ... rsync from a raspberry pi ... python script ... air quality data ... local mysql server

      I smiled

      • thegrey_one 45 minutes ago
        Ok fair enough but considering the Kindle ecosystem I'd rather deal with raspberry pi than with the Kindle stuff.
      • PunchyHamster 59 minutes ago
        it's simple if the other stuff is already in place
  • hex4def6 2 hours ago
    As someone who worked on kindle power consumption many years ago: One of the (by far) biggest consumers of power is the WiFi connection. It has to wake up and respond to the AP in order to not get disconnected every x seconds.

    Off the top of my head, I think 'on' average power consumption was ~700uA without wifi, and about 1.5mA+/- with Wifi. This is from over a decade ago, so my memory is fuzzy though...

    Obviously, page changes used relatively large amounts of power. I don't recall the exact amounts, but it was 100s of mA for seconds.

    There is also an "every x pages, do a full screen refresh (black to white)" to fix up the ghosting issue that the article writer saw.

    • thegrey_one 1 hour ago
      I removed the battery on mine, kept the battery chip and fed 5V into the battery terminals, from Kindle's USB connector, through a diode (so 4.4V-ish). Without a battery it needs something that can deliver at least 1.5A, for short bursts. An older powered usb hub seems to work fine, hub is connected to my raspberry pi, and I use ssh through usb networking, no wifi, no battery, worked fine for months now.
    • mengchengfeng 1 hour ago
      Awesome tips. I'll try increasing the refresh interval to 2 minutes and turning off the wifi in between refreshes to see if helps with battery life.

      Side note this also finally explains to me why battery life on the Kindle is SO good in airplane mode.

      • jbl0ndie 49 minutes ago
        Could you adjust the refresh frequency based on your usage patterns? So refreshing less frequently outside your main transit times. An extension of your current pause at night.
  • FlyingSnake 4 hours ago
    Kindles are fun devices to hack and play with. I can grab an old kindle for €15-20 on eBay.

    I did the same last year and had lots of fun in the process.

    https://samkhawase.com/blog/hacking-kindle/

    • uyzstvqs 2 hours ago
      Can you start jailbreaking straight away, or does it require an internet connection and Amazon account first during setup?
      • mengchengfeng 1 hour ago
        I don't believe you need internet connection - IRRC jailbreaking steps were plug in the Kindle, drop the jailbreak folder into the root directory, then choose `Update` from the Settings screen.

        The hardest part was finding the `Update` menu item. It's only visible if you go to Settings, then press the menu button again while on the Settings page.

        Not sure if registering the Kindle was required.

      • simonklitj 1 hour ago
        Depends on the firmware of the device. Latest firmware (anything after version 5.18.5.01 - which released in October 2025) is currently not jailbreakable.

        Jailbreak of any firmware after version 5.16.2.1.1 (June 2023) requires the Kindle to be connected and registered.

        Anything prior to, and including this version, can be jailbroken with no registration.

      • Havoc 1 hour ago
        Don’t connect it. I bought one for this purpose and it updated to a version that didn’t have a known jailbreak
    • moffkalast 3 hours ago
      For the less reverse-engineering prone among us, there are also similarly sized e-ink displays that plug into Raspberry Pi DSI ports for maybe $5 more on Aliexpress. They might actually be salvaged kindle screens.
      • slig 3 hours ago
        Do you have a model number or link, please?
    • mengchengfeng 4 hours ago
      I love it! Always fun to see the route somebody else took to get to the same end product.

      Your post is making me want to try more Cloudflare Developer Platform stuff like Cloudflare Workers.

  • lee_wc 1 hour ago
    This is great! I love seeing e-ink/Kindle related displays. I thought I saw a HN article about it 'awhile ago', turns out, time flies, that was back in 2024!

    This is the link: https://lilymara.xyz/posts/2024/01/transit-kindle/ from https://news.ycombinator.com/item?id=41923753

    The author went from rendering a pixel-perfect image on Kindle to building a separate HTTP server to do it in rust!

    Related: https://news.ycombinator.com/item?id=37661387

  • michaelbuckbee 5 hours ago
    I love using Kindle's as single purpose tablet/interfaces/displays. I'm the weirdo who actually prefers the LCD displays vs eInk and it's incredibly easy to set Kindle Fire's into dev mode which lets you display a webpage, never turn off while connected to power and never show ads.

    You can regularly find the Kindle Fire HD10s for ~$40

    • mengchengfeng 4 hours ago
      Good to know about Kindle Fire. And hah, I can totally see why you'd prefer LCD's over e-ink - no ghosting + readable in pitch dark would be a sweet upgrade to the dashboard.
  • SirFatty 5 hours ago
    For some reason, this project reminds me of this one:

    https://engineersneedart.com/systemsix/systemsix.html

    • mengchengfeng 4 hours ago
      Woah this is really cool! Makes me want to create a custom mount
  • mkmk 4 hours ago
    I was glad to see the note about battery life down at the bottom. My biggest challenge with the old Kindles I have laying around is that most of them won't hold a charge!
    • bpmct 4 hours ago
      I haven't developed on the Kindle ecosystem, but with old Nook devices I am able to set a screensaver, alarm, and put the device into deep sleep between refreshes. This changed my battery life from ~48 hours into 30+ days of battery life even with some old devices.

      The "electric sign" app does this, which is where I referenced the code.

      With trmnl, the image only refreshes every 10 mins so the device will set a ~9 minute alarm to wake the device right before it needs to load the next update.

      The refresh period is also configurable so a slower refresh interval (e.g. every hour for less time-sensitive screens) yields larger battery savings

    • thegrey_one 50 minutes ago
      I removed the battery but kept the I2C chip/pcb, and fed 5V from USB port via a diode, on the PCB battery connections, seems to work fine. I actually installed a single wire from USB VCC to diode then + battery terminal. But you need to power the Kindle from something that can deliver at least 1.5A for startup peaks. A USB hub does the job fine in my case, and also connects it to a raspberry pi for ssh through USB networking, so no wifi either. Use a good USB cable for power.
    • mengchengfeng 4 hours ago
      Yeah that was definitely a worry of mine before I booted it up. Luckily it's still got decent battery life. We'll see how it holds up in 6 months...

      Dyson vacuums and Kindles are not the same whatsoever, but I wonder how easily it'd be to swap out the battery on an older Kindle. For our vacuum, all I needed was a 20 dollar replacement battery and the will unscrew 3 mini screws.

    • BobaFloutist 3 hours ago
      One thing that's disappointed me is that despite all the excitement over better and cheaper battery technology, you can't buy a cheapish drop in replacement battery for e.g. an old kindle that has more storage capacity than the OEM version.

      I understand there's like all sorts of complexities in standards, form factors, voltage, wattage, etc, but I really wish I could upgrade my old devices like that.

  • mbirth 1 hour ago
    A while ago I've rewritten TRMNL's Kindle-client from Bash into Lua, optimised it a bit and when doing a refresh every 5 minutes, my Kindle Paperwhite 10th gen now lasts about 5-6 days on a charge.

    https://github.com/mbirth/trmnl-kindle/tree/lua-rewrite

  • jonmon6691 2 hours ago
    I made something like this! Except I have it plugged into an outlet in the kitchen, so no battery to deal with. It's a little hacky but it works for me.

    https://github.com/jonmon6691/arduino_busstop

  • adhamsalama 4 hours ago
    Why Jailbreak the Kindle when you can just open its browser and visit a website that shows the arrival times?

    The Kindle browser is surprisingly decent, I made Claude Code generate an RSS feed reader compatible with the Kindle browser, with the ability to read full articles (for those feeds that require you to visit the website), and download articles. It also supports Reddit and Google News RSS feed. This is my new favorite way of browsing the internet.

    https://github.com/adhamsalama/simple-rss-reader

    • unrealhoang 42 minutes ago
      it will be much less power-efficient, when jailbreak you could schedule the kindle to wake up once per 15/30/60 minutes to fetch the new data, set it as screensaver and then go back to sleep.
    • mengchengfeng 4 hours ago
      It's easier to load up a page in the Kindle browser, but more fun to jailbreak :D

      I also didn't want the browser bar at the top.

      • adhamsalama 4 hours ago
        Fair enough. I did consider jailbreaking my Kindle but I am afraid of bricking it.
        • thegrey_one 53 minutes ago
          Bricked it few times in the process of figuring out more stuff about it, but luckily mine has a UART pads and I was able to restore it every time. A bit more involved as it's 1.8V if I remember right, but if you're careful it should be easy, provided you have the time.
        • mengchengfeng 3 hours ago
          Also fair - bricking it was definitely one of my main concerns.

          After going through this process though, I'd say as long as somebody has basic linux knowledge, chances of bricking are pretty low.

  • TZubiri 4 hours ago
    A little bit of a hijack, but it's hard to find a more relevant time to post this.

    For a defunct startup, I built this exact thing as a product for coffee shops:

    cafetren.com.ar

    https://cafetren-com-ar.translate.goog/?_x_tr_sl=auto&_x_tr_... (translated from spanish):

  • umairnadeem123 4 hours ago
    [dead]
    • mengchengfeng 4 hours ago
      Right now I'm doing a partial refresh, and it manages to last for a couple days but would be cool if it could be unplugged for 2 weeks.

      A small solar battery is a VERY interesting idea. If I don't end up being able to hit that number by adjusting the code itself, will look into it.

    • thaumasiotes 4 hours ago
      > for a bus schedule that updates every 60 seconds

      Bus stops in Shanghai have e-ink displays that are kept up to date with the current estimated arrival time of each bus. (I don't know what the time resolution is; it could be 60 seconds, but not much longer than that.)