Réanimer le Mi Band 5

A l’occasion d’un changement de smartphone, on m’a demandé de réinstaller l’application compagnon d’un Xiaomi Mi Band 5. Mais visiblement le constructeur a abandonné ce device. Heureusement, GadgetBridge permet de lui redonner vie.

La déconvenue

Le premier réflexe c’est de chercher simplement à réinstaller l’application officielle. On part donc dans le catalogue d’applications et… pas de « Mi Fit ». A la place on trouve « Mi Fitness (Xiaomi Wear) » (com.xiaomi.wearable). Bon, ça ressemble à l’application officielle du constructeur, donc ça doit faire l’affaire.

Eh ben non ! L’application ne reconnaît pas le device. Et dans la liste des devices supportés, y’a pas le Mi Band 5.

C’est quand même franchement étonnant car d’un point de vue logiciel ça semble pas sorcier de conserver de vieux protocoles et d’adapter vaguement l’interface. D’autant que même si les périphériques évoluent, fonctionnellement ça ne change pas radicalement non plus : on trouve les mêmes périphériques.

La remise en route

Heureusement, on trouve une page dédiée sur le site de gadgetBridge.

Pour apairer, il faut récupérer un code. Or, ce code ne peut être fourni que par l’application officielle, après avoir créé un compte. Il faut donc installer une ancienne version de « Mi Fit » stockée sur un site non-officiel.

Comme toujours dans ce genre de cas, on va faire tout ça sur un smartphone qui ne sert plus, qui a été réinitialisé et qu’on réinitialisera par la suite.

L’application se trouve sur le site FreeMyBand. On crée un compte, on appaire le Mi Band et voilà le bracelet qui commence de nouveau à respirer.

La libération

Maintenant, on suit le tuto de GadgetBridge pour récupérer le code.

Dans mon cas, j’ai utilisé un script python en passant par Docker.

$ git clone https://codeberg.org/argrento/huami-token.git
Clonage dans 'huami-token'...
remote: Enumerating objects: 70, done.
remote: Counting objects: 100% (70/70), done.
remote: Compressing objects: 100% (10/10), done.
remote: Total 194 (delta 65), reused 60 (delta 60), pack-reused 124
Réception d'objets: 100% (194/194), 69.30 Kio | 1.82 Mio/s, fait.
Résolution des deltas: 100% (104/104), fait.
$ cd huami-token/
$ sudo docker build .
...
$ sudo docker run --rm -it 73db83920dc8 --method xiaomi --bt_keys
Getting access token with 'xiaomi' login method...
Copy this URL to web-browser 

https://account.xiaomi.com/oauth2/authorize?skip_confirm=false&client_id=2882303761517383915&pt=0&scope=1+6000+16001+20000&redirect_uri=https%3A%2F%2Fhm.xiaomi.com%2Fwatch.do&_locale=en_US&response_type=code

and login to your Mi account.

Paste URL after redirection here.
https://hm.xiaomi.com/watch.do?code=AZAMSSRV_12345D9C75F68DCF5BF099C43A44BC7B
Token: ['AZAMSSRV_12345D9C75F68DCF5BF099C43A44BC7B']
Logging in...
Logged in! User id: 1234500975
Getting linked wearables...

╓───Device 0
║  MAC: 12:34:65:67:56:A3, active: Yes
║  Key: 0x12345bf16185da3b55507979cb85e4e6
╙────────────

Logged out.

Il ne reste plus qu’à recopier ce token dans GadgetBridge et le bracelet est libéré.