Si tous les radio-écouteurs voulaient bien se donner la main...

RX - SDR compléments


 Kikilohertz.

-

Logiciels définis par radio, DAB, FM et bien plus encore
Traduction d'un texte de Jan van Katwijk.

* Introduction
   La radio numérique est maintenant tout autour de nous. Notre fournisseur de télévision locale a récemment cessé de transmettre des chaînes analogiques par câble. La bande des ondes moyennes ne contient plus d'émetteur d'un seul pays et même les ondes courtes sont plus vides qu'il y a dix ans.
   FM est toujours dans les airs, cependant, il semble y avoir des plans pour arrêter cela vers 2023. Il ne reste donc qu’Internet ou la radio numérique (bien sûr, Internet, le WiFi, etc. sont également numériques).
   La radio numérique, le remplacement prévu, diffère des "anciennes formes" en ce que le contenu du signal est numérique, un flux de bits, qui doit être décodé et converti en audio, texte ou vidéo. Bien entendu, les "ondes radio" elles-mêmes sont analogiques, comme d’habitude, c’est le contenu qui est traité différemment.

* Radio et appareils
   Ma deuxième radio (la première était un récepteur à cristal) avait une vraie valve (une DL92) et était construite autour de la célèbre bobine AMROH 402, et j’ai bien aimé écouter les stations de radio du MW. Quelques mètres de fil de cuivre en guise d'antenne, des écouteurs (2 000 ohms à l'époque) et quelques piles suffisaient pour faire pénétrer le monde et - tard dans la nuit, allez-y sous le voile - écoutez des chaînes célèbres comme Radio Luxembourg et Radio Luxembourg Veronica, au lieu de faire ses devoirs. De nos jours, il faut à la fois un "récepteur" et un logiciel pour tout ce qui est plus complexe que FM (sans RS).

* Jouer de la radio
   L’approche standard pour jouer avec ce que l’on appelle la "radio définie par logiciel" consiste à faire en sorte que certains périphériques matériels reçoivent le signal de l’antenne et le convertissent en un flux de bits, ainsi qu’un dispositif de traitement pour le décodage.
   Il existe une myriade de dispositifs, traduisant ce qui se présente en échantillons, le moins cher étant les "bâtonnets", coûtant environ 10 à 20 euros tandis que la recherche USRP B210 Board van Ettus se situe à 1210 dollars de l'autre côté du spectre. . Dans l'intervalle, il y en a heureusement beaucoup d'autres.
   Je suis l'heureux propriétaire de SDRplay, de Hackrf, de DABsticks basés sur RT2832 et de périphériques AIRspy, plus que suffisant pour me tenir occupé (bon, et au cas où je m'ennuierais encore, j'ai un vieil appareil pmSDR, un appareil sur lequel on a encore besoin d'une carte son pour obtenir les données "dans").

* Certains appareils
   Le HACKrf commence à 1 MHz, ce qui le rend également utilisable en ondes courtes et, en tant que particularité, prend en charge à la fois la réception et la transmission sur des fréquences allant jusqu'à 6 GHz. D'autres appareils prennent en charge des fréquences comprises, par exemple, entre 50 MHz et 2 000 MHz, des bandes avec des émissions et des transmissions de service intéressantes.
   Une limite sur AIRspy est qu’il ne fournit qu’un nombre limité de fréquences d’échantillonnage (élevé cependant). Par exemple La conversion du taux de décodage DAB est requise.
   Les DABsticks ont l’avantage d’être économiques et il existe une quantité énorme de logiciels pour ces appareils. Selon le modèle, la plage de fréquences se situe entre 24 MHz et plus de 1,5 GHz.

* Dispositif d'affichage
   L’appareil SDRplay présente l’avantage de prendre en charge une plage de fréquences commençant à moins de 100 kHz sans avoir à effectuer d’excuses, il prend en charge l’ensemble de la plage allant de moins de 100 kHz à 2 GHz. Sur les ondes moyennes et courtes, c'est l'appareil de choix.
   Une différence importante entre les périphériques réside dans le nombre de bits de sortie, alors que DABsticks et HACKrf fournissent des échantillons I / Q de 8 bits, le SDRplay fournit des échantillons I / Q de 12 à 14 bits (selon le modèle choisi).
   La stabilité de l'oscillateur est évidemment aussi très importante, bien que le programme DAB (et le décodeur DRM) parviennent à gérer des décalages allant jusqu'à 25 à 35 kHz. L’erreur de fréquence avec le SDRplay, le AIRspy et le HACKrf est négligeable, les sticks DAB bon marché souffrent de décalages allant jusqu’à 20 à 30 kHz à 200 MHz et le décalage varie en fonction des conditions climatiques.

