La première Ă©tape consiste en l’installation de GNU Radio et de l’interface vers l’Adalm-Pluto ou PlutoSDR sur un Orange Pi One Plus tournant sous Armbian. Puis en exemple, on Ă©tudiera la rĂ©alisation d’un Ă©metteur-rĂ©cepteur ou d’un transpondeur NBFM. Cette application peut Ă©galement tourner sur Orange Pi Zero 2 tournat sur Debian tĂ©lĂ©chargeable sur http://www.orangepi.org.
Configuration matérielle

L’Orange PI One Plus est une carte de dĂ©veloppement puissante offrant de nombreuses possibilitĂ©s avec son processeur 4 cĹ“urs 64 bits (H6). Pour l’installation du système d’exploitation, voir l’article suivant : https://f1atb.fr/index.php/fr/2020/09/01/mise-en-route-orange-pi-one-plus/

Pour installer le système d’exploitation sur un Orange Pi Zero 2, voir l’article suivant :
https://f1atb.fr/index.php/fr/2021/05/06/mise-en-route-orange-pi-zero-2/

Pour installer le système d’exploitation sur un Raspberry Pi 4, tĂ©lĂ©chargez l’image correspondant Ă la version Desktop sans les ‘recommended software’.
https://www.raspberrypi.org/software/operating-systems/#raspberry-pi-os-32-bit
L’Adalm-Pluto ou Pluto SDR est une radio logicielle intĂ©ressante permettant de crĂ©er un Ă©metteur-rĂ©cepteur fonctionnant en duplex.

Le Pluto s’interface par le port USB qui se comporte comme un port ethernet. Il ne faut pas l’alimenter par le port USB de l’Orange/raspberry Pi, car il y a des coupures dans la liaison. En complĂ©ment rajoutez une alimentation 5V2A extĂ©rieure. Le Pluto dispose d’une entrĂ©e micro USB pour l’alimenter. Mettez un Hub de ports USB pour raccorder une souris, un clavier nĂ©cessaire au dĂ©veloppement et corriger un bug sur le bus USB (voir ci-après). Branchez votre Orange/Raspberry Pi sur ethernet ainsi qu’un moniteur video sur l’HDMI ou utilisez VLC pour visualiser l’Ă©cran en mode graphique nĂ©cessaire Ă GNU Radio Companion.

Installation GNU Radio 3.7
GNU Radio Companion est un outil graphique permettant de construire des chaines de traitement radio très facilement sans écrire une ligne de code.
apt-get install gnuradio
Installation interface Adalm-Pluto
Vérifiez que les modules suivant sont présents avec:
lsmod. Ils sont absents avec certaines versions d’Armbian.
- cdc_acm,cdc_ether
- rndis_host
- rndis_wlan
- usbnet
Si un module manque tapez:
modprobe « nom du module »
modprobe rajoute les modules avec leurs dépendances, ainsi en rajoutant par exemple cdc_ether, usbnet sera également rajouté. Après chaque installation faite un lsmod pour vérifier.
Avec l’orange pi zero 2 ces modules ne sont pas tous disponibles sur l’os Debian, mais cela ne semble perturber le fonctionnement. Il manque cdc_ether et usbnet. De mĂŞme avec le Rasopberry Pi 4, il manque usbnet.
Comme recommandĂ© sur le site d’Analog Device, rajoutez dans le dossier
/etc/udev/rules.d/
le fichier de règles: 53-adi-plutosdr-usb.rules donnée ci dessous.
# allow "plugdev" group read/write access to ADI PlutoSDR devices
# DFU Device
SUBSYSTEM=="usb", ATTRS{idVendor}=="0456", ATTRS{idProduct}=="b674", MODE="0664", GROUP="plugdev"
SUBSYSTEM=="usb", ATTRS{idVendor}=="2fa2", ATTRS{idProduct}=="5a32", MODE="0664", GROUP="plugdev"
# SDR Device
SUBSYSTEM=="usb", ATTRS{idVendor}=="0456", ATTRS{idProduct}=="b673", MODE="0664", GROUP="plugdev"
SUBSYSTEM=="usb", ATTRS{idVendor}=="2fa2", ATTRS{idProduct}=="5a02", MODE="0664", GROUP="plugdev"
# tell the ModemManager (part of the NetworkManager suite) that the device is not a modem,
# and don't send AT commands to it
SUBSYSTEM=="usb", ATTRS{idVendor}=="0456", ATTRS{idProduct}=="b673", ENV{ID_MM_DEVICE_IGNORE}="1"
SUBSYSTEM=="usb", ATTRS{idVendor}=="2fa2", ATTRS{idProduct}=="5a02", ENV{ID_MM_DEVICE_IGNORE}="1"

