Dans une époque lointaine et révolue de conférences en présentiel, nous avions proposé d’organiser une rencontre européenne des utilisateurs et développeurs de l’environnement libre de traitement numérique de signaux radiofréquences GNU Radio. Persévérants que nous sommes, après l’obligation d’annulation en dernière minute l’année dernière dans l’incertitude des déplacements et des rencontres, nous avons retenté cette année d’organiser une conférence, qui s’est rapidement avérée devoir se tenir en virtuel. En voici les leçons tirées, complétées de quelques divagations techniques sur le concours proposé et les tutoriels.
GNU Radio est une bibliothèque de traitement numérique de signaux radiofréquences permettant d’implémenter les préceptes de la radio logicielle (Software Defined Radio – SDR) visant à éliminer au plus tôt le matériel au profit du logiciel, amenant de ce fait stabilité, flexibilité et reconfigurabilité aux applications. Alors que le cœur des développements se déroule aux États-Unis d’Amérique, notamment avec la société Ettus Research ou l’embauche de Tom Rondeau par la DARPA, l’Europe possède quelques membres actifs, en particulier avec Marcus Müller au KIT en Allemagne. Notre objectif avec la création de cette conférence était de proposer un forum d’échange entre utilisateurs et développeurs européens, en complément de la session radio logicielle (Free Software Radio devroom) du FOSDEM visant toutes les infrastructures logicielles, et le Software Defined Radio Academy des radioamateurs allemands à l’occasion de la foire annuelle de Friedrichshafen, berceau des dirigeables Zeppelin.
L’édition 2021 décrite sur https://gnuradio-eu-21.sciencesconf.org/ devait se tenir à Poitiers sous la direction d’Hervé Boeglen et du laboratoire XLIM, avant de devenir virtuelle compte tenu des incertitudes de regrouper les participants en présentiel. Alors que les inscriptions se sont maintenues à un peu moins de 90 intéressés, force est de constater que le modèle virtuel de la conférence que nous a imposé l’incertitude des libertés de mouvement en mars n’est pas approprié pour des jours de conférence en semaine. En effet, alors qu’un ordre de mission justifie pleinement la participation à une conférence en semaine pour les professionnels que sont les chercheurs, enseignants-chercheurs ou industriels, comment justifier de passer sa journée à visionner des vidéos sur YouTube ? Ainsi, seuls 35 à 40 participants ont été dénombrés au cours de la journée de diffusion des présentations orales (jeudi) avec séance de questions-réponses en direct entre orateurs et modérateurs (figure 1).
Le contenu mis à disposition du public a été visionné bien plus de fois que le nombre d’inscrits, et nous pourrons considérer l’investissement comme rentable pour l’avenir, avec une capacité de transfert de connaissances douteuse, puisqu’un cours d’environ 1 h 15 est visionné pendant une durée moyenne de tout au plus 10 minutes d’après les statistiques de YouTube, sans compter l’incapacité de diffuser la bonne parole vers les pays refusant l’influence de Google (p. ex. la Chine). Le constat est le même sur les présentations orales courtes dont les 20 minutes sont vues au maximum en 4 minutes en moyenne, d’après les statistiques de YouTube. La richesse de la diffusion par visioconférence, sans avoir à subir de longs déplacements, semble donc compensée par la multitude d’informations qui nous noie continuellement, en cohérence avec le peu de contributions que nous avons reçues par un auditoire sûrement saturé de sollicitations de toutes parts.
Cette édition de la conférence a été jumelée, pour les deux jours de présentations orales du week-end, avec la Software Defined Radio Academy (SDRA) [1] organisée par les radioamateurs allemands du DARC et en particulier Marcus Heller DL8RDS, qui eurent eux aussi bien du mal à attirer les contributions et ont dû diverger de leur ligne éditoriale, en attirant une majorité de contributions académiques. Les orateurs ont été encouragés à fournir un texte résumant leur contribution, dont les actes sont regroupés sur https://pubs.gnuradio.org/index.php/grcon, la majorité des contributeurs s’étant contentée de fournir la vidéo de la présentation orale sans rédiger de document associé.
1. Tutoriels
Un axe prioritaire de la conférence est la formation continue par des tutoriels abordant divers points spécifiques que nous nous efforçons de mettre en pratique après une introduction théorique des concepts de base : les vidéos ont été mises à disposition des participants environ 1 mois avant la date de la conférence afin de permettre un visionnage préalable et une préparation, étant bien conscients que 90 minutes sont largement insuffisantes pour atteindre tous les objectifs proposés dans chaque séance de travaux pratiques.
Afin de tenter de maintenir un peu de cohérence dans la séquence des présentations, deux séquences parallèles de 4 cours intitulés introductifs et avancés ont été proposées. Les sujets abordés allaient d’une introduction aux concepts de base du traitement du signal échantillonné en temps discret, égayé de mises en pratique sur des signaux synthétiques sous GNU Radio, au décodage de signaux analogiques et numériques inconnus, le déploiement de GNU Radio sur cibles embarquées (p. ex. Raspberry Pi) et son exécution dans QEMU (figure 2), pour finalement aborder des sujets plus pointus, tels que la cohabitation de GNU Radio avec des outils externes ou le marquage de paquets (tags) pour permettre un traitement asynchrone du flux de données continu fourni par GNU Radio. Ici encore, très peu d’interaction avec l’auditoire qui s’est contenté de visionner les vidéos proposées, sans profiter de la préparation pour venir interagir avec les orateurs lors des sessions de disponibilité pour compléter ou corriger certains points. Nos remerciements à Alban Meffre F4GSW pour sa participation active, qui nous a poussés à approfondir certains points que nous avions tenté de cacher pour pallier notre ignorance.
2. Concours
NI, anciennement National Instruments et acquéreur de Ettus Research, a supporté la conférence en offrant deux B205mini. Nous nous sommes par conséquent proposé d’offrir ces prix aux vainqueurs d’un concours, qu’il a fallu concocter selon les contraintes de ne pas être trop facile pour ne pas avoir à sélectionner arbitrairement deux parmi une multitude de solutions, tout en étant accessible, et idéalement pédagogique, pour permettre à l’auditoire d’apprendre de nouveaux concepts.
Étant intéressés de longue date par le GPS et la modulation BPSK émise par une multitude d’émetteurs sur la même fréquence porteuse, mais différenciés par les codes orthogonaux supportant la communication numérique, nous nous sommes appuyés sur cette approche pour concevoir le concours, dont l’énoncé est le suivant :
Seven European citizens have been discussing in an HF amateur band: a (512 MB) recording of their exchange is stored at XXX, sampled at 10 MS/s after offseting the input signal by a mixer with a 25 MHz local oscillator. Six of these seven speakers enjoy receiving and decoding GPS signals, although Gold codes are too complex and simpler coding schemes are best suited for their exchanges at 1.2281 Mb/s. Can you identify what messages have been exchanged and from which countries the messages were transmitted ?
Au-delà de l’aspect ludique du sujet, les applications pratiques sont évidentes à la lecture de la littérature [2].
Ainsi, six codes orthogonaux, donc d’intercorrélation nulle, sont sélectionnés pour porter une information encodée selon la séquence classique d’une liaison RS232 asynchrone, avec un bit de début, 8 bits de données et un bit de fin. L’encodage RS232 est identifiable en observant l’amplitude du signal transmis, puisque le 7e interlocuteur communique en OOK (On-Off Keying, comme le morse) donc la forme est triviale à identifier, avec la seule subtilité que l’énorme fichier doit être brutalement décimé pour en afficher l’amplitude. La modulation en phase est un peu plus complexe à appréhender, mais s’appuyer sur GPS doit faire deviner que la modulation est BPSK, ce qui permet de mettre en œuvre toutes les techniques d’analyse de cette modulation, et notamment son annulation par la mise au carré du signal ou la boucle de Costas fournie par GNU Radio. Avant de chercher la variation fine de fréquence, il fallait ramener le signal radiofréquence en bande de base (figure 3), et l’information que « la transposition de 25 MHz amène proche d’une bande radioamateur large » doit faire rapidement trouver la transposition grossière, la seule bande amateur haute fréquence large étant la bande des 10 mètres entre 28,0 et 29,7 MHz, donc centrée sur 3.85 MHz au-dessus de 25 MHz.
Une fois le signal ramené en bande de base, sans connaître le code, il est toujours possible de détecter la présence du message tel que nous l’expliciterons ci-après, mais le décodage du message peut devenir ardu, et nous avons tenté de faciliter la tâche des candidats en explicitant la simplicité avec laquelle les codes orthogonaux sont générés par « simpler coding schemes are best suited for their exchanges at 1.2281 Mb/s ». D’une part, un code plus simple que les codes de Gold doivent naturellement amener aux codes à registre à décalage à rétroaction linéaire (LFSR), l’algorithme numérique le plus simple pour générer une séquence sans répétition de longueur 2N−1 lors de l’utilisation d’un registre à décalage de longueur N. Nous avions voulu aider les candidats avec un registre de longueur modeste, notamment N=7 qui propose d’après https://users.ece.cmu.edu/~koopman/lfsr/ 18 cas possibles. Nos tests ont démontré que le rapport signal à bruit étant insuffisant – nous verrons qu’il s’agit d’une erreur de notre part, qu’a identifié le second vainqueur et qu’a expliqué le premier – il fallait augmenter la durée de la séquence et donc sa capacité à rejeter le bruit par une intégration plus longue. Ce faisant, le Pulse Compression Ratio, qui donne le bénéfice en rapport signal à bruit comme le produit de la largeur spectrale occupée par le signal multiplié par la durée du signal s’élève en allongeant le code à bande passante constante donnée par la fréquence d’échantillonnage. Il existe cependant 60 codes de longueur maximale de 10 bits de long et le travail de recherche est un peu plus ardu. En fournissant le débit de données, une autocorrélation du signal au sein de chaque bit à 1 dans la transmission OOK doit permettre d’observer un pic tous les 1023 échantillons, et donc de deviner N=10 (figure 4).
Une fois ces hypothèses acquises, il ne reste plus qu’à effectuer une analyse en force brute en testant la corrélation des signaux observés avec toutes les séquences possibles de codes pseudoaléatoires, ré-échantillonnés selon le débit fourni dans l’énoncé du concours. En pratique, nous avons fait exprès de transmettre le signal radiofréquence par une source physique (Ettus Research B210) et d’échantillonner par un récepteur physique (oscilloscope radiofréquence) afin d’induire un décalage entre les oscillateurs locaux qui impose une recherche fine, par exemple par boucle de Costas (figure 5).
Nous aurions pu rendre le problème plus complexe en émettant les six messages par six sources différentes incohérentes qui auraient induit des décalages différents entre oscillateurs locaux et une condition de phase initiale différente, mais le problème semblait déjà suffisamment complexe ainsi (figure 6).
Nous avons reçu trois analyses du problème après 34 téléchargements des 488 MB du fichier de données, avec Alban Meffre qui identifie la modulation en BPSK ainsi que les polynômes générateurs, mais échoue au dernier moment à décoder les messages ; Christoph Mayer (orateur aux European GNU Radio Days 2019 et développeur de l’algorithme de mesure de temps de vol sur KiwiSDR) fournit les bonnes solutions aux messages encodés en modulation de phase, mais oublie le septième message encodé en OOK : et finalement Daniel Estevez (figure 7) qui fournit en moins d’une journée de travail la solution complète avec un classeur Jupyter didactique [3] qui permet de suivre en détail la solution proposée et surtout les voies sans issue, tout aussi importantes que la bonne solution, en tenant compte de l’aspect psychologique de la rédaction d’un sujet de concours. Bien entendu, l’activité de Daniel au quotidien de développer des récepteurs GPS et son développement du fameux module gr-satellite utilisé pour écouter les sondes spatiales, y compris interplanétaires [4], et autres satellites l’a mis dans des conditions favorables pour trouver le résultat. Nous ne pouvons qu’apprécier comment un travail constant au quotidien et de l’entraînement permettent de se préparer à trouver rapidement une solution à un problème ardu, contrairement aux bêtises des films grand public et des politiciens qui pourraient laisser croire au génie de l’improvisation et à la capacité à atteindre un résultat complexe, sans un long apprentissage préalable. Le résultat du concours et la description de sa solution par Daniel furent suivis par 38 participants, malgré l’horaire tardif de cette diffusion.
Christoph Mayer nous fait part de son incompréhension sur la nature du diagramme de constellation qui aurait dû le mettre sur la piste, mais ne correspondait pas à ses attentes : la somme de six signaux codés en BPSK devrait être une constellation comprise entre -6 et 6, alors que nous n’observons dans les signaux que nous avons diffusés qu’une constellation entre -1 et 1. Daniel Estevez identifie le problème lors de l’émission du signal par la B210 : en effet, GNU Radio ne travaille qu’avec des échantillons compris entre -1 et 1 et a tronqué toute valeur supérieure à cet intervalle. Pourtant, la robustesse de la communication CDMA (Code Division Multiple Access) sur modulation BPSK permet de résister à cet effet de clipping et de permettre le décodage malgré cette erreur de notre part, qui justifie néanmoins par la dégradation du rapport signal à bruit le passage de 7 à 10 bits pour permettre le décodage des messages.
Conclusion
Cette édition de la conférence European GNU Radio Days, https://gnuradio-eu-21.sciencesconf.org/, fut un nouveau défi à relever avec une présentation exclusivement virtuelle et une collaboration étroite avec le Software Defined Radio Academy (SDRA). Les vidéos de la conférence et des tutoriels sont disponibles sur https://www.youtube.com/channel/UCFzddPoztcHLuwFWRPJTNrQ et les actes de la conférence sur https://pubs.gnuradio.org/index.php/grcon.
Remerciements
L’organisation de la conférence European GNU Radio Days a été coordonnée par Hervé Boeglen (XLIM, Poitiers) avec l’assistance de Leonardo Cardoso (INSA Lyon), Jean-Michel Friedt (FEMTO-ST, Besançon), Gwenhael Goavec-Merou (FEMTO-ST, Besançon), Thomas Lavarenne (Lycée Jean-Rostand, Villepinte) et Cyrille Morin (INSA Lyon). L’infrastructure logicielle pour les tutoriels a été fournie par Émile Carry, président de l’association Sequanux pour la promotion du logiciel libre en Franche-Comté.
Références
[1] Programme sur https://2021.sdra.io/pages/programme.html qui fournit aussi le lien vers leur canal de diffusion YouTube.
[2] Z. JIANG & al., « Use of software-defined radio receivers in two-way satellite time and frequency transfers for UTC computation », Metrologia, 55, p. 685–698, 2018.
[3] D. ETEVEZ, « EU GNU Radio Days 2021 challenge solution » sur https://github.com/daniestevez/eugr-challenge-2021 que nous avons complété des fichiers binaires du concours sur https://github.com/jmfriedt/eugr-challenge-2021 qui pourraient par ailleurs être générés par le script GNU/Octave dans setup/.
[4] D. ESTEVEZ, « GRCon20 workshop: Decoding interplanetary spacecraft » sur https://github.com/daniestevez/grcon2020-workshop