sdroxide-brown

Raspberry Pi Zero 2 W als headless SWL-station (sdroxide)

Een korte, taakgerichte handleiding om van een Raspberry Pi Zero 2 W en een goedkope SDR-dongle een netwerk-luisterstation te maken voor kortegolf en omroep: de radio en het decoderen draaien op de Pi, en je bedient hem vanaf een laptop, tablet of telefoon in je thuisnetwerk. Niets hiervan vraagt een licentie of een zender.

Voor de luisterworkflow zelf zie de Luister-quickstart; voor de volledige uitleg per knop zie USER_MANUAL.md; voor het waarom van deze fork zie de README.

English: pi-zero-2w-swl.en.md. Français: pi-zero-2w-swl.fr.md. Italiano: pi-zero-2w-swl.it.md. PDF: pi-zero-2w-swl.nl.pdf.

Vetgedrukte namen zoals SETTINGS en SWL LOG zijn knoppen en velden zoals ze op het scherm staan. Commando’s in grijze vakken typ je in de shell van de Pi.

Lees dit eerst. De Pi Zero 2 W is een luisterknooppunt, geen desktop. Zijn vier kleine cores en 512 MB RAM dragen de ontvanger, de decoders en de opname met gemak; ze dragen niet de brede lanes (ADS-B, VDL2, AIS, DAB) of de grafische interface op volle detail. Houd de samplerate laag, blijf bij de smalle modes, en laat de browser het tekenwerk doen.


Wat je nodig hebt


Deel 1 — De Pi voorbereiden

  1. Zet Raspberry Pi OS (64-bit, Bookworm) op de microSD-kaart met Raspberry Pi Imager. Stel in de Imager je hostname in (bijvoorbeeld swl), zet SSH aan en vul je wifi-gegevens in als je geen kabel gebruikt. Start de Pi.
  2. Log in via SSH:
    ssh pi@swl.local
    
  3. Werk bij, en installeer de pakketten die sdroxide nodig heeft:
    sudo apt update && sudo apt full-upgrade -y
    sudo apt install -y libasound2-dev libopus-dev
    

Je installeert geen compiler. De uitgebrachte build is een kant-en-klaar binair bestand.


Deel 2 — sdroxide installeren

De Zero 2 W is 64-bit (armv8), dus hij draait de aarch64-compat-build voor Raspberry Pi OS Bookworm. Download hem op de Pi zelf:

cd /tmp
wget https://github.com/madmedicnl/sdroxide-brown/releases/latest/download/sdroxide-linux-aarch64-compat.AppImage
chmod +x sdroxide-linux-aarch64-compat.AppImage
./sdroxide-linux-aarch64-compat.AppImage --version

--version hoort het SDR Oxide Brown-buildnummer te tonen. Weigert hij te starten met GLIBC_2.39 not found, dan heb je het verkeerde bestand — je wilt die met -compat in de naam.

Zet hem waar je hem bij naam kunt aanroepen:

mkdir -p ~/bin
mv sdroxide-linux-aarch64-compat.AppImage ~/bin/sdroxide
chmod +x ~/bin/sdroxide

Een .deb mag ook: op dezelfde releasepagina staat sdroxide-linux-aarch64-compat.deb; installeer met sudo apt install ./sdroxide-…-aarch64-compat.deb en het commando is dan gewoon sdroxide.

De udev-regels doen ertoe. Een Linux-gebruiker heeft rechten nodig om een USB-SDR te openen. Heb je de .deb geïnstalleerd, dan staan ze al goed. Met de AppImage kopieer je de regels uit de packaging/linux/-map van de repository naar /etc/udev/rules.d/, en dan:

sudo udevadm control --reload && sudo udevadm trigger

en trek de dongle eruit en stop hem terug. Zonder dit ziet de Pi de dongle wel, maar kan hij hem niet openen.


Deel 3 — Eerste keer, op het scherm van de Pi

Dit heb je maar één keer nodig, om de radio in te stellen; daarna draait de Pi headless.

DISPLAY=:0 ~/bin/sdroxide

(Heb je helemaal geen desktop, ga dan naar Deel 4 en doe de installatie vanuit de browser.)

  1. Open SETTINGS → Radio. Kies je interface — voor een RTL-SDR is dat RTL-SDR — en zet vooral de samplerate laag: kies 1024000 of 900001, niet de standaard 2,4 Msps. De smalle modes hebben een fractie daarvan nodig, en de lagere rate is wat de Pi koel en bij blijft. Klik Apply / reconnect.
  2. Op SETTINGS → UI, vink Start in SWL mode aan zodat de zendknoppen nooit verschijnen — dit is een luisterstation. (--swl op de opdrachtregel doet hetzelfde voor één run.)
  3. Op SETTINGS → General, stel je Grid square in (het SWL LOG-venster gebruikt die voor de locator van elke ontvangst) en, op het tabblad Spots, je Report as (SWL)-identiteit.
  4. Stem een omroepband af — LW, MW of SW — kies AM of SAM, en bevestig dat je iets hoort. De SCHEDULE- en SWL LOG-vensters zijn de hulpmiddelen van de luisteraar; de Luister-quickstart loopt ze door.

Deel 4 — Headless draaien als server

Dit is het punt van de oefening: de Pi houdt de radio, en elk scherm dat je hebt kan hem gebruiken.

Stop het venster-instantie, en start dan de server:

~/bin/sdroxide --server --port 4950

De browserclient wordt vanaf dezelfde poort geserveerd. Open op elk apparaat in hetzelfde netwerk:

http://swl.local:4950

Je krijgt het hele programma in de browser — afstemmen, de waterfall, de SCHEDULE- en SWL LOG-vensters, de decoders, het ontvangstlogboek. De Pi doet het ontvangen en het decoderen; de browser doet het tekenwerk, en precies daarmee blijft een bord van 512 MB bruikbaar.

Een native sdroxide op een andere computer kan hem ook aansturen, met sdroxide --connect swl.local:4950.

Laat hem draaien

Om de server bij het opstarten te starten en te laten draaien, maak je een kleine service:

sudo tee /etc/systemd/system/sdroxide.service >/dev/null <<'EOF'
[Unit]
Description=sdroxide SWL listening server
After=network-online.target sound.target
Wants=network-online.target

[Service]
User=pi
ExecStart=/home/pi/bin/sdroxide --server --swl --port 4950
Restart=on-failure
RestartSec=5

[Install]
WantedBy=multi-user.target
EOF
sudo systemctl enable --now sdroxide

Controleer met systemctl status sdroxide, en volg het log met journalctl -u sdroxide -f.


Wat deze opstelling goed doet — en wat niet

Goed op een Zero 2 W:

Slecht of onmogelijk op een Zero 2 W:


Als iets niet werkt


Goede ontvangst en goede DX! 73