Quick SDR++ Server Setup
You've got a Raspberry Pi in the loft, some sort of RTL-SDR dongle, a questionable antenna, and a burning desire to scroll through radio frequencies for reasons you can't sensibly define.
Great! Here's how to speed-run the installation of SDR++ for server use.
I'm assuming you've used the Raspberry Pi Imager to write a copy of Raspberry Pi OS Lite (64-bit) based on Debian Bookworm to the micro SD card and that you've got SSH access to it.
Installation
Create an unprivileged user to run the server:
sudo useradd --shell /sbin/nologin sdrpp
sudo usermod -aG plugdev sdrpp
Download and try to install the latest official nightly release from GitHub.
It'll fail, but don't worry:
wget https://github.com/AlexandreRouma/SDRPlusPlus/releases/download/nightly/sdrpp_debian_bookworm_aarch64.deb
sudo dpkg -i ./sdrpp_debian_bookworm_aarch64.deb
Install all of the things SDR++ thinks it needs:
sudo apt --fix-broken install
Then install the RTL-SDR shared library, or it'll not be able to talk to the dongle:
sudo apt install librtlsdr0
Last thing to do is tell the system that members of the plugdev
group are allowed to use the dongle. Easiest way to do this is to fetch the udev
rules file from the RTL-SDR repo:
wget https://raw.githubusercontent.com/rtlsdrblog/rtl-sdr-blog/refs/heads/master/rtl-sdr.rules
sudo mv ./rtl-sdr.rules /etc/udev/rules.d/
sudo chown root: /etc/udev/rules.d/rtl-sdr.rules
sudo udevadm control --reload-rules
sudo udevadm trigger
You should now be able to fire up the server:
sudo -u sdrpp /usr/bin/sdrpp --server
You'll likely see a bunch of errors about not being able to load certain shared object files. This is because the SDR++ nightly is compiled with a bunch of options we're not using, and it's trying to load the libraries required to support those features. We're just interested in it talking to our RTL-SDR dongle and being a server, so we can ignore all that.
If you can't ignore all that, or need to use some other dongle types, you're better off following this guide from Umberto Ragone where he explains how to compile from source.
If it's working, the command output should be holding at a line which says Ready, listening on 0.0.0.0:5259
.
Test Connection
You should be able to connect to the server using a local copy of SDR++ by setting the source to SDR++ Server, the IP to the address of the Raspberry Pi, and the port to 5259, which is the default.
Hit Connect and set the Sample type to Int8 to halve the required network bandwidth. You can use the Compression option to drop network bandwidth further if you don't mind a little more load on the client and server.
You should have an option for Source once connected, where you tell the server to use RTL-SDR from the dropdown, then choose your dongle from the dropdown underneath.
Nearly playtime!
Server Start on Reboot
You don't want to be running that command manually every time you want to connect, so to have the server start on reboot you'll need a systemd service:
sudo nano /etc/systemd/system/sdrpp.service
Chuck this in it:
[Unit]
Description=SDR++ Server
After=network.target
[Service]
User=sdrpp
Group=sdrpp
WorkingDirectory=/usr/bin
ExecStart=/usr/bin/sdrpp --server
ExecStop=/bin/kill -s SIGTERM $MAINPID
Restart=on-failure
RestartSec=5
StandardOutput=journal
StandardError=journal
[Install]
WantedBy=multi-user.target
Then enable it and reboot to make sure it does what we expect:
sudo systemctl daemon-reload
sudo systemctl enable sdrpp.service
sudo reboot
I found that quitting and reloading the local SDR++ client was necessary after having been attached to the server while testing, but subsequently it was completely fine.
Browse those airwaves!