Gadgetbridge, le compagnon libre pour smartwatches et bracelets connectés

Gadgetbridge, le compagnon libre pour smartwatches et bracelets connectés

Aujourd’hui, petit article sur une application que j’ai découvert il y a 1 an, que j’utilise au quotidien et qui a changé mon rapport aux objets connectés : GadgetBridge.

C’est quoi Gadgetbridge ?

Derrière ce petit nom pas forcément très sexy se cache un projet opensource assez incroyable. Le site officiel le qualifie d’une “Android application which will allow you to use your Bluetooth gadgets (mostly wearables like smart watches, but many more) without the vendor’s closed source application and without the need to create an account and transmit any of your data to the vendor’s servers”. En clair : une appli Android libre qui se substitue aux apps officielles des fabricants de wearables. Aujourd’hui, la page officielle gadgetbridge.org/gadgets/ recense 468 modèles supportés issus de 64 fabricants différents. Au-delà des montres et bracelets classiques (Xiaomi Mi Band, Amazfit, Pebble, Fossil, Casio, Garmin, Huawei/Honor, Sony, Withings, Nothing), l’app gère aussi des écouteurs (Samsung, Sony, Bose, Google, Nothing), des balances connectées, certains scooters électriques, des thermomètres et des transmetteurs FM. On pourrait le qualifier de hub libre pour tout objet BLE grand public. Bref, le paradis pour les fans d’appareils connectés qui sont un tant soit peu soucieux de leurs vies privées mais aussi une porte d’entrée pour les septiques qui avaient peur de voir toutes leurs données de santé (fréquence cardiaque, activité physique etc) s’envoler sur des serveur de compagnies privées.

L’idée centrale du projet est simple : votre montre ne devrait pas avoir besoin de parler à un serveur tiers pour fonctionner. Pas de compte Xiaomi, pas de compte Amazfit, pas de compte Huawei, pas de cloud Garmin. Toutes les données (pas, fréquence cardiaque, sommeil, GPS, notifications, alarmes) restent sur votre téléphone et vous pouvez les synchroniser ailleurs si vous le souhaitez.

Au quotidien, l’application permet (selon les modèles) de :

  • Apparier la montre / le bracelet sans créer de compte fabricant.
  • Recevoir et afficher les notifications du téléphone sur la montre, répondre aux appels.
  • Récupérer les données d’activité (pas, sommeil, fréquence cardiaque, sport, GPS) et les visualiser sous forme de graphes (tableau de bord Dashboard).
  • Contrôler la lecture musicale depuis la montre.
  • Gérer les alarmes et la météo.
  • Suivre une activité sportive avec navigation.
  • Installer des watchfaces sur les modèles qui le permettent (Pebble notamment, via le support PebbleKit documenté côté projet).

Côté limite à connaître : Gadgetbridge n’est disponible que sur Android. Désolé les fans de la pomme mais c’est pour les mêmes raisons que beaucoup d’apps libres : iOS ne permet pas à une app tierce d’accéder librement au BLE en arrière-plan ni de recevoir les notifications système comme le fait Android.

Comment on l’installe ?

Le site officiel met en avant deux canaux d’installation principaux :

  • F-Droid — dépôt principal, version stable. C’est de loin la méthode recommandée.
  • IzzyOnDroid un dépôt F-Droid tiers très réactif sur les nouveautés.

Une version Gadgetbridge Nightly est également distribuée via un dépôt F-Droid dédié pour ceux qui veulent les mises à jour de développement, plus fréquentes mais moins stables.

L’app n’est pas sur le Play Store. Le code source est hébergé sur codeberg.org/Freeyourgadget/Gadgetbridge. Détail intéressant : l’ancien repo GitHub a été archivé le 24 février 2026, et l’ensemble du projet vit désormais sur Codeberg. C’est un mouvement qu’on retrouve chez plusieurs projets libres récemment, qui cherchent à aligner la chaîne d’outils avec leurs valeurs.

Tableau de bord GadgetbridgeListe des appareilsActivitéSommeil journalierPas journaliersActivité live

Techniquement, ça marche comment ?

Parlons un peu du code

Le projet est ancien et le code le ressent : c’est un monolithe Android massivement Java (~94 %), avec une part de Kotlin (~5 %) sur les modules les plus récents. Côté volumétrie, le repo Codeberg affiche plus de 16 000 commits et un poids d’environ 256 Mo sur disque, c’est gros mais en même temps le projet supporte plus de 470 modèles. Le noyau historique de mainteneurs visible sur Codeberg : Andreas Shimokawa (premier contributeur), Carsten Pfeiffer, Daniele Gobbetti, Petr Vaněk.

L’architecture interne reste globalement assez classique. Ce qui rend ce projet vraiment intéressant (et impressionnant) pour un dev mobile, c’est le travail de rétro-ingénierie des protocoles BLE propriétaires que chaque nouveau modèle de bracelet ou de montre exige. La documentation interne contient d’ailleurs une page dédiée pour inspecter les paquets Bluetooth, signe que le sujet est central au projet.

