📚Jailbreak de la liseuse Kobo Aura 2

Loading

Étant un lecteur occasionnel (et un gros geek), j’ai acquĂ©ris il y a quelques annĂ©es (en 2016 !) une liseuse afin de pouvoir me balader avec quelques centaines de livres dans un appareil de mĂȘme pas 200g. Je suis retombĂ© dessus rĂ©cemment et, ne l’utilisant plus si souvent, j’ai eu envie d’en faire quelque-chose.

Quelques recherches plus tard, je me rends compte que je ne suis pas le premier Ă  avoir eu ce genre d’idĂ©es, et qu’il existe sur certains forums des communautĂ©s entiĂšres dĂ©diĂ©es Ă  la modification de liseuses.

L’objectif est donc de jailbreak ma liseuse Kobo afin d’en faire une petite station mĂ©tĂ©o. Ce projet est directement inspirĂ© des projets de KevinShort et Matthew Petroff :


Kevin Short's  Kobo Wifi Weather Forecast
Kevin Short's Kobo Wifi Weather Forecast

Matthew Petroff's  Kindle weather display
Matthew Petroff's Kindle weather display

Sur les modĂšles ci-dessus, je trouve personnellement qu’il y a un peu trop d’informations. Quand je regarde la mĂ©tĂ©o au quotidien je regarde surtout la mĂ©tĂ©o pour le jour mĂȘme, et Ă  la rigueur les tempĂ©ratures des jours suivants. On pourra donc viser une interface plus simple, et faire un peu de place pour un petit ajout personnel (vous verrez !).


1. Installation de YAWK

HonnĂȘtement, en commencant ce projet je n’avais absolument aucune idĂ©e de comment faire. Je ne savais pas comment fonctionnait une liseuse kobo, quels composants il y avait dedans, est-ce que ca utilise un OS propriĂ©taire ou une distribution lĂ©gĂšre de linux, 


En faisant quelques recherches, je suis tombé sur YAWK, un projet ressemblant beaucoup à ce que je voulais faire mais beaucoup plus récent que les projets présentés précédemment !


La premiĂšre Ă©tape Ă©vidente est donc de l’installer, comme ca je saurais si les techniques utilisĂ©es fonctionnent sur mon modĂšle de liseuse. Pour ca, la documentation de YAWK est plutĂŽt claire, je vais rĂ©sumer rapidement le processus.


1. RĂ©initialiser la liseuse aux paramĂštres d’usine.

Cette Ă©tape est optionnelle mais elle permet de partir sur une base saine et surtout de s’assurer que la liseuse aura assez d’espace de stockage pour la suite. Si vous avez des ebooks que vous souhaitez garder pensez Ă  faire une sauvegarde avant !



2. Installer NiLuJe's Stuff sur la liseuse

NiLuJe est un acteur important du modding de liseuses et est trÚs actif sur le site MobileRead. Il a notamment développé FbInk, un outil permettant de dessiner des formes et du texte simplement sur des écrans à encre, et a publié plusieurs tutoriels pour jailbreak des liseuses kobo et kindle.

Ici, je vais utiliser un package d’outils nommĂ© “Kobo-stuff” qu’il a crĂ©Ă© pour modder simplement des liseuses Kobo.

Des liens Ă  jour du package peuvent ĂȘtre trouvĂ©s dans ce thread :

loading...

Pour l’installer sur la liseuse, rien de plus simple ! Il se trouve que le fonctionnement des liseuses kobo est un peu bĂȘte : au lancement, si un dossier compressĂ© nommĂ© “KoboRoot.tgz” est prĂ©sent Ă  la racine de la liseuse, alors un processus d’update se lance.

Si tout se passe bien, la liseuse redémarre normalement et rien ne semble avoir changé.


3. Installation de YAWK

Pour cette Ă©tape il est nĂ©cessaire d’avoir un client FTP comme Filezilla et un client Telnet.

Je commence par connecter la liseuse au mĂȘme wifi que mon pc, puis je rĂ©cupĂšre l’adresse IP de ma liseuse dans paramĂštres > Informations sur l’appareil > Adresse IP.

Si l’étape 2 s’est bien passĂ©e, on devrait pouvoir se connecter Ă  la liseuse Ă  distance.

Avec Filezilla, je crée un répertoire .apps/yawk et je copie tout le contenu du repo de YAWK dedans.

