🚧 Cette page est un WIP (Work In Progress). Tout ne fonctionne pas (encore) à 100% ! 🚧
Ne vous fiez pas à cette page tant que ce panneau sera présent.
Transformer un vieux laptop de récupération en serveur OpenWebRX.
Monter un serveur OpenWebRX à partir d'un client léger d'occasion et bon marché et d'un clone de SDRPlay RSP1.
Le plus souvent, OpenWebRX+ est utilisé avec un Raspberry Pi, mais depuis la crise du COVID entre 2019 et 2021, et la pénurie de composants, puis l'inflation qui a suivi, le prix des Pi s'est envolé. Alors pourquoi ne pas utiliser une vieille bécane qui traînait dans les placards une machine très abordable (32,00€, port compris) pour faire un serveur OpenWebRX* ?
*et pourquoi pas rtl_tcp pour une ou plusieurs clef USB RTL-SDR
OpenWebRX+ est un logiciel de SDR (Software Defined Radio) adossé à un serveur web, forké depuis le projet “OpenWebRX”. Il permet d'utiliser un récepteur SDR (clef RTL-SDR, SDRPlay RSP1A, etc.) avec un navigateur web depuis n'importe où sur la planète. OpenWebRX+ supporte nativement beaucoup de mode de modulations et modes de transmissions (voix, images, données) que l'on peut trouver sur les bandes HF, VHF et UHF.
Il est bourré de fonctionnalités intéressantes comme :
URL du projet : https://github.com/luarvique/openwebrx OpenWebRX+ ppa pour Ubuntu : https://luarvique.github.io/ppa/
Le vieux laptop que je recycle pour ce projet est un Medion Belinea O.book 3.1.
Ce laptop ne disposant pas, au vu de son grand âge, d'un port USB 3, il est impossible de l'utiliser avec le clone de RSP1. Il fera sa vie dans un autre projet… 😉
Le récepteur SDR choisi est le “RSP1S” un clone Simplifié du “RSP1” de SRDPlay. On trouve ce récepteur SDR sur les sites asiatiques pour un prix entre 30 et 40€. Ses performances ne sont pas celles du matériel qu'il copie, mais suffisent dans un premier temps pour ce projet. Le modèle dont je dispose a 5 entrées distinctes suivies de filtres de bande.
Plus d'infos ici :
L'OS utilisé est un Ubuntu 22.04.3 Server (sans interface graphique).
sudo apt update sudo apt dist-upgrade -y
Pour pouvoir utiliser le laptop avec l'écran refermé (et ainsi gagner de la place) sans que la machine ne soit plongée en veille, il faut modifier, en tant que root
, une directive de configuration dans le fichier
/etc/systemd/logind.conf
:
[Login] #HandleLidSwitch=suspend HandleLidSwitch=ignore
Puis il faut relancer le service
sudo systemctl restart systemd-logind
sudo apt install -y htop glances unzip git build-essential cmake
Dans le cas d'une utilisation à travers internet, la machine sera exposée, c'est donc une bonne idée de la protéger.
sudo apt install -y ufw
sudo ufw allow ssh sudo ufw allow http sudo ufw allow https
sudo ufw allow 8073
sudo ufw enable
sudo ufw status
Fail2Ban bannit les adresses IP qui tentent de manière répétitive et échouent à se connecter. Il contient et ralentit les tentatives d'attaque par brute-force sur la machine.
sudo apt install -y fail2ban
Si on veut pouvoir modifier la conf, il ne faut pas le faire dans le fichier jail.conf
mais il faut disposer d'un fichier jail.local
.
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
Éditer /etc/fail2ban/jail.local
en tant que root
et ajouter vos adresses IP à la directive ignoreip
(IPv4 ou IPv6, séparés par des espace) :
ignoreself = true ignoreip = 127.0.0.1/8 ::1 192.168.0.0/16
sudo service fail2ban restart
Puisqu'on dispose d'un serveur dédié à la réception SDR, c'est un terrain de jeu idéal pour plusieurs autres expérimentations.
sudo apt install -y rtl-sdr
Installer les dépôts dans une console en tant que root
:
wget -O - https://luarvique.github.io/ppa/openwebrx-plus.gpg | gpg --dearmor -o /etc/apt/trusted.gpg.d/openwebrx-plus.gpg echo "deb [signed-by=/etc/apt/trusted.gpg.d/openwebrx-plus.gpg] https://luarvique.github.io/ppa/ubuntu ./" > /etc/apt/sources.list.d/openwebrx-plus.list apt update
Ne pas oublier d'ajouter le dépot orginal d'OpenWebRX (nécessaire pour certains paquets). Toujours dans une console en tant que root
:
wget -O - https://repo.openwebrx.de/debian/key.gpg.txt | gpg --dearmor -o /usr/share/keyrings/openwebrx.gpg echo "deb [signed-by=/usr/share/keyrings/openwebrx.gpg] https://repo.openwebrx.de/ubuntu/ jammy main" > /etc/apt/sources.list.d/openwebrx.list apt update
sudo apt install -y openwebrx
On va créer un espace dédié pour y mettre tous les logiciels et bibliothèques qu'on va compiler “à la main” pour OpenWebRX+.
mkdir "$HOME/sdr" # on va avoir besoin de compiler du code externe, donc... sudo apt install -y git build-essential cmake
sudo apt install -y libsoapysdr0.8 libsoapysdr-dev soapysdr-tools sudo apt install -y soapysdr-module-all
➊ Après testé avec un RaspberryPi, OpenWebRX du 2023-10-11 fonctionne “out of the box” avec le clone de RSP1. En regardant en détail, la version de SoapySDR utilisée sur le Pi est 0.7 et non 0.8.
➋ Sur le même RapsberryPi, l'image OpenWebRX+ du 2023-10-22 ne fonctionne pas avec le clone de RSP1. La version de SoapySDR utilisée est aussi la 0.7. Est-ce que la version des drivers a son importance ?
➌ Autre détail amusant : malgré le driver SDRplay installé, lsusb
reste muet et n'affiche pas SDRPlay RSP1
sur le port USB concerné, alors que tout fonctionne parfaitement…
wget
directement depuis le serveurchmod +x ./SDRplay_RSP_API-Linux-3.07.1.run
./SDRplay_RSP_API-Linux-3.07.1.run
lsusb
pour constater que Bus 001 Device 002: ID 1df7:2500 SDRplay RSP1
Puisque manifestement le clone de RSP1 fonctionne sans encombre avec les anciennes versions d'OpenWebRX mais pas avec les plus récentes, il y a un souci avec les pilotes récents.
J'ai donc compilé tous les pilotes (“API”) et scripts de l'ancienne version (2.13.1) pour Linux x64 et ARM32 / ARM64 dans un zip : sdrplay_linux_pi_api_2.13.1.zip
cd "$HOME/sdr" git clone https://github.com/pothosware/SoapySDRPlay.git cd "$HOME/sdr/SoapySDRPlay" mkdir "$HOME/sdr/SoapySDRPlay/build" cd "$HOME/sdr/SoapySDRPlay/build" cmake .. make sudo make install cd "$HOME/sdr"
Après plusieurs tests, le clone de RSP1 ne semble fonctionner qu'avec une ancienne version de SoapySDR, la 0.7.
Les sources sont trouvables ici : https://github.com/pothosware/SoapySDR/releases/tag/soapy-sdr-0.7.2