Si en testant avec lsusb vous ne voyez pas le Pluto et que dmesg vous donne pour le port concernĂ© unable to enumerate USB device, dans ce cas rajoutĂ© un hub USB (pas nĂ©cessairement alimentĂ©) et cela devrait rentrer dans l’ordre. Ne me demandez pas pourquoi.

Pour faire fonctionner l’Adalm-Pluto avec GNU Radio, il faut installer les paquets suivants:
- apt-get install gr-iio
- apt-get install libiio-utils
- apt-get install gqrx-sdr
Accès SSH

Le Pluto dispose d’un système d’exploitation Linux accessible en ssh Ă l’adresse IP: 192.168.2.1
– utilistaeur: root
– password: analog
Note sur l’USB2
L’USB 2.0 est un protocole sĂ©rie semi-duplex 480 Mb / s. En supposant une utilisation Ă 100%, 480 Mb / s Ă©quivaudrait Ă 60 Mo / s.
En raison du protocole de communication entre la carte et le périphérique, on ne peut pas dépasser les ~ 45 Mo / s.
Puisqu’il s’agit d’un semi-duplex, cela fait ~ 22,5 Mo / s pour la transmission et ~ 22,5 Mo / s pour la rĂ©ception.
Étant donnĂ© que chaque Ă©chantillon est de deux octets (Ă©chantillons de 12 bits), on peut au maximum demander ~ 11 MSPS (MĂ©ga Echantillons/s). Sachant qu’il y a un Ă©chantillon I et un Ă©chantillon Q, cela fait un maximum 5.5 MHz de frĂ©quence d’Ă©chantillonnage. Mais en pratique avec le hub et les autres pĂ©riphĂ©riques sur l’USB, ce sera encore plus bas pour ĂŞtre sĂ»r d’avoir une liaison fluide.
Note sur l’Oscillateur local
L’oscillateur local du PlutoSDR servant de rĂ©fĂ©rence pour le traitement tourne Ă 40.000 MHz Il a une stabilitĂ© de frĂ©quence de ± 25 ppm (tension, tempĂ©rature, dĂ©rive plus prĂ©cision initiale) ce qui n’est pas très performant.
Vous pensez peut-ĂŞtre que c’est vraiment mauvais (et ça l’est), mais:
il peut ĂŞtre corrigĂ© numĂ©riquement en programmant la frĂ©quence XO. Si vous remarquez qu’elle est de 39,987654 MHz (jusqu’Ă la rĂ©solution Hz), vous pouvez le dire au système, et la frĂ©quence LO et les frĂ©quences d’Ă©chantillonnage seront mises Ă jour pour reflĂ©ter cela. Une fois stabilisĂ© en tempĂ©rature faite la correction en accĂ©dant en ssh et en positionnant la variable d’environnement xo_correction:
fw_setenv xo_correction 39987654
En surveillant ce dĂ©calage de frĂ©quence, celui-ci peut ĂŞtre mis Ă jour Ă la volĂ©e. Il convient de noter qu’il y aura toujours des dĂ©calages de phase alĂ©atoires entre les LO Tx et Rx, mais ils devraient ĂŞtre exactement la mĂŞme frĂ©quence.
Blocs d’interface GNU-Radio – PlutoSDR

On y trouve les paramètres de base, Ă savoir la frĂ©quence centrale, la frĂ©quence d’Ă©chantillonnage, la bande traitement. Notez que ces valeurs sont des entiers et non des nombres flottants.
Le dĂ©tail des blocs se trouvent sur le wiki d’Analog device https://wiki.analog.com/resources/tools-software/linux-software/gnuradio

