As a long-time devotee of the concept of software defined radio (SDR), I remain somewhat discouraged at the current state-of-the-art with respect to its usage in the ham radio world.
I remember seeing a very nice talk at the SeaPac Convention some years ago, where a gentleman had eviscerated an old Heath SB-104 transceiver and installed some very up to date (for the time) SDR hardware inside it. His audience for the talk was a lot of older hams who had either never heard of SDR or did not know what it meant.
The meaningful part (at least to me) of his talk was where he explained that in the old days, if you wanted to change your radio, you had to change some hardware. You might change a tube, replace a coil, add a crystal in order to obtain the new functionality that was desired. The revolutionary part was that in the SDR world, you would make all of these changes in software, and the hardware portion of the system would remain unchanged.
I am disappointed that some 20 years after SDR first became practical in the ham radio domain, the vast majority of the implementations in use are ones where the end-user is simply unable to make any changes to the software (or even view the software), mostly due to a lack of open-source software licensing, thereby losing the major promise of SDR.
To be sure, a significant part of the reason for this is that the required knowledge; what SDR functions need to be implemented, how to encode these in software, and how to build and deploy this software on to the hardware are surely specialized domains of knowledge. However, many of the major SDR implementations in use are “black-box” and do not lend themselves to exploration or modification, either coincidentally or deliberately.
Having said all of that, let’s delve into what parts of an SDR implementation we might want to modify, and survey the market and see which general purpose SDRs allow modifications to which portions of the system.
Popularity1 | Vendor | SDR | Software | License | Language |
---|---|---|---|---|---|
262000 | HackRF | HackRF One | SDR# | MS-RSL | .Net |
90100 | KiwiSDR | KiwiSDR | KiwiSDR | GPL | C++ |
133000 | NooElec | NESDR | CubicSDR | GPL | C++ |
398000 | RTL-SDR | RTL2832U | SDR# | MS-RSL | .Net |
29500 | Red Pitaya | Red Pitaya | OpenHPSDR-PowerSDR | GPL | C# |
9690 | Ettus | USRP Bus | GNU Radio | GPL | C++ |
25000 | Ettus | USRP Network | GNU Radio | GPL | C++ |
248000 | Microtelcom | Perseus | Perseus | Proprietary | C++ |
4560 | SRL | QS1R | SDRMAX V | Proprietary | C++ |
9220 | OpenHPSDR | Mercury | PowerSDR | GPL | C# |
5900 | OpenHPSDR | Hermes | PowerSDR | GPL | C# |
965000 | Hermes-Lite | Hermes-Lite | Quisk | GPL | Python |
18400 | FlexRadio | Flex-1500 | PowerSDR | LGPL | C# |
20900 | FlexRadio | Flex-3000 | PowerSDR | LGPL | C# |
19700 | FlexRadio | Flex-5000 | PowerSDR | LGPL | C# |
10900 | FlexRadio | Flex-6600 | SmartSDR | Proprietary | |
773 | Apache Labs | Anan 7000DLE | OpenHPSDR-Thetis | GPL | C# |
1900 | TAPR | TangerineSDR | GNU Radio | GPL | C++ |
616 | AliExpress | RaspberrySDR | KiwiSDR | GPL | C++ |
708 | AliExpress | RX666 | SDR Console | Proprietary | C++ |
39900 | AliExpress | RX888 | SDR Console | Proprietary | C++ |
5740 | Aferdi | SDR-Net | HDSDR | Freeware | C++ |
2190 | WinRadio | G33DDC | G33DCC (Excalibur Pro) | Proprietary | |
10900 | Elad | FDM-S2 | FDM-S2 | Proprietary | |
35500 | RFSpace | NetSDR | SpectraVue | Proprietary | |
46900 | RFSpace | SDR-IQ | SpectraVue | Proprietary | |
1170 | SunSDR | ColibriNANO | ExpertSDR2 | Proprietary | |
44500 | SDRPlay | RSP1A | SDRuno | Proprietary | |
116000 | SDRPlay | RSPdx | SDRuno | Proprietary | |
20300 | SDRPlay | RSPduo | SDRuno | Proprietary | |
23600 | Airspy | R2 | SDR# | MS-RSL | .Net |
9590 | Airspy | HF+ Discovery | SDR# | MS-RSL | .Net |
7970 | Airspy | HF+ Dual Port | SDR# | MS-RSL | .Net |
16300 | Analog Devices | PlutoSDR | GNU Radio | GPL | C++ |
8930 | Lime Microsystems | LimeSDR | SoapySDR | Boost | C++ |
10200 | Nuand | bladeRF | SoapySDR | Boost | C++ |
16400 | Ali Express | New Horizons | GNU Radio | GPL | C++ |
1430 | AMSAT-UK | Funcube Dongle Pro | GNU Radio | GPL | C++ |
3520 | Othernet | KerberosSDR | GNU Radio | GPL | C++ |
- Number of hits on a Google search of “SDR” “<SDR vendor>” “<SDR name>”
Looking at this data, there appear to be only three or four active open-source SDR software projects:
Project | git Repo | Started | Contributors | Commits | Latest Release |
---|---|---|---|---|---|
GNU Radio | https://github.com/gnuradio/gnuradio | Jul 26, 2009 | 252 | 14444 | Mar 22, 2021 |
SoapySDR | https://github.com/pothosware/SoapySDR | Sep 28, 2014 | 15 | 740 | Apr 25, 2021 |
OpenHPSDR-Thetis | https://github.com/TAPR/OpenHPSDR-Thetis | Feb 26, 2017 | 2 | 64 | Oct 20, 2020 |
OpenHPSDR-PowerSDR | https://github.com/TAPR/OpenHPSDR-PowerSDR | Feb 26, 2017 | 2 | 93 | Mar 20, 2018 |
CubicSDR | https://github.com/cjcliffe/CubicSDR | Oct 26, 2014 | 18 | 1661 | Aug 21, 2018 |
ghpsdr-alex | https://github.com/alexlee188/ghpsdr3-alex | Jun 19, 2011 | 16 | 1590 | Jan 22, 2012 |
ghpsdr | https://github.com/g0orx/ghpsdr | Jan 29, 2017 | 1 | 1 | n/a |