L’APRS, c’est le réseau de positions des radioamateurs. Chaque station envoie de temps en temps un court message radio : son indicatif, sa position, un commentaire. Les autres stations les reçoivent et les placent sur une carte. Des relais retransmettent, des passerelles envoient tout sur Internet, et le site aprs.fi montre en direct qui est où.
Sur un téléphone Android, l’application de référence s’appelle APRSdroid. Elle sait afficher la carte, envoyer des balises de position, échanger des messages. Mais un téléphone n’a pas de radio VHF. Il lui faut un modem qui transforme les messages en sons et les sons en messages, et une radio pour les envoyer. Dans le jargon, ce modem s’appelle un TNC, et la façon standard de lui parler s’appelle KISS.
Cette semaine, j’ai écrit une petite application qui fait du talkie-walkie Quansheng UV-K1 (lien affilié) ce modem. Un câble USB-C entre la radio et le téléphone, et APRSdroid émet et reçoit directement par la radio. Sans boîtier intermédiaire, sans Bluetooth, sans câble audio bricolé.
Pourquoi c’est intéressant
Jusqu’ici, faire de l’APRS avec un portatif bon marché voulait dire acheter un modem séparé, ou bricoler un câble entre la prise casque du téléphone et la radio, avec des réglages de volume jamais tout à fait justes. Les radios qui font de l’APRS d’origine, comme le Yaesu FT3D que j’utilise comme référence, coûtent dix fois plus cher.
Le Quansheng UV-K1 tourne avec le firmware alternatif d’Armel, F4HWN, qui accepte de petites applications qu’on installe dans la radio sans toucher au reste. Armel avait déjà écrit deux applications APRS : un récepteur qui affiche les stations entendues, et un émetteur de balise. Elles savaient déjà décoder et fabriquer les sons de l’APRS (le « Bell 202 », deux tonalités à 1 200 bauds). Il manquait le lien avec le téléphone.
Ce lien existe pourtant depuis toujours : la prise USB-C de la radio. Quand on la branche à un ordinateur, elle apparaît comme un port série, celui qu’utilisent les logiciels de programmation comme CHIRP. Le problème, c’est qu’aucune application n’avait le droit d’y toucher.
Première étape : ouvrir la prise USB aux applications
Les applications de la radio ne parlent au matériel qu’à travers une liste de services que le firmware leur fournit : afficher du texte, lire une touche, régler l’émetteur. Le port USB n’en faisait pas partie.
J’ai donc proposé à Armel d’ajouter trois services : lire ce qui arrive par USB, envoyer des données, et connaître l’état du port (un téléphone est-il branché ? une donnée a-t-elle été perdue ?). Ils sont prévus pour deux ports : l’USB-C, et plus tard la prise « K » (celle du câble de programmation et des micros déportés), qui permettra de brancher un GPS ou un module Bluetooth.
Pendant les essais, j’ai trouvé une subtilité dans le firmware : quand le téléphone tardait à lire une donnée, la radio considérait la liaison comme coupée pour toute la session. Un ordinateur lit en permanence et ne s’en aperçoit jamais. Un téléphone Android, lui, lit à son rythme, et une seule lecture en retard suffisait à rendre le modem muet. Les nouveaux services attendent 50 millisecondes, abandonnent le paquet en cours si le téléphone ne l’a pas pris, et gardent la liaison ouverte.
Armel a accepté et intégré ces services dans son firmware.
Deuxième étape : le modem lui-même
L’application KISS TNC reprend ce qui marchait déjà :
- en réception, le démodulateur de l’app APRS RX d’Armel, tel quel : il écoute la fréquence, reconnaît les trames et vérifie leur code de contrôle. Chaque trame correcte part vers le téléphone ;
- en émission, le modulateur de l’app APRS TX : quand APRSdroid envoie une balise, l’application attend que la fréquence soit libre, passe en émission, joue la trame, et repasse en réception.
Entre les deux, le protocole KISS, très simple : chaque trame est encadrée par un octet spécial, et c’est tout. L’application respecte aussi les deux réglages qu’APRSdroid peut lui envoyer : le délai avant de parler, et la politesse sur un canal encombré (une chance sur quatre de parler à chaque intervalle quand la fréquence se libère).
L’écran de la radio affiche le nombre de trames reçues et émises, la dernière station entendue avec son niveau, et quelques compteurs de santé de la liaison USB. Une touche envoie une trame de test au téléphone sans émettre, pour vérifier le câble.
L’ensemble tient dans 3 620 octets, sur les 4 096 que permet une application.
Le premier essai à l’air
Le 19 octobre au soir, première vraie balise : APRSdroid sur le téléphone, la radio en modem, une balise de position envoyée sur 144,800 MHz. Elle a été reçue directement par la passerelle F8KGK, à environ 32 km, et s’est affichée sur aprs.fi quelques secondes plus tard. En réception, les trames de mon FT3D arrivaient sur le téléphone octet pour octet, en format compressé « Mic-E » comme en position classique.
Le piège : la radio qui se brouille elle-même
Le seul vrai problème est apparu à l’émission. Au moment où la radio passe en émission, la liaison USB tombe parfois, et APRSdroid affiche « KissReader out of data » puis s’arrête.
Le compteur de l’écran a donné la réponse : la radio voyait le téléphone se reconnecter, comme si on avait débranché le câble. C’est l’onde radio elle-même, captée par le câble USB, qui perturbe la liaison. Un câble de 2 mètres fait presque une longueur d’onde à 144 MHz : une antenne parfaite.
Le remède est classique : une ferrite clipsable sur le câble, côté radio, le câble enroulé deux à quatre tours dedans, et l’antenne éloignée du câble et du téléphone. Avec ça, la liaison tient. Sans, elle peut tomber même à petite puissance.
Comment l’utiliser
- Il faut un firmware F4HWN récent (v6.3.0 ou plus, édition Labs ou Fusion_) et l’application KISS TNC installée.
- Un adaptateur USB OTG entre la radio et le téléphone : c’est le téléphone qui joue le rôle d’hôte USB.
- Une ferrite sur le câble, côté radio, dès qu’on émet au-dessus de la puissance basse.
- Le VFO de la radio sur la fréquence APRS (144,800 MHz en Europe), en FM, puis on lance KISS TNC.
- Dans APRSdroid : Préférences, Connexion, protocole TNC (KISS), type USB série (le débit n’a pas d’importance). La radio n’apparaît pas toute seule dans les appareils proposés : on lance la connexion à la main et on accepte l’autorisation USB.
La fréquence, la puissance et la largeur de bande viennent du VFO, comme pour les autres applications. Une touche passe en réception seule, pratique pour écouter le réseau sans risquer d’émettre.
Les limites
- La vérification de canal libre ne voit que les trames APRS : une porteuse de phonie sur la fréquence n’est pas détectée.
- Une seule trame en attente à la fois (APRSdroid n’en envoie qu’une par balise, ça suffit).
- Pas de réception pendant l’émission : c’est un portatif, il est en alternat.
- Le niveau audio émis est fixe, celui de l’app APRS TX d’Armel.
Ce que je retiens
Le matériel était là depuis le début. La prise USB-C existait, le démodulateur et le modulateur APRS aussi. Il manquait un service de quelques centaines d’octets pour relier les morceaux.
Le terrain révèle ce que le bureau cache. Sur l’ordinateur, tout marchait. Le téléphone a révélé la liaison trop vite déclarée morte, et l’émission a révélé la radiofréquence dans le câble. Les compteurs ajoutés à l’écran ont permis de distinguer les deux.
Un service ouvre plusieurs usages. Les mêmes services série serviront demain à brancher un GPS, un module Bluetooth, ou à faire dialoguer la radio avec d’autres logiciels.
Pour aller plus loin
- La radio, Quansheng UV-K1 (lien affilié Amazon) : voir sur Amazon
- La contribution (services série et KISS TNC) : PR #685 sur le dépôt d’Armel
- Le firmware d’Armel F4HWN : github.com/armel/uv-k1-k5v3-firmware-custom
- APRSdroid : aprsdroid.org
- La carte APRS en direct : aprs.fi
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.
Leave a Comment