- Published on
Transformer une boîte à histoire en OpenSource
- Authors
- Name
- Anthony Rabine
La boîte à histoires Lunii, création française, est un objet électronique épatant pour les enfants : pas d'écran (quelques images seulement), une molette et un haut parleur suffisent pour écouter des histoires à créer. Les gosses sont accrocs ! Malheureusement, je trouve le matériel un peu fragile et pas encore assez ouvert. Dur dur de réparer soit même quelque chose de fermé après la fin de la garantie et les liens sont encore un peu trop forts avec l'écosystème en ligne.
Présentation de la boîte à histoire
La boîte se présente sous la forme d'un pavé de bonne taille au contact très doux et aux couleurs vives. Une grosse molette centrale permet d'effectuer des choix lorsque l'écran fonctionne (au début de l'histoire ou au milieu). Les choix sont là pour construire une histoire à partir de personnes, objets et lieux ou pour intervenir au cours du déroulement pour effectuer des choix ayant une incidence sur la suite de l'aventure. Rassurez-vous, les choix sont limités, au final il est généralement possible de construire une dizaine d'histoires.
La grosse réussite vient du look, le plastique est super agréable et cela fait du bien de sortir des rose et bleu habituels. La mécanique semble relativement robuste ; l'électronique est par contre moins convaincante.
La boîte est accompagnée d'un logiciel, le Luniistore (pour MacOS/Windows/Linux), programmé en Java, permettant d'acheter et de gérer les histoires dans la mémoire flash de la boîte. D'ailleurs cette application fonctionne tout à fait bien sur Linux, c'est assez rare pour le noter.
Par contre, et c'est un de ses défauts, les boîtes sont de plus en plus liées au compte en ligne Lunii. Par exemple, il vous est impossible de lier plus de trois machines à un seul compte. On comprend, c'est pour pérenniser leur modèle économique calqué sur le principe des imprimantes ou des applications iPhone, mais voilà c'est ... chiant au quotidien. Exemple : une de mes boîtes à histoires était en panne : je la renvoie, le SAV me retourne une neuve dont le numéro de série est différent. Blam, on arrive au quota des trois boîtes par compte, je suis coincé et dans l'impossibilité de charger des histoires dans une boîte neuve ! Il faut alors ENCORE écrite au SAV, ce qui prend un certain temps ...
Dans les entrailles
Quatre vis standard au dos vous permet de très facilement démonter l'appareil. C'est d'ailleurs une manipulation que vous pouvez effectuer sans casser la garantie et est même documentée sur le site du constructeur pour aider à résoudre certains problèmes connus.
L'électronique est somme toute assez classique : un microcontrôleur principal s'occupe de tout. On devine un Atmel sur les anciennes versions (grâce aux drivers) et on retrouve un fabricant taïwannais sur les dernières version, un Sonix SNC7001A. Chose étonnante, les histoires sont stockées sur une carte SD ; pas franchement idéal pour un objet fortement nomade.
Encore moins bon, le système d'attache de la batterie (LiPo 500mAh) est une catastrophe. La batterie est logée dans un vulgaire plastique qui est attaché par deux vis. Sur une de mes boîtes à histoire, le plastique s'est rompu et la batterie se balladait dans la boîte. Sur la photo ci-dessous, vous voyez donc les gros pâtés de colle à chaud que j'ai dû réaliser en guise de réparation de fortune.
Dernier point noir : le connecteur micro-USB qui n'est pas réputé par sa solidité. Sur cette même boîte à histoire, j'ai un faux contacte au niveau de la soudure sur la carte qui perturbe le rechargement.
La nouvelle version de Lunii est quant à elle totalement modifiée du point de vue du matériel : on oublie le Sonix bizarre et on passe sur du STM32 totalement standard et surtout, à la documentation florissante.
Notez que sur le dos il y a les indications pour brancher une sonde JTAG... ils n'ont pas fait beaucoup d'effort pour offusquer le design. D'autant plus que le JTAG s'avère ... complètement disponible et ouvert. Comme nous le verrons par la suite, cela nous donnera les informations nécessaires pour hacker complètement la machine et le format des packs d'histoires.
Architecture matérielle
Lorsque l'on commence un projet, on réalise toujours un diagramme d'architecture ; de gros carrés représentent les fonctions hardware et sont reliés par des flèches montrant la circulation des données.
Voici l'architecture du Lunii :
Nous utiliserons cette architecture pour acheter nos premières cartes et modules électroniques afin de se fabriquer une boîte libre.
Hacks existants
Au moment d'écrire cet article, je connais deux sources d'information de personnes ayant tenté de hacker la boîte. Pas dans le sens "piratage", mais surtout dans le but d'ajouter des fonctions manquantes au firmware ou au logiciel Luniistore.
Le premier hack est documenté sur le site Hackaday.io, l'auteur s'est surtout intéressé sur le format des histoires stockées sur la carte SD. Le second hack est en fait un logiciel qui permet d'ajouter pas mal de fonctions notamment la création d'histoires. Analyser la carte SD ne m'intéresse pas, car si la boîte à histoire est cassée on ne pas la connecter au Luniistore.
Liens :
Évolutions des firmware
Il existe deux firmware qui sont complètement incompatibles au niveau des packs. Tout a changé, mais a priori la plus récente version logicielle est plus intéressante car les packs sont téléchargés localement et ne sont que des fichiers Zip. Une branche du logiciel STUdio contient du code préliminaire qui permet de récupérer les données d'un pack.
La deuxième version du firmware change également le driver USB : la carte SD est montée directement comme un disque USB externe. On retrouve donc l'équivalent des packs directement dessus.
Nous allons donc nous intéresser uniquement cette dernière version firmware.
Stratégie et architecture logicielle prévue
Notre travail consistera dans un premier temps à essayer d'extraires toutes les informations d'un pack :
- les pistes audio
- les images à afficher sur l'écran
- les embranchements
C'est vraiment la partie la plus "inconnue" du projet, le reste n'est que de la programmation classique dans un système embarqué.
L'architecture logicielle prévue est la suivante :
- Tout en C
- Abstraction matérielle totale
- La première cible ne sera pas embarquée mais ... l'ordinateur !
En effet, nous développerons quasiment que sur PC dans un premier temps, avec un "lecteur de packs" réalisé en Qt, le temps de rassembler et de définir l'architecture matérielle "libre". Nous définirons également un nouveau format d'histoire, totalement documenté.