- 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
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
adby desde ahí desactivar el salvapantallas.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.
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.
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.
Ahora por fin entiendo bien por qué la batería dura tanto en modo avión.
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.
Solo haría falta que soportara conexiones seguras como TLS.
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.
Es pequeña, pero si le instalas el firmware Crosspoint puede usarse como lector e-ink portátil.
Video de YouTube, Crosspoint GitHub
Cuestan un poco más, pero podría tratarse de productos que reutilizan pantallas de Kindle.
Este post me dio ganas de experimentar más con plataformas como Cloudflare Workers.
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.
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.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.
Ú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
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.
Un LCD sin ghosting y legible en la oscuridad es una excelente mejora para usarlo como panel.