⚠
Attention ! Si vous ĂȘtes sous Windows, vos fichiers ont probablement des fins de ligne au format CRLF, hors Linux ne supporte que les fins de lignes LF. Avant de copier les fichiers, je les ai convertis avec l’outil dos2unix.

Ensuite j’ouvre une session telnet avec l’ip rĂ©cupĂ©rĂ©e prĂ©cĂ©demment et je tape les commandes suivantes :

  • tmux new -s kobo update-kobostuff Python pour installer python3
  • cd /mnt/onboard/.apps/yawk pour naviguer jusqu’au rĂ©pertoire de YAWK
  • sh install.sh pour lancer le script d’installation de YAWK

Le script d’installation demande une clĂ© d’api openweathermap et l’id de la ville dont on souhaite surveiller la mĂ©tĂ©o.

loading...

A la fin du script, la liseuse redémarre et


Tout fonctionne !


2. Personnalisation de l’interface


Maintenant que je sais qu’il est possible d’afficher du contenu arbitraire sur l’écran de ma liseuse et que je sais plus ou moins comment le faire, je peux expĂ©rimenter un peu et implĂ©menter mes propres features :)


Pour commencer, je vais rĂ©duire un peu la quantitĂ© d’informations affichĂ©e Ă  l’écran. Pour ca, je modifie les fichiers weather.py et yawk.py et j’arrive rapidement Ă  un rĂ©sultat satisfaisant :

Au lieu d’afficher les prĂ©dictions mĂ©tĂ©o sur 5 jours, j’affiche maintenant des infos dĂ©taillĂ©es pour la mĂ©tĂ©o du jour, et seulement la tempĂ©rature et l’icĂŽne indiquant le temps pour les 3 prochains jours.
Au lieu d’afficher les prĂ©dictions mĂ©tĂ©o sur 5 jours, j’affiche maintenant des infos dĂ©taillĂ©es pour la mĂ©tĂ©o du jour, et seulement la tempĂ©rature et l’icĂŽne indiquant le temps pour les 3 prochains jours.

Les plus malins auront remarquĂ© le grand espace vide en bas de l’écran. Cette place pourrait me servir Ă  loger un gros widget pour afficher Ă  peu prĂšs n’importe quoi. J’ai plusieurs idĂ©es d’ailleurs :

  • État de ma domotique : quelles lumiĂšres sont allumĂ©es ou Ă©teintes, Ă©tat de la batterie de mon casque, mon tĂ©lĂ©phone et mon pc, suivi de ma consommation Ă©lectrique

  • DerniĂšres notifications manquĂ©es
  • Photos alĂ©atoires parmi mes prĂ©fĂ©rĂ©es (mĂȘme si l’écran est en noir et blanc)
  • To-do list
  • Prochains Ă©vĂšnements de mon calendrier
  • 


En l’occurrence, ma copine m’a suggĂ©rĂ© d’intĂ©grer Ă  l’interface un petit cadre pour un message qu’elle pourrait personnaliser. Ça me semble ĂȘtre une bonne idĂ©e et ça ne demande pas trop de temps Ă  faire donc je me lance !

La solution la plus simple et Ă©vidente, c’est coder une petite API toute simple avec laquelle la liseuse pourra interagir, et un site pour Ă©crire le message.

Pour ça je me tourne naturellement vers ma stack habituelle : Next.js et Vercel. Ça me permet de dĂ©velopper rapidement Ă  la fois le site et l’api, et de l’hĂ©berger en seulement un clic gratuitement. De plus, grĂące au service KV Storage de Vercel pas besoin d’hĂ©berger une grosse base de donnĂ©e !

Tant que j’y suis pour garder un historique des messages, je setup un webhook simple vers un salon discord.

Voilà le résultat final :


Maintenant, plus qu’à dĂ©velopper l’interface sur la liseuse. Pour ça, je prototype rapidement le design sur Photoshop, j’exporte tout ce qui est statique dans un fichier PNG et je mesure l’emplacement du texte. Pour Ă©viter que le texte ne dĂ©passe pas de l’écran, j’écris une fonction qui ajoute des retours Ă  la ligne automatiquement.

Je transfĂšre tout sur la liseuse, je me fais encore avoir Ă  cause des formats de retour Ă  la ligne, et aprĂšs quelques galĂšres, j’obtiens le rĂ©sultat suivant :


Un projet rondement mené :)

← Go home