SDRangel

A LimeSDR-compatible feature-packed open source cross-platform SDR application for ham radio and general purpose SDR workloads.

Developer and radio amateur Edouard ‘F4EXB’ Griffiths may have only been involved in software defined radio since 2005 – “my first money and time investments were made into building microwave portable equipment,” he recalls, “it was only a bit later that I got into SDR, firstly with sound card based equipment and zero IF converters” – but his work has a wide reach. Edouard is responsible for the SDRangel project, an open-source software package for various SDRs including those based on Lime Microsystems’ LMS7002M radio-frequency integrated circuit (RFIC).

Written in C++ and designed around Qt5 and OpenGL 3.0, SDRangel boasts a wide range of features. As well as support for a range of software defined radio platforms, from entry-level low-cost devices to more powerful units capable of both reception and transmission, the software can be configured to address multiple devices running concurrently, includes a headless server variant, and a REST application programming interface (API) for remote use. Its plug-in-based design also makes it easy to add any functionality currently missing, without having to modify the central program itself.

SDRangel traces its history back further than Edouard’s involvement, though: back to SDRangelove, part of the Osmocom family of open telecommunications projects. “I don’t remember exactly how I came across SDRangelove,” Edouard explains. “Maybe the famous ‘big list of RTL-SDR supported software.’ I immediately sort of fell in love with it. Firstly the look and feel, which reminded me of LeCroy instruments that I find very elegant. Then, technically, it seemed extremely reactive. I was amazed at the spectrum display of fast varying signals over a large bandwidth such as GSM bursts or the even the larger Wi-Fi bursts. I also liked very much the plug-in approach and the ability to stack any number and kind of demodulators in the pass band.

“However, it missed some important features for my radio listening activity. The scope function was also really poor so I thought it deserved a better and proper signal analyser. As I am a developer with C++ skills I gradually entered in the source code to make modifications. After a while there were so many of them and the functionality had stemmed so far away from the original that I thought it would be better to continue it as a separate project. Therefore I also slightly changed the name, shortening it to SDRangel. While adding more features I tried to keep the core ones that made me love the software at first sight: look and feel, efficient code, plug-ins and multiple channels. As I got more familiar with the code I started heavy refactoring allowing support of several receivers and then receivers and transmitters.”

Edouard credits the popularity of his fork to a collaboration with fellow radio amateur Marty ‘KN0CK’ Wittrock via the Myriad-RF forum. “He was looking into funding a project to build transmission-capable software supporting the LimeSDR. I replied that such software already existed as an open source project and that I was the author,” Edouard explains. “The thread started to attract more an more people and the git clones and downloads started to pick up. The software had much more user exposure from that point, and discussions on the Myriad-RF forum led to the implementation of key new functionalities such as the REST API and a headless version. This wouldn’t have been made possible without the public exposure, and I am grateful to Marty and the other participants for having helped me shape some features that are quite distinctive, I think.”

The popularity of Edouard’s software and the flexibility of its open-source nature means it can be found at the heart of a variety of projects. As well as being used to showcase the capabilities of the LimeSDR Mini during its crowdfunding campaign, SDRangel can be found powering Marty Wittrock’s tiny self-contained transceiver, decoding digital voice signals, running on a variety of single-board computer and tablet platforms, simultaneously monitoring four POCSAG channels, and exploring local radio-frequency spectra. The software has even been used to receive and decode digital TV signals, something which surprised even Edouard: “This is amazing,” he explains, “as I wouldn’t think this plug-in, developed mostly for low-sample-rate amateur radio experiments, would work at the high rates of broadcast channels.”

For the software’s future, Edouard has a range of irons in the fire. “Firstly, I want to increase even more its networking capabilities to make several instances of SDRangel collaborate in a network. This is the basis for it to be capable of deploying a SDR solution on a distributed architecture. This can be a cluster of lightweight devices such as the Raspberry Pi. SDR with Docker and distributed computing is something I would like to try.

“Also, this can pave the way to something like SDR-as-a-service [SDRaaS]. For that purpose the SDRdaemon companion project is going to be absorbed into SDRangel as a pair of channel plug-ins. I’m not sure there is a large usage of SDRangel as a base and a remote SDRdaemon Rx or Tx today, but extending the concept even further can help people find ideas. This is the main goal of the next minor release. Also, I have started writing a generic web-browser based interface to control SDRangel through the network using its REST API. It is well under way but needs more plug-in support to be fully operational and I have not advertised it yet.

“There is still a lot of work to do to implement new standards particularly in the digital realm. I think adding transmission capability in the digital voice modes would be very nice also. I am also thinking of extending the analyser capabilities. Naturally, one would think of SDR as a ‘radio’ thing as the acronym suggests, but SDR can also be used as a cheap signal analyser. This is what the channel analyser plug-in is doing. I think this functionality can be enhanced, maybe with a sweeper type of plug-in possibly combining FFT and sweeping. Network analyser capability can be added by combining Rx and Tx. Combining channels of MIMO devices for cross correlation analysis is quite interesting also. As you can see I don’t lack ideas – the thing is to phase them in, as any product owner would do.”

More information on SDRangel and its full source code can be found on Edouard’s GitHub repository, along with pre-compiled binary releases for Debian-based Linux and Windows operating systems. A discussion group and mailing list can be found on Groups.io.

See also: