SDRPlusPlus/readme.md

350 wiersze
15 KiB
Markdown
Czysty Zwykły widok Historia

2020-12-13 23:47:11 +00:00
# SDR++, The bloat-free SDR software
2021-02-06 20:28:27 +00:00
![Screenshot](https://i.imgur.com/EFOqwQQ.png)
2020-07-19 16:09:59 +00:00
SDR++ is a cross-platform and open source SDR software with the aim of being bloat free and simple to use.
2021-04-26 18:17:57 +00:00
![Build](https://github.com/AlexandreRouma/SDRPlusPlus/workflows/Build%20Binaries/badge.svg)
2020-12-23 19:22:20 +00:00
2020-12-14 00:07:30 +00:00
* [Patreon](https://patreon.com/ryzerth)
* [Discord Server](https://discord.gg/aFgWjyD)
## Features
2020-11-26 18:25:58 +00:00
2020-12-13 23:47:11 +00:00
* Wide hardware support (both through SoapySDR and dedicated modules)
* SIMD accelerated DSP
2020-12-14 00:07:30 +00:00
* Cross-platform (Windows, Linux, OSX and BSD)
2020-07-19 16:09:59 +00:00
* Full waterfall update when possible. Makes browsing signals easier and more pleasant
2021-04-24 02:14:39 +00:00
## Coming soon
2020-11-26 18:25:58 +00:00
2020-07-19 16:09:59 +00:00
* Digital demodulators and decoders
2020-07-19 16:23:00 +00:00
* Light theme (I know you weirdos exist lol)
* Waterfall color scheme editor
2021-04-24 02:13:54 +00:00
* Other small customisation options
2020-07-19 16:09:59 +00:00
2020-12-22 17:23:26 +00:00
# Installing
## Windows
Download the latest release from [the Releases page](https://github.com/AlexandreRouma/SDRPlusPlus/releases) and extract to the directory of your choice.
2020-12-14 00:07:30 +00:00
2021-04-24 16:59:57 +00:00
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.
2020-12-22 17:23:26 +00:00
## Linux
2021-04-24 02:13:54 +00:00
### Debian-based (Ubuntu, Mint, etc)
2020-12-24 15:27:12 +00:00
Download the latest release from [the Releases page](https://github.com/AlexandreRouma/SDRPlusPlus/releases) and extract to the directory of your choice.
Then, run:
```sh
2021-02-22 23:26:35 +00:00
sudo apt install libfftw3-dev libglfw3-dev libglew-dev libvolk2-dev libsoapysdr-dev libairspyhf-dev libiio-dev libad9361-dev librtaudio-dev libhackrf-dev
2020-12-24 15:27:12 +00:00
sudo dpkg -i sdrpp_debian_amd64.deb
```
If `libvolk2-dev` is not available, use `libvolk1-dev`.
2020-12-22 17:23:26 +00:00
2021-04-24 02:13:54 +00:00
### Arch-based
2021-04-24 02:18:17 +00:00
Install the latest release from the [sdrpp-git](https://aur.archlinux.org/packages/sdrpp-git/) AUR package
2021-04-24 02:13:54 +00:00
### Other
There are currently no existing packages for other distributions, for these systems you'll have to [build from source](https://github.com/AlexandreRouma/SDRPlusPlus#building-on-linux--bsd).
2020-12-22 17:23:26 +00:00
## MacOS
TODO
2020-12-14 00:07:30 +00:00
2020-12-22 17:23:26 +00:00
## BSD
2021-04-24 02:13:54 +00:00
There are currently no BSD packages, refer to [Building on Linux / BSD](https://github.com/AlexandreRouma/SDRPlusPlus#building-on-linux--bsd) for instructions on building from source.
2020-11-26 18:25:58 +00:00
2020-12-22 17:23:26 +00:00
# Building on Windows
## Install dependencies
2020-07-19 16:09:59 +00:00
* cmake
2020-12-22 17:23:26 +00:00
* vcpkg
2021-04-24 02:13:54 +00:00
* PothosSDR (This will install libraries for most SDRs)
2021-02-22 23:26:35 +00:00
* rtaudio
2020-12-22 17:23:26 +00:00
2021-04-24 02:13:54 +00:00
After this, install the following dependencies using vcpkg:
2020-07-19 16:09:59 +00:00
* fftw3
* glfw
* glew
2020-12-14 00:07:30 +00:00
2020-12-22 17:23:26 +00:00
## Building
```
2020-07-19 16:09:59 +00:00
mkdir build
cd build
cmake .. "-DCMAKE_TOOLCHAIN_FILE=C:/Users/Alex/vcpkg/scripts/buildsystems/vcpkg.cmake" -G "Visual Studio 15 2017 Win64"
cmake --build . --config Release
```
2020-12-22 17:23:26 +00:00
## Create a new root directory
```
./create_root.bat
2020-10-24 15:41:22 +00:00
```
2020-12-22 17:23:26 +00:00
## Running for development
If you wish to install SDR++, skip to the next step
2020-12-14 00:07:30 +00:00
2021-04-24 16:59:57 +00:00
You will first 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:
2020-12-14 00:07:30 +00:00
```json
2020-12-22 17:23:26 +00:00
...
2020-12-14 00:07:30 +00:00
"modules": [
2020-12-22 17:23:26 +00:00
"./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"
2020-12-14 00:07:30 +00:00
]
2020-12-22 17:23:26 +00:00
...
2020-10-24 15:41:22 +00:00
```
2020-07-19 16:09:59 +00:00
You also need to change the location of the resource and module directories, for development, I recommend:
```json
...
"modulesDirectory": "../root_dev/modules",
...
"resourcesDirectory": "../root_dev/res",
...
```
2020-12-22 17:23:26 +00:00
Remember that these paths will be relative to the run directory.
2021-04-24 16:59:57 +00:00
Of course, remember to add entries for all modules that were built and that you wish to use.
2020-12-22 17:23:26 +00:00
Next, from the top directory, you can simply run:
2020-10-22 00:28:43 +00:00
```
2020-12-22 17:23:26 +00:00
./build/Release/sdrpp.exe -r root_dev
2020-10-22 00:28:43 +00:00
```
2020-10-24 15:18:54 +00:00
2020-12-22 17:23:26 +00:00
Or, if you wish to run from the build directory:
2020-10-22 00:28:43 +00:00
```
2020-12-22 17:23:26 +00:00
./Release/sdrpp.exe -r ../root_dev
```
## Installing SDR++
2021-04-24 16:59:57 +00:00
If you choose to run SDR++ for development, you do not need this step.
2020-12-22 17:23:26 +00:00
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 modue) 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
2021-06-28 00:22:51 +00:00
## 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
2020-12-22 17:23:26 +00:00
## Install dependencies
* cmake
* fftw3
* glfw
* glew
* libvolk
2021-04-24 16:59:57 +00:00
2021-06-28 00:22:51 +00:00
Next install dependencies based on the modules you wish to build (See previous step)
2020-12-22 17:23:26 +00:00
2020-12-23 18:23:47 +00:00
Note: make sure you're using GCC 8 or later as older versions do not have `std::filesystem` built-in.
2020-12-22 17:23:26 +00:00
## Building
replace `<N>` with the number of threads you wish to use to build
```sh
2020-10-22 00:28:43 +00:00
mkdir build
cd build
cmake ..
2020-12-22 17:23:26 +00:00
make -j<N>
2020-10-22 00:28:43 +00:00
```
2020-07-19 16:09:59 +00:00
2020-12-22 17:23:26 +00:00
## Create a new root directory
```sh
sh ./create_root.sh
```
2020-12-14 00:07:30 +00:00
2020-12-22 17:23:26 +00:00
## Running for development
If you wish to install SDR++, skip to the next step
2020-12-14 00:07:30 +00:00
First run SDR++ from the build directory to generate a default config file
```
./sdrpp -r ../root_dev/
```
2021-04-24 16:59:57 +00:00
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:
2020-12-14 00:07:30 +00:00
```json
2020-12-22 17:23:26 +00:00
...
2020-12-14 00:07:30 +00:00
"modules": [
2020-12-22 17:23:26 +00:00
"./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"
2020-12-14 00:07:30 +00:00
]
2020-12-22 17:23:26 +00:00
...
2020-12-14 00:07:30 +00:00
```
2021-02-07 11:30:25 +00:00
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:
```json
...
2020-12-26 08:47:37 +00:00
"modulesDirectory": "./root_dev/modules",
...
2020-12-26 08:47:37 +00:00
"resourcesDirectory": "./root_dev/res",
...
```
2020-12-22 17:23:26 +00:00
Remember that these paths will be relative to the run directory.
2020-10-24 15:18:54 +00:00
2021-04-24 02:13:54 +00:00
Of course, remember to add entries for all modules that were built and that you wish to use.
2020-10-24 15:34:18 +00:00
2020-12-22 17:23:26 +00:00
Next, from the top directory, you can simply run:
2020-10-24 15:18:54 +00:00
```
2020-12-26 08:47:37 +00:00
./build/sdrpp -r root_dev
2020-10-24 15:18:54 +00:00
```
2021-04-24 16:59:57 +00:00
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:
2020-10-24 15:41:22 +00:00
```
2020-12-26 08:47:37 +00:00
./sdrpp -r ../root_dev
2020-10-24 15:41:22 +00:00
```
2020-10-24 15:34:18 +00:00
2020-12-22 17:23:26 +00:00
## Installing SDR++
2021-04-24 02:13:54 +00:00
To install SDR++, run the following command in your ``build`` folder:
```sh
2021-04-24 02:17:09 +00:00
sudo make install
```
2020-12-22 17:23:26 +00:00
2021-06-28 00:22:51 +00:00
# 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
| Name | Stage | Dependencies | Option | Built by default| Built in Release | Enabled in SDR++ by default |
|------------------|------------|-------------------|----------------------------|:---------------:|:-----------------------:|:---------------------------:|
| airspy_source | Working | libairspy | OPT_BUILD_AIRSPY_SOURCE | ✅ | ✅ | ✅ |
| airspyhf_source | Working | libairspyhf | OPT_BUILD_AIRSPYHF_SOURCE | ✅ | ✅ | ✅ |
| bladerf_source | Beta | libbladeRF | OPT_BUILD_BLADERF_SOURCE | ⛔ | ⚠️ (not Debian Buster) | ✅ |
| file_source | Working | - | OPT_BUILD_FILE_SOURCE | ✅ | ✅ | ✅ |
| hackrf_source | Working | libhackrf | OPT_BUILD_HACKRF_SOURCE | ✅ | ✅ | ✅ |
| limesdr_source | Beta | liblimesuite | OPT_BUILD_LIMESDR_SOURCE | ⛔ | ✅ | ✅ |
| sddc_source | Unfinished | - | OPT_BUILD_SDDC_SOURCE | ⛔ | ⛔ | ⛔ |
| rtl_sdr_source | Working | librtlsdr | OPT_BUILD_RTL_SDR_SOURCE | ✅ | ✅ | ✅ |
| rtl_tcp_source | Working | - | OPT_BUILD_RTL_TCP_SOURCE | ✅ | ✅ | ✅ |
| sdrplay_source | Working | SDRplay API | OPT_BUILD_SDRPLAY_SOURCE | ⛔ | ✅ | ✅ |
| soapy_source | Working | soapysdr | OPT_BUILD_SOAPY_SOURCE | ✅ | ✅ | ✅ |
| spyserver_source | Unfinished | - | OPT_BUILD_SPYSERVER_SOURCE | ⛔ | ⛔ | ⛔ |
| plutosdr_source | Working | libiio, libad9361 | OPT_BUILD_PLUTOSDR_SOURCE | ✅ | ✅ | ✅ |
## Sinks
| Name | Stage | Dependencies | Option | Built by default| Built in Release | Enabled in SDR++ by default |
|------------------|------------|-------------------|----------------------------|:---------------:|:-----------------------:|:---------------------------:|
| audio_sink | Working | rtaudio | OPT_BUILD_AUDIO_SINK | ✅ | ✅ | ✅ |
## Decoders
| Name | Stage | Dependencies | Option | Built by default| Built in Release | Enabled in SDR++ by default |
|---------------------|------------|--------------|-------------------------------|:---------------:|:-----------------------:|:---------------------------:|
| falcon9_decoder | Beta | ffplay | OPT_BUILD_FALCON9_DECODER | ⛔ | ⛔ | ⛔ |
| meteor_demodulator | Working | - | OPT_BUILD_METEOR_DEMODULATOR | ✅ | ✅ | ⛔ |
| radio | Working | - | OPT_BUILD_RADIO | ✅ | ✅ | ✅ |
| weather_sat_decoder | Unfinished | - | OPT_BUILD_WEATHER_SAT_DECODER | ⛔ | ⛔ | ⛔ |
## Misc
| Name | Stage | Dependencies | Option | Built by default| Built in Release | Enabled in SDR++ by default |
|---------------------|------------|--------------|-------------------------------|:---------------:|:-----------------------:|:---------------------------:|
| discord_integration | Working | - | OPT_BUILD_DISCORD_PRESENCE | ✅ | ✅ | ⛔ |
2021-07-03 17:46:21 +00:00
| frequency_manager | Beta | - | OPT_BUILD_FREQUENCY_MANAGER | ✅ | ✅ | ✅ |
2021-06-28 00:22:51 +00:00
| recorder | Working | - | OPT_BUILD_RECORDER | ✅ | ✅ | ✅ |
# Toubleshooting
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
## "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 comming 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 hae 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/share/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...
2020-07-19 16:12:03 +00:00
# Contributing
2020-09-06 14:31:50 +00:00
2021-04-24 16:59:57 +00:00
Feel free to submit pull requests and report bugs via the GitHub issue tracker.
2020-08-05 11:00:32 +00:00
I will soon publish a contributing.md listing the code style to use.
# Credits
2020-09-06 14:31:50 +00:00
## Patrons
2021-04-19 23:38:32 +00:00
* [Croccydile](https://example.com/)
2021-02-10 20:35:56 +00:00
* [Daniele D'Agnelli](https://linkedin.com/in/dagnelli)
2021-03-07 19:11:35 +00:00
* [W4IPA](https://twitter.com/W4IPAstroke5)
* [Lee Donaghy](https://github.com/github)
2021-04-25 20:54:09 +00:00
* [ON4MU](https://github.com/)
* [Passion-Radio.com](https://passion-radio.com/)
2021-03-08 15:38:48 +00:00
* [Scanner School](https://scannerschool.com/)
* [SignalsEverywhere](https://signalseverywhere.com/)
2020-08-05 11:07:12 +00:00
2021-02-28 16:32:22 +00:00
2020-08-05 11:07:12 +00:00
## Contributors
2021-02-28 16:32:22 +00:00
* [Aang23](https://github.com/Aang23)
2020-12-22 17:23:26 +00:00
* [Alexsey Shestacov](https://github.com/wingrime)
2021-02-28 16:32:22 +00:00
* [Aosync](https://github.com/aosync)
2020-08-05 11:11:42 +00:00
* [Benjamin Kyd](https://github.com/benkyd)
* [Benjamin Vernoux](https://github.com/bvernoux)
2021-02-28 16:32:22 +00:00
* [Cropinghigh](https://github.com/cropinghigh)
2021-05-31 16:39:15 +00:00
* [Fred F4EED](http://f4eed.wordpress.com/)
2020-12-26 22:12:09 +00:00
* [Howard0su](https://github.com/howard0su)
* [Joshua Kimsey](https://github.com/JoshuaKimsey)
* [Martin Hauke](https://github.com/mnhauke)
2021-07-03 14:15:18 +00:00
* [Marvin Sinister](https://github.com/marvin-sinister)
2021-02-28 16:32:22 +00:00
* [Paulo Matias](https://github.com/thotypous)
2020-08-12 14:43:44 +00:00
* [Raov](https://twitter.com/raov_birbtog)
* [Starman0620](https://github.com/Starman0620)
* [Syne Ardwin (WI9SYN)](https://esaille.me/)
2020-12-26 22:12:09 +00:00
* [Szymon Zakrent](https://github.com/zakrent)
* [Tobias Mädel](https://github.com/Manawyrm)
2020-12-26 22:12:09 +00:00
2020-09-06 14:31:50 +00:00
2021-04-24 02:30:30 +00:00
## Libraries used
2020-09-06 14:31:50 +00:00
* [SoapySDR (PothosWare)](https://github.com/pothosware/SoapySDR)
* [Dear ImGui (ocornut)](https://github.com/ocornut/imgui)
* [spdlog (gabime)](https://github.com/gabime/spdlog)
* [json (nlohmann)](https://github.com/nlohmann/json)
* [rtaudio](http://www.portaudio.com/)
* [Portable File Dialogs](https://github.com/samhocevar/portable-file-dialogs)