Il y a dix jours, je racontais comment j’ai appris à un petit talkie-walkie, le Quansheng UV-K1, à décoder le message d’une balise de détresse. À l’époque, c’était une expérience de mon côté : une branche dans ma copie du code, et un fichier à installer soi-même, à ses risques et périls.
Ce n’est plus le cas. Depuis le 7 octobre, l’application EPIRB 406 fait partie de la version 6.1 du firmware d’Armel, F4HWN, celui sur lequel tout repose. Elle est livrée avec la version officielle, au milieu des autres applications, et Armel l’a présentée lui-même en vidéo.
Petit rappel
Une balise de détresse (EPIRB sur un bateau, ELT dans un avion, PLB pour une personne) envoie environ toutes les cinquante secondes un court message radio sur 406 MHz. Ce message contient un identifiant unique, le pays d’enregistrement, le type de balise et, si elle a un GPS, sa position. Les satellites Cospas-Sarsat l’entendent et préviennent les secours. Sur le terrain, il faut ensuite quelqu’un pour retrouver la balise : en France, ce sont notamment les bénévoles des ADRASEC.
Le talkie-walkie, lui, n’était pas prévu pour lire ce message. Il a fallu trouver un chemin détourné pour que son processeur entende le signal, écrire un décodeur qui tienne dans 4 kilo-octets, puis chasser une série de défauts bien cachés. Tout est raconté dans le premier article.
La démonstration d’Armel
Le plus simple est de regarder. Dans sa vidéo de présentation de la version 6.1, Armel consacre trois minutes à l’application, à partir de 21 minutes :
Il n’a pas de balise de détresse sous la main, et c’est très bien ainsi. Il en simule une avec un Flipper Zero, un petit gadget électronique capable d’émettre sur plusieurs fréquences, réglé sur 433,650 MHz, une fréquence de la bande radioamateur. La radio, calée sur la même fréquence, affiche aussitôt l’identifiant de la balise, sa latitude et sa longitude. Il en envoie une deuxième, puis une courte, puis deux longues : la radio les garde toutes les cinq en mémoire.
Et il le rappelle au passage, comme je le fais à chaque fois : on n’émet jamais de messages de test sur 406 MHz.
Ce qui a changé en dix jours
D’une branche personnelle au firmware officiel
Le 30 septembre, Armel a intégré l’application dans son propre dépôt. Au passage, il l’a adaptée à une nouveauté de son système d’applications : les « assets ». Jusque-là, tout devait tenir dans les fameux 4 kilo-octets, y compris les textes affichés à l’écran et les noms des types de balises. Désormais, ces données qui ne changent jamais peuvent être rangées à part, dans la mémoire de stockage de la radio, et lues au moment voulu.
Pour EPIRB 406, l’effet a été immédiat. L’application occupait 4 052 octets sur 4 096, il restait de quoi écrire une phrase. Une fois les textes déplacés, elle est descendue autour de 3 300 octets. Quelques centaines d’octets libres, sur une radio, c’est de la place pour des fonctions.
Un banc d’essai que tout le monde peut avoir
Mon banc d’essai, c’est un Raspberry Pi qui fabrique un message de balise parfaitement réaliste. Efficace, mais peu de gens en ont un monté comme ça sur leur bureau. Le Flipper Zero, en revanche, est assez répandu chez les bidouilleurs.
Il y avait un obstacle : une vraie balise module sa porteuse en phase, et le Flipper ne sait pas le faire. Il sait seulement sauter d’une fréquence à une autre. L’astuce consiste à traduire chaque demi-bit du message en un petit saut de fréquence. Le récepteur de la radio transforme ces sauts en une forme d’onde que le décodeur de l’application sait suivre. Un petit script fabrique les fichiers à charger dans le Flipper : un message long, un message court, un message d’autotest et un message volontairement abîmé, pour vérifier que la radio le signale bien comme erroné.
Le 1er octobre, j’ai repassé la version intégrée sur mon propre UV-K1 avec le Raspberry Pi : même résultat que le Flipper, le message complet décodé.
Une interface pensée pour le terrain
Le 6 octobre, Armel a repris toute la partie affichage et ergonomie. C’est la partie que je connais le moins bien, et c’est là que son expérience du firmware se voit le plus :
- Les cinq derniers messages sont gardés en mémoire, du plus récent au plus ancien. On passe de l’un à l’autre avec les flèches. Avant, seul le dernier restait à l’écran.
- Deux tailles d’affichage, avec la touche étoile : un mode compact, et un mode en plus gros caractères. Armel le dit dans sa vidéo avec le sourire : dans les ADRASEC, on trouve pas mal de lunettes. Il a raison, et c’est exactement le genre de détail qui compte sur le terrain.
- Le haut-parleur est coupé par défaut. Avant, il fallait baisser le volume, sinon chaque message de balise sortait dans le haut-parleur sous la forme d’un grésillement d’une demi-seconde. Désormais, le décodage fonctionne en silence, et la touche 1 rallume le son pour qui veut entendre les messages.
- Un écran plus lisible : l’identifiant en gras en haut, les détails du message qui défilent en dessous, et en bas une ligne fixe avec la fréquence d’écoute, le niveau du signal et des compteurs de messages reçus et ratés.
- Le réglage fin de la fréquence est passé sur les touches 4 et 6, par pas de 5 kHz, et la touche 5 ramène à la fréquence de départ. Les flèches servent maintenant à naviguer dans les messages.

