SDR-J DAB-0.99, SDR-J FM-0.99 and SDR-J SW 7.1 (update -05-11-15)

The SDR-J software for Linux and Windows

SDR-J is a suite of a few programs for Software Defined Radio, at least the receiving side. Started as a hobby project (it still is!!!) for getting some sound using an Elektor SDR card as device, it evolved into the current set of programs.
As usual, (cross-)compiled Windows versions for the programs are part of the distribution. For Linux users the most recent set of sources is available through github.

Differences with previous versions

New is the addition of the DAB software for the Raspberry PI 2, and addition of an - experimental - DRM decoder to the SW software. A change was made from using Qt4 to Qt5, and all Windows software is now (cross-)compiled for 32 bits Windows (however, no garantees are given that it will run on really old machines).
A minor difference is that there are now three versions of the fm-mini version, one for each of the supported devices.

The DAB software

The DAB software for Windows and Linux PC's has a redesigned - smaller - GUI (part of the operation of having it run on a 32 bits machine). For Linux, the software can be configured such that in a separate window the spectrum of the signal is shown, the generated windows version supports that standard. If configured, the GUI contains a button to hide or make the spectrum visible.
The update contains an "updated" version, there were errors in the original 0.99 version (and most likely still are). As it turns out, data in the DAB frames can pass a crc test and still be incorrect. This lead - especially with weaker signals - to an erroneous size specification somewhere that could cause a segmentation violation and sometimes did. In the most recent version, additional tests were incorporated to perform some additional checks. With decent signals - and depending on the machine - the error was unnoticed. With the additional checks, I had DAB running continuously on the RPI for over 6 hours.
Known issues
a. If the signal is low, synchronization is sometimes lost and recovery only through touching the "gain" button.
The DAB software under Windows supports - in a limited way - devices using the "extIO-XXX.dll" (note that DAB needs 2048000 samples/second). It was tested with the extIO dll for the SDRplay and the extIO dll for the DABsticks.


New is that the support for the AIRSPY is re-established both under Windows and Linux.
Furthermore, an interface to rtl_tcp servers is added. This interface was tested with a 100 Mb (wired) link between a Raspberry PI 2 running the rtl_tcp server and my laptop. Of course setting up the required libraries and server is your own responsibility.
Under Linux the configuration file (either the "pro" file or the CMakeLists.txt file) provides opportunities to specify inclusion or exclusion of support for the devices from the list: the SDRplay, AIRSpy, DABsticks, rtl_tcp and the Ettus Research USRP devices. Obviously, when configured in, libraries should be available.

DAB on the Raspberry PI 2

The Raspberry PI 2 has a processor chip with 4 computing cores. By carefully spreading the computational load of the handling of DAB over these cores it is possible to run the DAB software on the Raspberry PI 2.
In my home situation the - headless - Raspberry PI 2 is located on the attick and remotely controlled through an SSH connection using the home WiFi on my laptop in my "lazy chair". To accomodate listening remotely, the DAB software on the Raspberry PI 2 sends - if so configured - the generated PCI samples (rate 48000) also to an internet port (port 100240). On the laptop then runs a very simple piece of program reading the stream and sending it to the soundcard
The left half of the screenshot shows the - in size reduced - GUI for the DAB program and the form for the AIRSPY that is - in this case - used as device. On the right half, the CPU load on the Raspberry PI 2 is shown in red (and is on average over 60 %). Using the AIRSPY does require a mapping of the input from a rate of 2.5Msamples to 2.048Msamples, done in software that causes a slightly higher load than using the SDRPlay. The small box labeled "dialog" is the form showing the local "client", such that the output is streamed to the local laptop.
One issue is cooling. A continuous load as occurring by DAB decoding makes the CPU temperature increase. As an example, running the DAB software and compiling the (modified) sources at the same time will increase the CPU temperature of the Raspberry PI 2 CPU unacceptably and cause the Raspberry PI 2 to shut down. Under normal circumstances, using an the configuration as sketched in the picture, I can listen for a couple of hours without intervention.

