7 puntos por GN⁺ 2026-02-26 | 2 comentarios | Compartir por WhatsApp
  • Se modificó un Kindle Touch de 4.ª generación para convertirlo en un panel de tinta electrónica que actualiza los tiempos de llegada de autobuses de NJ Transit cada minuto
  • Mediante jailbreak, KUAL, MRPI y configuración de SSH, se construyó un entorno para ejecutar apps personalizadas, y un servidor basado en Node genera imágenes para mostrarlas en el Kindle
  • El servidor obtiene datos de autobuses mediante una API GraphQL, los formatea como HTML y luego genera PNG con wkhtmltoimage, que el Kindle carga periódicamente
  • También se creó una app de KUAL para poder salir del panel desde un botón de menú, y con bash trap y rtcwake se controla la energía y la actualización automática
  • Ofrece alrededor de 5 días de batería y todavía hay margen para mejorar el problema del ghosting de pantalla, mostrando el potencial de usar pantallas de tinta electrónica para información en tiempo real

Convertir un Kindle en una pantalla de información de llegada de autobuses

  • Se modificó un Kindle Touch de 4.ª generación para usarlo como panel de información de llegada de autobuses en tiempo real
    • La pantalla se refresca cada minuto y se puede salir del modo dashboard con el botón de menú
    • Implementa gratis una función similar a la del producto comercial TRMNL

1. Jailbreak del Kindle

  • Se verificó la versión de firmware del Kindle y se descargó el archivo tar correspondiente para realizar el proceso de jailbreak
  • Tras completarlo con éxito, se continuó con la instalación de KUAL y MRPI

2. Instalación de KUAL y MRPI

  • KUAL se usa como lanzador de apps personalizadas y MRPI como herramienta de instalación de apps
  • Antes de la instalación, es obligatorio aplicar la configuración Hotfix
  • Después de instalarlo, se desactivaron las actualizaciones OTA para bloquear las actualizaciones automáticas

3. Configuración de SSH

  • Con la extensión USBNetwork se puede acceder al Kindle por SSH
  • Se siguió una guía de un blog externo para configurar la conexión SSH por USB
  • Cuando la conexión funciona, el Kindle aparece como un nuevo dispositivo en la pestaña de red de la computadora

4. Montaje del servidor y generación de imágenes

  • Se usa la API GraphQL de NJ Transit para obtener la información de llegada de autobuses
    • Con la consulta getBusArrivalsByStopID se recopilan datos como ruta, hora de llegada y nivel de ocupación
  • En lugar de puppeteer, se usa wkhtmltoimage para convertir HTML en PNG
    • El servidor genera una imagen nueva cada 3 minutos y el Kindle la solicita
    • El código relacionado está publicado en el repositorio de GitHub kindle-hax/server
  • Se ajustaron la rotación y la alineación de la imagen para adaptarla a la resolución de la pantalla del Kindle (por ejemplo, 600x800)
    • Con transform: rotate(90deg) translateX(-100px) translateY(-100px); se implementó la visualización vertical

5. Creación de una app de KUAL

  • Se creó una extensión personalizada de KUAL para controlar el inicio y la detención del dashboard
    • Al colocar una carpeta en /mnt/us/extensions/, aparece en KUAL el menú ‘Start dashboard’
  • El script start.sh mantiene una ejecución estable ignorando señales (trap '' HUP, trap '' TERM)
    • La función refresh_screen() descarga la imagen del servidor y la muestra con el comando eips
    • En la parte superior se muestran la fecha, el estado de Wi‑Fi y el nivel de batería
  • Con evtest, al detectar la entrada del botón de menú (code 102 (Home), value 1), se ejecuta stop.sh
    • Esto cierra el dashboard y reinicia la interfaz del Kindle

