- Transformation d’un ancien Kindle Touch 4e génération en tableau de bord à encre électronique affichant les horaires d’arrivée des bus NJ Transit, mis à jour chaque minute
- Mise en place d’un environnement d’exécution pour applications personnalisées via jailbreak, KUAL, MRPI et configuration SSH, puis affichage sur le Kindle d’images générées par un serveur basé sur Node
- Le serveur récupère les données des bus via une API GraphQL, les met en forme en HTML, puis génère un PNG avec wkhtmltoimage, que le Kindle charge périodiquement
- Création d’une application KUAL dédiée pour pouvoir quitter le tableau de bord via un bouton de menu, avec bash trap et rtcwake pour la gestion de l’alimentation et le contrôle du rafraîchissement automatique
- Une autonomie d’environ 5 jours, avec une marge d’amélioration pour les rémanences à l’écran, montrant le potentiel des écrans à encre électronique pour l’affichage d’informations en temps réel
Transformer un Kindle en écran d’information pour les arrivées de bus
- Modification d’un Kindle Touch 4e génération en panneau d’information en temps réel pour les arrivées de bus
- L’écran se rafraîchit chaque minute, et il est possible de quitter le mode tableau de bord avec le bouton de menu
- Une fonctionnalité comparable au produit commercial TRMNL, réalisée gratuitement
1. Jailbreak du Kindle
- Vérification de la version du firmware du Kindle, téléchargement du fichier tar correspondant, puis exécution de la procédure de jailbreak
- Une fois l’opération réussie, passage à l’installation de KUAL et MRPI
2. Installation de KUAL et MRPI
- KUAL sert de lanceur d’applications personnalisées, et MRPI d’outil d’installation d’applications
- Il faut impérativement effectuer la configuration du Hotfix avant l’installation
- Après l’installation, désactivation des mises à jour OTA pour bloquer les mises à jour automatiques
3. Configuration de SSH
- Accès SSH au Kindle possible via l’extension USBNetwork
- Configuration d’une connexion SSH via USB en s’appuyant sur un guide de blog externe
- Une fois la connexion établie, le Kindle apparaît comme un nouvel appareil dans l’onglet réseau de l’ordinateur
4. Mise en place du serveur et génération d’images
- Récupération des informations d’arrivée des bus via l’API GraphQL de NJ Transit
- Collecte des données de ligne, heure d’arrivée, niveau d’affluence, etc. avec la requête
getBusArrivalsByStopID
- Utilisation de wkhtmltoimage plutôt que de puppeteer pour convertir le HTML en PNG
- Le serveur génère une nouvelle image toutes les 3 minutes, que le Kindle vient ensuite récupérer
- Le code associé est publié dans le dépôt GitHub
kindle-hax/server
- Ajustement de la rotation et de l’alignement de l’image pour correspondre à la résolution de l’écran du Kindle (par ex. 600x800)
- Affichage en orientation verticale avec
transform: rotate(90deg) translateX(-100px) translateY(-100px);
5. Création de l’application KUAL
- Création d’une extension KUAL personnalisée pour contrôler le démarrage et l’arrêt du tableau de bord
- Placement du dossier dans
/mnt/us/extensions/, puis affichage du menu « Start dashboard » dans KUAL
- Le script start.sh reste stable à l’exécution en ignorant certains signaux (
trap '' HUP, trap '' TERM)
- La fonction
refresh_screen() télécharge l’image du serveur puis l’affiche avec la commande eips
- Affichage en haut de l’écran de la date, de l’état du Wi‑Fi et du niveau de batterie
- Détection via evtest de l’entrée du bouton de menu (
code 102 (Home), value 1) pour exécuter stop.sh
- Fermeture du tableau de bord et redémarrage de l’interface utilisateur du Kindle
6. Résultat et pistes d’amélioration
- Environ 5 jours d’autonomie, avec jusqu’à 2 jours de plus si l’alimentation est coupée la nuit
- Le problème de rémanence de l’écran (color bleeding) pourrait être amélioré avec un flash noir et blanc complet
- Utilisé au quotidien, avec confirmation du potentiel d’extension vers l’affichage d’un calendrier, de la météo, des tâches et d’autres informations
2 commentaires
J’ai moi aussi fait quelque chose de similaire récemment, et si voir la barre d’URL en haut ne vous dérange pas, vous pouvez simplement charger une page web.
Le Kindle permet par défaut d’accéder à une URL depuis le navigateur web, donc il suffit d’y ouvrir le tableau de bord.
Au bureau, j’utilise un Kindle, et à la maison un ancien Paperwhite, tous deux chargent la même page, donc c’est plutôt cross-platform haha.
Bien sûr, pour que le Kindle reste allumé en permanence, il faut faire un root ou une manipulation équivalente.
Pour le Paperwhite, pas besoin d’aller jusqu’au root : il suffit d’activer la connexion
adb, puis de désactiver l’économiseur d’écran depuis là.Commentaires sur Hacker News
En tant que personne ayant déjà travaillé sur la consommation électrique des Kindle, la plus grande source de consommation était le Wi‑Fi
parce que le Wi‑Fi doit répondre périodiquement au point d’accès pour maintenir la connexion active
de mémoire, c’était environ 700 uA lorsqu’il était coupé, et environ 1,5 mA lorsqu’il était activé
lors d’un changement de page, la consommation montait brièvement à plusieurs centaines de mA, et un rafraîchissement complet de l’écran était effectué toutes les quelques pages afin de réduire le ghosting
il fallait une alimentation capable de fournir environ 1,5 A en pointe ; en branchant un ancien hub USB alimenté à un Raspberry Pi et en le contrôlant via SSH, cela a fonctionné de manière stable pendant des mois sans Wi‑Fi
je l’utilise moins de 30 fois par mois, mais avec le Wi‑Fi coupé, l’autonomie est étonnamment bonne
je n’ai pas encore modifié mon Kindle Paperwhite, mais je compte au minimum supprimer les publicités de l’écran de verrouillage
maintenant je comprends enfin clairement pourquoi la batterie dure plus longtemps en mode avion
J’ai utilisé une méthode plus simple
après le jailbreak, je m’y connectais en SSH et j’ai créé deux scripts s’exécutant respectivement toutes les 1 minute et 30 minutes
les deux scripts affichent la même image, mais celui des 30 minutes ajoute un rafraîchissement complet
depuis un Raspberry Pi, j’envoie l’image via rsync, et un script Python récupère des données sur la qualité de l’air dans MySQL pour composer l’image
le Kindle se contente donc d’afficher l’image, ce qui le rend très stable
il suffirait simplement qu’il prenne en charge une connexion sécurisée comme TLS
Hacker un Kindle est vraiment amusant
on peut trouver de vieux Kindle sur eBay pour 15 à 20 euros, et je me suis moi aussi bien amusé à faire la même expérience l’an dernier
j’ai détaillé le processus dans mon billet de blog
c’est petit, mais avec le firmware Crosspoint, on peut l’utiliser comme lecteur e-ink portable
Vidéo YouTube, Crosspoint GitHub
c’est un peu plus cher, mais il est possible qu’ils réutilisent des écrans de Kindle
cet article m’a donné envie d’expérimenter davantage avec des plateformes comme Cloudflare Workers
J’ai transformé un vieux Kindle en cadre d’images générées par IA
une nouvelle image est générée toutes les quelques heures, et le prompt peut inclure la météo, des animaux, un pays, des titres d’actualité, etc.
tout le traitement est effectué localement sur un serveur domestique ollama + stable-diffusion-webui
en revanche, les images basées sur l’actualité devenaient trop déprimantes, donc j’ai demandé à l’IA de leur donner un ton positif
les jours de pluie, il pleut aussi dans l’image, et en hiver il y a de la neige
la batterie tient aussi plusieurs semaines, et j’ai modifié l’extension Online Screensaver pour qu’elle passe automatiquement en mode avion
Ma version de tableau de bord Kindle est publiée sur GitHub
elle affiche la météo locale et les informations musicales de mon serveur multimédia
le problème de ghosting à l’écran se résout avec un rafraîchissement complet périodique via la commande
eips -fc’est la première fois que je me suis dit que j’avais envie d’apprendre Rust
Dans le Queensland, en Australie, on utilise des panneaux d’information d’arrêt de bus en e-paper alimentés à l’énergie solaire
c’est bien plus grand qu’un Kindle, mais le principe est similaire
Présentation du projet, vidéo de démonstration
Ce projet m’a rappelé le projet SystemSix
En ce moment, on dirait que tout le monde fait ce genre de projets de modification de Kindle
j’ai moi aussi modifié un K4NT pour en faire un serveur affichant le planning familial
je me suis un peu aidé de l’IA, j’ai ajouté un insert imprimé en 3D dans un cadre Ikea et fixé une batterie externe MagSafe
il suffit d’appuyer sur le bouton d’alimentation tous les 5 jours, et je prévois de remplacer la batterie interne
une connexion filaire n’était pas possible dans mon environnement
Si l’on désactive le réseau entre les rafraîchissements, l’autonomie augmente clairement
moi, j’empêchais les mises à jour de 22 h à 6 h du matin
il y a beaucoup de scripts d’économie de batterie sur GitHub
j’avais aussi fabriqué autrefois un afficheur de transports publics basé sur GTFS avec un Raspberry Pi Zero + écran e-ink de 2 pouces
Article sur le tableau de bord Kindle, projet Transit Pi
ce genre de visualisation d’électroménager intelligent est vraiment séduisant
J’aime utiliser un Kindle comme écran à usage unique
en fait, je préfère même le Kindle Fire à écran LCD à l’eInk
en le passant en mode développeur, on peut laisser une page web affichée en permanence et l’utiliser sans publicité
un Kindle Fire HD10 se trouve pour environ 40 dollars
un LCD sans ghosting et lisible dans l’obscurité est une excellente amélioration pour un tableau de bord