SDR-J DAB-0.99, SDR-J FM-0.99 and SDR-J SW 7.1
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, it evolved into the current set of programs.
As usual, (cross-)compiled Windows versions for the programs are part of the distribution, while for use under Linux (or for recompiling for Windows or other systems) the full set of sources is 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. On “hot” moments and when used for other tasks as well, the CPU temperature of the Raspberry PI 2 CPU may rise 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 source distribution (systems.tgz) contains – next to sources for the sdr-j-dab-rpi – sources for an extremely simple client for handling the sound output (only used under Linux).
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).
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 www.sdrplay.com, for the AIRSPY it is. https://github.com/airspy/host/releases . 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 distribution contains a single file systems.tgz with the full sourcetree.
The topdirectory is called “systems”, this directory contains subdirectories for the different sources. Apart from the directories for the sdr-j-swreceiver, the sdr-j-fmreceiver, the sdr-j-spectrumviewer and the sdr-j-dabreceiver-0.99, there are a few more:
a. “servers”, a directory containing the source for a (very) simple server to allow remote operation of an SDRplay in conjunction with the sw receiver, and the sources for a simple “listener” to be used in conjunction with the Raspberry PI 2 DAB software.
b. “sdr-j-dabreceiver-0.99-ubuntu-1404”, a directory with the set of sources to generate the sdr-j-dabreceiver-0.99 using Qt4 under ubuntu-14.04, accompanied by detailed instructions, Ubuntu 14.04 gives problems with the standard distribution since the Ubuntu 14.04 LTS does not seem to support qwt6 in combination with Qt5. (Ubuntu 15.04 does provide support).
c. “sdr-j-dabreceiver-0.98”, a directory containing the sources of the 0.98 version of the dab software (adapted for Qt5).
d. “sdr-j-dab-rpi.99”, a directory with sources for generating an executable on – and for- a Raspberry PI 2. Note that one needs a distribution that understands that an Raspberry PI 2 has an arm v7. The GUI of the software on the Raspberry PI 2 is simple and Qwt is not used, so it will compile without much problems on distros with either Qt4 orQt5.
Executables that are generated will be placed by default in a directory “linux-bin” in the top directory (i.e. the directory “systems”). The config file allows one to choose another place.
Using a decent toolchain for local development (or for cross compilation, e.g. Mingw64), it should be pretty easy to generate executables.
The software is developed under Fedora 21 and successfully was generated under Fedora 21, Ubuntu 14.04, Ubuntu 15.04, and Arch Linux (on my Raspberry PI 2). It was also cross-compiled for and tested under Windows 7. The settings in the “.pro” files reflect the development environment (i.e. Fedora 21) and may need adaptation.
For the DAB, FM and spectrumviewer software there is a choice between using the Qt QMake facility or using CMake. Warning: for the sw-receiver and the plugins the QMake facility should be used, the CMakeLists.txt files contain errors.
Note that different distributions (and even different releases of the same distro) use different naming schemes for Qt5 and qwt. You probably have to adapt the “.pro” file, or – for the DAB, FM and spectrumview software – the CMakeLists.txt file.
The manuals contain more information on how to build an executable, and they contain a list of 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 www.SDRplay.com, 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 https://github.com/airspy/host/releases . 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 www.osmocom.org, note however that many Linux distributions provide a package for these dongles.
For the Elad-s1, the library software is available from ecom.eladit.com.
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.
Pijnacker, october 2015
Jan van Katwijk
Lazy Chair Computing