* (Mon) logiciel pour SDR
   Il existe déjà une quantité énorme de logiciels disponibles pour les applications SDR. Pour moi, il est tout simplement amusant d’écrire et de développer mes propres programmes pour ce domaine. L'un des avantages majeurs de l'écriture de son propre logiciel est (étant donné que l'on dispose de suffisamment de temps car il nécessite beaucoup de code) qu'il approfondit réellement la compréhension des éléments du domaine et contribue de manière décisive au développement ultérieur de sa programmation. compétences.
   Une fois à la retraite, j’ai eu le temps de m'asseoir dans mon fauteuil paresseux avec un ordinateur portable sur les genoux. En commençant par une carte "Elektor" (du magazine Elektor) en tant que périphérique "matériel", la sortie étant enregistrée dans la carte son (à cette époque, les ordinateurs portables avaient encore des cartes son intégrées avec une "entrée de ligne"), bien avant que je puisse écouter les stations AM.
   Après cela, le décodage RTTY semblait être l'objectif ultime. Cependant, cela s’est avéré raisonnablement simple, il a donc été suivi d’un décodeur (q | b) psk et d’un décodeur CW. Ensuite, toute une série d'autres décodeurs, complets et partiels, ont suivi. Bien sûr, la carte "Elektor" était un appareil simple, un réglage au-dessus de 20 Mhz était plutôt imprécis, mais à l'époque je l'appréciais vraiment. Les versions ultérieures du logiciel ont pris en charge davantage de périphériques et d’autres décodeurs, y compris un pour la radio numérique des ondes courtes, DRM. La version actuelle supporte environ 8 décodeurs différents, sous lesquels un décodeur DRM (et un décodeur cw comme indiqué sur l'image) et peut être utilisée avec SDRplay, le périphérique HACKrf, DABsticks (pour les bâtons basés sur RT820, une bibliothèque fait partie l’arbre source avec lequel on peut accorder aussi bas que 13 MHz), et le bon vieux pmSDR (avec une carte son). Pour plus de détails sur le swreceiver, voir "https://github.com/JvanKatwijk/swradio-8".

* Fm Réception-2
   Après la carte "Elektor", j'ai acquis un pmSDR. Le pmSDRdr était un très bon appareil, alors que l’oscillateur fonctionne de 0 à 55 MHz, le troisième harmonique permet d’obtenir une plage de fréquences allant au-delà de 150 MHz. Le périphérique est "démodé" en ce sens que la sortie est toujours analogique et qu'une carte son est nécessaire pour convertir les publicités, mais qu'elle reste très utilisable.
   Avec le pmSDR, il était très tentant d’enquêter sur la bande de radiodiffusion FM et, en fait, inspiré de quelques exemples de code trouvés sur Internet tout-puissant, un récepteur FM pourrait être réalisé. La conception a été conçue pour que l’interfaçage avec d’autres périphériques ne soit pas trop élaboré: séparation du périphérique d’entrée et de la chaîne de traitement. Plus tard, d'autres périphériques, SDRplay, AIRspy, DABsticks et HACKrf ont été ajoutés.
   La version actuelle comporte une multitude de boutons et de curseurs. Vous pouvez choisir parmi une collection de 5 implémentations différentes du décodeur FM. Bien sûr, rds est implémenté et l’on peut scanner une bande sélectionnée par l’utilisateur. Une version plus simple existe également, WFM-RPI. Pour plus d'informations, voir "https://github.com/JvanKatwijk/sdr-j-fm" et "https://github.com/JvanKatwijk/wfm-rpi".

* Spectre spectateur
   À l'époque où je travaillais sur un décodeur FM, les DABsticks arrivaient. Les bâtons DAB, avec une gamme de fréquences de 24 MHz à 1700 MHz, étaient bon marché et disponibles. La bande passante, jusqu'à près de 3 MHz, permettait de regarder une bande entière sur un seul écran. À cette fin, un spectateur de spectre a été mis au point, puis plus tard, comme dans l’illustration.
   Le programme dans sa configuration actuelle montre deux fenêtres principales et une petite. Les fenêtres principales affichent le spectre des données entrantes, sous forme de spectre et de cascade. Bien sûr, de nombreux détails sont invisibles lorsque vous regardez un écran de 15 pouces avec un spectre d’une largeur de 10 Mhz, par exemple. Par conséquent, une troisième petite fenêtre a été ajoutée, montrant une petite partie agrandie du spectre du temps restant. Pour plus d'informations, voir "https://github.com/JvanKatwijk/sdr-j-spectrumviewer".

* Recevoir le DAB
   Après avoir joué avec FM, l’un des défis a été d’examiner le décodage DAB. DAB, la radiodiffusion audionumérique, envahit lentement l'Europe et certains autres continents. Certains pays ont annoncé que DAB (ou DAB +) remplacera la FM. Il semble donc qu'après la disparition de l'AM, celle-ci finira par disparaître.
   La couverture de DAB est assez bonne, ici, aux Pays-Bas, nous recevons avec une seule antenne de télescope 3 à 4 ensembles, avec environ 45 services. Bien que le contenu ne me rend pas nécessairement heureux, les techniques utilisées sont vraiment intéressantes. Après tout, la radio numérique nécessite pas mal d’informatique. C’est donc beaucoup de travail pour un vrai programmeur et un ordinateur portable raisonnable est absolument nécessaire.
   J'ai créé différentes versions d'un décodeur DAB, à utiliser avec les périphériques SDRplay, AIRspy, DABSticks, HACKrf (et l'entrée de fichier à des fins de test). La version principale est Qt-DAB, elle prend en charge une gamme de périphériques et propose une gamme d’options et de curseurs. SdrplayDab est une variante, une version optimisée pour être utilisée avec SDRplay, qui est montrée dans l'image. Pour plus d'informations, voir "https://github.com/JvanKatwijk/qt-dab", "https://github.com/JvanKatwijk/sdrplayDab" ou "https://github.com/JvanKatwijk/dabradio".
   J'utilise moi-même principalement le serveur dabserver, une variante fonctionnant sur un RPI3 en tant que "service", contrôlé depuis ma tablette, à l'aide d'une connexion Bluetooth.

* Serveur DAB
   La version "serveur" est issue du projet dab-cmdline (voir "https://github.com/JvanKatwijk/dab-cmdline"). Dans ce projet dab-cmdline, la fonctionnalité de décodage DAB est implémentée sous la forme d'une bibliothèque. Plusieurs exemples de programmes sont donnés, chacun conduisant à une version du décodeur DAB gérée par la ligne cmd.
   L’une des fonctionnalités intéressantes (du moins c’est ce que je pense) est que le serveur n’a pas besoin de connexion WiFi et fonctionne sans surveillance, c’est-à-dire qu’il continue à faire ce qu’il a fait après avoir arrêté le programme client de contrôle. Après (re) démarrage du programme client de contrôle et connexion au serveur, le serveur envoie des informations afin que le client puisse afficher les informations du programme à l'écran et qu'un autre service puisse être sélectionné, le cas échéant.

Disponibilité du logiciel
   Bien que ma plate-forme de développement soit Linux, il est clair que pour que les programmes soient utiles, ils sont également disponibles de préférence pour Windows. Heureusement, la plate-forme Linux sur laquelle je me trouve prend entièrement en charge l'environnement de compilation croisée mingw32, il était donc relativement facile de compiler tous les logiciels et de les rendre disponibles sous Windows.

Disponibilité des sources
   Pour tout ce logiciel, les sources sont disponibles depuis github dans les différents projets github.

* Pour Windows: installateurs et exécutables
   Le référentiel qt-dab contient dans sa section des versions un dossier Windows compressé (windows-bin.zip) avec de nombreux exécutables Windows (ainsi que les bibliothèques requises).
   De plus, pour les programmes mentionnés ci-dessus, un programme d'installation Windows est disponible dans la section des versions du projet. Un tel programme d'installation installera l'exécutable et les dll nécessaires. Le programme d’installation installera également les DLL pour SDRplay, s’il n’est pas déjà installé.

* AppImages
   Pour résoudre le problème des différences entre les différentes distributions Linux pour PC, AppImages est créé pour certains programmes. Une AppImage est un fichier contenant l'exécutable et la plupart des bibliothèques de liens dynamiques requises (voir "https://github.com/AppImage" pour plus de détails). L'idée de base est qu'un tel fichier est téléchargé, le bit exec est défini et le programme peut être exécuté.

* La framboise PI 2 et 3
   Les versions RPI (2 et plus) sont "populaires" et "Stretch" est une distribution Linux réel et complet, il est facile de créer un programme pour les programmes mentionnés ci-dessus sur un tel périphérique. Créer une AppImage pour Qt-DAB pour Stretch sur le RPI2 / 3.

- Quelques programmes en détail
   Une description de l’ensemble des programmes est assez longue et les programmes sont très différents, c’est pourquoi on pourrait choisir une description. Pour chacun des programmes, il est indiqué qu'il existe des sources disponibles pour une utilisation sous Linux et, pour la plupart d'entre eux, des exécutables précompilés sont disponibles pour une utilisation sous Windows.

- Programmes : DABBibliothèque.  DABServeurs. DABwwradio-8FM Software Spectrumviewer
Autre logiciel
logiciel qt-1090
   Le logiciel populaire dump1090 (Copyrights Salvatore Sanfilipo) permettant de suivre les avions est étroitement intégré au logiciel des périphériques rtlsdr et ne prend pas en charge les périphériques SDRplay et HACKRF. Donc, une reconstruction a été faite pour créer une séparation entre "périphérique" et "algorithme", et en même temps une sorte de GUI a été ajoutée.

* Un émulateur rlsl
   De nombreux progiciels intéressants à utiliser (seuls) avec un périphérique compatible RTLSDR existent et sont disponibles, par exemple dump1090 et acarsdec. Il serait intéressant d’avoir ces programmes et de pouvoir les utiliser avec d’autres périphériques, par exemple. le RSP SDRplay. Le logiciel acarsdec a été étendu avec une option permettant d’utiliser SDRplay. Une version dérivée de dump1090 a été écrite avec une petite interface graphique et une prise en charge de SDRplay (le programme qt-1090 mentionné ci-dessus).
   Cependant, il existe également d'autres programmes, par exemple: rtl_433, aiswatcher etc. qui sont intéressants et, en quelque sorte, étroitement liés à l’utilisation d’un stick compatible rtlsdr. J'ai réalisé qu'il serait plus facile d'écrire un émulateur rtlsdr à l'aide du périphérique SDRPlay que de réécrire tous les logiciels que j'ai rencontrés et fonctionne uniquement (principalement) avec un DABstick. Cela a conduit au développement de l'émulateur rtlsdr pour SDRplay. Implémenté comme remplacement de plugin pour la bibliothèque rtlsdr, soit pour Linux (librtlsdr.so), soit pour Windows ([lib] rtlsdr.dll).
   Les sources de la bibliothèque peuvent être trouvées dans le dépôt github. Le fonctionnement de l'émulateur est simple, il s'agit simplement d'un remplacement de "librtlsdr.so" sous Linux ou (lib) rtlsdr.dll sous Windows (il est supposé que la librairie SDRplay est installée).

   Dans mon environnement, l'émulateur fonctionne bien avec dump1090 (bien que qt-1090 ait de meilleures performances), acarsdec, rtl_433 et autres.

* Filtrer la démo.                                
   Les appareils radio modernes délivrent un signal large bande (par exemple, l’écran SDRplay jusqu’à 10 MHz, le taux de transfert jusqu’à 20 MHz). Bien qu’il soit agréable de pouvoir afficher le spectre, par exemple, la moitié de la bande FM en une seule vue, une bande plus petite est généralement nécessaire pour décoder une personnalité. Par exemple, la largeur de bande pour décoder un signal en mode psk31 ou un signal continu est inférieure à 100 Hz. Le logiciel sw utilise comme entrée du lecteur SDRplay un signal d'une largeur d'un peu plus de 2 MHz (le plus petit possible), et (filtre et) le décime à 96 kHz. Ensuite, en fonction de la fréquence sélectionnée par l'utilisateur, une sous-bande de 12 kHz est sélectionnée (et filtrée) et rendue disponible pour le décodage à une vitesse de 12 kHz. L'utilisateur peut sélectionner une sous-bande de 12, 9, 2,5 kHz (bande latérale supérieure ou inférieure) à gérer par le décodeur. Ce dernier filtrera davantage le signal si nécessaire.
   Tous ces filtrages sont effectués par des filtres à réponse impulsionnelle finie, certains avec un degré assez élevé pour obtenir des flancs raides (un degré de 255 ne fait pas exception, bien qu’il ait ensuite été implémenté en utilisant une FFT). FIR est choisi sur IIR car FIR ne détruit pas la phase du signal.
   Les images montrent toutes un filtre de degré 64 et de largeur de 0,33 (compris entre 0 et 100, c’est-à-dire pour un signal ayant une fréquence d’échantillonnage de 96 000, cela correspondrait à 0,33 * 96000/2, soit 16 KHz). Les images montrent donc un filtre passe-bas avec un point 3DB à 16 kHz. Les images diffèrent par le fenêtrage appliqué.

Les sources du programme peuvent être trouvées dans le dépôt github.

- Documents et autres articles.
   Puisque je m'intéresse principalement à la programmation, je suis moins intéressé par la rédaction de manuels (que personne ne lit jamais), de sorte que les manuels sont quasiment absents. Les programmes équipés d'une interface graphique ont des info-bulles indiquant la fonction des éléments de l'interface. Pour les autres, lisez le fichier README et le fichier CMakeLists.txt et / ou le fichier xxx.pro. Le référentiel de dab-cmdline contient un fichier README assez complet avec une brève description des différents exemples de programmes et un exemple d'une telle ligne de commande.
   Il existe cependant quelques documents, une description informelle de la synchronisation dans le décodeur DRM est donnée dans cette description. Le document sera une ébauche pour toujours, mais il contient de nombreuses informations pratiques sur les problèmes rencontrés lors de l'écriture du logiciel (l'un des décodeurs du programme sw-radio-8) pour le décodage du signal DRM.
   Une description - également informelle - du traitement des fichiers DAB et DAB +, telle qu’implémentée dans la version Ada du logiciel, est donnée ici. Ce rapport (également éternel brouillon) décrit de manière assez détaillée - y compris un certain nombre de fragments de code - la structure de la version Ada du logiciel DAB. La description suppose des connaissances de base sur Ada et sur la structure de DAB et DAB +. Il est légèrement obsolète, certains algorithmes des implémentations DAB habituelles sont remplacés par des algorithmes plus efficaces.
   Pour ceux intéressés par des choses très anciennes qui n’ont rien à voir avec la radio définie par logiciel, mais pour moi l’un des projets les plus drôles, ce référentiel contient (sources pour) un traducteur algol 60 to C, avec un certain nombre d’exemples de programmes. Le programme a été rédigé en langage simple aux alentours de 2002, également à titre de projet de loisir à cette époque. Un manuel, contenu dans le référentiel, donne - dans une vingtaine d'exemples - de manière assez détaillée la correspondance entre les constructions Algol 60 et le code C en clair qui en résulte. En fait, cela fonctionne plutôt bien sur mon ordinateur portable x64.

* Finalement ....
   Ce logiciel dépend des bibliothèques dynamiques existantes (linux) et des dll (windows), par exemple. bibliothèques pour la sortie audio, fft, gestion de fichiers "wav", toutes disponibles sous GPL-V2 ou V3. Le logiciel lui-même est donc également disponible sous une licence GPL-V2.
   C’est - évidemment - bien si (certains) des logiciels sont utiles, n'hésitez pas à les utiliser et à en profiter. Cependant, il n'y a pas de garantie et si le logiciel ne fait pas ce que vous attendez de lui, je vous suggère de lire la documentation avant de me plaindre. Avant tout, lisez la licence qui dit (a.o):
   SDR-J est distribué dans l’espoir que cela sera utile, mais SANS AUCUNE GARANTIE; sans même la garantie implicite de QUALITÉ MARCHANDE ou d'ADÉQUATION À UN USAGE PARTICULIER. Voir la licence publique générale GNU pour plus de détails.
   Les suggestions d'amélioration et / ou d'extension du logiciel sont toujours les bienvenues bien qu'aucune garantie ne soit donnée qu'elles seront appliquées.
   Le développement de tous ces logiciels est un passe-temps, un "temps libre", un projet, comme pour tous les projets de passe-temps, un soutien et des contributions (matérielles) sont toujours les bienvenus.
   Je suis reconnaissant à SDRplay Ltd. de m'avoir donné la possibilité d'utiliser différentes versions des périphériques SDRplay RSP, tous de merveilleux périphériques. En outre, merci à Benjamin Vernoux d’avoir mis au point un appareil AIRSPY et à Great Scott Gadgets d’avoir mis à ma disposition un appareil HACKRF.

S'amuser!!!

Pijnacker, février 2019
Jan van Katwijk
Lazy Chair Computing
J.vanKatwijk-at-gmail-dot-com

 



 

mardi 25 juin 2019

©1995-2019 U.E.F.