Repository files navigation

SDR++, The bloat-free SDR software

Screenshot SDR++ is a cross-platform and open source SDR software with the aim of being bloat free and simple to use.

Build

Features

  • Multi VFO
  • Wide hardware support (both through SoapySDR and dedicated modules)
  • SIMD accelerated DSP
  • Cross-platform (Windows, Linux, OSX and BSD)
  • Full waterfall update when possible. Makes browsing signals easier and more pleasant
  • Modular design (easily write your own plugins)

Installing

Windows

Download the latest release from the Releases page and extract to the directory of your choice.

To create a desktop shortcut, rightclick the exe and select Send to -> Desktop (create shortcut), then, rename the shortcut on the desktop to whatever you want.

Linux

Debian-based (Ubuntu, Mint, etc)

Download the latest release from the Releases page and extract to the directory of your choice.

Then, run:

sudo apt install libfftw3-dev libglfw3-dev libglew-dev libvolk2-dev libsoapysdr-dev libairspyhf-dev libiio-dev libad9361-dev librtaudio-dev libhackrf-dev
sudo dpkg -i sdrpp_debian_amd64.deb

If libvolk2-dev is not available, use libvolk1-dev.

Arch-based

Install the latest release from the sdrpp-git AUR package

Other

There are currently no existing packages for other distributions, for these systems you'll have to build from source.

MacOS

TODO

BSD

There are currently no BSD packages, refer to Building on Linux / BSD for instructions on building from source.

Building on Windows

The preferred IDE is VS Code in order to have similar development experience across platforms and to build with CMake using the command line.

Install dependencies

  • cmake
  • vcpkg
  • PothosSDR (This will install libraries for most SDRs)
  • RtAudio (You have to build and install it in C:/Program Files (x86)/RtAudio/)

After this, install the following dependencies using vcpkg:

  • fftw3
  • glfw3
  • glew

You are probably going to build in 64 bit so make sure vcpkg installs the correct versions using .\vcpkg.exe install <package>:x64-windows

Building using the command line

IMPORTANT: Replace <vcpkg install directory> with vcpkg's install directory.

mkdir build
cd build
cmake .. "-DCMAKE_TOOLCHAIN_FILE=<vcpkg install directory>/scripts/buildsystems/vcpkg.cmake" -G "Visual Studio 16 2019"
cmake --build . --config Release

Running for development

Create a new configuration root directory

./create_root.bat

This will create the root_dev directory that will be used to save the configs of sdrpp and the modules.

You will next need to edit the root_dev/config.json file to point to the modules that were built. If the file is missing in your folder run the application once and it will create one with default value -- see later on how to run the application.

Run SDR++ from the command line

From the top directory, you can simply run:

./build/Release/sdrpp.exe -r root_dev -s

Or, if you wish to run from the build directory e.g. build/Release and adapt the relative path to the root_dev folder:

./sdrpp.exe -r ../../root_dev -s

The optional -s argument is for keeping the console active in order to see the error messages.

Because all the paths are relative, for the rest of the command line instructions we are going to assume you are running from the top directory using the former command. As mentioned previously you need to edit root_dev/config.json to add the modules that were built. From the default configuration file you need to add the paths in the modules section. Add to this list all the modules you wish to use.

..."modules": [
"./build/radio/Release/radio.dll",
"./build/recorder/Release/recorder.dll",
"./build/rtl_tcp_source/Release/rtl_tcp_source.dll",
"./build/soapy_source/Release/soapy_source.dll",
"./build/audio_sink/Release/audio_sink.dll"
]
...

You also need to change the location of the resource and module directories, for development, I recommend:

..."modulesDirectory": "root_dev/modules",
..."resourcesDirectory": "root_dev/res",
...

Remember that these paths will be relative to the run directory.

Installing SDR++

If you choose to run SDR++ for development, you do not need this step. First, copy over the exe and DLLs from build/Release/ to root_dev.

Next you need to copy over all the modules that were compiled. To do so, copy the DLL file of the module (located in its build folder given below) to the root_dev/modules directory and other DLLs (that do not have the exact name of the module) to the root_dev directory.

The modules built will be some of the following (Repeat the instructions above for all you wish to use):

  • build/radio/Release/
  • build/recorder/Release/
  • build/rtl_tcp_source/Release/
  • build/spyserver_source/Release/
  • build/soapy_source/Release/
  • build/airspyhf_source/Release/
  • build/plutosdr_source/Release/
  • build/audio_sink/Release/

Building on Linux / BSD

Select which modules you wish to build

