
Reconstruire un protocole USB mort : les secrets d’une console portables déverrouillés par un couteau chaud, un voyage multidisciplinaire pour ressusciter une interface USB oubliée
En 2024, bjiru a mis en ligne une vidéo sur le dispositif portable ME2, un jouet produit vers 2008 qui permettait d'utiliser l'USB pour synchroniser des points et des gemmes entre votre appareil et un monde en ligne. Le jeu était extrêmement de niche, donc aucun logiciel, pilote ou actif n'avait été archivé, du moins jusqu'à ce que bjiru se manifeste avec le client du jeu en ligne.
Je suis le leader de Miuchiz Reborn, un effort qui a commencé en 2015 pour préserver, rétro-ingénieriser, émuler et maintenir l'accessibilité d'un jeu similaire à celui-ci, avec une partie en ligne et une partie portable connectée via USB. En raison de l'âge et du type de jeu similaires, le ME2 avait déjà été porté à mon attention par ma communauté Miuchiz en 2018, car ils pensaient (à tort) qu'ils pourraient partager des similitudes architecturales. Bien que j'aie été conscient de l'existence de l'appareil pendant des années, la vidéo de bjiru m'a finalement incité à commencer des recherches à son sujet.
Mes premiers efforts étaient uniquement consacrés à recréer le serveur nécessaire pour rendre à nouveau fonctionnelle la copie de bjiru du jeu informatique, mais en cours de route, mon attention a inévitablement dérivé vers le portable. Une reconstitution du jeu en ligne ne pourrait sûrement jamais être complète sans le mécanisme de synchronisation de vos points depuis et vers l'appareil. Cette communication entre votre ordinateur et le ME2 était après tout le principal argument du jeu. Je pensais que mon expérience antérieure avec les appareils portables Miuchiz m'aiderait à démêler rapidement le rituel de communication qu'ils attendent... tant que je pouvais obtenir du code à rétro-ingénieriser.
Ma curiosité exigeait le sacrifice de ME2. eBay exigeait le sacrifice d'argent fiduciaire. Peu de temps après, ces spécimens gisaient devant moi.

Ce sont de petites unités avec seulement quelques boutons et un port mini-USB femelle. Un câble est inclus dans la boîte, mais il n'y a aucun disque pour le logiciel et les pilotes. Ce port USB serait le moyen de synchroniser les points entre votre ordinateur et le portable, mais lorsque j'ai entrepris le même voyage pour l'appareil portable Miuchiz, j'ai obtenu un accès complet à sa mémoire flash en rétro-ingénierisant le fonctionnement de son logiciel Windows d'accompagnement. Sans un tel logiciel pour le ME2, il n'y a rien à rétro-ingénieriser pour comprendre comment communiquer avec l'appareil. Même après avoir vérifié Wayback Machine et bjiru, il ne semble y avoir aucune copie survivante du logiciel utilisé pour parler à ces objets. Je pense qu'il s'appelait ME2 Desktop Buddy, mais cette application était distincte du client de jeu que bjiru a récupéré. Le portable se présente comme un périphérique de stockage amovible, mais son contenu vous dirige simplement en ligne pour télécharger le jeu ME2, qui n'est plus disponible.
La voie à suivre est claire, car il ne reste qu'une seule option : ouvrir le matériel.

Le firmware principal du ME2 est stocké sur une SST39VF3201, une puce flash de 2 megawords (4 mégaoctets, avec des unités adressables de 16 bits). Le microcontrôleur principal est... sous un glob-top d'époxy dur. C'est ce qu'on appelle un chip-on-board (CoB) et c'est généralement une mesure d'économie de coûts, mais cela a pour effet secondaire de cacher toute information d'identification sur le circuit intégré à l'intérieur. Une puce emballée normalement aura généralement des marquages qui l'identifient, tout comme la puce flash. Étant donné que les microcontrôleurs utilisés dans des appareils comme ceux-ci contiennent souvent une ROM interne, il est possible qu'une partie ou la totalité du code USB que je voulais rétro-ingénieriser se trouve dans cette ROM. Avoir ce code en ROM présente l'avantage de permettre la récupération d'un appareil brické ou, si le fabricant le choisit, de flasher l'appareil après assemblage. Cette ROM existerait à l'intérieur d'une puce que je n'avais aucun moyen d'identifier.
Récupérer les données de la puce flash est un processus simple et bien documenté : dessouder la puce, la mettre dans un programmateur flash standard comme ceux de XGecu, et l'utiliser pour dumper le contenu. Si j'avais également besoin d'informations de la ROM du microcontrôleur, c'est moins simple, mais c'est faisable pour un appareil comme celui-ci où la protection est peu probable. Par le passé, j'ai ajouté du code à la flash SPI d'un Tamagotchi Pix qui copierait sa ROM de démarrage dans l'espace libre de la puce flash, qui pourrait ensuite être lue par le même programmateur flash que j'avais utilisé pour injecter le code. Cependant, dans ce cas, le microcontrôleur était correctement emballé et portait des informations de modèle imprimées, donc je pouvais trouver sa fiche technique pour connaître le jeu d'instructions utilisé et où se trouvait sa ROM dans l'espace mémoire. À ce stade, je n'avais aucune de ces informations pour le mystérieux chip-on-board du ME2.
Malgré les incertitudes, la seule voie apparemment possible à partir de là est de dessouder la puce flash. J'avais également acheté des sockets pour la puce flash dans l'espoir de pouvoir en souder une sur le PCB du portable. Cela me permettrait de reprogrammer le ME2 et d'itérer rapidement si je devais écrire du code pour dumper la ROM interne du microcontrôleur.
Malheureusement, je n'ai pas réussi à enlever la puce flash avec un fer à souder sans endommager la puce. Pour résoudre ce problème de compétence après plusieurs tentatives infructueuses, j'ai plutôt acheté une station de rework (effectivement un pistolet à air chaud qui prétend pouvoir atteindre 500 °C) et j'ai retiré la puce en faisant fondre la soudure avec de l'air chaud. Cela m'a permis de dumper le contenu de la flash sans problème, mais cela a révélé qu'utiliser réellement les sockets que j'avais achetés allait au-delà de mes capacités. Non seulement je devrais souder les 48 minuscules broches sur le PCB, mais je devrais aussi le faire assez rapidement pour éviter de faire fondre le plastique des sockets. Je n'avais ni les outils ni les compétences pour gérer cela, donc si j'avais besoin de la ROM, il me faudrait une autre stratégie.
Le dump avait l'air bon, cependant, et en utilisant un outil que j'avais déjà construit spécifiquement pour trouver des bitmaps non compressées dans les dumps de firmware, j'ai pu trouver des images qui seraient normalement affichées sur l'appareil :
