Notes to get RSP1 working on Linux and macOS using FOSS drivers (2025)
Please use a mainstream Linux distribution like Ubuntu 24.04 LTS (or later) or the latest Raspberry Pi OS.
Using a Raspberry Pi is NOT recommended as it has quite a bit of power supply noise on the USB ports, which reduces the performance of the connected SDR.
On Linux, add the following lines to the /etc/modprobe.d/blacklist.conf
file
blacklist sdr_msi3101
blacklist msi001
blacklist msi2500
Execute the following command:
sudo systemctl restart systemd-modules-load.service
Install dependencies:
sudo apt-get install libsoapysdr0.8-dev libsoapysdr0.8 libsoapysdr-dev \
soapysdr-tools build-essential sox cmake libusb-1.0-0-dev libsox-fmt-all \
wsjtx pulseaudio-utils git vim fluxbox xterm tightvncserver
NB: Do NOT install the official SDRplay crappy software.
Remove the problematic mirisdr
stuff:
sudo dpkg -r soapysdr0.8-module-mirisdr soapysdr0.8-module-all \
soapysdr0.8-module-mirisdr:amd64
Install the FOSS driver and the interface layer:
mkdir -p ~/repos
cd ~/repos
git clone https://github.com/ericek111/libmirisdr-5.git
cd libmirisdr-5 && cmake . && make -j4 && sudo make install
sudo mkdir -p /usr/local/lib/SoapySDR/modules0.8
sudo cp libmirisdr.so* /usr/local/lib/SoapySDR/modules0.8
cd ~/repos
git clone https://github.com/ericek111/SoapyMiri.git
cd SoapyMiri && cmake . && make -j4 && sudo make install
Set up permissions:
$ lsusb | grep SDR
Bus 001 Device 002: ID 1df7:2500 SDRplay RSP1
$ sudo vim /etc/udev/rules.d/66-mirics.rules
SUBSYSTEM=="usb",ENV{DEVTYPE}=="usb_device",ATTRS{idVendor}=="1df7", \
ATTRS{idProduct}=="2500", MODE="666", GROUP="plugdev", ENV{MTP_NO_PROBE}="1"
sudo udevadm control --reload-rules && sudo udevadm trigger
(Re)-connect the RSP1 SDR to the computer, and then execute the following command:
SoapySDRUtil --probe
See if the SDR is visible now.
You are done! You can run Gqrx SDR
and it should see the RSP1 SDR now.
macOS Sequoia
Execute the following steps:
brew install soapysdr
mkdir -p ~/repos
cd ~/repos
git clone https://github.com/ericek111/libmirisdr-5.git
cd libmirisdr-5 && cmake . && make -j4 && sudo make install
sudo mkdir -p /opt/homebrew/lib/SoapySDR/modules0.8
sudo cp libmirisdr.4.* /opt/homebrew/lib/SoapySDR/modules0.8
cd ~/repos
git clone https://github.com/ericek111/SoapyMiri.git
cd SoapyMiri && cmake . && make -j4 && sudo make install
Usage
SoapySDRUtil --probe
pactl load-module module-null-sink sink_name=Virtual0
~/repos/libmirisdr-5/src/miri_fm -e 2 -g 7 -f 28074000 -M usb \
-w 8000000 | play -t raw -r24k -es -b 16 -c 1 -V1 - lowpass 3k
On macOS (at least), the -e 2
helps a lot with USB stability! With -e 2
things are working smoothly in Jan-2025 on macOS and Linux!
Setup Headless Hopping Skimmer
$ vim ~/.asoundrc
pcm.!default {
type hw
card 2
}
ctl.!default {
type hw
card 2
}
On RPi systems, set dtparam=audio=off
in /boot/firmware/config.txt
file.
pi@radio:~$ aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: vc4hdmi0 [vc4-hdmi-0], device 0: MAI PCM i2s-hifi-0 [MAI PCM i2s-hifi-0]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 1: vc4hdmi1 [vc4-hdmi-1], device 0: MAI PCM i2s-hifi-0 [MAI PCM i2s-hifi-0]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 2: Loopback [Loopback], device 0: Loopback PCM [Loopback PCM]
Subdevices: 7/8
Subdevice #0: subdevice #0
Subdevice #1: subdevice #1
Subdevice #2: subdevice #2
Subdevice #3: subdevice #3
Subdevice #4: subdevice #4
Subdevice #5: subdevice #5
Subdevice #6: subdevice #6
Subdevice #7: subdevice #7
card 2: Loopback [Loopback], device 1: Loopback PCM [Loopback PCM]
Subdevices: 8/8
Subdevice #0: subdevice #0
Subdevice #1: subdevice #1
Subdevice #2: subdevice #2
Subdevice #3: subdevice #3
Subdevice #4: subdevice #4
Subdevice #5: subdevice #5
Subdevice #6: subdevice #6
Subdevice #7: subdevice #7
...
Add the following lines to /etc/rc.local
file:
pi@radio:~$ cat /etc/rc.local
#!/bin/bash
sudo modprobe snd-aloop enable=1,1,1 index=1,2,3
sudo -H -u pi /usr/bin/tightvncserver &
sudo -H -u pi bash -c "cd ~/repos/libmirisdr-5/src && ~/repos/libmirisdr-5/src/miri_fm -e 2 -g 7 -f 28074000 -M usb -w 8000000 | play -t raw -r24k -es -b 16 -c 1 -V1 - lowpass 3k &"
chmod +x /etc/rc.local
$ cat ~/.vnc/xstartup
#!/bin/sh
xrdb "$HOME/.Xresources"
fluxbox &
xterm &
xsetroot -solid grey
#x-terminal-emulator -geometry 80x24+10+10 -ls -title "$VNCDESKTOP Desktop" &
#x-window-manager &
# Fix to make GNOME work
export XKL_XMODMAP_DISABLE=1
/etc/X11/Xsession
Set up the VNC password (once):
vncpasswd
In WSJT-X do the following:
File > Settings > Audio, Input Set to "plughw:CARD=Loopback,DEV=1", "Left"
File > Settings > Audio, Output Set to "plughw:CARD=Loopback1,DEV=0", "Both"
These WSJT-X notes are borrowed from https://github.com/afarhan/sbitx/blob/main/wsjtx_notes.txt project.