The OS running on my Raspberry PI 2 is Arch Linux. It was also successfully tested on Raspbian Jessie, and compiled and ran without problems. The software does not use qwt and can be compiled using either Qt5 or Qt4.
The sources of the dab-rpi contain a subdirectory with sources for an extremely simple client for handling the sound output (the client is available as an executable in the Windows distribution.
The DAB software on the Raspberry PI 2 is functionally equivalent to the DAB software for Linux and Windows. It is optimized to use the 4 computing cores and has - as stated earlier - a smaller GUI. It does support the same set of devices.
The precompiled Windows programs contain an executable using the sdr-j-dab-rpi sources and configured for use with SDRplay, AIRSPY, DABSticks and the extIO option. The Linux version can be configured for SDRplay, AIRspy, DABsticks, and UHD Ettus research (the last one not tested by me).

The sdr-j-swreceiver-7.1

The 7.1 version of the smallband sw-receiver underwent - again - a major restructuring.
For use of the software under Windows, handling of Winrad compatible dll's is still limited to those devices with an extIO dll that provides data using a regular soundcard.
Direct support for the Elektor card and for the pmSDR under Windows disappeared, since using the extIO-XXX dl for these devices is an excellent alternative.
The SDRplay and DABsticks are supported directly, both for Linux and Windows, the Elad-s1 is supported under Linux. Under Linux the direct support for the Elektor card and the pmSDR is still available.
The source tree of the sw receiver contains components to setup a (very simple) SDRplay mini-server for use with a "remote" handler in the sw-receiver. The mini server runs on any Linux system (I have it running on the Raspberry PI 2 and an old laptop with Ubuntu 14.04), and allows me to listen to SW and experiment with decoders while sitting in the "lazy chair".
As before, for configuration purposes (the ".ini" file has to be told where to find the plugins for the input handling and for the decoders), a small configuration utility is included. This utility will set the paths for the different plugins in the ".ini" file. (When starting the program from within the "windows-bin-sw" directory (for Windows) the plugins will be found directly.)


New is an experimental DRM decoder, a decoder for DRM transmissions (currently audio only). Its "version number" (0.1) shows that it is in an early stage of development. The figure below shows the reception of a british DRM program using a pmSDR device through an extIO-PMSDR.dll and an EMU 202 external soundcard under Windows.


The sw-receiver is cross-compiled for 32 bits and runs in 32 bits and 64 bits Windows and under Linux.
While Windows users can use the DRM decoder directly, Linux users have to do some extra work in creating an adapted faad library to get the decoder running (but of course, the software can be installed without DRM decoder).

The sdr-j-fmreceiver-0.99

The current version of the FM software underwent only few minor changes, the display showing the spectrum of the decoded signal is left out to save some space on the screen.
The 0.99 version of the FM software is - for Windows - cross-compiled for 32 bits and is equipped with improved - though still experimental - support for devices for which an extIOXXX.dll exists (We do require a reasonable inputrate, i.e. 192000 is the absolute minimum). The picture below shows a band of 1.536 Mhz, using the the extIO_SDRplay.dll plugin with an SDRplay device with a samplerate of 2M.


extIO-XXX dll's under Windows were tested for the SDRplay and the DABstick as "fast" devices, and pmSDR as device with a soundcard as AD converter.
For Windows there is - next to extIO-XXX dll support, "hard-wired" support for the SDRplay, the AIRSPY, DABsticks and a filereader.
For Linux "hard-wired" support can be configured for any combination of the AIRSPY, the SDRplay and DABstick. Support for the pmSDR and filereading is standard "hard-wired" in the Linux version.

The Windows distribution contains - as was the case in the previous release - a 32 bits fm receiver and a so-called "mini". The mini version now has a hard-wired connection with a device, i.e. a close coupling between device and program. For Linux one can configure support for one of AIRSPY, SDRplay or DABstick. For windows there are just 3 precompiled versions, one for each of the supported devices. The device can be recognized by the name of the mini.


For building the fm receiver under Linux a ".pro" file is available, configurable for the selected devices.
For building the fm-mini the "pro" file is easy configurable for the selected device. A CMakeLists.txt file is available, configuring requires some editing.


The spectrumviewer is unchanged (apart from the transition to Qt5).
The Mirics SDRplay handles samplerates up to 8 Mhz, so a spectrum of nearly 8Mhz can be shown. The picture shows the spectrum of part of the old band III for terrestrial TV, where the channels for DAB transmissions are to be found.


The spectrumwidth can be selected - depending on the selected device - within the small control window for the selected device. Automatic stepping through a user-defined range of frequencies, with a user-defined speed and stepsize is also possible.
The spectrum width for DABsticks is limited to 3 MHz, Airspy provides you with either 2.5 or 10 Mhz wide spectra.

The Windows version includes a selection for the supported devices (i.e. AIRSPY, SDRplay, DABsticks). For the Linux version one can configure the program to use selected devices. Again, including a device in the configuration (selectable in either the ".pro" file and/or the CMakeLists.txt file) requires having installed the appropriate libraries.

Manuals and documentation

The manuals can be downloaded here, dab receiver, the fm receiver, and one for the sw-receiver.
It is assumed that the handling of the spectrumviewer can be done without an additional manual and there is no separate manual for the DAB software on the Raspberry PI 2. The FM manual is still the 0.98 version, observable differences between 0.98 and 0.99 are small.

An informal description of the synchronization in the DRM decoder is given in this description, the document is still a draft.

The Windows executables

The executables for Windows are packed as always in a "zip" file. There are two files, one is for dab, a zipped folder for the DAB program, the FM program and the spectrumviewer, together some dll's, and the other one is for the sw-receiver together with the plugins for input and decoders.
The zip files contain the executables and many of the required basic dll's. For device specific software, such as the SDRPlay one has to install software libraries from the supplier (for the SDRPlay that is, for the AIRSPY it is. . Note that for execution, basic dll's for MS support, such as the msvcr100.dll are also required!!. Furthermore, for running software with a particular extIOXXX.dll, one should obtain that extIOXXX.dll and install the extIOXXX.dll in the windows-bin-xx folder.

The sources

The source for each of the programs is available from github.
Download is "git clone"
where XXX is any of
The README file for the "sdr-j-dab" contains information on how to build. The software can be build using Qt4 and Qt5, Ubuntu 14.04 does not seem to support the combination Qt5/qwt, Qt4/qwt can be used.
The manuals contain a list of the names of the required libraries. The manual for DAB and the manual for swreceiver contain a validated check for the availability of the required libraries used in Fedora 21 and Ubuntu 15.04.

For device specific libraries, i.e. for the SDRplay, the AIRSPY, DABsticks and for the Elad-s1 one has to install software available from the supplier of the device.
For the SDRplay one should load software from, there are simple install scripts for Windows, Linux and Raspberry PI 2. Note that for both Windows and Linux the most recent API (i.e. version 1.7) should be installed.
For the AIRSPY a dll for windows and sources for the library under Linux can be downloaded from . Be aware of the required patches that are mentioned and should be applied on Ubuntu, Arch Linux on the Raspberry PI 2, and probably others.
For DABsticks one has to install the osmocom library, available from, note however that many Linux distributions provide a package for these dongles.
For the Elad-s1, the library software is available from


The software is developed as hobby project and is available under a GPL, and as the license state:
SDR-J is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

I am grateful to SDRplay ltd for providing me the possibility to use the SDRplay and to Benjamin Vernoux for providing me the possibility to use the AIRSPY, both wonderful devices.
Suggestions and contributions (material and immaterial) are welcome.
Have Fun!!!

Pijnacker, november 2015
Jan van Katwijk
Lazy Chair Computing