In my home situation the - headless - Raspberry PI 2 is
located on a different floor than where I normally reside and
is controlled through an SSH connection using the home WiFi.
To accomodate listening remotely - sitting in the "lazy chair" - the DAB-RPI software sends - if so configured - the generated PCM samples (rate 48000) to a TCP port (port 20040) rather than to the soundchips on the RPI. On the laptop then runs a very simple program "soundClient", reading the stream and sending it to the soundcard.
The sources of the DAB-RPI software contain a subdirectory with sources for a "soundClient" (this client is available as a cross compiled executable in the Windows distribution) with which is it possible to listen through a tcp connection to the sound generated in the RPI.
The software for (W)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 FM 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 same "listener", i.e. soundClient program can be used for listening.
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 set of precompiled Windows programs contains 4 executables, one for each of the devices mentioned, and one supporting devices for which an extioXXX.dll.
The swreceiver software implements a - more or less - classical shortwave
receiver with some common decoders, such as analog speech, psk, rtty, cw, wheatherfax and so on.
Handling of devices for which a Winrad compatible dll exist is
now extended with support for fast devices, i.e. devices such as
DABsticks and SDRplay that deliver their data through the usb.
Since the decoders in the software are all "small-band", the
samplerate of the data from these fast devices is reduced to 96000 (it can be
set to different values in the configuration file though, but 96000
samples/second leads to a spectrumwidth of 96000 Hz which functions well
on a common laptop screen).
The various pieces of software for interfacing to a device as well as the various decoders are implemented as plugins. Since the program has to "know" where to find the plugins for the input handling and for the decoders and looks into an ".ini" file for that purpose, 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.)
From the picture it can be seen that both a soundcard driven device as the pmSDR and a usb-oriented device as the SDRplay are handled properly by the extio-XXX handler. Note that the 2000000 samplerate with which the SDRplay collects its data is decimated to 96000
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 and send its decimated samplestream through a simple TCP server. I have it running on the Raspberry PI 2 near the antenna I use. It allows me to listen to SW and experiment with decoders while sitting in the "lazy chair".
The set of precompiled Windows programs contains an executable for the sw-receiver programs, together with plugins for the devices mentioned and with plugins for the decoders. The set contains furthermore an executable for the "SDRplay mini-server".
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 spectrum example with the AIRspy gives the spectrum of a locally received DAB channel.
The spectrum-width 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, and - as stated above - the SDRplay gives you spectra of up to 8 Mhz.
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 (note that the manual still refers to the previous version, where the controlbox for the selected device is on the GUI).
An informal description of the synchronization in the DRM decoder is given in this description, the document is still a draft. Furthermore, an informal tour through the sources of the DAB-RPI software is given in this description, the document is still preliminary.
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.
The libraries for supporting the devices and the extio-XXX.dll's are to be found on the osmocom site, the SDRplay site resp. through the airspy.com site. Note that we are not able to handle the 1.06 version of the extio-XXX.dll for the Airspy, the 1.07 (preliminary) version runs well though.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)
Sources for the programs are maintained at github, that site will also
contain the most recent releases, sometimes including executables for
Windows. The Windows executables are all generated using the MINGW64 toolchain, running on Fedora and can be regenerated using the appropriate settings in the
configuration files for qmake and - for the sdr-j-dab and the DAB-RPI programs - using cmake.
Sources can be downloaded using
git clone https://github.com/JvanKatwijk/XXX
where XXX is any of
To make life easy, an image of a Debian Jessie distro with both the DAB-RPI and WFM-RPI software installed, is available on request. Note, however, that this image will only run on an RPI 2, not on an RPI 3.
The software is developed as hobby project and is available under a GPL.
It is - obviously - nice if this software is useful, but
as the license states:
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, March 2016
Jan van Katwijk
Lazy Chair Computing