SDR-J DAB-0.99X, WFM-RPI and SDR-J SW 7.1 (update 06-02-16)

The SDR-J software for Linux and Windows

SDR-J is a collection of programs for Software Defined Radio, at least the receiving side. Started as a hobby project (it still is!!!) for getting some sound with an Elektor SDR card as device, it evolved into the current set of programs.
The set consists of software for DAB (both on PC and Raspberry PI 2), software for (W)FM (both on PC and Raspberry PI 2), software for "classic radio", i.e. amateur modes and DRM, on a PC and some simple software for viewing spectra, also on a PC.
Programs for DAB,(W)FM and the spectrumviewer support DABsticks, the SDRplay and the AIRspy. The "classic radio" supports the SDRplay and various devices that need a soundcard for data transfer, e.g. the PMSdr, and - under Windows - many devices for which an extIO-XXX.dll exist.
As usual, (cross-)compiled executables for Windows of the programs are part of the distribution. New is that the most recent versions of the software the sources - stable ones and development versions - are on github. Some of the recent executables for Windows are also to be found on the repositories on github.

The DAB-RPI and sdr-j-dab programs are further developed. It is now possible to show additional data such as station labels.
The WFM-RPI programs for FM reception are further developed and attention was paid to rds decoding for mono transmissions.

DAB on the PC.

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 sdr-j-dab software can be configured such that in a separate window the spectrum of the signal is shown, the Windows version in the distribution is so configured. If configured, the GUI contains a button to hide or make the spectrum visible.
Supported devices
DABsticks are supported. There are two versions, one for the general libraries as developed by osmocom, and one for a more experimental set. See the README.DABSTICK in the sourcetree.
The SDRplay is supported, the SDRplay site has all information for obtaining the required libraries.
The Airspy is supported. The "built-in" support software will work with library version 1.07 and 1.06.
rtl_tcp servers are supported. This was tested with a 100 Mb (wired) link between a Raspberry PI 2 running the rtl_tcp server and my laptop running the client software. Of course setting up the required libraries and server is your own responsibility.
The configuration files - either the ".pro" file or the CmakeLists.txt file - can be set to include or exclude particular devices.

The DAB software under Windows supports - in a limited way - devices using the "extIO-XXX.dll" (note that DAB needs 2048000 samples/second, so do not try soundcard based devices). It was tested with the extIO dll's for the SDRplay, the extIO dll for the DABsticks and the most recent extIO dll for the AIRspy, using the 1.07 library (due to an interface mismatch, the extIO-AirSpy.dll, using library version 1.06 the software will not run).

dab-example

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 a different floor than where I normally reside and 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 a TCP port (port 20040). On the laptop then runs a very simple "soundClient", reading the stream and sending it to the soundcard
dab-example
The left part of the screenshot shows the - in size reduced - GUI for the DAB program, the form for the SDRplay that is - in this case - used as device and the "soundclient", running on the local machine.
The Raspberry PI 2 is, as shown in the picture, controlled through an SSH connection, handled by a MobaXterm X server, running under Windows.
The picture further shows that - obviously - the DAB-RPI software runs under Windows as well (in this case using the Airspy as input device).
Under normal circumstances, using a configuration with a remote Raspberry PI 2, as sketched in the picture, the connection remains active for hours without intervention (it depends on the quality of the local connection though).

The OS running on my Raspberry PI 2 is Arch Linux. The DAB-RPI software was also successfully tested on Raspbian Jessie, it compiled and ran. However, it seems that under Arch the software performs better. The DAB-RPI software does not use Qwt, which allows a painless compilation using either Qt5 or Qt4.
The sources of the DAB-RPI contain a subdirectory with sources for the aforementioned "soundClient" (the client is available as an executable in the Windows distribution.)
Although the DAB-RPI software is functionally equivalent to the sdr-j-dab software, there are some differences in the implementation. It is optimized to use the 4 computing cores and has - as stated earlier - a smaller GUI. It does support DABsticks, SDRplay and Airspy with built-in support functions (you obviously need to install the proper libraries though). Be aware that - at the time of writing - the SDRplay library for use on the RPI is older than the library for Linux and Windows, this might require adapting a setting in the configuration file. See README.SDRPLAY in the sourcetree.
The precompiled set of Windows programs contains an executable derived from the DAB-RPI sources and is configured for use with SDRplay, AIRSPY, DABSticks and the extIO option. The Linux version can be configured - by commenting or uncommenting lines in a configuration file - for SDRplay, AIRspy, DABsticks, and UHD Ettus research (the last one not tested by me).

The WFM-RPI software

WFM-RPI

The software for FM was modified and is continued as a set of "small" fm programs, one for each kind of input device. There is support for DABstick, for SDRplay and for the AIRspy, for each of these devices an instance of the WFM software is made and for each of these devices an executable is available in the Windows distribution. The Windows version furthermore supports - in a limited way - extIO-XXX.dll's. The software was rewritten to make use of the cores of the RPI 2 processor and both the DABstick and the SDRplay are easy to use as device. It must be noted though that since the AIRspy delivers its samples at a rate of 2500000, non-integer decimation has to be applied and the Raspberry PI 2, when asked to run the software with the AIRspy, will be loaded until (or just over) its limits. The software can be used however on a regular PC as well, both under Linux or under Windows.

A new feature is that the software supports a program list, which can be set and altered. Such a program list may contain some of the preferred program names with their associated frequency and is maintained between program invocations.

Also new is that - as with the DAB-RPI - the WFM-RPI software - when configured to do so - sends its output to port 20040 - for remote listening (again, my device is not in the same room where I normally stay).

The software runs on the Raspberry PI 2, and on regular PC's under Linux and Windows. Again, it was extensively tested on a Raspberry PI 2 running Arch Linux, and it was tested to show that compilation on and for Jessie on an RPI 2 did not give problems. However - again -, experiences seem to show that the software under Arch outperforms the software under Jessie in this respect, under Jessie there might be some stuttering in the sound.

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.)

configurator

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.

sw-example

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).

Spectrumviewer

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.

spectrum-example

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 (a manual dedicated to the DAB-RPI is still "under construction"), wfm software, and one for the sw-receiver.

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 a zipped folder for the DAB program, the WFM program and the spectrumviewer, together some dll's. The folder contains the executable for the FM software "old style" as well. The other one is for the sw-receiver together with the plugins for input and decoders.
Note that while the windows-bin-xxx folders are updated once every few (three, four) months, sometimes newer versions of some of the executables may be found on the github site (see below)

The sources

Sources for the programs are maintained at github, this site will also contain the most recent releases, sometimes including executables for Windows.
The github address is https://github.com/JvanKatwijk/XXX
where XXX is any of
sdr-j-dab
dab-rpi
sdr-j-fm
wfm-rpi
sdr-j-spectrumviewer
sdr-j-sw
To make life easy, an image of the Debian Jessie distro with both the DAB-RPI and WFM-RPI software installed, is available on request.

Finally...

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, February 2016
Jan van Katwijk
Lazy Chair Computing
J.vanKatwijk-at-gmail-dot-com