Le cas le plus emblématique, c’est celui des appareils Huami / Xiaomi. Pour les firmwares récents, le pairing requiert une auth key que l’utilisateur doit extraire de l’app officielle (Zepp Life, Zepp, Mi Fitness). Le wiki décrit plusieurs méthodes selon le contexte : sur un téléphone rooté, accéder directement à la base SQLite de l’app officielle ; sur un téléphone non rooté, utiliser des outils tiers comme huafetcher ou huami-token, ou aller chercher la clé dans les fichiers de log accessibles dans /sdcard/Android/data/<package_name>/files/log/. On va être honnête, si votre appareil n’est pas encore supporté par l’application, ça va demander un peu d’effort pour faire ce travail de retro-ingénieurie : les fabricants verrouillent progressivement les protocoles BLE pour empêcher l’usage d’apps tierces. Pour les watches Xiaomi récentes, le projet a même une page dédiée aux Xiaomi protobuf watches (le protocole interne s’appuie sur Protocol Buffers). Mais l’avantage, je le répète, c’est que l’app supporte déjà un grand nombre d’appareil, qui se connectent en deux minutes sans aucun problème.

La persistance se fait via greenDAO 2.2.1 (un ORM Android maintenant assez daté), dans une base SQLite locale. Le choix d’un ORM ancien plutôt que Room s’explique probablement par l’âge du projet et le coût d’une migration sur autant de tables. Le build.gradle mentionne aussi Protocol Buffers (protobuf-javalite 4.34.1) et MessagePack 0.9.11 côté sérialisation, signe que certains protocoles d’appareils reposent sur ces formats. Le minSdk est à 23 (Android 6 Marshmallow), le targetSdk à 34 : la barre est tenue raisonnablement haute côté API.

Le design

Soyons honnêtes : le design de Gadgetbridge n’est pas son point fort. L’app a une UI fonctionnelle, héritée de plusieurs générations de Material Design Android, qui se sent par endroits. Et pour ne pas faire d’euphémisme, je crois qu’on peut même dire que l’application est plutôt moche comparée aux apps officielles des fabricants. C’est typique d’un projet communautaire de longue durée, porté par des dévs back / système plus que par des designers et où chaque ajout de modèle a tendance à empiler ses propres écrans de configuration. Mais peut être que si un designer me lit, il pourra apporter sa pierre à l’édifice !

Bref, l’expérience reste très en-deçà de ce qu’on a dans une app fabricant mais pour la promesse “je veux que mon bracelet marche sans cloud”, l’ergonomie est largement suffisante.

Le modèle économique

Gadgetbridge est entièrement bénévole et 100 % libre (AGPLv3). Pas d’entreprise derrière, pas de version premium, pas de don in-app. Le développement est porté par un noyau de mainteneurs (Andreas Shimokawa comme premier contributeur, et aujourd’hui une équipe étendue) et par des contributions externes ponctuelles, notamment chaque fois qu’un utilisateur veut ajouter le support d’un nouveau modèle qu’il possède.

C’est à la fois la force et la limite du projet : un nouveau modèle d’appareil est ajouté quand quelqu’un dans la communauté décide d’y consacrer du temps. Conséquence directe : la qualité du support varie selon la taille du parc et l’intérêt qu’y porte la communauté, et certains modèles récents peuvent prendre plusieurs mois avant d’être pris en charge.

Concrètement, on en pense quoi ?

Gadgetbridge est probablement le projet libre le plus utile que j’ai croisé dans le domaine des objets connectés. La promesse est claire : vous achetez un bracelet bon marché chez Xiaomi, vous le faites marcher sans créer de compte Mi Fit, sans envoyer vos données de sommeil et de fréquence cardiaque sur un serveur tiers, et vous gardez tout en local. Pour des dispositifs qui collectent autant de données intimes (sommeil, fréquence cardiaque au repos, sport), ça fait du bien et ça peut convaincre certains de franchir le cap et d’acheter ce genre d’appareil. Pour ma part, l’utilisation au quotidien avec une montre Garmin Forerunner n’a rencontré aucun problème notable.

Attention quand même, en utilisant l’application GadgetBridge seul, on pert la possibilité de programmer des entrainements sur la montre. L’application permet uniquement de faire descendre de l’information de la montre vers le smartphone et pas l’inverse. Il existe des solutions pour envoyer des fichiers d’entrainement via USB suivant les appareils, mais c’est vrai que c’est une vraie feature qui manque à mes yeux pour le moment. L’autre bémol, à mon sens, c’est l’absence d’une version iOS, qui ne dépend malheureusement pas de la bonne volonté du projet, mais des restrictions d’Apple sur le BLE et l’arrière-plan. Si vous êtes sur iPhone, il n’y a aujourd’hui pas d’équivalent.

Le projet montre aussi l’autre face de la médaille du wearable libre : la rétro-ingénierie est un travail ingrat et permanent, parce que les fabricants n’ont aucun intérêt à publier leurs protocoles. Chaque nouveau modèle est une bataille, et certains finissent par devenir inutilisables hors de l’app officielle (notamment quand le pairing dépend d’un compte cloud non contournable).

En bref : si vous avez un bracelet connecté sur Android et que vous voulez vous débarrasser de l’app du fabricant, installez Gadgetbridge les yeux fermés. C’est probablement la meilleure manière de redonner du sens à un objet conçu pour vous siphonner des données.

Articles sur le même thème

Mullvad VPN, le client open‑source d'un VPN payant suédois

Mullvad VPN, le client open‑source d'un VPN payant suédois

Mullvad VPN propose des apps Android et iOS open‑source pour un service VPN à compte anonyme et prix unique de 5 €/mois, avec des audits de sécurité publics.

Saracroche, le bloqueur d’appels anti‑spam

Saracroche, le bloqueur d’appels anti‑spam

Saracroche est une application Android libre qui bloque automatiquement les appels indésirables grâce à une liste locale de préfixes, sans collecte de données.

NewPipe, le client Youtube alternatif

NewPipe, le client Youtube alternatif

NewPipe est un front-end libre et léger pour regarder des videos et écouter de l’audio sur Android, sans compte et sans services Google Play.