SoapySDR

The SoapySDR library is an independent SDR support library that enables welle.io to use a variety of SDR devices. Currently, the SoapySDR input has been tested with the LimeSDR, RTL-SDR, Ettus USRP and the HackRF boards.

SoapySDR will add support for any SDR that allows tuning into the needed frequencies and is supported by a SoapySDR Driver. In addition to that, it adds support for all SDRs that are supported by gr-osmosdr and Ettus uhd via the SoapyOsmo and SoapyUHD Drivers.

Any supported SDR can also be accessed over the Network via SoapyRemote.

Windows set up

There is no windows support yet, but could be added since SoapySDR supports that platform.

Linux set up

SoapySDR itself does not contain drivers for specific boards. To add support for a board, one needs to install SoapySDR first, and then install additional dependencies for each desired board (e.g. LimeSuite for the LimeSDR, SoapyHackRF for the HackRF, SoapyAirspy for the AirSpy and so on).

  1. SoapySDR itself from https://github.com/pothosware/SoapySDR
  2. The plugin for each desired board, e.g. LimeSuite for the LimeSDR from https://github.com/myriadrf/LimeSuite

To verify that both SoapySDR and the desired bindings are properly installed, check that the following command finds the board:

SoapySDRUtil --make

For the LimeSDR connect your receiving antenna to the RX1_W port.

Then compile welle.io with soapysdr support enabled in the project file welle.io.pro or -DSOAPYSDR=1 when building with CMake. Run welle.io with the -d soapysdr option.

Example Configuration (HackRF)

You need to fill out all the fields (Antenna, Clock source, Driver arguments) in the configuration dialog for SoapySDR. To check for valid configuration values run e.g. SoapySDRUtil --probe="driver=hackrf" (HackRF in my case):

$ SoapySDRUtil --probe="driver=hackrf"
(...)
----------------------------------------------------
-- Device identification
----------------------------------------------------
  driver=HackRF
  hardware=HackRF One
  clock source=internal
(...)
----------------------------------------------------
-- RX Channel 0
----------------------------------------------------
  Full-duplex: NO
  Supports AGC: NO
  Stream formats: CS8, CS16, CF32, CF64
  Native format: CS8 [full-scale=128]
  Stream args:
     * Buffer Count - Number of buffers per read.
       [key=buffers, units=buffers, default=15, type=int]
  Antennas: TX/RX
(...)

The corresponding values are entered in your SoapySDR dialog and you’re ready to start. Please make sure you enter the full driver argument string driver=hackrf into the field.

Known limitations

  • Automatic gain mode behaves erratically.
  • Windows support is missing.