L’application occupe aujourd’hui 3 992 octets de code, plus 466 octets de textes rangés à part. Les fonctions ajoutées ont repris la place libérée par les assets.
Comment l’essayer
L’application fonctionne avec l’édition Labs du firmware F4HWN 6.1, sur UV-K1 et UV-K5 V3. Labs est l’édition expérimentale : celle qui accueille les applications, et aussi celle où les choses bougent le plus.
- Sauvegarder les données de calibration de la radio avec UV Studio, l’outil d’Armel qui fonctionne directement dans le navigateur.
- Installer l’édition Labs 6.1 avec UV Studio, en suivant les notes de version.
- Toujours dans UV Studio, installer le fichier
EPIRB406.appfourni avec la version 6.1. - Sur la radio, régler le VFO sur la fréquence à écouter, en FM, bande large : 406,031 MHz pour les vraies balises, ou la fréquence de votre émetteur de test.
- Lancer l’application : touche
F, puis7, choisir EPIRB 406 et valider avecM. Au lancement, l’application mesure le niveau du bruit : mieux vaut le faire quand aucune balise n’émet.
Le mode d’emploi complet, avec toutes les touches, se trouve sur le wiki du firmware.
Mon dépôt uv-k1-k5v3-apps, cité dans le premier article, n’a plus de raison d’être pour cette application : la bonne version est désormais celle livrée avec le firmware officiel.
Ce que je retiens
Un projet ouvert vit mieux à plusieurs. J’ai écrit le décodeur et je l’ai fait marcher sur mon banc. Armel l’a fait entrer dans son système, l’a rendu plus léger, plus agréable à utiliser, et l’a mis entre les mains de tous les utilisateurs de son firmware. Je n’aurais pas fait aussi bien seul sur l’interface, et il n’aurait sans doute pas cherché à décoder des balises de détresse. Merci à lui.
La place libérée ne reste jamais libre longtemps. En sortant les textes des 4 kilo-octets, on a gagné plusieurs centaines d’octets. Quelques jours plus tard, ils étaient remplis par l’historique, les deux tailles d’affichage et le son coupé. C’est une bonne nouvelle : c’est de la place qui sert l’utilisateur.
Un banc d’essai accessible vaut un banc d’essai précis. Le Raspberry Pi reproduit une balise au plus près. Le Flipper Zero, lui, permet à beaucoup plus de monde de tester l’application chez soi. Les deux ont leur place.
Et maintenant ?
Les limites n’ont pas changé, et je préfère les redire :
- L’application n’a encore jamais entendu une vraie balise sur 406 MHz. Seulement des émetteurs de test, sur 433,650 MHz. C’est la prochaine étape, idéalement avec le mode autotest d’une vraie balise, lors d’un exercice ADRASEC.
- Elle décode les balises de première génération, qui restent l’immense majorité du parc. Les balises de deuxième génération, encore rares, utilisent une modulation complètement différente, hors de portée d’un talkie-walkie.
- L’édition Labs est expérimentale : à installer en connaissance de cause, après avoir sauvegardé sa calibration.
Pour ceux qui n’ont pas de talkie-walkie, j’ai aussi écrit une application Android qui fait le même travail avec une clé RTL-SDR branchée sur le téléphone, et qui aide en plus à retrouver la balise sur le terrain.
Et les rappels qui ne changent pas : l’application ne fait que recevoir. On n’émet jamais sur 406 MHz pour faire des essais : toute émission valide sur cette fréquence devient une vraie alerte. C’est un outil d’expérimentation et d’apprentissage, qui ne remplace en rien les moyens officiels de recherche et de sauvetage. Si vous captez un jour une vraie balise de détresse, prévenez les secours (112, ou le 196 en mer).
Pour aller plus loin
- Le premier article, toute l’histoire du décodeur : Décoder une balise de détresse avec un talkie-walkie à quelques dizaines d’euros
- La vidéo de présentation de la version 6.1 par Armel, F4HWN : sur YouTube
- Le firmware F4HWN et les notes de version 6.1 : github.com/armel/uv-k1-k5v3-firmware-custom
- Le code de l’application : App/apps/epirb406
- UV Studio, pour installer le firmware et les applications : armel.github.io/uvstudio
- La radio, Quansheng UV-K1 (lien affilié Amazon) : voir sur Amazon
- L’application Android EPIRB RX : Chercher une balise de détresse avec son smartphone
- Le système Cospas-Sarsat : cospas-sarsat.int
- ADRASEC 27, radioamateurs au service de la Sécurité civile dans l’Eure : www.adrasec27.org
Johan Denoyer, F4WAT
Les liens vers Amazon sont des liens affiliés : si vous achetez par leur intermédiaire, je touche une petite commission, sans surcoût pour vous. En tant que partenaire Amazon, je réalise un bénéfice sur les achats remplissant les conditions requises.