Depending on which module you want to build, you will need to install some additional dependencies. Here are listed every module that requires addition dependencies. If a module enabled by default and you do not wish to install a perticular dependency (or can't, eg. the BladeRF module on Debian Buster), you can disable it using the module parameter listed in the table below

  • soapy_source: SoapySDR + drivers for each SDRs (see SoapySDR docs)
  • airspyhf_source: libairspyhf
  • plutosdr_source: libiio, libad9361
  • audio_sink: librtaudio-dev

Install dependencies

  • cmake
  • fftw3
  • glfw
  • glew
  • libvolk

Next install dependencies based on the modules you wish to build (See previous step)

Note: make sure you're using GCC 8 or later as older versions do not have std::filesystem built-in.

Building

replace <N> with the number of threads you wish to use to build

mkdir build
cd build
cmake ..
make -j<N>

Create a new root directory

sh ./create_root.sh

Running for development

If you wish to install SDR++, skip to the next step

First run SDR++ from the build directory to generate a default config file

./sdrpp -r ../root_dev/

Then, you will need to edit the root_dev/config.json file to point to the modules that were built. Here is an example of what it should look like:

..."modules": [
"./build/radio/radio.so",
"./build/recorder/recorder.so",
"./build/rtl_tcp_source/rtl_tcp_source.so",
"./build/soapy_source/soapy_source.so",
"./build/audio_sink/audio_sink.so"
]
...

Note: You can generate this list automatically by running find . | grep '\.so' | sed 's/^/"/' | sed 's/$/",/' | sed '/sdrpp_core.so/d' in the build directory.

You also need to change the location of the resource and module directories, for development, I recommend:

..."modulesDirectory": "./root_dev/modules",
..."resourcesDirectory": "./root_dev/res",
...

Remember that these paths will be relative to the run directory.

Of course, remember to add entries for all modules that were built and that you wish to use.

Next, from the top directory, you can simply run:

./build/sdrpp -r root_dev

Or, if you wish to run from the build directory, you will need to correct the directories in the config.json file, and then run:

./sdrpp -r ../root_dev

Installing SDR++

To install SDR++, run the following command in your build folder:

sudo make install

Module List

Not all modules are built by default. I decided to disable the build of those with large libraries, libraries that can't be installed through the package manager (or pothos) and those that are still in beta. Modules in beta are still included in releases for the most part but not enabled in SDR++ (need to be instantiated).

Sources

NameStageDependenciesOptionBuilt by defaultBuilt in ReleaseEnabled in SDR++ by default
airspy_sourceWorkinglibairspyOPT_BUILD_AIRSPY_SOURCE
airspyhf_sourceWorkinglibairspyhfOPT_BUILD_AIRSPYHF_SOURCE
bladerf_sourceWorkinglibbladeRFOPT_BUILD_BLADERF_SOURCE⚠️ (not Debian Buster)
file_sourceWorking-OPT_BUILD_FILE_SOURCE
hackrf_sourceWorkinglibhackrfOPT_BUILD_HACKRF_SOURCE
limesdr_sourceWorkingliblimesuiteOPT_BUILD_LIMESDR_SOURCE
sddc_sourceUnfinished-OPT_BUILD_SDDC_SOURCE
rtl_sdr_sourceWorkinglibrtlsdrOPT_BUILD_RTL_SDR_SOURCE
rtl_tcp_sourceWorking-OPT_BUILD_RTL_TCP_SOURCE
sdrplay_sourceWorkingSDRplay APIOPT_BUILD_SDRPLAY_SOURCE
soapy_sourceWorkingsoapysdrOPT_BUILD_SOAPY_SOURCE
spyserver_sourceWorking-OPT_BUILD_SPYSERVER_SOURCE
plutosdr_sourceWorkinglibiio, libad9361OPT_BUILD_PLUTOSDR_SOURCE

Sinks

NameStageDependenciesOptionBuilt by defaultBuilt in ReleaseEnabled in SDR++ by default
audio_sinkWorkingrtaudioOPT_BUILD_AUDIO_SINK
network_sinkWorking-OPT_BUILD_NETWORK_SINK
new_portaudio_sinkBetaportaudioOPT_BUILD_NEW_PORTAUDIO_SINK

Decoders

NameStageDependenciesOptionBuilt by defaultBuilt in ReleaseEnabled in SDR++ by default
falcon9_decoderUnfinishedffplayOPT_BUILD_FALCON9_DECODER
m17_decoderBeta-OPT_BUILD_M17_DECODER
meteor_demodulatorWorking-OPT_BUILD_METEOR_DEMODULATOR
radioWorking-OPT_BUILD_RADIO
weather_sat_decoderUnfinished-OPT_BUILD_WEATHER_SAT_DECODER

Misc

NameStageDependenciesOptionBuilt by defaultBuilt in ReleaseEnabled in SDR++ by default
discord_integrationWorking-OPT_BUILD_DISCORD_PRESENCE
frequency_managerWorking-OPT_BUILD_FREQUENCY_MANAGER
recorderWorking-OPT_BUILD_RECORDER
rigctl_serverWorking-OPT_BUILD_RIGCTL_SERVER

Troubleshooting

First, please make sure you're running the latest automated build. If your issue is linked to a bug it is likely that is has already been fixed in later releases

SDR++ crashes then it won't start again no matter what

This is a bug in 1.0.0 that was fixed in 1.0.1

In some cases, if a crash happened while the config was being saved, the config file woul be corrupted and SDR++ would refuse to start because of it.

This has now been fixed. If a config file is corrupted it'll just reset it to its default state.

"hash collision" error when starting

You likely installed the soapysdr-module-all package on Ubuntu/Debian. If not it's still a SoapySDR bug caused by multiple soapy modules coming in conflict. Uninstall anything related to SoapySDR then install soapysdr itself and only the soapy modules you actually need.

"I don't see -insert module name here-, what's going on?"

If the module was included in a later update, it's not enabled in the config. The easiest way to fix this is just to delete the config.json file and let SDR++ recreate it (you will lose your setting relating to the main UI like VFO colors, zoom level and theme). The best option however is to edit the config file to add an instance of the module you wish to have enabled (see the Module List).

SDR++ crashes when stopping a RTL-SDR

This is a bug recently introduced by libusb1.4 To solve, this, simply downgrade to libusb1.3

SDR++ crashes when starting a HackRF

If you also have the SoapySDR module loaded (not necessarily enabled), this is a bug in libhackrf. It's caused by libhackrf not checking if it's already initialized. The solution until a fixed libhackrf version is released is to completely remove the soapy_source module from SDR++. To do this, delete modules/soapy_source.dll on windows or /usr/lib/sdrpp/plugins/soapy_source.so on linux.

Issue not listed here?

If you still have an issue, please open an issue about it or ask on the discord. I'll try to respond as quickly as I can. Please avoid trying to contact me on every platform imaginable thinking I'll respond faster though...

Contributing

Feel free to submit pull requests and report bugs via the GitHub issue tracker. I will soon publish a contributing.md listing the code style to use.

Credits

Patrons

Contributors

Libraries used

About

Cross-Platform SDR Software

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Repository files navigation

SDR++, The bloat-free SDR software

Screenshot SDR++ is a cross-platform and open source SDR software with the aim of being bloat free and simple to use.

Build

Features

  • Multi VFO
  • Wide hardware support (both through SoapySDR and dedicated modules)
  • SIMD accelerated DSP
  • Cross-platform (Windows, Linux, OSX and BSD)
  • Full waterfall update when possible. Makes browsing signals easier and more pleasant
  • Modular design (easily write your own plugins)

Installing

Windows

Download the latest release from the Releases page and extract to the directory of your choice.

To create a desktop shortcut, rightclick the exe and select Send to -> Desktop (create shortcut), then, rename the shortcut on the desktop to whatever you want.

Linux

Debian-based (Ubuntu, Mint, etc)

Download the latest release from the Releases page and extract to the directory of your choice.

Then, run:

sudo apt install libfftw3-dev libglfw3-dev libglew-dev libvolk2-dev libsoapysdr-dev libairspyhf-dev libiio-dev libad9361-dev librtaudio-dev libhackrf-dev
sudo dpkg -i sdrpp_debian_amd64.deb

If libvolk2-dev is not available, use libvolk1-dev.

Arch-based

Install the latest release from the sdrpp-git AUR package

Other

There are currently no existing packages for other distributions, for these systems you'll have to build from source.

MacOS

TODO

BSD

There are currently no BSD packages, refer to Building on Linux / BSD for instructions on building from source.

Building on Windows

The preferred IDE is VS Code in order to have similar development experience across platforms and to build with CMake using the command line.

Install dependencies

  • cmake
  • vcpkg
  • PothosSDR (This will install libraries for most SDRs)
  • RtAudio (You have to build and install it in C:/Program Files (x86)/RtAudio/)

After this, install the following dependencies using vcpkg:

  • fftw3
  • glfw3
  • glew

You are probably going to build in 64 bit so make sure vcpkg installs the correct versions using .\vcpkg.exe install <package>:x64-windows

Building using the command line

IMPORTANT: Replace <vcpkg install directory> with vcpkg's install directory.

mkdir build
cd build
cmake .. "-DCMAKE_TOOLCHAIN_FILE=<vcpkg install directory>/scripts/buildsystems/vcpkg.cmake" -G "Visual Studio 16 2019"
cmake --build . --config Release

Running for development

Create a new configuration root directory

./create_root.bat

This will create the root_dev directory that will be used to save the configs of sdrpp and the modules.

You will next need to edit the root_dev/config.json file to point to the modules that were built. If the file is missing in your folder run the application once and it will create one with default value -- see later on how to run the application.

Run SDR++ from the command line

From the top directory, you can simply run:

./build/Release/sdrpp.exe -r root_dev -s

Or, if you wish to run from the build directory e.g. build/Release and adapt the relative path to the root_dev folder:

./sdrpp.exe -r ../../root_dev -s

The optional -s argument is for keeping the console active in order to see the error messages.

Because all the paths are relative, for the rest of the command line instructions we are going to assume you are running from the top directory using the former command. As mentioned previously you need to edit root_dev/config.json to add the modules that were built. From the default configuration file you need to add the paths in the modules section. Add to this list all the modules you wish to use.

..."modules": [
"./build/radio/Release/radio.dll",
"./build/recorder/Release/recorder.dll",
"./build/rtl_tcp_source/Release/rtl_tcp_source.dll",
"./build/soapy_source/Release/soapy_source.dll",
"./build/audio_sink/Release/audio_sink.dll"
]
...

You also need to change the location of the resource and module directories, for development, I recommend:

..."modulesDirectory": "root_dev/modules",
..."resourcesDirectory": "root_dev/res",
...

Remember that these paths will be relative to the run directory.

Installing SDR++

If you choose to run SDR++ for development, you do not need this step. First, copy over the exe and DLLs from build/Release/ to root_dev.

Next you need to copy over all the modules that were compiled. To do so, copy the DLL file of the module (located in its build folder given below) to the root_dev/modules directory and other DLLs (that do not have the exact name of the module) to the root_dev directory.

The modules built will be some of the following (Repeat the instructions above for all you wish to use):

  • build/radio/Release/
  • build/recorder/Release/
  • build/rtl_tcp_source/Release/
  • build/spyserver_source/Release/
  • build/soapy_source/Release/
  • build/airspyhf_source/Release/
  • build/plutosdr_source/Release/
  • build/audio_sink/Release/

Building on Linux / BSD

Select which modules you wish to build

Depending on which module you want to build, you will need to install some additional dependencies. Here are listed every module that requires addition dependencies. If a module enabled by default and you do not wish to install a perticular dependency (or can't, eg. the BladeRF module on Debian Buster), you can disable it using the module parameter listed in the table below

  • soapy_source: SoapySDR + drivers for each SDRs (see SoapySDR docs)
  • airspyhf_source: libairspyhf
  • plutosdr_source: libiio, libad9361
  • audio_sink: librtaudio-dev

Install dependencies

  • cmake
  • fftw3
  • glfw
  • glew
  • libvolk

Next install dependencies based on the modules you wish to build (See previous step)

Note: make sure you're using GCC 8 or later as older versions do not have std::filesystem built-in.

Building

replace <N> with the number of threads you wish to use to build

mkdir build
cd build
cmake ..
make -j<N>

Create a new root directory

sh ./create_root.sh

Running for development

If you wish to install SDR++, skip to the next step

First run SDR++ from the build directory to generate a default config file

./sdrpp -r ../root_dev/

Then, you will need to edit the root_dev/config.json file to point to the modules that were built. Here is an example of what it should look like:

..."modules": [
"./build/radio/radio.so",
"./build/recorder/recorder.so",
"./build/rtl_tcp_source/rtl_tcp_source.so",
"./build/soapy_source/soapy_source.so",
"./build/audio_sink/audio_sink.so"
]
...

Note: You can generate this list automatically by running find . | grep '\.so' | sed 's/^/"/' | sed 's/$/",/' | sed '/sdrpp_core.so/d' in the build directory.

You also need to change the location of the resource and module directories, for development, I recommend:

..."modulesDirectory": "./root_dev/modules",
..."resourcesDirectory": "./root_dev/res",
...

Remember that these paths will be relative to the run directory.

Of course, remember to add entries for all modules that were built and that you wish to use.

Next, from the top directory, you can simply run:

./build/sdrpp -r root_dev

Or, if you wish to run from the build directory, you will need to correct the directories in the config.json file, and then run:

./sdrpp -r ../root_dev

Installing SDR++

To install SDR++, run the following command in your build folder:

sudo make install

Module List

Not all modules are built by default. I decided to disable the build of those with large libraries, libraries that can't be installed through the package manager (or pothos) and those that are still in beta. Modules in beta are still included in releases for the most part but not enabled in SDR++ (need to be instantiated).

Sources

NameStageDependenciesOptionBuilt by defaultBuilt in ReleaseEnabled in SDR++ by default
airspy_sourceWorkinglibairspyOPT_BUILD_AIRSPY_SOURCE
airspyhf_sourceWorkinglibairspyhfOPT_BUILD_AIRSPYHF_SOURCE
bladerf_sourceWorkinglibbladeRFOPT_BUILD_BLADERF_SOURCE⚠️ (not Debian Buster)
file_sourceWorking-OPT_BUILD_FILE_SOURCE
hackrf_sourceWorkinglibhackrfOPT_BUILD_HACKRF_SOURCE
limesdr_sourceWorkingliblimesuiteOPT_BUILD_LIMESDR_SOURCE
sddc_sourceUnfinished-OPT_BUILD_SDDC_SOURCE
rtl_sdr_sourceWorkinglibrtlsdrOPT_BUILD_RTL_SDR_SOURCE
rtl_tcp_sourceWorking-OPT_BUILD_RTL_TCP_SOURCE
sdrplay_sourceWorkingSDRplay APIOPT_BUILD_SDRPLAY_SOURCE
soapy_sourceWorkingsoapysdrOPT_BUILD_SOAPY_SOURCE
spyserver_sourceWorking-OPT_BUILD_SPYSERVER_SOURCE
plutosdr_sourceWorkinglibiio, libad9361OPT_BUILD_PLUTOSDR_SOURCE

Sinks

NameStageDependenciesOptionBuilt by defaultBuilt in ReleaseEnabled in SDR++ by default
audio_sinkWorkingrtaudioOPT_BUILD_AUDIO_SINK
network_sinkWorking-OPT_BUILD_NETWORK_SINK
new_portaudio_sinkBetaportaudioOPT_BUILD_NEW_PORTAUDIO_SINK

Decoders

NameStageDependenciesOptionBuilt by defaultBuilt in ReleaseEnabled in SDR++ by default
falcon9_decoderUnfinishedffplayOPT_BUILD_FALCON9_DECODER
m17_decoderBeta-OPT_BUILD_M17_DECODER
meteor_demodulatorWorking-OPT_BUILD_METEOR_DEMODULATOR
radioWorking-OPT_BUILD_RADIO
weather_sat_decoderUnfinished-OPT_BUILD_WEATHER_SAT_DECODER

Misc

NameStageDependenciesOptionBuilt by defaultBuilt in ReleaseEnabled in SDR++ by default
discord_integrationWorking-OPT_BUILD_DISCORD_PRESENCE
frequency_managerWorking-OPT_BUILD_FREQUENCY_MANAGER
recorderWorking-OPT_BUILD_RECORDER
rigctl_serverWorking-OPT_BUILD_RIGCTL_SERVER

Troubleshooting

First, please make sure you're running the latest automated build. If your issue is linked to a bug it is likely that is has already been fixed in later releases

SDR++ crashes then it won't start again no matter what

This is a bug in 1.0.0 that was fixed in 1.0.1

In some cases, if a crash happened while the config was being saved, the config file woul be corrupted and SDR++ would refuse to start because of it.

This has now been fixed. If a config file is corrupted it'll just reset it to its default state.

"hash collision" error when starting

You likely installed the soapysdr-module-all package on Ubuntu/Debian. If not it's still a SoapySDR bug caused by multiple soapy modules coming in conflict. Uninstall anything related to SoapySDR then install soapysdr itself and only the soapy modules you actually need.

"I don't see -insert module name here-, what's going on?"

If the module was included in a later update, it's not enabled in the config. The easiest way to fix this is just to delete the config.json file and let SDR++ recreate it (you will lose your setting relating to the main UI like VFO colors, zoom level and theme). The best option however is to edit the config file to add an instance of the module you wish to have enabled (see the Module List).

SDR++ crashes when stopping a RTL-SDR

This is a bug recently introduced by libusb1.4 To solve, this, simply downgrade to libusb1.3

SDR++ crashes when starting a HackRF

If you also have the SoapySDR module loaded (not necessarily enabled), this is a bug in libhackrf. It's caused by libhackrf not checking if it's already initialized. The solution until a fixed libhackrf version is released is to completely remove the soapy_source module from SDR++. To do this, delete modules/soapy_source.dll on windows or /usr/lib/sdrpp/plugins/soapy_source.so on linux.

Issue not listed here?

If you still have an issue, please open an issue about it or ask on the discord. I'll try to respond as quickly as I can. Please avoid trying to contact me on every platform imaginable thinking I'll respond faster though...

Contributing

Feel free to submit pull requests and report bugs via the GitHub issue tracker. I will soon publish a contributing.md listing the code style to use.

Credits

Patrons

Contributors

Libraries used

About

Cross-Platform SDR Software

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

SDR++, The bloat-free SDR software

Screenshot SDR++ is a cross-platform and open source SDR software with the aim of being bloat free and simple to use.

Build

Features

  • Multi VFO
  • Wide hardware support (both through SoapySDR and dedicated modules)
  • SIMD accelerated DSP
  • Cross-platform (Windows, Linux, OSX and BSD)
  • Full waterfall update when possible. Makes browsing signals easier and more pleasant
  • Modular design (easily write your own plugins)

Installing

Windows

Download the latest release from the Releases page and extract to the directory of your choice.

To create a desktop shortcut, rightclick the exe and select Send to -> Desktop (create shortcut), then, rename the shortcut on the desktop to whatever you want.

Linux

Debian-based (Ubuntu, Mint, etc)

Download the latest release from the Releases page and extract to the directory of your choice.

Then, run:

sudo apt install libfftw3-dev libglfw3-dev libglew-dev libvolk2-dev libsoapysdr-dev libairspyhf-dev libiio-dev libad9361-dev librtaudio-dev libhackrf-dev
sudo dpkg -i sdrpp_debian_amd64.deb

If libvolk2-dev is not available, use libvolk1-dev.

Arch-based

Install the latest release from the sdrpp-git AUR package

Other

There are currently no existing packages for other distributions, for these systems you'll have to build from source.

MacOS

TODO

BSD

There are currently no BSD packages, refer to Building on Linux / BSD for instructions on building from source.

Building on Windows

The preferred IDE is VS Code in order to have similar development experience across platforms and to build with CMake using the command line.

Install dependencies

  • cmake
  • vcpkg
  • PothosSDR (This will install libraries for most SDRs)
  • RtAudio (You have to build and install it in C:/Program Files (x86)/RtAudio/)

After this, install the following dependencies using vcpkg:

  • fftw3
  • glfw3
  • glew

You are probably going to build in 64 bit so make sure vcpkg installs the correct versions using .\vcpkg.exe install <package>:x64-windows

Building using the command line

IMPORTANT: Replace <vcpkg install directory> with vcpkg's install directory.

mkdir build
cd build
cmake .. "-DCMAKE_TOOLCHAIN_FILE=<vcpkg install directory>/scripts/buildsystems/vcpkg.cmake" -G "Visual Studio 16 2019"
cmake --build . --config Release

Running for development

Create a new configuration root directory

./create_root.bat

This will create the root_dev directory that will be used to save the configs of sdrpp and the modules.

You will next need to edit the root_dev/config.json file to point to the modules that were built. If the file is missing in your folder run the application once and it will create one with default value -- see later on how to run the application.

Run SDR++ from the command line

From the top directory, you can simply run:

./build/Release/sdrpp.exe -r root_dev -s

Or, if you wish to run from the build directory e.g. build/Release and adapt the relative path to the root_dev folder:

./sdrpp.exe -r ../../root_dev -s

The optional -s argument is for keeping the console active in order to see the error messages.

Because all the paths are relative, for the rest of the command line instructions we are going to assume you are running from the top directory using the former command. As mentioned previously you need to edit root_dev/config.json to add the modules that were built. From the default configuration file you need to add the paths in the modules section. Add to this list all the modules you wish to use.

..."modules": [
"./build/radio/Release/radio.dll",
"./build/recorder/Release/recorder.dll",
"./build/rtl_tcp_source/Release/rtl_tcp_source.dll",
"./build/soapy_source/Release/soapy_source.dll",
"./build/audio_sink/Release/audio_sink.dll"
]
...

You also need to change the location of the resource and module directories, for development, I recommend:

..."modulesDirectory": "root_dev/modules",
..."resourcesDirectory": "root_dev/res",
...

Remember that these paths will be relative to the run directory.

Installing SDR++

If you choose to run SDR++ for development, you do not need this step. First, copy over the exe and DLLs from build/Release/ to root_dev.

Next you need to copy over all the modules that were compiled. To do so, copy the DLL file of the module (located in its build folder given below) to the root_dev/modules directory and other DLLs (that do not have the exact name of the module) to the root_dev directory.

The modules built will be some of the following (Repeat the instructions above for all you wish to use):

  • build/radio/Release/
  • build/recorder/Release/
  • build/rtl_tcp_source/Release/
  • build/spyserver_source/Release/
  • build/soapy_source/Release/
  • build/airspyhf_source/Release/
  • build/plutosdr_source/Release/
  • build/audio_sink/Release/

Building on Linux / BSD

Select which modules you wish to build

Depending on which module you want to build, you will need to install some additional dependencies. Here are listed every module that requires addition dependencies. If a module enabled by default and you do not wish to install a perticular dependency (or can't, eg. the BladeRF module on Debian Buster), you can disable it using the module parameter listed in the table below

  • soapy_source: SoapySDR + drivers for each SDRs (see SoapySDR docs)
  • airspyhf_source: libairspyhf
  • plutosdr_source: libiio, libad9361
  • audio_sink: librtaudio-dev

Install dependencies

  • cmake
  • fftw3
  • glfw
  • glew
  • libvolk

Next install dependencies based on the modules you wish to build (See previous step)

Note: make sure you're using GCC 8 or later as older versions do not have std::filesystem built-in.

Building

replace <N> with the number of threads you wish to use to build

mkdir build
cd build
cmake ..
make -j<N>

Create a new root directory

sh ./create_root.sh

Running for development

If you wish to install SDR++, skip to the next step

First run SDR++ from the build directory to generate a default config file

./sdrpp -r ../root_dev/

Then, you will need to edit the root_dev/config.json file to point to the modules that were built. Here is an example of what it should look like:

..."modules": [
"./build/radio/radio.so",
"./build/recorder/recorder.so",
"./build/rtl_tcp_source/rtl_tcp_source.so",
"./build/soapy_source/soapy_source.so",
"./build/audio_sink/audio_sink.so"
]
...

Note: You can generate this list automatically by running find . | grep '\.so' | sed 's/^/"/' | sed 's/$/",/' | sed '/sdrpp_core.so/d' in the build directory.

You also need to change the location of the resource and module directories, for development, I recommend:

..."modulesDirectory": "./root_dev/modules",
..."resourcesDirectory": "./root_dev/res",
...

Remember that these paths will be relative to the run directory.

Of course, remember to add entries for all modules that were built and that you wish to use.

Next, from the top directory, you can simply run:

./build/sdrpp -r root_dev

Or, if you wish to run from the build directory, you will need to correct the directories in the config.json file, and then run:

./sdrpp -r ../root_dev

Installing SDR++

To install SDR++, run the following command in your build folder:

sudo make install

Module List

Not all modules are built by default. I decided to disable the build of those with large libraries, libraries that can't be installed through the package manager (or pothos) and those that are still in beta. Modules in beta are still included in releases for the most part but not enabled in SDR++ (need to be instantiated).

Sources

NameStageDependenciesOptionBuilt by defaultBuilt in ReleaseEnabled in SDR++ by default
airspy_sourceWorkinglibairspyOPT_BUILD_AIRSPY_SOURCE
airspyhf_sourceWorkinglibairspyhfOPT_BUILD_AIRSPYHF_SOURCE
bladerf_sourceWorkinglibbladeRFOPT_BUILD_BLADERF_SOURCE⚠️ (not Debian Buster)
file_sourceWorking-OPT_BUILD_FILE_SOURCE
hackrf_sourceWorkinglibhackrfOPT_BUILD_HACKRF_SOURCE
limesdr_sourceWorkingliblimesuiteOPT_BUILD_LIMESDR_SOURCE
sddc_sourceUnfinished-OPT_BUILD_SDDC_SOURCE
rtl_sdr_sourceWorkinglibrtlsdrOPT_BUILD_RTL_SDR_SOURCE
rtl_tcp_sourceWorking-OPT_BUILD_RTL_TCP_SOURCE
sdrplay_sourceWorkingSDRplay APIOPT_BUILD_SDRPLAY_SOURCE
soapy_sourceWorkingsoapysdrOPT_BUILD_SOAPY_SOURCE
spyserver_sourceWorking-OPT_BUILD_SPYSERVER_SOURCE
plutosdr_sourceWorkinglibiio, libad9361OPT_BUILD_PLUTOSDR_SOURCE

Sinks

NameStageDependenciesOptionBuilt by defaultBuilt in ReleaseEnabled in SDR++ by default
audio_sinkWorkingrtaudioOPT_BUILD_AUDIO_SINK
network_sinkWorking-OPT_BUILD_NETWORK_SINK
new_portaudio_sinkBetaportaudioOPT_BUILD_NEW_PORTAUDIO_SINK

Decoders

NameStageDependenciesOptionBuilt by defaultBuilt in ReleaseEnabled in SDR++ by default
falcon9_decoderUnfinishedffplayOPT_BUILD_FALCON9_DECODER
m17_decoderBeta-OPT_BUILD_M17_DECODER
meteor_demodulatorWorking-OPT_BUILD_METEOR_DEMODULATOR
radioWorking-OPT_BUILD_RADIO
weather_sat_decoderUnfinished-OPT_BUILD_WEATHER_SAT_DECODER

Misc

NameStageDependenciesOptionBuilt by defaultBuilt in ReleaseEnabled in SDR++ by default
discord_integrationWorking-OPT_BUILD_DISCORD_PRESENCE
frequency_managerWorking-OPT_BUILD_FREQUENCY_MANAGER
recorderWorking-OPT_BUILD_RECORDER
rigctl_serverWorking-OPT_BUILD_RIGCTL_SERVER

Troubleshooting

First, please make sure you're running the latest automated build. If your issue is linked to a bug it is likely that is has already been fixed in later releases

SDR++ crashes then it won't start again no matter what

This is a bug in 1.0.0 that was fixed in 1.0.1

In some cases, if a crash happened while the config was being saved, the config file woul be corrupted and SDR++ would refuse to start because of it.

This has now been fixed. If a config file is corrupted it'll just reset it to its default state.

"hash collision" error when starting

You likely installed the soapysdr-module-all package on Ubuntu/Debian. If not it's still a SoapySDR bug caused by multiple soapy modules coming in conflict. Uninstall anything related to SoapySDR then install soapysdr itself and only the soapy modules you actually need.

"I don't see -insert module name here-, what's going on?"

If the module was included in a later update, it's not enabled in the config. The easiest way to fix this is just to delete the config.json file and let SDR++ recreate it (you will lose your setting relating to the main UI like VFO colors, zoom level and theme). The best option however is to edit the config file to add an instance of the module you wish to have enabled (see the Module List).

SDR++ crashes when stopping a RTL-SDR

This is a bug recently introduced by libusb1.4 To solve, this, simply downgrade to libusb1.3

SDR++ crashes when starting a HackRF

If you also have the SoapySDR module loaded (not necessarily enabled), this is a bug in libhackrf. It's caused by libhackrf not checking if it's already initialized. The solution until a fixed libhackrf version is released is to completely remove the soapy_source module from SDR++. To do this, delete modules/soapy_source.dll on windows or /usr/lib/sdrpp/plugins/soapy_source.so on linux.

Issue not listed here?

If you still have an issue, please open an issue about it or ask on the discord. I'll try to respond as quickly as I can. Please avoid trying to contact me on every platform imaginable thinking I'll respond faster though...

Contributing

Feel free to submit pull requests and report bugs via the GitHub issue tracker. I will soon publish a contributing.md listing the code style to use.

Credits

Patrons

Contributors

Libraries used

About

Cross-Platform SDR Software

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

SDR++, The bloat-free SDR software

Screenshot SDR++ is a cross-platform and open source SDR software with the aim of being bloat free and simple to use.

Build

Features

  • Multi VFO
  • Wide hardware support (both through SoapySDR and dedicated modules)
  • SIMD accelerated DSP
  • Cross-platform (Windows, Linux, OSX and BSD)
  • Full waterfall update when possible. Makes browsing signals easier and more pleasant
  • Modular design (easily write your own plugins)

Installing

Windows

Download the latest release from the Releases page and extract to the directory of your choice.

To create a desktop shortcut, rightclick the exe and select Send to -> Desktop (create shortcut), then, rename the shortcut on the desktop to whatever you want.

Linux

Debian-based (Ubuntu, Mint, etc)

Download the latest release from the Releases page and extract to the directory of your choice.

Then, run:

sudo apt install libfftw3-dev libglfw3-dev libglew-dev libvolk2-dev libsoapysdr-dev libairspyhf-dev libiio-dev libad9361-dev librtaudio-dev libhackrf-dev
sudo dpkg -i sdrpp_debian_amd64.deb

If libvolk2-dev is not available, use libvolk1-dev.

Arch-based

Install the latest release from the sdrpp-git AUR package

Other

There are currently no existing packages for other distributions, for these systems you'll have to build from source.

MacOS

TODO

BSD

There are currently no BSD packages, refer to Building on Linux / BSD for instructions on building from source.

Building on Windows

The preferred IDE is VS Code in order to have similar development experience across platforms and to build with CMake using the command line.

Install dependencies

  • cmake
  • vcpkg
  • PothosSDR (This will install libraries for most SDRs)
  • RtAudio (You have to build and install it in C:/Program Files (x86)/RtAudio/)

After this, install the following dependencies using vcpkg:

  • fftw3
  • glfw3
  • glew

You are probably going to build in 64 bit so make sure vcpkg installs the correct versions using .\vcpkg.exe install <package>:x64-windows

Building using the command line

IMPORTANT: Replace <vcpkg install directory> with vcpkg's install directory.

mkdir build
cd build
cmake .. "-DCMAKE_TOOLCHAIN_FILE=<vcpkg install directory>/scripts/buildsystems/vcpkg.cmake" -G "Visual Studio 16 2019"
cmake --build . --config Release

Running for development

Create a new configuration root directory

./create_root.bat

This will create the root_dev directory that will be used to save the configs of sdrpp and the modules.

You will next need to edit the root_dev/config.json file to point to the modules that were built. If the file is missing in your folder run the application once and it will create one with default value -- see later on how to run the application.

Run SDR++ from the command line

From the top directory, you can simply run:

./build/Release/sdrpp.exe -r root_dev -s

Or, if you wish to run from the build directory e.g. build/Release and adapt the relative path to the root_dev folder:

./sdrpp.exe -r ../../root_dev -s

The optional -s argument is for keeping the console active in order to see the error messages.

Because all the paths are relative, for the rest of the command line instructions we are going to assume you are running from the top directory using the former command. As mentioned previously you need to edit root_dev/config.json to add the modules that were built. From the default configuration file you need to add the paths in the modules section. Add to this list all the modules you wish to use.

..."modules": [
"./build/radio/Release/radio.dll",
"./build/recorder/Release/recorder.dll",
"./build/rtl_tcp_source/Release/rtl_tcp_source.dll",
"./build/soapy_source/Release/soapy_source.dll",
"./build/audio_sink/Release/audio_sink.dll"
]
...

You also need to change the location of the resource and module directories, for development, I recommend:

..."modulesDirectory": "root_dev/modules",
..."resourcesDirectory": "root_dev/res",
...

Remember that these paths will be relative to the run directory.

Installing SDR++

If you choose to run SDR++ for development, you do not need this step. First, copy over the exe and DLLs from build/Release/ to root_dev.

Next you need to copy over all the modules that were compiled. To do so, copy the DLL file of the module (located in its build folder given below) to the root_dev/modules directory and other DLLs (that do not have the exact name of the module) to the root_dev directory.

The modules built will be some of the following (Repeat the instructions above for all you wish to use):

  • build/radio/Release/
  • build/recorder/Release/
  • build/rtl_tcp_source/Release/
  • build/spyserver_source/Release/
  • build/soapy_source/Release/
  • build/airspyhf_source/Release/
  • build/plutosdr_source/Release/
  • build/audio_sink/Release/

Building on Linux / BSD

Select which modules you wish to build

Depending on which module you want to build, you will need to install some additional dependencies. Here are listed every module that requires addition dependencies. If a module enabled by default and you do not wish to install a perticular dependency (or can't, eg. the BladeRF module on Debian Buster), you can disable it using the module parameter listed in the table below

  • soapy_source: SoapySDR + drivers for each SDRs (see SoapySDR docs)
  • airspyhf_source: libairspyhf
  • plutosdr_source: libiio, libad9361
  • audio_sink: librtaudio-dev

Install dependencies

  • cmake
  • fftw3
  • glfw
  • glew
  • libvolk

Next install dependencies based on the modules you wish to build (See previous step)

Note: make sure you're using GCC 8 or later as older versions do not have std::filesystem built-in.

Building

replace <N> with the number of threads you wish to use to build

mkdir build
cd build
cmake ..
make -j<N>

Create a new root directory

sh ./create_root.sh

Running for development

If you wish to install SDR++, skip to the next step

First run SDR++ from the build directory to generate a default config file

./sdrpp -r ../root_dev/

Then, you will need to edit the root_dev/config.json file to point to the modules that were built. Here is an example of what it should look like:

..."modules": [
"./build/radio/radio.so",
"./build/recorder/recorder.so",
"./build/rtl_tcp_source/rtl_tcp_source.so",
"./build/soapy_source/soapy_source.so",
"./build/audio_sink/audio_sink.so"
]
...

Note: You can generate this list automatically by running find . | grep '\.so' | sed 's/^/"/' | sed 's/$/",/' | sed '/sdrpp_core.so/d' in the build directory.

You also need to change the location of the resource and module directories, for development, I recommend:

..."modulesDirectory": "./root_dev/modules",
..."resourcesDirectory": "./root_dev/res",
...

Remember that these paths will be relative to the run directory.

Of course, remember to add entries for all modules that were built and that you wish to use.

Next, from the top directory, you can simply run:

./build/sdrpp -r root_dev

Or, if you wish to run from the build directory, you will need to correct the directories in the config.json file, and then run:

./sdrpp -r ../root_dev

Installing SDR++

To install SDR++, run the following command in your build folder:

sudo make install

Module List

Not all modules are built by default. I decided to disable the build of those with large libraries, libraries that can't be installed through the package manager (or pothos) and those that are still in beta. Modules in beta are still included in releases for the most part but not enabled in SDR++ (need to be instantiated).

Sources

NameStageDependenciesOptionBuilt by defaultBuilt in ReleaseEnabled in SDR++ by default
airspy_sourceWorkinglibairspyOPT_BUILD_AIRSPY_SOURCE
airspyhf_sourceWorkinglibairspyhfOPT_BUILD_AIRSPYHF_SOURCE
bladerf_sourceWorkinglibbladeRFOPT_BUILD_BLADERF_SOURCE⚠️ (not Debian Buster)
file_sourceWorking-OPT_BUILD_FILE_SOURCE
hackrf_sourceWorkinglibhackrfOPT_BUILD_HACKRF_SOURCE
limesdr_sourceWorkingliblimesuiteOPT_BUILD_LIMESDR_SOURCE
sddc_sourceUnfinished-OPT_BUILD_SDDC_SOURCE
rtl_sdr_sourceWorkinglibrtlsdrOPT_BUILD_RTL_SDR_SOURCE
rtl_tcp_sourceWorking-OPT_BUILD_RTL_TCP_SOURCE
sdrplay_sourceWorkingSDRplay APIOPT_BUILD_SDRPLAY_SOURCE
soapy_sourceWorkingsoapysdrOPT_BUILD_SOAPY_SOURCE
spyserver_sourceWorking-OPT_BUILD_SPYSERVER_SOURCE
plutosdr_sourceWorkinglibiio, libad9361OPT_BUILD_PLUTOSDR_SOURCE

Sinks

NameStageDependenciesOptionBuilt by defaultBuilt in ReleaseEnabled in SDR++ by default
audio_sinkWorkingrtaudioOPT_BUILD_AUDIO_SINK
network_sinkWorking-OPT_BUILD_NETWORK_SINK
new_portaudio_sinkBetaportaudioOPT_BUILD_NEW_PORTAUDIO_SINK

Decoders

NameStageDependenciesOptionBuilt by defaultBuilt in ReleaseEnabled in SDR++ by default
falcon9_decoderUnfinishedffplayOPT_BUILD_FALCON9_DECODER
m17_decoderBeta-OPT_BUILD_M17_DECODER
meteor_demodulatorWorking-OPT_BUILD_METEOR_DEMODULATOR
radioWorking-OPT_BUILD_RADIO
weather_sat_decoderUnfinished-OPT_BUILD_WEATHER_SAT_DECODER

Misc

NameStageDependenciesOptionBuilt by defaultBuilt in ReleaseEnabled in SDR++ by default
discord_integrationWorking-OPT_BUILD_DISCORD_PRESENCE
frequency_managerWorking-OPT_BUILD_FREQUENCY_MANAGER
recorderWorking-OPT_BUILD_RECORDER
rigctl_serverWorking-OPT_BUILD_RIGCTL_SERVER

Troubleshooting

First, please make sure you're running the latest automated build. If your issue is linked to a bug it is likely that is has already been fixed in later releases

SDR++ crashes then it won't start again no matter what

This is a bug in 1.0.0 that was fixed in 1.0.1

In some cases, if a crash happened while the config was being saved, the config file woul be corrupted and SDR++ would refuse to start because of it.

This has now been fixed. If a config file is corrupted it'll just reset it to its default state.

"hash collision" error when starting

You likely installed the soapysdr-module-all package on Ubuntu/Debian. If not it's still a SoapySDR bug caused by multiple soapy modules coming in conflict. Uninstall anything related to SoapySDR then install soapysdr itself and only the soapy modules you actually need.

"I don't see -insert module name here-, what's going on?"

If the module was included in a later update, it's not enabled in the config. The easiest way to fix this is just to delete the config.json file and let SDR++ recreate it (you will lose your setting relating to the main UI like VFO colors, zoom level and theme). The best option however is to edit the config file to add an instance of the module you wish to have enabled (see the Module List).

SDR++ crashes when stopping a RTL-SDR

This is a bug recently introduced by libusb1.4 To solve, this, simply downgrade to libusb1.3

SDR++ crashes when starting a HackRF

If you also have the SoapySDR module loaded (not necessarily enabled), this is a bug in libhackrf. It's caused by libhackrf not checking if it's already initialized. The solution until a fixed libhackrf version is released is to completely remove the soapy_source module from SDR++. To do this, delete modules/soapy_source.dll on windows or /usr/lib/sdrpp/plugins/soapy_source.so on linux.

Issue not listed here?

If you still have an issue, please open an issue about it or ask on the discord. I'll try to respond as quickly as I can. Please avoid trying to contact me on every platform imaginable thinking I'll respond faster though...

Contributing

Feel free to submit pull requests and report bugs via the GitHub issue tracker. I will soon publish a contributing.md listing the code style to use.

Credits

Patrons

Contributors

Libraries used

About

Cross-Platform SDR Software

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Repository files navigation

SDR++, The bloat-free SDR software

Screenshot SDR++ is a cross-platform and open source SDR software with the aim of being bloat free and simple to use.

Build

Features

  • Multi VFO
  • Wide hardware support (both through SoapySDR and dedicated modules)
  • SIMD accelerated DSP
  • Cross-platform (Windows, Linux, OSX and BSD)
  • Full waterfall update when possible. Makes browsing signals easier and more pleasant
  • Modular design (easily write your own plugins)

Installing

Windows

Download the latest release from the Releases page and extract to the directory of your choice.

To create a desktop shortcut, rightclick the exe and select Send to -> Desktop (create shortcut), then, rename the shortcut on the desktop to whatever you want.

Linux

Debian-based (Ubuntu, Mint, etc)

Download the latest release from the Releases page and extract to the directory of your choice.

Then, run:

sudo apt install libfftw3-dev libglfw3-dev libglew-dev libvolk2-dev libsoapysdr-dev libairspyhf-dev libiio-dev libad9361-dev librtaudio-dev libhackrf-dev
sudo dpkg -i sdrpp_debian_amd64.deb

If libvolk2-dev is not available, use libvolk1-dev.

Arch-based

Install the latest release from the sdrpp-git AUR package

Other

There are currently no existing packages for other distributions, for these systems you'll have to build from source.

MacOS

TODO

BSD

There are currently no BSD packages, refer to Building on Linux / BSD for instructions on building from source.

Building on Windows

The preferred IDE is VS Code in order to have similar development experience across platforms and to build with CMake using the command line.

Install dependencies

  • cmake
  • vcpkg
  • PothosSDR (This will install libraries for most SDRs)
  • RtAudio (You have to build and install it in C:/Program Files (x86)/RtAudio/)

After this, install the following dependencies using vcpkg:

  • fftw3
  • glfw3
  • glew

You are probably going to build in 64 bit so make sure vcpkg installs the correct versions using .\vcpkg.exe install <package>:x64-windows

Building using the command line

IMPORTANT: Replace <vcpkg install directory> with vcpkg's install directory.

mkdir build
cd build
cmake .. "-DCMAKE_TOOLCHAIN_FILE=<vcpkg install directory>/scripts/buildsystems/vcpkg.cmake" -G "Visual Studio 16 2019"
cmake --build . --config Release

Running for development

Create a new configuration root directory

./create_root.bat

This will create the root_dev directory that will be used to save the configs of sdrpp and the modules.

You will next need to edit the root_dev/config.json file to point to the modules that were built. If the file is missing in your folder run the application once and it will create one with default value -- see later on how to run the application.

Run SDR++ from the command line

From the top directory, you can simply run:

./build/Release/sdrpp.exe -r root_dev -s

Or, if you wish to run from the build directory e.g. build/Release and adapt the relative path to the root_dev folder:

./sdrpp.exe -r ../../root_dev -s

The optional -s argument is for keeping the console active in order to see the error messages.

Because all the paths are relative, for the rest of the command line instructions we are going to assume you are running from the top directory using the former command. As mentioned previously you need to edit root_dev/config.json to add the modules that were built. From the default configuration file you need to add the paths in the modules section. Add to this list all the modules you wish to use.

..."modules": [
"./build/radio/Release/radio.dll",
"./build/recorder/Release/recorder.dll",
"./build/rtl_tcp_source/Release/rtl_tcp_source.dll",
"./build/soapy_source/Release/soapy_source.dll",
"./build/audio_sink/Release/audio_sink.dll"
]
...

You also need to change the location of the resource and module directories, for development, I recommend:

..."modulesDirectory": "root_dev/modules",
..."resourcesDirectory": "root_dev/res",
...

Remember that these paths will be relative to the run directory.

Installing SDR++

If you choose to run SDR++ for development, you do not need this step. First, copy over the exe and DLLs from build/Release/ to root_dev.

Next you need to copy over all the modules that were compiled. To do so, copy the DLL file of the module (located in its build folder given below) to the root_dev/modules directory and other DLLs (that do not have the exact name of the module) to the root_dev directory.

The modules built will be some of the following (Repeat the instructions above for all you wish to use):

  • build/radio/Release/
  • build/recorder/Release/
  • build/rtl_tcp_source/Release/
  • build/spyserver_source/Release/
  • build/soapy_source/Release/
  • build/airspyhf_source/Release/
  • build/plutosdr_source/Release/
  • build/audio_sink/Release/

Building on Linux / BSD

Select which modules you wish to build

Depending on which module you want to build, you will need to install some additional dependencies. Here are listed every module that requires addition dependencies. If a module enabled by default and you do not wish to install a perticular dependency (or can't, eg. the BladeRF module on Debian Buster), you can disable it using the module parameter listed in the table below

  • soapy_source: SoapySDR + drivers for each SDRs (see SoapySDR docs)
  • airspyhf_source: libairspyhf
  • plutosdr_source: libiio, libad9361
  • audio_sink: librtaudio-dev

Install dependencies

  • cmake
  • fftw3
  • glfw
  • glew
  • libvolk

Next install dependencies based on the modules you wish to build (See previous step)

Note: make sure you're using GCC 8 or later as older versions do not have std::filesystem built-in.

Building

replace <N> with the number of threads you wish to use to build

mkdir build
cd build
cmake ..
make -j<N>

Create a new root directory

sh ./create_root.sh

Running for development

If you wish to install SDR++, skip to the next step

First run SDR++ from the build directory to generate a default config file

./sdrpp -r ../root_dev/

Then, you will need to edit the root_dev/config.json file to point to the modules that were built. Here is an example of what it should look like:

..."modules": [
"./build/radio/radio.so",
"./build/recorder/recorder.so",
"./build/rtl_tcp_source/rtl_tcp_source.so",
"./build/soapy_source/soapy_source.so",
"./build/audio_sink/audio_sink.so"
]
...

Note: You can generate this list automatically by running find . | grep '\.so' | sed 's/^/"/' | sed 's/$/",/' | sed '/sdrpp_core.so/d' in the build directory.

You also need to change the location of the resource and module directories, for development, I recommend:

..."modulesDirectory": "./root_dev/modules",
..."resourcesDirectory": "./root_dev/res",
...

Remember that these paths will be relative to the run directory.

Of course, remember to add entries for all modules that were built and that you wish to use.

Next, from the top directory, you can simply run:

./build/sdrpp -r root_dev

Or, if you wish to run from the build directory, you will need to correct the directories in the config.json file, and then run:

./sdrpp -r ../root_dev

Installing SDR++

To install SDR++, run the following command in your build folder:

sudo make install

Module List

Not all modules are built by default. I decided to disable the build of those with large libraries, libraries that can't be installed through the package manager (or pothos) and those that are still in beta. Modules in beta are still included in releases for the most part but not enabled in SDR++ (need to be instantiated).

Sources

NameStageDependenciesOptionBuilt by defaultBuilt in ReleaseEnabled in SDR++ by default
airspy_sourceWorkinglibairspyOPT_BUILD_AIRSPY_SOURCE
airspyhf_sourceWorkinglibairspyhfOPT_BUILD_AIRSPYHF_SOURCE
bladerf_sourceWorkinglibbladeRFOPT_BUILD_BLADERF_SOURCE⚠️ (not Debian Buster)
file_sourceWorking-OPT_BUILD_FILE_SOURCE
hackrf_sourceWorkinglibhackrfOPT_BUILD_HACKRF_SOURCE
limesdr_sourceWorkingliblimesuiteOPT_BUILD_LIMESDR_SOURCE
sddc_sourceUnfinished-OPT_BUILD_SDDC_SOURCE
rtl_sdr_sourceWorkinglibrtlsdrOPT_BUILD_RTL_SDR_SOURCE
rtl_tcp_sourceWorking-OPT_BUILD_RTL_TCP_SOURCE
sdrplay_sourceWorkingSDRplay APIOPT_BUILD_SDRPLAY_SOURCE
soapy_sourceWorkingsoapysdrOPT_BUILD_SOAPY_SOURCE
spyserver_sourceWorking-OPT_BUILD_SPYSERVER_SOURCE
plutosdr_sourceWorkinglibiio, libad9361OPT_BUILD_PLUTOSDR_SOURCE

Sinks

NameStageDependenciesOptionBuilt by defaultBuilt in ReleaseEnabled in SDR++ by default
audio_sinkWorkingrtaudioOPT_BUILD_AUDIO_SINK
network_sinkWorking-OPT_BUILD_NETWORK_SINK
new_portaudio_sinkBetaportaudioOPT_BUILD_NEW_PORTAUDIO_SINK

Decoders

NameStageDependenciesOptionBuilt by defaultBuilt in ReleaseEnabled in SDR++ by default
falcon9_decoderUnfinishedffplayOPT_BUILD_FALCON9_DECODER
m17_decoderBeta-OPT_BUILD_M17_DECODER
meteor_demodulatorWorking-OPT_BUILD_METEOR_DEMODULATOR
radioWorking-OPT_BUILD_RADIO
weather_sat_decoderUnfinished-OPT_BUILD_WEATHER_SAT_DECODER

Misc

NameStageDependenciesOptionBuilt by defaultBuilt in ReleaseEnabled in SDR++ by default
discord_integrationWorking-OPT_BUILD_DISCORD_PRESENCE
frequency_managerWorking-OPT_BUILD_FREQUENCY_MANAGER
recorderWorking-OPT_BUILD_RECORDER
rigctl_serverWorking-OPT_BUILD_RIGCTL_SERVER

Troubleshooting

First, please make sure you're running the latest automated build. If your issue is linked to a bug it is likely that is has already been fixed in later releases

SDR++ crashes then it won't start again no matter what

This is a bug in 1.0.0 that was fixed in 1.0.1

In some cases, if a crash happened while the config was being saved, the config file woul be corrupted and SDR++ would refuse to start because of it.

This has now been fixed. If a config file is corrupted it'll just reset it to its default state.

"hash collision" error when starting

You likely installed the soapysdr-module-all package on Ubuntu/Debian. If not it's still a SoapySDR bug caused by multiple soapy modules coming in conflict. Uninstall anything related to SoapySDR then install soapysdr itself and only the soapy modules you actually need.

"I don't see -insert module name here-, what's going on?"

If the module was included in a later update, it's not enabled in the config. The easiest way to fix this is just to delete the config.json file and let SDR++ recreate it (you will lose your setting relating to the main UI like VFO colors, zoom level and theme). The best option however is to edit the config file to add an instance of the module you wish to have enabled (see the Module List).

SDR++ crashes when stopping a RTL-SDR

This is a bug recently introduced by libusb1.4 To solve, this, simply downgrade to libusb1.3

SDR++ crashes when starting a HackRF

If you also have the SoapySDR module loaded (not necessarily enabled), this is a bug in libhackrf. It's caused by libhackrf not checking if it's already initialized. The solution until a fixed libhackrf version is released is to completely remove the soapy_source module from SDR++. To do this, delete modules/soapy_source.dll on windows or /usr/lib/sdrpp/plugins/soapy_source.so on linux.

Issue not listed here?

If you still have an issue, please open an issue about it or ask on the discord. I'll try to respond as quickly as I can. Please avoid trying to contact me on every platform imaginable thinking I'll respond faster though...

Contributing

Feel free to submit pull requests and report bugs via the GitHub issue tracker. I will soon publish a contributing.md listing the code style to use.

Credits

Patrons

Contributors

Libraries used

About

Cross-Platform SDR Software

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

SDR++, The bloat-free SDR software

Screenshot SDR++ is a cross-platform and open source SDR software with the aim of being bloat free and simple to use.

Build

Features

  • Multi VFO
  • Wide hardware support (both through SoapySDR and dedicated modules)
  • SIMD accelerated DSP
  • Cross-platform (Windows, Linux, OSX and BSD)
  • Full waterfall update when possible. Makes browsing signals easier and more pleasant
  • Modular design (easily write your own plugins)

Installing

Windows

Download the latest release from the Releases page and extract to the directory of your choice.

To create a desktop shortcut, rightclick the exe and select Send to -> Desktop (create shortcut), then, rename the shortcut on the desktop to whatever you want.

Linux

Debian-based (Ubuntu, Mint, etc)

Download the latest release from the Releases page and extract to the directory of your choice.

Then, run:

sudo apt install libfftw3-dev libglfw3-dev libglew-dev libvolk2-dev libsoapysdr-dev libairspyhf-dev libiio-dev libad9361-dev librtaudio-dev libhackrf-dev
sudo dpkg -i sdrpp_debian_amd64.deb

If libvolk2-dev is not available, use libvolk1-dev.

Arch-based

Install the latest release from the sdrpp-git AUR package

Other

There are currently no existing packages for other distributions, for these systems you'll have to build from source.

MacOS

TODO

BSD

There are currently no BSD packages, refer to Building on Linux / BSD for instructions on building from source.

Building on Windows

The preferred IDE is VS Code in order to have similar development experience across platforms and to build with CMake using the command line.

Install dependencies

  • cmake
  • vcpkg
  • PothosSDR (This will install libraries for most SDRs)
  • RtAudio (You have to build and install it in C:/Program Files (x86)/RtAudio/)

After this, install the following dependencies using vcpkg:

  • fftw3
  • glfw3
  • glew

You are probably going to build in 64 bit so make sure vcpkg installs the correct versions using .\vcpkg.exe install <package>:x64-windows

Building using the command line

IMPORTANT: Replace <vcpkg install directory> with vcpkg's install directory.

mkdir build
cd build
cmake .. "-DCMAKE_TOOLCHAIN_FILE=<vcpkg install directory>/scripts/buildsystems/vcpkg.cmake" -G "Visual Studio 16 2019"
cmake --build . --config Release

Running for development

Create a new configuration root directory

./create_root.bat

This will create the root_dev directory that will be used to save the configs of sdrpp and the modules.

You will next need to edit the root_dev/config.json file to point to the modules that were built. If the file is missing in your folder run the application once and it will create one with default value -- see later on how to run the application.

Run SDR++ from the command line

From the top directory, you can simply run:

./build/Release/sdrpp.exe -r root_dev -s

Or, if you wish to run from the build directory e.g. build/Release and adapt the relative path to the root_dev folder:

./sdrpp.exe -r ../../root_dev -s

The optional -s argument is for keeping the console active in order to see the error messages.

Because all the paths are relative, for the rest of the command line instructions we are going to assume you are running from the top directory using the former command. As mentioned previously you need to edit root_dev/config.json to add the modules that were built. From the default configuration file you need to add the paths in the modules section. Add to this list all the modules you wish to use.

..."modules": [
"./build/radio/Release/radio.dll",
"./build/recorder/Release/recorder.dll",
"./build/rtl_tcp_source/Release/rtl_tcp_source.dll",
"./build/soapy_source/Release/soapy_source.dll",
"./build/audio_sink/Release/audio_sink.dll"
]
...

You also need to change the location of the resource and module directories, for development, I recommend:

..."modulesDirectory": "root_dev/modules",
..."resourcesDirectory": "root_dev/res",
...

Remember that these paths will be relative to the run directory.

Installing SDR++

If you choose to run SDR++ for development, you do not need this step. First, copy over the exe and DLLs from build/Release/ to root_dev.

Next you need to copy over all the modules that were compiled. To do so, copy the DLL file of the module (located in its build folder given below) to the root_dev/modules directory and other DLLs (that do not have the exact name of the module) to the root_dev directory.

The modules built will be some of the following (Repeat the instructions above for all you wish to use):

  • build/radio/Release/
  • build/recorder/Release/
  • build/rtl_tcp_source/Release/
  • build/spyserver_source/Release/
  • build/soapy_source/Release/
  • build/airspyhf_source/Release/
  • build/plutosdr_source/Release/
  • build/audio_sink/Release/

Building on Linux / BSD

Select which modules you wish to build

Depending on which module you want to build, you will need to install some additional dependencies. Here are listed every module that requires addition dependencies. If a module enabled by default and you do not wish to install a perticular dependency (or can't, eg. the BladeRF module on Debian Buster), you can disable it using the module parameter listed in the table below

  • soapy_source: SoapySDR + drivers for each SDRs (see SoapySDR docs)
  • airspyhf_source: libairspyhf
  • plutosdr_source: libiio, libad9361
  • audio_sink: librtaudio-dev

Install dependencies

  • cmake
  • fftw3
  • glfw
  • glew
  • libvolk

Next install dependencies based on the modules you wish to build (See previous step)

Note: make sure you're using GCC 8 or later as older versions do not have std::filesystem built-in.

Building

replace <N> with the number of threads you wish to use to build

mkdir build
cd build
cmake ..
make -j<N>

Create a new root directory

sh ./create_root.sh

Running for development

If you wish to install SDR++, skip to the next step

First run SDR++ from the build directory to generate a default config file

./sdrpp -r ../root_dev/

Then, you will need to edit the root_dev/config.json file to point to the modules that were built. Here is an example of what it should look like:

..."modules": [
"./build/radio/radio.so",
"./build/recorder/recorder.so",
"./build/rtl_tcp_source/rtl_tcp_source.so",
"./build/soapy_source/soapy_source.so",
"./build/audio_sink/audio_sink.so"
]
...

Note: You can generate this list automatically by running find . | grep '\.so' | sed 's/^/"/' | sed 's/$/",/' | sed '/sdrpp_core.so/d' in the build directory.

You also need to change the location of the resource and module directories, for development, I recommend:

..."modulesDirectory": "./root_dev/modules",
..."resourcesDirectory": "./root_dev/res",
...

Remember that these paths will be relative to the run directory.

Of course, remember to add entries for all modules that were built and that you wish to use.

Next, from the top directory, you can simply run:

./build/sdrpp -r root_dev

Or, if you wish to run from the build directory, you will need to correct the directories in the config.json file, and then run:

./sdrpp -r ../root_dev

Installing SDR++

To install SDR++, run the following command in your build folder:

sudo make install

Module List

Not all modules are built by default. I decided to disable the build of those with large libraries, libraries that can't be installed through the package manager (or pothos) and those that are still in beta. Modules in beta are still included in releases for the most part but not enabled in SDR++ (need to be instantiated).

Sources

NameStageDependenciesOptionBuilt by defaultBuilt in ReleaseEnabled in SDR++ by default
airspy_sourceWorkinglibairspyOPT_BUILD_AIRSPY_SOURCE
airspyhf_sourceWorkinglibairspyhfOPT_BUILD_AIRSPYHF_SOURCE
bladerf_sourceWorkinglibbladeRFOPT_BUILD_BLADERF_SOURCE⚠️ (not Debian Buster)
file_sourceWorking-OPT_BUILD_FILE_SOURCE
hackrf_sourceWorkinglibhackrfOPT_BUILD_HACKRF_SOURCE
limesdr_sourceWorkingliblimesuiteOPT_BUILD_LIMESDR_SOURCE
sddc_sourceUnfinished-OPT_BUILD_SDDC_SOURCE
rtl_sdr_sourceWorkinglibrtlsdrOPT_BUILD_RTL_SDR_SOURCE
rtl_tcp_sourceWorking-OPT_BUILD_RTL_TCP_SOURCE
sdrplay_sourceWorkingSDRplay APIOPT_BUILD_SDRPLAY_SOURCE
soapy_sourceWorkingsoapysdrOPT_BUILD_SOAPY_SOURCE
spyserver_sourceWorking-OPT_BUILD_SPYSERVER_SOURCE
plutosdr_sourceWorkinglibiio, libad9361OPT_BUILD_PLUTOSDR_SOURCE

Sinks

NameStageDependenciesOptionBuilt by defaultBuilt in ReleaseEnabled in SDR++ by default
audio_sinkWorkingrtaudioOPT_BUILD_AUDIO_SINK
network_sinkWorking-OPT_BUILD_NETWORK_SINK
new_portaudio_sinkBetaportaudioOPT_BUILD_NEW_PORTAUDIO_SINK

Decoders

NameStageDependenciesOptionBuilt by defaultBuilt in ReleaseEnabled in SDR++ by default
falcon9_decoderUnfinishedffplayOPT_BUILD_FALCON9_DECODER
m17_decoderBeta-OPT_BUILD_M17_DECODER
meteor_demodulatorWorking-OPT_BUILD_METEOR_DEMODULATOR
radioWorking-OPT_BUILD_RADIO
weather_sat_decoderUnfinished-OPT_BUILD_WEATHER_SAT_DECODER

Misc

NameStageDependenciesOptionBuilt by defaultBuilt in ReleaseEnabled in SDR++ by default
discord_integrationWorking-OPT_BUILD_DISCORD_PRESENCE
frequency_managerWorking-OPT_BUILD_FREQUENCY_MANAGER
recorderWorking-OPT_BUILD_RECORDER
rigctl_serverWorking-OPT_BUILD_RIGCTL_SERVER

Troubleshooting

First, please make sure you're running the latest automated build. If your issue is linked to a bug it is likely that is has already been fixed in later releases

SDR++ crashes then it won't start again no matter what

This is a bug in 1.0.0 that was fixed in 1.0.1

In some cases, if a crash happened while the config was being saved, the config file woul be corrupted and SDR++ would refuse to start because of it.

This has now been fixed. If a config file is corrupted it'll just reset it to its default state.

"hash collision" error when starting

You likely installed the soapysdr-module-all package on Ubuntu/Debian. If not it's still a SoapySDR bug caused by multiple soapy modules coming in conflict. Uninstall anything related to SoapySDR then install soapysdr itself and only the soapy modules you actually need.

"I don't see -insert module name here-, what's going on?"

If the module was included in a later update, it's not enabled in the config. The easiest way to fix this is just to delete the config.json file and let SDR++ recreate it (you will lose your setting relating to the main UI like VFO colors, zoom level and theme). The best option however is to edit the config file to add an instance of the module you wish to have enabled (see the Module List).

SDR++ crashes when stopping a RTL-SDR

This is a bug recently introduced by libusb1.4 To solve, this, simply downgrade to libusb1.3

SDR++ crashes when starting a HackRF

If you also have the SoapySDR module loaded (not necessarily enabled), this is a bug in libhackrf. It's caused by libhackrf not checking if it's already initialized. The solution until a fixed libhackrf version is released is to completely remove the soapy_source module from SDR++. To do this, delete modules/soapy_source.dll on windows or /usr/lib/sdrpp/plugins/soapy_source.so on linux.

Issue not listed here?

If you still have an issue, please open an issue about it or ask on the discord. I'll try to respond as quickly as I can. Please avoid trying to contact me on every platform imaginable thinking I'll respond faster though...

Contributing

Feel free to submit pull requests and report bugs via the GitHub issue tracker. I will soon publish a contributing.md listing the code style to use.

Credits

Patrons

Contributors

Libraries used

About

Cross-Platform SDR Software

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

SDR++, The bloat-free SDR software

Screenshot SDR++ is a cross-platform and open source SDR software with the aim of being bloat free and simple to use.

Build

Features

  • Multi VFO
  • Wide hardware support (both through SoapySDR and dedicated modules)
  • SIMD accelerated DSP
  • Cross-platform (Windows, Linux, OSX and BSD)
  • Full waterfall update when possible. Makes browsing signals easier and more pleasant
  • Modular design (easily write your own plugins)

Installing

Windows

Download the latest release from the Releases page and extract to the directory of your choice.

To create a desktop shortcut, rightclick the exe and select Send to -> Desktop (create shortcut), then, rename the shortcut on the desktop to whatever you want.

Linux

Debian-based (Ubuntu, Mint, etc)

Download the latest release from the Releases page and extract to the directory of your choice.

Then, run:

sudo apt install libfftw3-dev libglfw3-dev libglew-dev libvolk2-dev libsoapysdr-dev libairspyhf-dev libiio-dev libad9361-dev librtaudio-dev libhackrf-dev
sudo dpkg -i sdrpp_debian_amd64.deb

If libvolk2-dev is not available, use libvolk1-dev.

Arch-based

Install the latest release from the sdrpp-git AUR package

Other

There are currently no existing packages for other distributions, for these systems you'll have to build from source.

MacOS

TODO

BSD

There are currently no BSD packages, refer to Building on Linux / BSD for instructions on building from source.

Building on Windows

The preferred IDE is VS Code in order to have similar development experience across platforms and to build with CMake using the command line.

Install dependencies

  • cmake
  • vcpkg
  • PothosSDR (This will install libraries for most SDRs)
  • RtAudio (You have to build and install it in C:/Program Files (x86)/RtAudio/)

After this, install the following dependencies using vcpkg:

  • fftw3
  • glfw3
  • glew

You are probably going to build in 64 bit so make sure vcpkg installs the correct versions using .\vcpkg.exe install <package>:x64-windows

Building using the command line

IMPORTANT: Replace <vcpkg install directory> with vcpkg's install directory.

mkdir build
cd build
cmake .. "-DCMAKE_TOOLCHAIN_FILE=<vcpkg install directory>/scripts/buildsystems/vcpkg.cmake" -G "Visual Studio 16 2019"
cmake --build . --config Release

Running for development

Create a new configuration root directory

./create_root.bat

This will create the root_dev directory that will be used to save the configs of sdrpp and the modules.

You will next need to edit the root_dev/config.json file to point to the modules that were built. If the file is missing in your folder run the application once and it will create one with default value -- see later on how to run the application.

Run SDR++ from the command line

From the top directory, you can simply run:

./build/Release/sdrpp.exe -r root_dev -s

Or, if you wish to run from the build directory e.g. build/Release and adapt the relative path to the root_dev folder:

./sdrpp.exe -r ../../root_dev -s

The optional -s argument is for keeping the console active in order to see the error messages.

Because all the paths are relative, for the rest of the command line instructions we are going to assume you are running from the top directory using the former command. As mentioned previously you need to edit root_dev/config.json to add the modules that were built. From the default configuration file you need to add the paths in the modules section. Add to this list all the modules you wish to use.

..."modules": [
"./build/radio/Release/radio.dll",
"./build/recorder/Release/recorder.dll",
"./build/rtl_tcp_source/Release/rtl_tcp_source.dll",
"./build/soapy_source/Release/soapy_source.dll",
"./build/audio_sink/Release/audio_sink.dll"
]
...

You also need to change the location of the resource and module directories, for development, I recommend:

..."modulesDirectory": "root_dev/modules",
..."resourcesDirectory": "root_dev/res",
...

Remember that these paths will be relative to the run directory.

Installing SDR++

If you choose to run SDR++ for development, you do not need this step. First, copy over the exe and DLLs from build/Release/ to root_dev.

Next you need to copy over all the modules that were compiled. To do so, copy the DLL file of the module (located in its build folder given below) to the root_dev/modules directory and other DLLs (that do not have the exact name of the module) to the root_dev directory.

The modules built will be some of the following (Repeat the instructions above for all you wish to use):

  • build/radio/Release/
  • build/recorder/Release/
  • build/rtl_tcp_source/Release/
  • build/spyserver_source/Release/
  • build/soapy_source/Release/
  • build/airspyhf_source/Release/
  • build/plutosdr_source/Release/
  • build/audio_sink/Release/

Building on Linux / BSD

Select which modules you wish to build

Depending on which module you want to build, you will need to install some additional dependencies. Here are listed every module that requires addition dependencies. If a module enabled by default and you do not wish to install a perticular dependency (or can't, eg. the BladeRF module on Debian Buster), you can disable it using the module parameter listed in the table below

  • soapy_source: SoapySDR + drivers for each SDRs (see SoapySDR docs)
  • airspyhf_source: libairspyhf
  • plutosdr_source: libiio, libad9361
  • audio_sink: librtaudio-dev

Install dependencies

  • cmake
  • fftw3
  • glfw
  • glew
  • libvolk

Next install dependencies based on the modules you wish to build (See previous step)

Note: make sure you're using GCC 8 or later as older versions do not have std::filesystem built-in.

Building

replace <N> with the number of threads you wish to use to build

mkdir build
cd build
cmake ..
make -j<N>

Create a new root directory

sh ./create_root.sh

Running for development

If you wish to install SDR++, skip to the next step

First run SDR++ from the build directory to generate a default config file

./sdrpp -r ../root_dev/

Then, you will need to edit the root_dev/config.json file to point to the modules that were built. Here is an example of what it should look like:

..."modules": [
"./build/radio/radio.so",
"./build/recorder/recorder.so",
"./build/rtl_tcp_source/rtl_tcp_source.so",
"./build/soapy_source/soapy_source.so",
"./build/audio_sink/audio_sink.so"
]
...

Note: You can generate this list automatically by running find . | grep '\.so' | sed 's/^/"/' | sed 's/$/",/' | sed '/sdrpp_core.so/d' in the build directory.

You also need to change the location of the resource and module directories, for development, I recommend:

..."modulesDirectory": "./root_dev/modules",
..."resourcesDirectory": "./root_dev/res",
...

Remember that these paths will be relative to the run directory.

Of course, remember to add entries for all modules that were built and that you wish to use.

Next, from the top directory, you can simply run:

./build/sdrpp -r root_dev

Or, if you wish to run from the build directory, you will need to correct the directories in the config.json file, and then run:

./sdrpp -r ../root_dev

Installing SDR++

To install SDR++, run the following command in your build folder:

sudo make install

Module List

Not all modules are built by default. I decided to disable the build of those with large libraries, libraries that can't be installed through the package manager (or pothos) and those that are still in beta. Modules in beta are still included in releases for the most part but not enabled in SDR++ (need to be instantiated).

Sources

NameStageDependenciesOptionBuilt by defaultBuilt in ReleaseEnabled in SDR++ by default
airspy_sourceWorkinglibairspyOPT_BUILD_AIRSPY_SOURCE
airspyhf_sourceWorkinglibairspyhfOPT_BUILD_AIRSPYHF_SOURCE
bladerf_sourceWorkinglibbladeRFOPT_BUILD_BLADERF_SOURCE⚠️ (not Debian Buster)
file_sourceWorking-OPT_BUILD_FILE_SOURCE
hackrf_sourceWorkinglibhackrfOPT_BUILD_HACKRF_SOURCE
limesdr_sourceWorkingliblimesuiteOPT_BUILD_LIMESDR_SOURCE
sddc_sourceUnfinished-OPT_BUILD_SDDC_SOURCE
rtl_sdr_sourceWorkinglibrtlsdrOPT_BUILD_RTL_SDR_SOURCE
rtl_tcp_sourceWorking-OPT_BUILD_RTL_TCP_SOURCE
sdrplay_sourceWorkingSDRplay APIOPT_BUILD_SDRPLAY_SOURCE
soapy_sourceWorkingsoapysdrOPT_BUILD_SOAPY_SOURCE
spyserver_sourceWorking-OPT_BUILD_SPYSERVER_SOURCE
plutosdr_sourceWorkinglibiio, libad9361OPT_BUILD_PLUTOSDR_SOURCE

Sinks

NameStageDependenciesOptionBuilt by defaultBuilt in ReleaseEnabled in SDR++ by default
audio_sinkWorkingrtaudioOPT_BUILD_AUDIO_SINK
network_sinkWorking-OPT_BUILD_NETWORK_SINK
new_portaudio_sinkBetaportaudioOPT_BUILD_NEW_PORTAUDIO_SINK

Decoders

NameStageDependenciesOptionBuilt by defaultBuilt in ReleaseEnabled in SDR++ by default
falcon9_decoderUnfinishedffplayOPT_BUILD_FALCON9_DECODER
m17_decoderBeta-OPT_BUILD_M17_DECODER
meteor_demodulatorWorking-OPT_BUILD_METEOR_DEMODULATOR
radioWorking-OPT_BUILD_RADIO
weather_sat_decoderUnfinished-OPT_BUILD_WEATHER_SAT_DECODER

Misc

NameStageDependenciesOptionBuilt by defaultBuilt in ReleaseEnabled in SDR++ by default
discord_integrationWorking-OPT_BUILD_DISCORD_PRESENCE
frequency_managerWorking-OPT_BUILD_FREQUENCY_MANAGER
recorderWorking-OPT_BUILD_RECORDER
rigctl_serverWorking-OPT_BUILD_RIGCTL_SERVER

Troubleshooting

First, please make sure you're running the latest automated build. If your issue is linked to a bug it is likely that is has already been fixed in later releases

SDR++ crashes then it won't start again no matter what

This is a bug in 1.0.0 that was fixed in 1.0.1

In some cases, if a crash happened while the config was being saved, the config file woul be corrupted and SDR++ would refuse to start because of it.

This has now been fixed. If a config file is corrupted it'll just reset it to its default state.

"hash collision" error when starting

You likely installed the soapysdr-module-all package on Ubuntu/Debian. If not it's still a SoapySDR bug caused by multiple soapy modules coming in conflict. Uninstall anything related to SoapySDR then install soapysdr itself and only the soapy modules you actually need.

"I don't see -insert module name here-, what's going on?"

If the module was included in a later update, it's not enabled in the config. The easiest way to fix this is just to delete the config.json file and let SDR++ recreate it (you will lose your setting relating to the main UI like VFO colors, zoom level and theme). The best option however is to edit the config file to add an instance of the module you wish to have enabled (see the Module List).

SDR++ crashes when stopping a RTL-SDR

This is a bug recently introduced by libusb1.4 To solve, this, simply downgrade to libusb1.3

SDR++ crashes when starting a HackRF

If you also have the SoapySDR module loaded (not necessarily enabled), this is a bug in libhackrf. It's caused by libhackrf not checking if it's already initialized. The solution until a fixed libhackrf version is released is to completely remove the soapy_source module from SDR++. To do this, delete modules/soapy_source.dll on windows or /usr/lib/sdrpp/plugins/soapy_source.so on linux.

Issue not listed here?

If you still have an issue, please open an issue about it or ask on the discord. I'll try to respond as quickly as I can. Please avoid trying to contact me on every platform imaginable thinking I'll respond faster though...

Contributing

Feel free to submit pull requests and report bugs via the GitHub issue tracker. I will soon publish a contributing.md listing the code style to use.

Credits

Patrons

Contributors

Libraries used

About

Cross-Platform SDR Software

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Repository files navigation

SDR++, The bloat-free SDR software

Screenshot SDR++ is a cross-platform and open source SDR software with the aim of being bloat free and simple to use.

Build

Features

  • Multi VFO
  • Wide hardware support (both through SoapySDR and dedicated modules)
  • SIMD accelerated DSP
  • Cross-platform (Windows, Linux, OSX and BSD)
  • Full waterfall update when possible. Makes browsing signals easier and more pleasant
  • Modular design (easily write your own plugins)

Installing

Windows

Download the latest release from the Releases page and extract to the directory of your choice.

To create a desktop shortcut, rightclick the exe and select Send to -> Desktop (create shortcut), then, rename the shortcut on the desktop to whatever you want.

Linux

Debian-based (Ubuntu, Mint, etc)

Download the latest release from the Releases page and extract to the directory of your choice.

Then, run:

sudo apt install libfftw3-dev libglfw3-dev libglew-dev libvolk2-dev libsoapysdr-dev libairspyhf-dev libiio-dev libad9361-dev librtaudio-dev libhackrf-dev
sudo dpkg -i sdrpp_debian_amd64.deb

If libvolk2-dev is not available, use libvolk1-dev.

Arch-based

Install the latest release from the sdrpp-git AUR package

Other

There are currently no existing packages for other distributions, for these systems you'll have to build from source.

MacOS

TODO

BSD

There are currently no BSD packages, refer to Building on Linux / BSD for instructions on building from source.

Building on Windows

The preferred IDE is VS Code in order to have similar development experience across platforms and to build with CMake using the command line.

Install dependencies

  • cmake
  • vcpkg
  • PothosSDR (This will install libraries for most SDRs)
  • RtAudio (You have to build and install it in C:/Program Files (x86)/RtAudio/)

After this, install the following dependencies using vcpkg:

  • fftw3
  • glfw3
  • glew

You are probably going to build in 64 bit so make sure vcpkg installs the correct versions using .\vcpkg.exe install <package>:x64-windows

Building using the command line

IMPORTANT: Replace <vcpkg install directory> with vcpkg's install directory.

mkdir build
cd build
cmake .. "-DCMAKE_TOOLCHAIN_FILE=<vcpkg install directory>/scripts/buildsystems/vcpkg.cmake" -G "Visual Studio 16 2019"
cmake --build . --config Release

Running for development

Create a new configuration root directory

./create_root.bat

This will create the root_dev directory that will be used to save the configs of sdrpp and the modules.

You will next need to edit the root_dev/config.json file to point to the modules that were built. If the file is missing in your folder run the application once and it will create one with default value -- see later on how to run the application.

Run SDR++ from the command line

From the top directory, you can simply run:

./build/Release/sdrpp.exe -r root_dev -s

Or, if you wish to run from the build directory e.g. build/Release and adapt the relative path to the root_dev folder:

./sdrpp.exe -r ../../root_dev -s

The optional -s argument is for keeping the console active in order to see the error messages.

Because all the paths are relative, for the rest of the command line instructions we are going to assume you are running from the top directory using the former command. As mentioned previously you need to edit root_dev/config.json to add the modules that were built. From the default configuration file you need to add the paths in the modules section. Add to this list all the modules you wish to use.

..."modules": [
"./build/radio/Release/radio.dll",
"./build/recorder/Release/recorder.dll",
"./build/rtl_tcp_source/Release/rtl_tcp_source.dll",
"./build/soapy_source/Release/soapy_source.dll",
"./build/audio_sink/Release/audio_sink.dll"
]
...

You also need to change the location of the resource and module directories, for development, I recommend:

..."modulesDirectory": "root_dev/modules",
..."resourcesDirectory": "root_dev/res",
...

Remember that these paths will be relative to the run directory.

Installing SDR++

If you choose to run SDR++ for development, you do not need this step. First, copy over the exe and DLLs from build/Release/ to root_dev.

Next you need to copy over all the modules that were compiled. To do so, copy the DLL file of the module (located in its build folder given below) to the root_dev/modules directory and other DLLs (that do not have the exact name of the module) to the root_dev directory.

The modules built will be some of the following (Repeat the instructions above for all you wish to use):

  • build/radio/Release/
  • build/recorder/Release/
  • build/rtl_tcp_source/Release/
  • build/spyserver_source/Release/
  • build/soapy_source/Release/
  • build/airspyhf_source/Release/
  • build/plutosdr_source/Release/
  • build/audio_sink/Release/

Building on Linux / BSD

Select which modules you wish to build

Depending on which module you want to build, you will need to install some additional dependencies. Here are listed every module that requires addition dependencies. If a module enabled by default and you do not wish to install a perticular dependency (or can't, eg. the BladeRF module on Debian Buster), you can disable it using the module parameter listed in the table below

  • soapy_source: SoapySDR + drivers for each SDRs (see SoapySDR docs)
  • airspyhf_source: libairspyhf
  • plutosdr_source: libiio, libad9361
  • audio_sink: librtaudio-dev

Install dependencies

  • cmake
  • fftw3
  • glfw
  • glew
  • libvolk

Next install dependencies based on the modules you wish to build (See previous step)

Note: make sure you're using GCC 8 or later as older versions do not have std::filesystem built-in.

Building

replace <N> with the number of threads you wish to use to build

mkdir build
cd build
cmake ..
make -j<N>

Create a new root directory

sh ./create_root.sh

Running for development

If you wish to install SDR++, skip to the next step

First run SDR++ from the build directory to generate a default config file

./sdrpp -r ../root_dev/

Then, you will need to edit the root_dev/config.json file to point to the modules that were built. Here is an example of what it should look like:

..."modules": [
"./build/radio/radio.so",
"./build/recorder/recorder.so",
"./build/rtl_tcp_source/rtl_tcp_source.so",
"./build/soapy_source/soapy_source.so",
"./build/audio_sink/audio_sink.so"
]
...

Note: You can generate this list automatically by running find . | grep '\.so' | sed 's/^/"/' | sed 's/$/",/' | sed '/sdrpp_core.so/d' in the build directory.

You also need to change the location of the resource and module directories, for development, I recommend:

..."modulesDirectory": "./root_dev/modules",
..."resourcesDirectory": "./root_dev/res",
...

Remember that these paths will be relative to the run directory.

Of course, remember to add entries for all modules that were built and that you wish to use.

Next, from the top directory, you can simply run:

./build/sdrpp -r root_dev

Or, if you wish to run from the build directory, you will need to correct the directories in the config.json file, and then run:

./sdrpp -r ../root_dev

Installing SDR++

To install SDR++, run the following command in your build folder:

sudo make install

Module List

Not all modules are built by default. I decided to disable the build of those with large libraries, libraries that can't be installed through the package manager (or pothos) and those that are still in beta. Modules in beta are still included in releases for the most part but not enabled in SDR++ (need to be instantiated).

Sources

NameStageDependenciesOptionBuilt by defaultBuilt in ReleaseEnabled in SDR++ by default
airspy_sourceWorkinglibairspyOPT_BUILD_AIRSPY_SOURCE
airspyhf_sourceWorkinglibairspyhfOPT_BUILD_AIRSPYHF_SOURCE
bladerf_sourceWorkinglibbladeRFOPT_BUILD_BLADERF_SOURCE⚠️ (not Debian Buster)
file_sourceWorking-OPT_BUILD_FILE_SOURCE
hackrf_sourceWorkinglibhackrfOPT_BUILD_HACKRF_SOURCE
limesdr_sourceWorkingliblimesuiteOPT_BUILD_LIMESDR_SOURCE
sddc_sourceUnfinished-OPT_BUILD_SDDC_SOURCE
rtl_sdr_sourceWorkinglibrtlsdrOPT_BUILD_RTL_SDR_SOURCE
rtl_tcp_sourceWorking-OPT_BUILD_RTL_TCP_SOURCE
sdrplay_sourceWorkingSDRplay APIOPT_BUILD_SDRPLAY_SOURCE
soapy_sourceWorkingsoapysdrOPT_BUILD_SOAPY_SOURCE
spyserver_sourceWorking-OPT_BUILD_SPYSERVER_SOURCE
plutosdr_sourceWorkinglibiio, libad9361OPT_BUILD_PLUTOSDR_SOURCE

Sinks

NameStageDependenciesOptionBuilt by defaultBuilt in ReleaseEnabled in SDR++ by default
audio_sinkWorkingrtaudioOPT_BUILD_AUDIO_SINK
network_sinkWorking-OPT_BUILD_NETWORK_SINK
new_portaudio_sinkBetaportaudioOPT_BUILD_NEW_PORTAUDIO_SINK

Decoders

NameStageDependenciesOptionBuilt by defaultBuilt in ReleaseEnabled in SDR++ by default
falcon9_decoderUnfinishedffplayOPT_BUILD_FALCON9_DECODER
m17_decoderBeta-OPT_BUILD_M17_DECODER
meteor_demodulatorWorking-OPT_BUILD_METEOR_DEMODULATOR
radioWorking-OPT_BUILD_RADIO
weather_sat_decoderUnfinished-OPT_BUILD_WEATHER_SAT_DECODER

Misc

NameStageDependenciesOptionBuilt by defaultBuilt in ReleaseEnabled in SDR++ by default
discord_integrationWorking-OPT_BUILD_DISCORD_PRESENCE
frequency_managerWorking-OPT_BUILD_FREQUENCY_MANAGER
recorderWorking-OPT_BUILD_RECORDER
rigctl_serverWorking-OPT_BUILD_RIGCTL_SERVER

Troubleshooting

First, please make sure you're running the latest automated build. If your issue is linked to a bug it is likely that is has already been fixed in later releases

SDR++ crashes then it won't start again no matter what

This is a bug in 1.0.0 that was fixed in 1.0.1

In some cases, if a crash happened while the config was being saved, the config file woul be corrupted and SDR++ would refuse to start because of it.

This has now been fixed. If a config file is corrupted it'll just reset it to its default state.

"hash collision" error when starting

You likely installed the soapysdr-module-all package on Ubuntu/Debian. If not it's still a SoapySDR bug caused by multiple soapy modules coming in conflict. Uninstall anything related to SoapySDR then install soapysdr itself and only the soapy modules you actually need.

"I don't see -insert module name here-, what's going on?"

If the module was included in a later update, it's not enabled in the config. The easiest way to fix this is just to delete the config.json file and let SDR++ recreate it (you will lose your setting relating to the main UI like VFO colors, zoom level and theme). The best option however is to edit the config file to add an instance of the module you wish to have enabled (see the Module List).

SDR++ crashes when stopping a RTL-SDR

This is a bug recently introduced by libusb1.4 To solve, this, simply downgrade to libusb1.3

SDR++ crashes when starting a HackRF

If you also have the SoapySDR module loaded (not necessarily enabled), this is a bug in libhackrf. It's caused by libhackrf not checking if it's already initialized. The solution until a fixed libhackrf version is released is to completely remove the soapy_source module from SDR++. To do this, delete modules/soapy_source.dll on windows or /usr/lib/sdrpp/plugins/soapy_source.so on linux.

Issue not listed here?

If you still have an issue, please open an issue about it or ask on the discord. I'll try to respond as quickly as I can. Please avoid trying to contact me on every platform imaginable thinking I'll respond faster though...

Contributing

Feel free to submit pull requests and report bugs via the GitHub issue tracker. I will soon publish a contributing.md listing the code style to use.

Credits

Patrons

Contributors

Libraries used

About

Cross-Platform SDR Software

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages