European GNU Radio Days 2021

Magazine
Marque
GNU/Linux Magazine
Numéro
252
Mois de parution
octobre 2021
Spécialité(s)


Résumé

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.


Body

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).

v-fig1 8

Fig. 1 : Décompte final avant le début de la conférence : tous les organisateurs sont prêts. L’appel aux services d’un professionnel pour la diffusion de la conférence sur YouTube fut sûrement la meilleure décision que nous ayons prise pour une organisation sans accrocs du flux vidéo. Le maître de cérémonie, Hervé Boeglen en haut au milieu, se prépare pour sa présentation d’introduction.

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.

v-fig2 8

Fig. 2 : Diffusion du tutoriel sur l’exécution de GNU Radio sur système embarqué, ici émulé par QEMU, avec un encouragement à mettre en pratique pendant la pause.

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].

v-fig3 6

Fig. 3 : De haut en bas : l’amplitude du signal montre clairement une modulation OOK, avec la seule difficulté dans la décimation sans laquelle les millions de points ne pourront être tracés, même avec un outil aussi efficace que Gnuplot ; en focalisant sur un bit à 1 de la modulation OOK, nous trouverons les 6 messages superposés et modulés en BPSK ; la transposition de fréquence de 3,85 MHz amène le signal de droite (bleu) en bande de base (rouge centré sur 0 Hz), mais amène le signal de fréquence négative de -3,85 MHz à -7,7 MHz replié spectralement vers +2,3 MHz (rouge, droite), qu’il faut éliminer par filtre passe-bas.

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).

v-fig4 8

Fig. 4 : Autocorrélation du signal, avec un pic tous les 1023 échantillons, en prenant soin d’avoir au préalable retiré la valeur moyenne des coefficients IQ.

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).

v-fig5 11

Fig. 5 : Enregistrement du fichier de données en émettant le signal en bande de base par une plateforme de radio logicielle B210, transposé par l’oscillateur local autour de 28,85 MHz et ramené autour de 3,85 MHz par mélange avec une porteuse à 25 MHz et filtrage passe-bas avant acquisition par un oscilloscope radiofréquence échantillonnant à 10 Méchantillons/seconde. La propriété de cet oscilloscope LeCroy LabMaster 10-36Zi est de fournir une profondeur mémoire de 128 Mpoints, suffisante pour enregistrer plus de 12 secondes de signal radiofréquence dans nos conditions d’utilisation.

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).

v-fig6a

Fig. 6 : Recherche exhaustive des solutions en balayant tous les polynômes générateurs par rétroaction linéaire sur registre à décalage de longueur 10 bits. Seule la présence de pics de corrélation permet de s’assurer de la présence d’un signal pertinent, ici échantillonné au rythme indiqué par l’énoncé pour retrouver les messages superposés selon un encodage 8N1 compatible RS232.

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.

v-fig7 10

Fig. 7 : D. Estevez, vainqueur, présente sa solution au concours.

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



Article rédigé par

Par le(s) même(s) auteur(s)

Échanges de données pour un traitement distribué : communication par réseau ou entre langages

Magazine
Marque
GNU/Linux Magazine
Numéro
267
Mois de parution
janvier 2024
Spécialité(s)
Résumé

Comment tirer le meilleur parti des divers langages à notre disposition, entre vitesse de prototypage de Python ou GNU Octave et vitesse d’exécution de C ? Nous allons échanger des données entre des fonctions écrites dans ces langages, soit par socket du réseau soit par bibliothèques dynamiques.

Synchronisation d’ordinateurs par réseau informatique pour la datation sous GNU/Linux : NTP, PTP et GPS sur Raspberry Pi Compute Module 4

Magazine
Marque
Hackable
Numéro
51
Mois de parution
novembre 2023
Spécialité(s)
Résumé

