ExaGear is an x86 emulator for ARM computing devices. In the past we posted about ExaGear as together with WINE, it was an affordable solution that allowed Windows SDR apps to run on ARM devices like the Raspberry Pi 3. With ExaGear and WINE we were able to get Windows only SDR programs like Unitrunker, WinSTD C, DSD+, MultiPSK, PC-HFDL, Orbitron and Sondemonitor to run smoothly. In another previous post, DE8MSH was also able to use ExaGear to get Speclab running on his Raspberry Pi 3.
Unfortunately it appears that ExaGear is to be discontinued from February 28 onwards although they note that all previously purchased licences will continue to work. No reason has been given other than noting that it is their business decision. For now the downloads and ability to purchase licences is still active until February 28, so if ExaGear was a product you were interested in, you have just over a week to obtain it.
As John notes, running SDR software from within a virtual machine essentially freezes a working version of your setup in a virtual image. It's then possible to put the image on a memory stick and take your entire working software setup with you and run it on another PC. Using a fixed image then also avoids problems with OS updates breaking things, as updates can be safely turned off on the virtual machine. Any damage from viruses is localized to the virtual machine only.
During his research John found many people who have been running Linux from within a virtual machine running on Windows, but not the reverse. Originally he tried running a Windows VM from within Windows, but he experienced crashes. Only when using Linux as the base OS was his Windows VM stable.
In his setup he runs Fedora 26 as the base Linux OS (although other Linux versions should also work), and Windows 7 in the Virtual Machine. He uses Oracle VirtualBox as the virtualization software. Once Windows 7 is installed on the Virtual Machine, setting up software like SDR# is as simple as going through our quickstart guide.
There is a great advantage to running SDR decoder apps on a single board PC like a Raspberry Pi 3. For example instead of committing a whole PC to become a dedicated decoder, a cheap Pi 3 can be used instead. However, unfortunately many decoder apps are written for the x86 CPU architecture and/or Windows, making them impossible to run on ARM and/or primarily Linux devices like the Raspberry Pi 3.
That is unless you use an emulator combination like Eltechs Exagear and Wine. Exagear is an emulator that emulates an x86 environment on a device like a Raspberry Pi 3 which uses an ARM CPU. Wine is a Windows compatibility layer that allows you to run x86 Windows apps on an x86 Linux installation. So by combining Exagear together with Wine it is possible to run Windows apps on ARM Linux devices.
Exagear is not free (although there is a free trial). It currently costs $22.95 USD for a Pi 3 licence, and $16.95 USD for a Pi 2 licence and $11.45 for a Pi 1/Zero licence. They also have versions for Odroid, Cubieboard, BananaPi, Jetson and many other ARMv7 and ARMv8 devices like the super cheap and powerful Orange Pi’s. There are free alternatives out there like QEMU, however when we tested QEMU it was far too slow on the Pi 3 to even run notepad responsively, let alone a decoder. Exagear on the other hand seems to run apps at near native speeds, without much lag at all. So in this respect the price seems to be worth it.
We decided to test the Exagear + Wine combination on a Pi 3 and were successful in running a number of apps including Unitrunker, WinSTD-C, WXtoImg, DSDPlus, PC-HFDL, MultiPSK, Orbitron and Sondemonitor.
Trunking setup with Unitrunker on a Raspberry Pi 3
With Unitrunker we were able to set up a full trunk tracking system using two RTL-SDR dongles, rtl_fm, rtl_udp and a custom script to control rtl_udp.
In the future we may put up a full double checked tutorial with images, but for now a roughly written tutorial is presented below. The tutorial is fairly involved and assumes decent Linux experience. The tutorial starts from a fresh install of Raspbian.
The basic idea of operation is based around the fact that the RTL-SDR cannot be used directly within Wine (or so it seems). So the control signal audio is routed from rtl_fm running on one dongle into Unitrunker on Wine using alsa loopback. Then we use the old Unitrunker remote.dll method to generate a sdrsharptrunking.log file which is a text file that contains the current frequency that the voice receiver should tune to. A simple shell script continuously reads this file and extracts the frequency, and then commands an instance of rtl_udp running with the second dongle to tune to that frequency.
Over on YouTube user Kevin Loughin has recently uploaded a video that shows a step by step guide on how to set up an SDRplay RSP2 in Linux. Setting up the RSP2 in Linux is not a simple task, but Kevin’s video walks us through the entire process step by step. At the end of the process you’ll be set up with the SoapySDR framework which is the glue software that sits between the hardware driver and SDR software. You’ll also have the CubicSDR software installed which is what you use for general browsing and listening. CubicSDR is similar to SDRuno, SDR#, HDSDR etc.
Version 2.6 of the popular SDR program GQRX has just been released (changelog). GQRX is a general signal browsing program similar to programs like SDR#, HDSDR and SDR-Console. However GQRX is designed to run on Linux, MacOS and Raspberry Pi 2 & 3. Note that v2.6 is still a work in progress for MacOS. Apart from the new features and bug fixes, one of the major improvements appears to be reduced CPU usage, meaning that it should run better on older PCs. The changelog is pasted below:
1-2-5 scaling on FFT axis.
Remember AGC settings between sessions.
Right-click on FFT resets frequency zoom.
Separate dB ranges for pandapter and waterfall.
Raw I/Q mode.
Command line option to set Qt style (fusion, windows, …)
Binary packages for Raspberry Pi 2 and 3 (see below)
Stuttering audio with Pulseaudio backend.
Use system font on FFT plot (too small font on high res displays).
Broken FUNcube Dongle Pro+ support on Mac OS X 10.11.4.
Correct display of negative offsets between -1 and 0 kHz.
Reset frequency digits below the one that is being changed.
LNB LO could not be set from I/O configuration dialog.
Update squelch level when switching between demodulators.
Set correct filter range when loading bookmark.
White area on waterfall.
RFSpace Cloud-IQ support on Mac OS X, RPI binaries and in PPA.
Input decimator performance.
SDRPlay integration through SoapySDR.
Only probe for devices when the program is started.
Recently we found this excellent quick start guide by Kenn Ranous which shows how to set up various RTL-SDR related software programs on (Debian) Linux. The guide shows how to install the drivers, how to install and set up GQRX, CubicSDR, dump1090, Virtual Radar Server, QSpectrum Analyzer and SDR Trunk.
If you are struggling with getting an RTL-SDR to work on a Linux system then this should be a very good starting point.
The thing I like most is that I can replay past transmissions by clicking in the waterfall history. Using other SDR software, when a new transmission pops up, I feel like I’m in a race to tune to it before it ends so that I can at least hear some of it, but in my software, I don’t even have to pay attention to what’s happening now, and so I seldom do. Usually I don’t notice transmissions on new frequencies until they’ve ended, but I still get to listen to them.
I also put some effort into trying to make sure AM and FM transmissions were equal in volume, as well as at the correct volume according to how well they were modulated, in that I aimed for 100% modulation leading to audio output that’s 6 dB below the ceiling. It seemed as if it was quite random in other software, as switching from AM to FM might cause a huge jump or drop in audio volume. I don’t like to play with my volume controls, so I did my best to make it so that I don’t have to. I’m also not at all fond of the “click the numbers” method of changing the center frequency which seems to be so common. So in mine, I just type in the MHz on the number keypad and press enter.
I’m also much more fond of my waterfall coloring scheme than any other I’ve seen. It seems much smoother and more informative, at least to me anyway. I suppose that’s rather subjective.
…but it’s rather hard to compare it to other software given that I only got to use other software for two or three days. I rather soon knew I wanted to write my own, and I wanted to use the V4L2 API (that dvb_usb_rtl28xxu module you have to blacklist to use rtl-sdr is an SDR driver, not a video driver), but I had to upgrade to Linux Mint 18 to get access to it since it’s a new API, and after doing so, I haven’t been able to get any of the existing SDR software to both compile and work after it’s compiled. So I just focused on writing my own, since I was wanting to do so anyway. (No support for that V4L2 API though, as it turns out its buggy and offers no way to control the dongle’s gain, so it’s basically unusable.)
In this episode of Hak5, a popular YouTube technology channel, Shannon shows how to use the RTL-SDR on Debian Linux. She shows how to install the RTL-SDR drivers from scratch if using a distribution without them pre-installed and also shows how to install and use rtl_fm, a command line FM demodulator.
WiFi Birdhouses and Linux RTL-SDR Setup, Hak5 1703