Doom tourne désormais sur un bracelet Xiaomi Mi Band 10

Il y a des gens qui se détendent en regardant une petite série. Aaron Christophel, lui, se détend en désossant des bracelets connectés Xiaomi pour leur faire cracher du code qu’aucun ingénieur de la marque n’avait prévu.
Ce bidouilleur allemand, plus connu sous le pseudo atc1441, vient de s’attaquer au Mi Band 10, et il en a tiré ce que la communauté du hack matériel considère comme le sacre suprême depuis trente ans: un portage de Doom, le jeu de tir sorti en 1993.
Le jeu n’était pourtant pas le problème. La puce, si.
Le Mi Band 10 utilise un BES2700iMP, un composant fabriqué par Bestechnic, un fondeur chinois qu’on croise surtout dans des écouteurs sans fil parce qu’il est taillé pour la basse consommation. Petite subtilité qui complique tout: chez Bestechnic, cette même puce répond aussi au nom de code BEST1503.
Or pour programmer un composant pareil, il faut son SDK, autrement dit le kit fourni par le fabricant avec la documentation et les outils pour développer dessus. Et là, surprise: pour ce modèle, aucun SDK public. Rien du tout. Christophel s’est donc retrouvé face à une puce muette, sans plan ni notice.
Sa porte d’entrée, il l’a trouvée du côté d’une cousine quasi jumelle. Le BEST1306, un autre composant Bestechnic, partage la même architecture, et lui possède un SDK qui a fuité par le biais de kits de développement audio. En recoupant patiemment les deux, il a reconstitué par rétro-ingénierie, ce travail qui consiste à remonter le fonctionnement interne d’un appareil sans en avoir les plans, un SDK compatible avec le BES2700iMP.
Le reste a suivi. Firmware maison, c’est-à-dire le logiciel bas niveau qui pilote directement le matériel, puis portage de Doom via le projet GBADoom. Tout n’est pas nickel pour autant: l’écran fonctionne en SPI un seul bit au lieu du quad-SPI dont il est capable, deux manières d’envoyer les pixels dont la seconde va nettement plus vite, ce qui plombe ici la fluidité et écrase les couleurs.

Screenshot
Bref, ça se joue, mais c’est moche. Et sur une dalle large de quelques centimètres, on reste évidemment dans l’exploit pour l’exploit plus que dans la séance de jeu.
Le détail qui fait un peu marrer vu le contexte actuel, c’est l’aveu de Christophel sur l’intelligence artificielle: elle ne lui a quasiment servi à rien. Les données techniques de ces puces propriétaires n’existent nulle part dans les corpus d’entraînement des modèles, du coup les assistants brassaient du vide.
Et ce n’est pas fini. Le Mi Band 9 embarque exactement le même matériel, ce qui signifie que le SDK reconstitué devrait y tourner tel quel, sans toucher une ligne. Tout est documenté et publié sur GitHub, à la disposition de quiconque veut prolonger cette bien belle aventure.
Bref, faire tourner un jeu de 1993 sur un bracelet de sport ne sert objectivement à rien, et c’est précisément pour ça que c’est toujours très cool.
Source :
Hackaday
Source : korben.info