Inicio Noticias Inteligencia Artificial Gadgets Guías y Tutoriales Reviews 📬 Newsletter
InicioGadgets › Rust y Slint ya funcionan en un Kindle jailbroken: así se hace

Rust y Slint ya funcionan en un Kindle jailbroken: así se hace

En resumen

  • Un desarrollador ha logrado ejecutar Rust y la interfaz gráfica Slint en un Kindle Paperwhite jailbroken. Te contamos cómo cruzó compilación, framebuffer y táctil en e-ink.
  • El Kindle Paperwhite de 7.ª generación monta un procesador ARMv7 con musl libc, un objetivo de compilación poco común en el ecosistema Rust.
  • «El compilador Zig incluye las cabeceras y fuentes de musl libc para todas las arquitecturas soportadas», explica Sverre.
Kindle Paperwhite mostrando una interfaz gráfica desarrollada con Rust y Slint sobre una pantalla de tinta electrónica

Que un Kindle solo sirva para leer libros es una premisa que muchos aceptan sin cuestionar. Pero Sverre, un desarrollador noruego, decidió llevarla al límite: jailbreakó su Kindle Paperwhite de séptima generación y logró ejecutar aplicaciones nativas escritas en Rust con interfaz gráfica Slint sobre la pantalla de tinta electrónica. El resultado, documentado en su blog personal, demuestra que un lector de libros puede convertirse en un panel de control funcional con solo cruzar las herramientas adecuadas.

La motivación inicial era modesta: Sverre quería usar su Kindle como reloj de mesilla. Encontró un proyecto que hacía algo similar, pero pronto se dio cuenta de que el potencial iba mucho más allá. «Abrí la puerta y empecé a pensar si podría conseguir que Rust funcionase en el Kindle. Quizá podría hacer cosas más útiles», escribe en su publicación. Lo que comenzó como un capricho acabó convirtiéndose en un back-end funcional para Slint sobre e-ink que ya está disponible en crates.io.

Cómo cruzar compilación para un Kindle Paperwhite

El Kindle Paperwhite de 7.ª generación monta un procesador ARMv7 con musl libc, un objetivo de compilación poco común en el ecosistema Rust. Sverre recurrió a cargo-zigbuild, una herramienta que aprovecha el compilador Zig para generar binarios cruzados con su propio enlazador. El comando es sorprendentemente simple:

cargo zigbuild --release --target armv7-unknown-linux-musleabihf

«El compilador Zig incluye las cabeceras y fuentes de musl libc para todas las arquitecturas soportadas», explica Sverre. «Zig cc puede actuar como una cadena de herramientas completa de compilación cruzada para cualquier objetivo musl, en cualquier equipo anfitrión.»

La pantalla e-ink como lienzo

El mayor desafío técnico era conseguir que Slint —un framework de interfaz de usuario multiplataforma— renderizara sobre la pantalla de tinta electrónica. Slint dispone de un renderizador software ligero que funciona con cualquier dispositivo que implemente su LineBufferProvider. Sverre aprovechó que en Linux «todo es un archivo»: el framebuffer del Kindle está en /dev/fb0. Basta con mapearlo en memoria, escribir las líneas rasterizadas convertidas a escala de grises y notificar al controlador mediante una llamada ioctl() para que refresque la región modificada de la pantalla.

La gestión del refresco e-ink fue uno de los puntos más delicados. «Tras muchas depuraciones sin salida visible, pantallas que no se refrescaban, destellos de doble refresco y un montón de bugs más, conseguí un contador y un botón de incremento», relata el desarrollador.

El táctil también funciona

Una interfaz sin entrada táctil no sirve de mucho, y aquí Sverre volvió a apoyarse en la filosofía Unix. El controlador táctil del Kindle aparece como /dev/input/event1. Leyendo directamente de ese archivo se obtienen eventos estructurados con timestamp, tipo, código y valor. «Sin análisis, sin protocolo, solo una disposición de memoria que tenemos que igualar», apunta.

El Kindle utiliza el protocolo multitáctil tipo B del kernel Linux, lo que significa que los eventos llegan como un flujo de coordenadas X, coordenadas Y, un identificador de seguimiento, y un evento SYN_REPORT que indica que el lote ha terminado. Sverre implementó la lógica para acumular estos datos y traducirlos a eventos PointerPressed, PointerMoved y PointerReleased que Slint entiende de forma nativa.

Más allá del reloj de mesilla

El desarrollador ha publicado el código extraído como una crate independiente en crates.io bajo el nombre de kindle-backend, para que cualquiera pueda reutilizarlo. Aunque la implementación actual está ajustada a su modelo específico de Kindle Paperwhite, la arquitectura es extensible a otros dispositivos de Amazon con jailbreak.

Las aplicaciones prácticas van más allá del reloj digital. Sverre menciona que está explorando la posibilidad de usarlo como panel de control para Home Assistant, su sistema de domótica. «Un dashboard para algunas funciones domésticas podría ser un proyecto divertido», comenta. La combinación de la batería eterna del Kindle (semanas sin cargar) con una interfaz Rust eficiente abre la puerta a terminales de información de bajo consumo.

La noticia ha circulado por Hacker News, Techmeme y Reddit, donde la comunidad técnica ha recibido el proyecto con entusiasmo. No es para menos: demostrar que Rust y Slint pueden funcionar sobre un fragmento de hardware propietario con jailbreak, manteniendo la eficiencia energética que caracteriza al e-ink, es una prueba de concepto fascinante para cualquiera que haya mirado un Kindle y pensado que podría dar mucho más de sí.

Si tienes un Kindle viejo en un cajón, quizá ha llegado el momento de sacarlo, jailbreakearlo y darle una segunda vida. La comunidad ya tiene las herramientas.

Fuentes: Sverre — Rust and Slint on a jailbroken Kindle, Techmeme, Hacker News.