Software-Defined Radios Help Explore RF Spectrum
When the first USB DTV receivers came out with tuners covering 54–806 MHz, I wondered if any of them could be modified into an inexpensive spectrum analyzer.
Thanks to RealTek and some Linux kernel developers anyone, even I, with a reasonably modern computer, can now build and experiment with software-defined radios, including spectrum analysis for under $26.
This month I’ll provide some tips on building your own software-defined radio covering approximately 64–1700 MHz. Run it on your laptop to track down interference to or from TV band wireless microphones in the field; monitor HD Radio spectrum; and experiment with signal processing and different analog and digital demodulators.
WHAT IS SOFTWARE-DEFINED RADIO?
A software-defined radio (SDR) is a radio— receiver, transmitter or both—where the signal processing is done in software rather than using dedicated hardware circuits. In its purest form, it consists of an antenna connected to an analog-to-digital converter for the receiver and a digital-toanalog converter for the transmitter.
Practical implementations use a bit more hardware—typically an RF amplifier and a mixer and local oscillator to convert a portion of the RF spectrum into the signals (typically I and Q outputs), that are applied to the analog-to-digital converter. In a very simple SDR this could be the two-channel audio input on the computer.
I’ll refer you to the Web for details on how the software part of the SDR works. The methods vary, but the usual approach is to use a fast Fourier Transform algorithm to convert the data from the A/D to the frequency domain, which allows us to select the desired signal and demodulate it using the appropriate software.
The easiest to understand examples I found were written about eight years ago by Eric Blossom in Linux Journal. See “GNU Radio: Tools for Exploring the Radio Frequency Spectrum” and “Listening to FM Radio in Software, Step by Step” at www.linuxjournal.com.
To dig deeper into SDR principles, visit gnuradio.org and browse through the references.
The hardware used in Eric Blossom’s articles would take a bit of work to construct. Fortunately, it is now possible to experiment with SDR at low cost without any soldering. Two hardware options are the FUNcube Dongle (http://www.funcubedongle.com) and the DVB-T/DAB/FM USB receivers based on the RealTek RTL2832u.
While both the FUNcube Dongle and the RTL2832u-based USB receivers adapted for SDR use the E4000 tuner, the FUNcube Dongle A/D produces 16 bit samples versus only 8 bits for the RTL2832u devices. It also comes with an SMA connector versus the MCX or other TV-type connectors found on the RealTek devices.
When connected to a computer’s USB port, the FUNcube dongle appears as an audio device, so no drivers are needed to work with almost any SDR software. The major downside to this is that the bandwidth is limited to 96 kHz. There is an active Yahoo group supporting the FUNcube Dongle and there are blocks allowing easy use of it in GNU Radio. It costs £99 (US$154) plus shipping.
The recent discovery by Linux V4L/ DVB kernel developer Anti Palosaari that inexpensive DVB/DAB USB tuners using the RealTek RTL2832u could output raw I/Q samples over USB at up to 3 megasamples per second (MSps) has resulted in an explosion of interest in SDR.
USING AN SDR ON WINDOWS
|Fig. 1: NOAA APT and Orbcomm satellite signals on HDSDR
I’m using a Newsky Tech Co. TV28T I bought from AliExpress (http://www.aliexpress. com) for $25.77. The MCX connector is compatible with the Hauppauge WinTV Aero-M adapter. Based on my tests comparing it to the FUNcube Dongle, the 8-bit sampling isn’t as bad as it sounds. The ability to view up to 2.4 MHz of spectrum more than offsets the loss in dynamic range.
By now I suspect many readers have Googled the TV28T or similar RTL2832u/ E4000 USB tuner; ordered a device and are wondering what they will do with it when it arrives.
To get it up and running on Windows, visit wiki.spench.net/wiki/USRP_Interfaces and follow the instructions to install the ExtIO interface and the HDSDR Windows application. HDSDR allows reception of FM, AM, ECSS, SSB, CW and DRM signals. They are displayed on a waterfall display, which is handy for catching intermittent transmissions and a spectrum analyzer display below it. Fig. 1 shows NOAA APT and Orbcomm satellite signals on HDSDR.
For a simpler interface that will also give you a waterfall and spectrum display, SDR# works on Windows and provides better broadcast FM reception. You can find it at www.sdrsharp.com. Check the reddit RTLSDR group at www.reddit.com/r/RTLSDR/ for troubleshooting hints and other Windows SDR applications.
To build your own SDR, you will likely want to use Linux and install a recent version (3.5.3 or later) of GNU Radio along with the drivers and modules for the RTL receivers. The GNU Radio package comes with GNU Radio-companion (GRC), a graphic interface that allows you to drag and drop “blocks” others have written onto a screen; tie the input and outputs together; set parameters and create your own working SDR.
Getting started isn’t as hard as it sounds; visit sdr.osmocom.org/trac/wiki/ rtl-sdr and follow the instructions. I was able to get the simple_fm_rvc listed in “Known Apps” up and running quickly.
After I gain more experience with GNU Radio and the Python SDR applications, I’m hoping to be able to do some more interesting stuff with the RTL SDR, including creating that laptop spectrum analyzer and perhaps even doing some 8VSB signal analysis.
There are some great tutorials on GNU Radio and SDR at www.joshknows.com.
In the meantime, I’ll be using it to track down interfering carriers; receive APT satellite images from NOAA satellites when they pass overhead; and learn more about SDR.
Let me know what you’re doing with SDR. Email me at dlung@transmitter. com.