Nombre d’outils, à commencer par make, s’appuient sur la date d’accès aux fichiers pour décider de leur obsolescence. Dans le cadre d’intercomparaisons d’horloges, nous effectuons des acquisitions par radio logicielle sur divers sites géographiquement distincts et nous nous interrogeons sur la date d’acquisition avec une résolution aussi élevée que possible. Que veut dire « élevée » et quel niveau de synchronisation pouvons-nous espérer entre deux ordinateurs exécutant GNU/Linux ? Nous conclurons avec la nécessité de corriger l’erreur de l’oscillateur qui cadence le processeur et démontrerons comment quelques composants passifs sur Compute Module 4 permettent d’atteindre ce résultat.

Du domaine temporel au domaine spectral dans 2,5 kB de mémoire : transformée de Fourier rapide sur Atmega32U4 et quelques subtilités du C

Magazine
Marque
Hackable
Numéro
49
Mois de parution
juillet 2023
Spécialité(s)
Résumé

Nous avons exploré diverses implémentations libres de transformées de Fourier discrètes rapides (FFT), mais leur occupation en mémoire reste de la dizaine de kilooctets. Que peut-on faire avec 2,5 kB de mémoire ? La vénérable note d’application 3722 de Maxim IC nous enseigne comment implémenter efficacement une FFT sur microcontrôleur 8-bits et l’arithmétique en virgule fixe, et la notation en complément à deux au passage.

Les derniers articles Premiums

Les derniers articles Premium

Le combo gagnant de la virtualisation : QEMU et KVM

Magazine
Marque
Contenu Premium
Spécialité(s)
Résumé

C’est un fait : la virtualisation est partout ! Que ce soit pour la flexibilité des systèmes ou bien leur sécurité, l’adoption de la virtualisation augmente dans toutes les organisations depuis des années. Dans cet article, nous allons nous focaliser sur deux technologies : QEMU et KVM. En combinant les deux, il est possible de créer des environnements de virtualisation très robustes.

Brève introduction pratique à ZFS

Magazine
Marque
Contenu Premium
Spécialité(s)
Résumé

Il est grand temps de passer à un système de fichiers plus robuste et performant : ZFS. Avec ses fonctionnalités avancées, il assure une intégrité des données inégalée et simplifie la gestion des volumes de stockage. Il permet aussi de faire des snapshots, des clones, et de la déduplication, il est donc la solution idéale pour les environnements de stockage critiques. Découvrons ensemble pourquoi ZFS est LE choix incontournable pour l'avenir du stockage de données.

Générez votre serveur JEE sur-mesure avec Wildfly Glow

Magazine
Marque
Contenu Premium
Spécialité(s)
Résumé

Et, si, en une ligne de commandes, on pouvait reconstruire son serveur JEE pour qu’il soit configuré, sur mesure, pour les besoins des applications qu’il embarque ? Et si on pouvait aller encore plus loin, en distribuant l’ensemble, assemblé sous la forme d’un jar exécutable ? Et si on pouvait même déployer le tout, automatiquement, sur OpenShift ? Grâce à Wildfly Glow [1], c’est possible ! Tout du moins, pour le serveur JEE open source Wildfly [2]. Démonstration dans cet article.

Les listes de lecture

9 article(s) - ajoutée le 01/07/2020
Vous désirez apprendre le langage Python, mais ne savez pas trop par où commencer ? Cette liste de lecture vous permettra de faire vos premiers pas en découvrant l'écosystème de Python et en écrivant de petits scripts.
11 article(s) - ajoutée le 01/07/2020
La base de tout programme effectuant une tâche un tant soit peu complexe est un algorithme, une méthode permettant de manipuler des données pour obtenir un résultat attendu. Dans cette liste, vous pourrez découvrir quelques spécimens d'algorithmes.
10 article(s) - ajoutée le 01/07/2020
À quoi bon se targuer de posséder des pétaoctets de données si l'on est incapable d'analyser ces dernières ? Cette liste vous aidera à "faire parler" vos données.
Voir les 64 listes de lecture

Abonnez-vous maintenant

et profitez de tous les contenus en illimité

Je découvre les offres

Déjà abonné ? Connectez-vous