De mĂŞme pour le module d’Ă©mission, il faut dĂ©finir la frĂ©quence centrale, la frĂ©quence d’Ă©chantillonnage et la bande traitement.
Note sur l’Ă©chantillonnage
Pour la chaine de rĂ©ception, le taux de conversion Analogique/DigitalADC minimum est de 25 MSPS. Les dĂ©bits en bande de base infĂ©rieurs Ă 2,083 MSPS (25 MSPS / 12) nĂ©cessitent la dĂ©finition d’une dĂ©cimation / interpolation FIR. En d’autres termes, le filtre FIR doit ĂŞtre configurĂ© et activĂ©. Le dĂ©bit minimum en bande de base avec le filtre FIR (dĂ©cimation par 4) activĂ© est: 25 MSPS / (4 * 12) = 520,83 kSPS.
Idem pour la chaine d’Ă©mission, le taux ADC minimum est de 25 MSPS. Les dĂ©bits en bande de base infĂ©rieurs Ă 2,083 MSPS (25 MSPS / 12) nĂ©cessitent la dĂ©finition d’une dĂ©cimation / interpolation FIR. En d’autres termes, le filtre FIR doit ĂŞtre configurĂ© et activĂ©. Le dĂ©bit minimum en bande de base avec le filtre FIR (dĂ©cimation par 4) activĂ© est: 25 MSPS / (4 * 12) = 520,83 kSPS.
Émetteur – RĂ©cepteur NBFM
A titre d’exemple simple, il est facile d’implanter un petit Ă©metteur-rĂ©cepteur en FM bande Ă©troite (NBFM) pouvant fonctionner en relais duplex ou en transpondeur 144 MHz vers 432 MHz. On peut reproduire ce schĂ©ma pour d’autres frĂ©quences de travail sachant que le Pluto de base couvre la bande 325 MHz Ă 3800 MHz. Mais il est possible d’Ă©tendre la bande de 70MHz Ă 6000 MHz comme dĂ©crit dans cet article : Extension en frĂ©quence du Pluto SDR

Chaine de réception
Ouvrir un nouveau projet dans GNU Radio. Dans le bloc Option, choisissez l’interface graphique WX GUI. Dans le bloc Variable, samp_rate mettez la valeur d’Ă©chantillonnage Ă 600000 (600kHz).

Mettez un bloc curseur (WX GUI Slider) et positionnez la bande de fréquence du récepteur souhaitée.
Mettez le bloc important ‘PlutoSDR Source’ qui dĂ©crit l’interface d’entrĂ©e des donnĂ©es du Pluto. L’Ă©chantillonnage Ă©tant Ă 600kHz, on limite la bande Ă 500 kHz (+/-250kHz) En sortie connectez un filtre passe bas pour limiter la bande Ă +/- 7 kHz. DĂ©cimez l’Ă©chantillonnage par 15 pour arriver Ă 40kHz en entrĂ©e du dĂ©tecteur NBFM lequel fournira une audio Ă 10kHz. Pour cette audio , l’Ă©chantillonnage Ă seulement 10 kHz est suffisant. On traite de la voix ne dĂ©passant pas les 4 kHz et non pas de la HIFI nĂ©cessitant un Ă©chantillonnage Ă 48 kHz. Cela permet de limiter le dĂ©bit de sortie.

Le format de traitement Ă l’intĂ©rieur de GNU Radio est du 32 bits flottants. On va se limiter Ă du 16 bits en entier. Sachant que l’audio est cadrĂ©e en flottant entre + et -1, on passe en entier en multipliant par 16000. Cette audio n’est pas Ă©coutĂ©e en local mais envoyĂ©e en streaming sur le rĂ©seau pour ĂŞtre Ă©coutĂ©e par VLC sur un PC distant (adresse IP:192.168……, port 9001). Voir la procĂ©dure ici : https://f1atb.fr/index.php/fr/2021/03/15/sortie-gnu-radio-vers-vlc/
Se positionner dans le dossier de VLC sous windows et tapez la commande:
vlc --demux=rawaud --rawaud-channels=1 --rawaud-samplerate=10000 udp://@:9001
Ce rĂ©cepteur est le plus simplifiĂ© possible. En pratique il faudrait rajouter d’autres fonctions comme un contrĂ´lè de gain, un squelch, un filtre audio, etc.
Chaine d’Ă©mission

