- Une démo de moniteur e-ink à 3,5 fps a été réalisée sur un Kindle Paperwhite 3 en capturant l’écran de macOS, puis en le transmettant et en l’affichant
- Sur le Kindle, un serveur d’écoute en Go reçoit les images sur le port 8000, puis affiche le JPG reçu à l’écran avec l’utilitaire intégré
eips
- Sur macOS,
screencapture, ImageMagick et netcat sont combinés pour gérer la capture d’écran, la conversion et la transmission via usbnet
- Comme chaque frame envoie un JPG complet, il y a beaucoup de gaspillage de transfert sur les écrans qui changent peu, comme un éditeur de texte, et de nombreuses pistes d’amélioration
- Cela montre qu’il est possible de prototyper rapidement un moniteur auxiliaire e-ink avec une simple combinaison d’outils existants, sans codec dédié ni implémentation VNC
Jailbreak et obtention d’un shell root
- La première étape consiste à jailbreaker le Kindle afin d’accéder, d’une manière ou d’une autre, à un shell root
- Des ressources sur le sujet sont disponibles sur mobileread.com, et l’on peut se référer aux instructions du fil LanguageBreak
- L’auteur de l’implémentation n’a pas suivi les instructions de LanguageBreak à la lettre, mais a trouvé le dépôt GitHub de LanguageBreak utile pour le débogage
- Le point important n’est pas tant la méthode de jailbreak elle-même que le fait d’obtenir un shell root sur le Kindle
Serveur d’écoute Kindle et sortie eips
- Côté Kindle, un programme Go a été écrit pour recevoir des fichiers sur le port 8000
- Le listener enregistre le JPG reçu, puis appelle
eips, l’utilitaire intégré du Kindle pour l’affichage à l’écran
- Exemple de flux :
- Le programme Go reçoit un fichier JPG
- Il l’enregistre dans
/tmp/img.jpg
- Il l’affiche à l’écran avec la commande suivante
eips -g /tmp/img.jpg -w gc16 -x 128 -y 0
- Cette commande affiche l’image via une mise à jour partielle
- La mise à jour complète ne donnait pas de bons résultats, et la signification des options de
eips peut être consultée dans le wiki eips
- Avant la première frame, on peut effacer l’écran avec
eips -c
- Le code source Go a été perdu, mais il s’agissait d’un code simple de moins de 30 lignes
Capture d’écran macOS et conversion d’image
- Sur macOS, l’écran est capturé en boucle avec
screencapture et enregistré sous forme de fichier PNG
- L’image capturée est tournée, redimensionnée et convertie en niveaux de gris avec ImageMagick pour correspondre à l’écran du Kindle
- Le JPG converti est envoyé avec
netcat au serveur d’écoute du Kindle via usbnet
/usr/sbin/screencapture -C -x /tmp/orig.png
convert /tmp/orig.png -rotate 270 -resize '810x1448!' -type GrayScale -depth 8 -colors 256 /tmp/gray.jpg
cat /tmp/gray.jpg | nc -w 0 192.168.15.244 8000
screencapture -C -x capture l’écran dans /tmp/orig.png
convert applique une rotation de 270 degrés, redimensionne l’image en 810x1448, puis la convertit en JPG 8 bits en niveaux de gris avec 256 couleurs
nc envoie le fichier converti /tmp/gray.jpg vers 192.168.15.244:8000
- La résolution doit être adaptée au modèle de Kindle utilisé, et le port doit correspondre à la configuration du serveur d’écoute sur le Kindle
Limites de performance et d’utilisabilité
- Cette implémentation est un hack réalisé rapidement la veille au soir pour s’amuser, et les performances comme l’utilisabilité peuvent largement être améliorées
- La méthode consistant à envoyer un fichier JPG complet à chaque frame est très coûteuse
- La quantité de changements entre deux frames consécutives est généralement faible et probablement facile à compresser
- Cette caractéristique peut être particulièrement marquée dans des usages où seule une partie de l’écran change, comme dans un éditeur de texte
- Même sans créer un codec comme h.264 ni un protocole comme VNC, l’auteur estime qu’il devrait être possible d’améliorer rapidement le système avec des outils déjà existants
Ressources de référence
1 commentaires
Avis sur Hacker News
Cela aurait été beaucoup plus intéressant s’il avait expliqué comment il s’y était pris, et publié ça ailleurs que sur une plateforme de billets courts
Édit : https://gist.github.com/adtac/eb639d3c707b55a28f0ee9a420aa7e...
Pour celles et ceux qui ne connaissent pas : si vous répondez
@threadreaderapp unrollà un tweet, vous recevez le document reconstitué. Une fois le déroulage terminé, le bot ne répond directement qu’à vousJ’ai fait quelque chose de similaire avec une entrée HDMI
https://hackaday.com/2021/01/08/old-kindle-shows-hdmi-video-...
C’est comme ça que j’ai créé OK Monitor : https://barwap.com/projects/okmonitor/
Je ne pense pas que ce soit viable commercialement. Le chiffre d’affaires serait probablement de l’ordre de quelques milliers à quelques dizaines de milliers de dollars, donc quel que soit le niveau de marge, il serait difficile de récupérer plus que le temps et les coûts investis. Cela dit, dans des projets hobby, j’ai déjà vu ce genre d’approche adoptée pour avoir de l’impact
J’aimerais avoir un écran e-ink sans fil pour ordinateur, idéalement sous forme de dongle USB-C recevant à la fois la vidéo et l’alimentation. HDMI + alimentation USB conviendrait aussi
Ces derniers jours, j’ai testé Android + Kaleido3 comme appareil polyvalent, et j’ai aussi essayé Termux-X11
Kaleido3 est plutôt utilisable. Grâce aux formes d’onde récentes et à un algorithme de dithering correct, on peut même regarder des vidéos avec seulement des compromis limités, et le taux de rafraîchissement est élevé. Coder était tout à fait possible aussi, les compilateurs et interpréteurs étant fournis par Termux
Avec Termux-X11, on peut lancer un Linux de bureau nativement sur un appareil Android. Il n’est donc pas nécessaire d’utiliser l’e-ink comme partie d’un dispositif de moniteur : on peut aussi s’en servir directement comme écran d’ordinateur actif intégré à la tablette
Si vous voulez jailbreaker un Kindle, le mieux est de commencer par les forums
mobilereadLes écrans e-ink deviendront-ils un jour bon marché ? Il me semble que les brevets de base devraient bientôt expirer
C’est le plus gros poste de coût de mon calendrier, et il impose pratiquement à lui seul la gamme de prix : https://shop.invisible-computers.com/products/invisible-cale...
La plupart des usages d’E Ink peuvent être remplacés par du LCD, et comme c’est plus cher que le LCD, peu d’acteurs choisissent de l’utiliser
L’argument des « brevets » ressemble surtout à une théorie du complot sans base solide. E Ink a des concurrents, par exemple les écrans DES/Display Electronic Slurry. Si E Ink Corp pratiquait des prix abusifs, GoodDisplay aurait déjà conquis le marché
Pour être précis, l’existence de brevets E Ink n’est pas une théorie du complot. Certains ont expiré, et E Ink Corp continue d’innover et de déposer de nouveaux brevets. Il existe aussi énormément de brevets sur les LCD. La partie conspirationniste, c’est l’idée que les brevets provoquent la hausse et le maintien de prix élevés, et empêchent donc la diffusion de la technologie
Pourquoi aller jusqu’au jailbreak ? Il suffirait de faire du streaming de captures d’écran du bureau dans le navigateur intégré du Kindle, non ?
Le navigateur du Kindle a déjà du mal avec le Kindle Store ou Goodreads, mais j’aimerais qu’on me prouve le contraire. Cela permettrait de mettre en place quelque chose de beaucoup plus facilement, sans modification, même sur les nouveaux Kindle
D’après ce qui est sur GitHub : « malheureusement, j’ai perdu le code source Go »
Si c’était aussi simple, il est plutôt étrange de ne pas l’avoir réécrit immédiatement pour l’ajouter à GitHub
Pour faire ça facilement, il suffit d’utiliser l’app Superdisplay sur une liseuse Boox
La question la plus importante n’a pas été traitée : est-ce que ça en valait la peine ?
Dans sa forme actuelle, le taux de rafraîchissement est bon, mais la latence est catastrophique. L’expérience de frappe est donc mauvaise, mais il existe beaucoup d’usages qui ne nécessitent pas de taper
Même dans les cas où le retour de frappe à faible latence est important, comme une fenêtre de chat, on peut garder le champ de saisie sur un écran LCD et afficher seulement l’historique de conversation, essentiellement statique, sur le Kindle. Il reste du travail pour en arriver là, mais pour l’instant c’est un bon point de départ