SDRPlay RSP1A - Debian Linux ------------------------------------------------------------------------------- I started by Connecting the RSP1a to one of the free USB interfaces (only USB3 free) on my FUJITSU ESPRIMO Q556/2 Check if the device is detected; run dmesg -wT [Mon Mar 24 12:34:24 2025] usb 1-1: USB disconnect, device number 4 [Mon Mar 24 12:35:24 2025] usb 1-2: new high-speed USB device number 5 using xhci_hcd [Mon Mar 24 12:35:24 2025] usb 1-2: New USB device found, idVendor=1df7, idProduct=3010, bcdDevice= 2.00 [Mon Mar 24 12:35:24 2025] usb 1-2: New USB device strings: Mfr=0, Product=0, SerialNumber=0 run lsusb Bus 001 Device 005: ID 1df7:3010 SDRplay RSP2/RSP2pro Checking udev information: run: cat /etc/udev/rules.d/66-sdrplay.rules SUBSYSTEM=="usb",ENV{DEVTYPE}=="usb_device",ATTRS{idVendor}=="1df7",ATTRS{idProduct}=="2500",MODE:="0666" SUBSYSTEM=="usb",ENV{DEVTYPE}=="usb_device",ATTRS{idVendor}=="1df7",ATTRS{idProduct}=="3000",MODE:="0666" SUBSYSTEM=="usb",ENV{DEVTYPE}=="usb_device",ATTRS{idVendor}=="1df7",ATTRS{idProduct}=="3010",MODE:="0666" SUBSYSTEM=="usb",ENV{DEVTYPE}=="usb_device",ATTRS{idVendor}=="1df7",ATTRS{idProduct}=="3020",MODE:="0666" SUBSYSTEM=="usb",ENV{DEVTYPE}=="usb_device",ATTRS{idVendor}=="1df7",ATTRS{idProduct}=="3030",MODE:="0666" SUBSYSTEM=="usb",ENV{DEVTYPE}=="usb_device",ATTRS{idVendor}=="1df7",ATTRS{idProduct}=="3040",MODE:="0666" SUBSYSTEM=="usb",ENV{DEVTYPE}=="usb_device",ATTRS{idVendor}=="1df7",ATTRS{idProduct}=="3050",MODE:="0666" SUBSYSTEM=="usb",ENV{DEVTYPE}=="usb_device",ATTRS{idVendor}=="1df7",ATTRS{idProduct}=="3060",MODE:="0666" Based on this, the device should be accessible, if this isn't present create the file and afterwards run: sudo udevadm control --reload-rules && sudo udevadm trigger Lets see if the Soapy sdrplay support is available, in this example you will see version 0.8 when using a SatNOGS install this will be version 0.7 so disregard that 0.8 information. run: dpkg -l | grep Soapy | grep module ii soapysdr0.8-module-airspy:amd64 0.2.0-4+b2 amd64 Airspy device support for SoapySDR ii soapysdr0.8-module-all:amd64 0.8.1-5+b2 amd64 All device support for SoapySDR (metapackage) ii soapysdr0.8-module-audio:amd64 0.1.1-6+b1 amd64 Audio device support for SoapySDR ii soapysdr0.8-module-bladerf:amd64 0.4.2-1 amd64 bladeRF device support for SoapySDR ii soapysdr0.8-module-hackrf:amd64 0.3.4-2 amd64 HackRF device support for SoapySDR ii soapysdr0.8-module-lms7:amd64 23.11.0+dfsg-3+b2 amd64 Lime Microsystems LMS7 device support for SoapySDR ii soapysdr0.8-module-mirisdr:amd64 0.2.5-8+b5 amd64 Mirics SDR device support for SoapySDR ii soapysdr0.8-module-osmosdr:amd64 0.2.5-8+b5 amd64 OsmoSDR device support for SoapySDR ii soapysdr0.8-module-redpitaya:amd64 0.1.1-5+b2 amd64 RedPitaya device support for SoapySDR ii soapysdr0.8-module-remote:amd64 0.5.2-4+b2 amd64 Use SoapySDR devices over network (client module) ii soapysdr0.8-module-rfspace:amd64 0.2.5-8+b5 amd64 RFSpace device support for SoapySDR ii soapysdr0.8-module-rtlsdr:amd64 0.3.3-1+b4 amd64 RTL-SDR device support for SoapySDR ii soapysdr0.8-module-uhd:amd64 0.4.1-5 amd64 UHD device support for SoapySDR Lets see if there is a sdrplay soapy driver available in the repository run: apt-cache search soapysdr0.8-module soapysdr0.8-module-xtrx - XTRX device support for SoapySDR soapysdr0.8-module-lms7 - Lime Microsystems LMS7 device support for SoapySDR soapysdr0.8-module-airspy - Airspy device support for SoapySDR soapysdr0.8-module-audio - Audio device support for SoapySDR soapysdr0.8-module-bladerf - bladeRF device support for SoapySDR soapysdr0.8-module-hackrf - HackRF device support for SoapySDR soapysdr0.8-module-mirisdr - Mirics SDR device support for SoapySDR soapysdr0.8-module-osmosdr - OsmoSDR device support for SoapySDR soapysdr0.8-module-rfspace - RFSpace device support for SoapySDR soapysdr0.8-module-redpitaya - RedPitaya device support for SoapySDR soapysdr0.8-module-remote - Use SoapySDR devices over network (client module) soapysdr0.8-module-rtlsdr - RTL-SDR device support for SoapySDR soapysdr0.8-module-all - All device support for SoapySDR (metapackage) soapysdr0.8-module-uhd - UHD device support for SoapySDR And as you can see, there isn't so we need to compile it. With `SoapySDRUtil --info` you can also check all the modules present run: SoapySDRUtil --info ###################################################### ## Soapy SDR -- the SDR abstraction library ## ###################################################### Lib Version: v0.8.1-5+b2 API Version: v0.8.0 ABI Version: v0.8 Install root: /usr Search path: /usr/lib/x86_64-linux-gnu/SoapySDR/modules0.8 Search path: /usr/local/lib/x86_64-linux-gnu/SoapySDR/modules0.8 (missing) Search path: /usr/local/lib/SoapySDR/modules0.8 (missing) Module found: /usr/lib/x86_64-linux-gnu/SoapySDR/modules0.8/libHackRFSupport.so (0.3.4) Module found: /usr/lib/x86_64-linux-gnu/SoapySDR/modules0.8/libLMS7Support.so (23.11.0) Module found: /usr/lib/x86_64-linux-gnu/SoapySDR/modules0.8/libPlutoSDRSupport.so (0.2.2-9733269) Module found: /usr/lib/x86_64-linux-gnu/SoapySDR/modules0.8/libRedPitaya.so (0.1.1) Module found: /usr/lib/x86_64-linux-gnu/SoapySDR/modules0.8/libairspySupport.so (0.2.0) Module found: /usr/lib/x86_64-linux-gnu/SoapySDR/modules0.8/libaudioSupport.so (0.1.1) Module found: /usr/lib/x86_64-linux-gnu/SoapySDR/modules0.8/libbladeRFSupport.so (0.4.2) Module found: /usr/lib/x86_64-linux-gnu/SoapySDR/modules0.8/libmiriSupport.so (0.2.5) Module found: /usr/lib/x86_64-linux-gnu/SoapySDR/modules0.8/libosmosdrSupport.so (0.2.5) Module found: /usr/lib/x86_64-linux-gnu/SoapySDR/modules0.8/libremoteSupport.so (0.5.2) Module found: /usr/lib/x86_64-linux-gnu/SoapySDR/modules0.8/librfspaceSupport.so (0.2.5) Module found: /usr/lib/x86_64-linux-gnu/SoapySDR/modules0.8/librtlsdrSupport.so (0.3.3) Module found: /usr/lib/x86_64-linux-gnu/SoapySDR/modules0.8/libuhdSupport.so (0.4.1) Available factories... airspy, audio, bladerf, hackrf, lime, miri, osmosdr, plutosdr, redpitaya, remote, rfspace, rtlsdr, uhd Available converters... - CF32 -> [CF32, CS16, CS8, CU16, CU8] - CS16 -> [CF32, CS16, CS8, CU16, CU8] - CS32 -> [CS32] - CS8 -> [CF32, CS16, CS8, CU16, CU8] - CU16 -> [CF32, CS16, CS8] - CU8 -> [CF32, CS16, CS8] - F32 -> [F32, S16, S8, U16, U8] - S16 -> [F32, S16, S8, U16, U8] - S32 -> [S32] - S8 -> [F32, S16, S8, U16, U8] - U16 -> [F32, S16, S8] - U8 -> [F32, S16, S8] So we need to download, compile and install the soapy sdrplay module. before we can compile this module we need to make sure if the package dependencies are present. we need: libsoapysdr-dev build-essential cmake Check with dpkg -l | grep -e cmake -e build-essential -e libsoapysdr-dev -e git run: dpkg -l | grep -e cmake -e build-essential -e libsoapysdr-dev -e git ii git 1:2.47.2-0.1 amd64 fast, scalable, distributed revision control system ii build-essential 12.12 amd64 Informational list of build-essential packages ii cmake 3.31.6-1 amd64 cross-platform, open-source make system ii cmake-data 3.31.6-1 all CMake data files (modules, templates and documentation) ii libsoapysdr-dev:amd64 0.8.1-5+b2 amd64 SoapySDR library development files If one ore more are missing, we need to install them with sudo apt install In this example all packages are there, so now we can compile the SDRPlay soapy module run: git clone https://github.com/pothosware/SoapySDRPlay3.git run: cd SoapySDRPlay3 run: mkdir build run: cd build First step: cmake -Wno-dev ../ run: cmake -Wno-dev ../ -- The CXX compiler identification is GNU 14.2.0 -- Detecting CXX compiler ABI info -- Detecting CXX compiler ABI info - done -- Check for working CXX compiler: /usr/bin/c++ - skipped -- Detecting CXX compile features -- Detecting CXX compile features - done -- Build type not specified: defaulting to release. -- libsdrplay not found. CMake Error at CMakeLists.txt:16 (message): SDRplay development files not found... -- Configuring incomplete, errors occurred! And we have an error, the system is missing libsdrplay. This is part of the closed source SDRPlay API and we need to download and install it from their website. I move to a separate directory to install the SDRPlay API, in my case cd ~/tmp Lets visit https://www.sdrplay.com/api/ and download the Linux (x64 & ARM32/ARM64) (3.15) version after we download the file we need to make it executable with the following command: run: sudo chmod 755 SDRplay_RSP_API-Linux-3.15.2.run now we can run it with the following command: ./SDRplay_RSP_API-Linux-3.15.2.run run: ./SDRplay_RSP_API-Linux-3.15.2.run Here some output from the command: Verifying archive integrity... All good. Uncompressing SDRplay RSP API Install Package V3.15 (installer v2) SDRplay API 3.15 Installation ============================= This installation requires to either be run as root, or it will request root access through the sudo program. This is required to install the daemon into the system files. Press RETURN to view the license agreement Press y and RETURN to accept the license agreement and continue with the installation, or press n and RETURN to exit the installer [y/n]y A copy of the license agreement can be found here: ~/sdrplay_license.txt Architecture reported as being 64 bit System reports 64 bit files found System is also setup to produce 64 bit files Architecture reports machine as being x86_64 compliant Checking for root permissions. You may be prompted for your password... The rest of the installation will continue with root permission... This API requires the following system dependencies... libusb and lidudev If the installer cannot detect the presence of these, you will have the option to continue and you will need to install them Checking for package tools... apt found Checking for packages... libusb-1.0 found libudev1 found Udev directory found, adding rules...rules added Adding SDRplay devices to the local hardware database...Done USB name database not found, continuing... Installing API files, the default locations are... API service : /opt/sdrplay_api API header files : /usr/local/include API shared library : /usr/local/lib Daemon start scripts : /etc/systemd/system Daemon start system : SystemD To continue the installation with these defaults press y and RETURN or press n and RETURN to change them [y/n]y Cleaning old API files...Done. Installing /usr/local/lib/libsdrplay_api.so.3.15...Done Installing header files in /usr/local/include...Done Installing API Service in /opt/sdrplay_api...Done Installing Service scripts and starting daemon...Created symlink '/etc/systemd/system/multi-user.target.wants/sdrplay.service' → '/etc/systemd/system/sdrplay.service'. Done The API Service has been installed and started. After the installation has finished, please reboot this device. To start and stop the API service, use the following commands... sudo systemctl start sdrplay sudo systemctl stop sdrplay If supported on your system, lsusb will now show the RSP name SDRplay API 3.15 Installation Finished Lets see if the SDRPlay service is running: run: systemctl status sdrplay.service ● sdrplay.service - SDRplay API Service Loaded: loaded (/etc/systemd/system/sdrplay.service; enabled; preset: enab> Active: active (running) since Mon 2025-03-24 13:03:41 CET; 29s ago Invocation: 279512e3beb34040a6baac9dacd33f53 Main PID: 266044 (sdrplay_apiServ) Tasks: 3 (limit: 18786) Memory: 524K (peak: 1.6M) CPU: 254ms CGroup: /system.slice/sdrplay.service └─266044 /opt/sdrplay_api/sdrplay_apiService And as you can see, it is. Now back to the build directory To make sure the library is in the dynamic linker cache we run `sudo ldconfig` and afterwards we run the first compile command again. run cmake -Wno-dev ../ -- Build type not specified: defaulting to release. -- Found libsdrplay: /usr/local/include, /usr/local/lib/libsdrplay_api.so -- LIBSDRPLAY_INCLUDE_DIRS - /usr/local/include -- LIBSDRPLAY_LIBRARIES - /usr/local/lib/libsdrplay_api.so -- Found Git: /usr/bin/git (found version "2.47.2") -- Module sdrPlaySupport configured with version: 0.5.2-8ef31b2 -- Configuring done (0.0s) -- Generating done (0.0s) -- Build files have been written to: ~/source/git/pothosware/SoapySDRPlay3/build Now all looks fine run: make [ 16%] Building CXX object CMakeFiles/sdrPlaySupport.dir/Registration.cpp.o [ 33%] Building CXX object CMakeFiles/sdrPlaySupport.dir/sdrplay_api.cpp.o [ 50%] Building CXX object CMakeFiles/sdrPlaySupport.dir/Settings.cpp.o [ 66%] Building CXX object CMakeFiles/sdrPlaySupport.dir/Streaming.cpp.o [ 83%] Building CXX object CMakeFiles/sdrPlaySupport.dir/Version.cpp.o [100%] Linking CXX shared module libsdrPlaySupport.so [100%] Built target sdrPlaySupport All looking good In my case all Soapy modules are install in /usr/lib/x86_64-linux-gnu/SoapySDR/modules0.8 this can differ if you are on a Raspberry Pi or as mentioned before, have Soapy0.7 For now I just copy the newly compiled sdrplay library in this location: run: sudo cp libsdrPlaySupport.so /usr/lib/x86_64-linux-gnu/SoapySDR/modules0.8 Lets chek if it is there and has the correct security values. run: ls -ltra /usr/lib/x86_64-linux-gnu/SoapySDR/modules0.8/libsdrPlaySupport.so -rwxr-xr-x 1 root root 175016 Mar 24 13:12 /usr/lib/x86_64-linux-gnu/SoapySDR/modules0.8/libsdrPlaySupport.so It doesn't need the execution bits so lets change these run: sudo chmod 644 /usr/lib/x86_64-linux-gnu/SoapySDR/modules0.8/libsdrPlaySupport.so Lets see if SoapySDRUtil --info is detecting the new module; run: SoapySDRUtil --info Module found: /usr/lib/x86_64-linux-gnu/SoapySDR/modules0.8/libsdrPlaySupport.so (0.5.2-8ef31b2) and yes, there it is Now lets see if we can probe and contact the SDRPlay, this will be an indication that the device is useable for other software on the system. run: SoapySDRUtil --probe="driver=sdrplay" ###################################################### ## Soapy SDR -- the SDR abstraction library ## ###################################################### Probe device driver=sdrplay [INFO] devIdx: 0 [INFO] SerNo: 1808027321 [INFO] hwVer: 2 [INFO] rspDuoMode: 0 [INFO] tuner: 1 [INFO] rspDuoSampleFreq: 0.000000 ---------------------------------------------------- -- Device identification ---------------------------------------------------- driver=SDRplay hardware=RSP2 sdrplay_api_api_version=3.150000 sdrplay_api_hw_version=2 ---------------------------------------------------- -- Peripheral summary ---------------------------------------------------- Channels: 1 Rx, 0 Tx Timestamps: NO Other Settings: * RF Gain Select - RF Gain Select [key=rfgain_sel, default=4, type=string, options=(0, 1, 2, 3, 4, 5, 6, 7, 8)] * IQ Correction - IQ Correction Control [key=iqcorr_ctrl, default=true, type=bool] * AGC Setpoint - AGC Setpoint (dBfs) [key=agc_setpoint, default=-30, type=int, range=[-60, 0]] * ExtRef Enable - External Reference Control [key=extref_ctrl, default=true, type=bool] * BiasT Enable - BiasT Control [key=biasT_ctrl, default=true, type=bool] * RfNotch Enable - RF Notch Filter Control [key=rfnotch_ctrl, default=true, type=bool] ---------------------------------------------------- -- RX Channel 0 ---------------------------------------------------- Full-duplex: NO Supports AGC: YES Stream formats: CS16, CF32 Native format: CS16 [full-scale=32767] Antennas: Antenna A, Antenna B, Hi-Z Corrections: DC removal Full gain range: [0, 47] dB IFGR gain range: [20, 59] dB RFGR gain range: [0, 8] dB Full freq range: [0.001, 2000] MHz RF freq range: [0.001, 2000] MHz CORR freq range: MHz Sample rates: 0.0625, 0.096, 0.125, 0.192, 0.25, 0.384, 0.5, 0.768, 1, [2, 10.66] MSps Filter bandwidths: 0.2, 0.3, 0.6, 1.536, 5, 6, 7, 8 MHz So we have confirmation and now all the basic preparation are done and other software components can use the SDRPlay SDR device.