Pour faire simple, on va positionner un gĂ©nĂ©rateur audio dont l’amplitude et la frĂ©quence du sinus seront rĂ©glables avec 2 WX GUI Sliders.
La source audio Ă©chantillonnĂ©e Ă 10 kHz attaque un modulateur NBFM qui gĂ©nère un signal complexe Ă 40 kHz. Lequel est interpolĂ© pour atteindre 600 kHz (Pluto Ă besoin d’Ă©chantillons Ă 520kHz minimum). La frĂ©quence d’Ă©mission radio est positionnĂ©e dans la bande des 144 ou 432 MHz ou ..

Positionnez à côté du Pluto un récepteur radio (clé SDR ou autre) et écoutez votre émission à faible niveau.
Note sur le gain d’Ă©mission
En fait, il faut parler d’attĂ©nuation. La valeur doit se situer entre 0 (signal fort) et – 89. cela correspond Ă des dB. Au delĂ le système plante.
Relais Transpondeur
Il est très facile de convertir ce système en relais transpondeur en reliant la sortie audio du rĂ©cepteur Ă l’entrĂ©e audio de l’Ă©metteur dont on a inhibĂ© le gĂ©nĂ©rateur.

Téléchargement
Le fichier source ( Gnu Radio Companion *.grc) décrit ci dessus est téléchargeable ici: https://f1atb.fr/wp-content/uploads/2021/03/NBFM_TX_RX_Pluto.zip
Bilan charge de calcul
Avec cette configuration de transceiver il est intĂ©ressant de voir la charge de calcul imposĂ©e Ă l’Orange Pi ainsi que les dĂ©bits d’entrĂ©e / sortie. Pour cela en mode terminal tapez: htop, application qui donne un bilan en une seule vue.

La charge de calcul (en vert) est d’environ 14% =100*0,57/4. Le max est de 4 en raison des 4 coeurs. Il reste de quoi rajouter des fonctionnalitĂ©s Ă notre transceiver.
L’Ethernet de sortie (Eth0 en rouge) avec 26KB/s correspond bien Ă l’audio Ă©chantillonnĂ©e Ă 10k/s sur 2 octets plus le dĂ©bit de mon affichage d’Ă©cran.
L’Ethernet / USB du Pluto (Eth1 en jaune) avec 2.7MB/s dans chaque sens correspond Ă l’Ă©chantillonnage Ă 600kHz sur 2 voies (I et Q) sur 2 octets chacune.
Articles traitant de l’Adalm – Pluto SDR
- Remote SDR V5 – Installation image Raspberry 4B ou Orange Pi
- Remote SDR v5 – Installation manuelle
- Remote SDR v5
- Dépannage
- Choix SDR
- Lancement de Remote SDR
- Configurations
- Caractéristiques
- Remote SDR v4
- Remote SDR V4 – Installation image Raspberry 4B ou Orange Pi
- Remote SDR v4 – Installation manuelle
- Remote SDR v2 – Installation image Raspberry 4B
- Remote SDR v2 – Installation image Orange Pi One Plus ou Orange Pi Zero 2
- Remote SDR v2 – Installation manuelle
- Remote SDR v2
- Changement Fréquence du SDR Pluto
- NBFM Transceiver avec Pluto SDR et GNU Radio
- Extension en fréquence du Pluto SDR
- Installation SDR Adalm-Pluto
Articles traitant de GNU – Radio
- Changement Fréquence du SDR Pluto
- Lancement script GNU Radio au boot
- NBFM Transceiver avec Pluto SDR et GNU Radio
- Audio GNU-RADIO vers VLC
- Remote SDR V1 – Installation
- Client Web vers GNU Radio
- GNU Radio vers client Web
- Emetteur BLU distant
- Récepteur BLU distant
- Émetteur et rĂ©cepteur vers Q0-100 avec 2 SDR – Remote SDR V1
- HackRF – RTL-SDR – GNU RADIO