6. Resultado y mejoras posibles

  • La batería dura alrededor de 5 días, y apagarlo por la noche podría extenderla 2 días más
  • El problema de ghosting de pantalla (color bleeding) podría mejorar con un destello completo en blanco y negro
  • Ya se usa a diario y se confirmó el potencial de ampliarlo para mostrar calendario, clima, tareas y más información

2 comentarios

 
xguru 2026-02-26

Yo también hice algo parecido hace poco, y si no te molesta ver la barra de URL arriba, también puedes simplemente cargar una página web.
Por defecto, el Kindle puede acceder a URLs desde el navegador web, así que solo hay que cargar el dashboard desde ahí.
En la oficina lo uso con un Kindle, y en casa con un Paperwhite de generación antigua cargando la misma página, así que en cierto modo es multiplataforma jaja

Claro, para que el Kindle se mantenga siempre encendido también hay que hacerle root o algo similar.
En el Paperwhite no hace falta llegar a hacer root; solo hay que habilitar la conexión adb y desde ahí desactivar el salvapantallas.

 
GN⁺ 2026-02-26
Comentarios en Hacker News
  • Como alguien que trabajó antes en temas de consumo energético del Kindle, la mayor fuente de consumo era la conexión WiFi
    porque el WiFi tenía que responder periódicamente al AP para que no se cortara la conexión.
    Si mal no recuerdo, con WiFi apagado consumía unos 700 uA, y con WiFi encendido unos 1.5 mA.
    Al cambiar de página, el consumo subía momentáneamente a varios cientos de mA, y para reducir el efecto ghosting se hacía una actualización completa de la pantalla cada cierta cantidad de páginas.

    • Yo quité la batería y alimenté el Kindle con 5V a través de un diodo desde el puerto USB.
      Hacía falta una fuente capaz de entregar picos de unos 1.5A, y conectando un hub USB con alimentación externa viejo a una Raspberry Pi y controlándolo por SSH, funcionó de forma estable durante meses sin WiFi.
    • Mi RM2 nunca se conecta al WiFi y puede pasar meses sin cargarse.
      Lo uso menos de 30 veces al mes, pero con el WiFi apagado la eficiencia de la batería es sorprendentemente buena.
      Todavía no he modificado mi Paperwhite Kindle, pero al menos pienso quitarle los anuncios de la pantalla de bloqueo.
    • Estoy pensando en probar la duración de la batería dejando el WiFi apagado y aumentando el intervalo de actualización a 2 minutos.
      Ahora por fin entiendo bien por qué la batería dura tanto en modo avión.
    • Me pregunto si pegándole celdas solares de silicio amorfo alrededor del Kindle ya no haría falta cargarlo cada 5 días.
  • Yo usé un método más simple.
    Después del jailbreak, entré por SSH y creé dos scripts que se ejecutan cada 1 minuto y cada 30 minutos.
    Ambos muestran la misma imagen, pero el de cada 30 minutos además hace una actualización completa.
    Desde una Raspberry Pi transfiero la imagen con rsync, y un script en Python obtiene datos de calidad del aire desde MySQL y compone la imagen.
    El Kindle solo se encarga de mostrar la imagen, así que funciona de forma muy estable.

    • Me sacó una sonrisa que dijera “método más simple” y luego mencionara rsync, Python y MySQL.
    • Si existiera una pantalla eInk que simplemente recibiera y mostrara un bitmap, probablemente alcanzaría para muchísimos usos.
      Solo haría falta que soportara conexiones seguras como TLS.
    • Yo también hice algo parecido: le hice jailbreak a un Kindle, leo ePub en el autobús y le pregunto a Siri cuál es el siguiente autobús.
    • Resolver el problema con dos scripts simples en vez de un framework complejo da mucha satisfacción.
  • Hackear Kindles es realmente divertido.
    En eBay se consiguen Kindles viejos por 15 a 20 euros, y yo también me divertí haciendo el mismo experimento el año pasado.
    Dejé el proceso detallado en mi post del blog.

    • En AliExpress puedes comprar una placa e-ink basada en ESP32 llamada Xteink4.
      Es pequeña, pero si le instalas el firmware Crosspoint puede usarse como lector e-ink portátil.
      Video de YouTube, Crosspoint GitHub
    • Si la ingeniería inversa te resulta pesada, también hay pantallas e-ink que se conectan al puerto DSI de Raspberry Pi.
      Cuestan un poco más, pero podría tratarse de productos que reutilizan pantallas de Kindle.
    • Da gusto ver cómo otra persona logró el mismo objetivo de una manera distinta.
      Este post me dio ganas de experimentar más con plataformas como Cloudflare Workers.
    • Me pregunto si se puede empezar el jailbreak de inmediato o si durante la configuración inicial hay que vincular una cuenta de Amazon.
  • Yo convertí un Kindle viejo en un marco de imágenes generadas por IA.
    Cada pocas horas se genera una imagen nueva, y el prompt puede incluir clima, animales, países, titulares de noticias y más.
    Todo el procesamiento se hace localmente en un servidor de mi casa con ollama + stable-diffusion-webui.
    Eso sí, las imágenes basadas en noticias se volvían demasiado deprimentes, así que le indiqué a la IA que usara un tono positivo.
    Si llueve, también llueve en la imagen; si es invierno, aparece nieve.
    La batería también dura varias semanas, y modifiqué la Online Screensaver extension para que cambiara automáticamente al modo avión.

    • También estaría divertido usar reconocimiento de voz para visualizar conversaciones como imágenes.
    • La e-ink es un medio que combina curiosamente bien con el arte generativo.
  • La versión de panel Kindle que hice está publicada en GitHub.
    Muestra el clima local y la información musical del servidor multimedia.
    El problema de ghosting en la pantalla se resuelve haciendo una actualización completa periódica con el comando eips -f.

    • Me impresionó ver que estaba hecho en Rust.
      Fue la primera vez que pensé que quería aprender Rust.
  • En Queensland, Australia, ya operan paneles informativos de paradas de autobús con e-paper y energía solar.
    Son mucho más grandes que un Kindle, pero el principio es parecido.
    Introducción al proyecto, video de demostración

  • Este proyecto me hizo pensar en el proyecto SystemSix.

    • Está buenísimo. Ahora también me dieron ganas de hacer un soporte personalizado.
  • Últimamente parece que todo el mundo hace este tipo de proyectos de modificación de Kindle.
    Yo también modifiqué un K4NT y armé un servidor que muestra el calendario familiar.
    Recibí un poco de ayuda de la IA, puse un insert 3D impreso dentro de un marco de Ikea y le acoplé una batería MagSafe.
    Solo tengo que presionar el botón de encendido cada 5 días, y pienso reemplazar la batería interna.
    En mi entorno no era posible usar una conexión por cable.

  • Si apagas la red entre actualizaciones, la batería definitivamente dura más.
    Yo bloqueaba las actualizaciones desde las 10 p. m. hasta las 6 a. m.
    En GitHub hay muchos scripts para ahorrar batería.
    Antes también hice un indicador de transporte público basado en GTFS con Raspberry Pi Zero + e-ink de 2 pulgadas.
    Post sobre panel Kindle, proyecto Transit Pi

    • La idea de un panel que muestre el tiempo restante de la lavadora junto con íconos de Pokémon está demasiado tierna.
      Este tipo de visualización de electrodomésticos inteligentes es realmente encantadora.
  • Me gusta usar el Kindle como pantalla de un solo propósito.
    De hecho, prefiero el Kindle Fire con LCD antes que eInk.
    Si lo pones en modo desarrollador, puedes dejar una página web abierta permanentemente y usarlo sin anuncios.
    Un Kindle Fire HD10 se puede conseguir por unos 40 dólares.

    • Gracias por el dato sobre Kindle Fire.
      Un LCD sin ghosting y legible en la oscuridad es una excelente mejora para usarlo como panel.