RTL-SDR Software Defined Radio
Introduction RTL-SDR Architecture HF Reception Reception Improvement Suggestions Filtering USB Cable Noise FM Broadcast Notch Filters Commercial Bandpass and Bandstop Filters Remote Client-Server Operation RTL-SDR on Windows RTL-SDR on Linux RTL-SDR on Android ADS-B Aircraft Tracking AIS Ship Tracking Skimmers: Simultaneous Multi-Frequency Monitoring Higher Performance SDR Hardware
Introducing the RTL-SDR
Software defined radio (SDR) hardware is becoming smaller AND more capable. For many years, the king of small SDRs was the Softrock Radio. With a combination of surface mount and conventional discrete components, it offered high performance, small size, and low power consumption. Miniaturization took a large leap ahead in mid 2010 when the Funcube Dongle was introduced. It incorporated more functions onto a single chip than the Softrocks and hinted at the possibilities in a coming wave of USB based digital television and radio tuners. Eric Fry noticed, in early 2010 that certain DVB-T devices had a special operating mode which could be exploited to receive chunks of spectrum in quadrature - perfect for software defined radio. A year later, Antti Palosaari developed the concept of using a generic DVB-T receiver as an inexpensive general coverage VHF / UHF receiver. Thus was born the "twenty dollar SDR." It was a "black swan" event that put advanced radio technology within reach of regular people.
Consider, for a moment, how the miniturization and mass production of these small software defined radios can affect the activity of radio monitoring. Imagine what people will do with cheap and easy access to just about any radio signal between about 24 and 1700 MHz? This includes public services - police, fire, air traffic control, military, maritime, certain satellite based services including navigation, communication, and so forth. Some signals in the preceding list will be encrypted; others merely digitally encoded. Amateur radio, weather, and most maritime services will be in the clear. With proper software, most of the signals received by these inexpensive SDRs can be demodulated, decoded, and decrypted in real time. Other signals, protected by strong encryption, can be recorded and saved for future analysis. Don't laugh - there are people still analysing encrypted traffic from World War II. DX listeners (and the NSA) can now record an entire band of RF spectrum and search for interesting signals at any later time, with new analysis methods when they become available.
Before reading further, make note that the RTL-SDRs are not mere miniature versions of tabletop or rack mount radios of the past. Yes, the software based filtering and demodulation is far better than in hardware, but there is something more important. These dongles, like their other SDR cousins, take radio into the age of full-up digital processing. It is now possible to monitor an entire band and simultaneously decode EVERY signal that is a few decibels above the background noise! Skimmers exist for modes such as CW, PSK-32, and FT8. The only thing preventing the existence of voice skimmers is the required computing power to demodulate and transcribe voice to text on an entire band. If we can monitor for the prosign "SOS" then we should be able to monitor for the word "MAYDAY" on voice.
The RTL-SDR receiver packs capabilities on a small USB device.
The digital video broadcast receivers we are discussing here, for this breed of software defined radios, use a Realtek RTL2832 quadrature sampling detector in combination with a programmable oscillator (most commonly an Elonics E4000, Fitipower FC0013, FC0012, FC2580, and R820T). Experiments indicate that these devices perform fairly well without any hardware modification, and the software (drivers, firmware, and user interfaces) is sophisticated. It was initially possible to tune a desired frequency, sample a chunk of spectrum, and write the I/Q data to a file. The file would be played back in a conventional SDR program, where specific signals would be tuned. For example, GNU Radio or HDSDR would be used to read the file and demodulate signals in a 2 MHz wide band of recorded spectrum. RTL-SDR software evolved rapidly, such that users could directly process the data stream for excellent real-time multimode reception. Today, RTL-SDRs are transparent: users plug them in and tune the bands without concern for the processes happening in the background; they are just another device which will feed I/Q spectrum samples to an SDR client application.
The amateur radio community has worked fast on developing software to operate the DVB-T radios and manipulate the resulting data. When I first wrote this page in late April 2012, GNU Radio or HDSDR were top apps, used for reception of typical voice or digital modes plus esoteric things including encrypted voice. The number of apps has exploded, for just about every kind of imaginable reception and analysis task. There are GNU Radio modules for P25, Mode-S transponders, ADS-B, GNSS, and INMARSAT downlinks.
Performance wise, the RTL-SDRs are pretty respectable. The specific tuning range available goes from about 60 MHZ to above 1700 MHZ if using the RTL2832 with an E4000 tuner. Devices with the R820 or R828 tuners go down to 24 MHz. With creative code written into the device drivers, the bottom of the frequency range can be brought down far below the original design limits. Dynamic range is limited mostly by oscillator noise and the 8 bit A/D converter. These are not debilitating limits! Most users should find performance good enough for local stations and perhaps a bit of farther or weaker stations. Basic amateur / public service / aircraft listening - even military satellite downlinks - should be easy on these little DVB-T radios.
RTL-SDR devices fall into two basic types of circuits. Perhaps the most easy to understand is the E4000 type, which resembles a classic quadrature sampling detector. From the antenna, the signal is amplified and filtered. It is then split and fed to separate mixers. One mixer is driven by the "in phase" signal from an oscillator, while the other mixer gets the "quadrature" signal 90 degrees out of phase. The outputs from the E4000 tuner are zero IF signals 90 degrees out of phase with each other. These are amplified before being digitized with 8 bit resolution. Then the spectrum is sent out as a sequence of I/Q samples from the USB interface. Balance of the I and Q components is good, but not perfect, causing a false signal bump to appear at zero frequency.
Elonics E4000 Block Diagram.
SDRs with the R820 tuner are different and, in my opinion, better at creating a clean and balanced I/Q stream. Like the E4000 devices, input from the antenna is amplified and filtered. Instead of being split and fed to quadrature mixers, the signal goes to one mixer, and the signal is converted to a broad intermediate frequency range near 4 MHz. This IF signal is amplified by a variable gain circuit, filtered, then passed onward for digitization. At this point, the R820 tuner has finished its work; what follows is truly the "software" part of RTL-SDRs. The IF is digitized and transformed mathematically into the two quadrature signals, then sent out of the device as a sequence of I and Q samples. These samples are nearly perfect in balance without the hump at zero frequency, which was notable on E4000 based devices.
R820 RTL-SDR Block Diagram.
Higher quality ADCs would be nice for RTL-SDRs, and have actually appeared in more expensive and performant SDR equipment. My favorite example of going high tech with these tuner / ADC combos is the RX-888 SDR, designed by Justin Peng and Howard Su. The RX-888 isn't an RTL-SDR, of course, but it has a descendant of the R820 tuner (the R828D) with a serious wideband 16 bit ADC (the LTC2208). Hooorah! As an HF radio, it digitizes the entire spectrum up through about 32 MHz. For VHF and UHF, it uses the tuner to convert an 8 MHz slice of spectrum down to the low HF range, where that 16 bit ADC digitizes the signals. Thence, a flood of data is sent to the host computer for processing.
RTL-SDRs on HF Bands
Hardware hackers have devised a method of using RTL-SDRs for VLF through middle HF reception. Mikig and Dekar have prototyped a circuit in which the ADC is fed RF via "10/100" ethernet decoupling transformers. ADC pins 1 and 2 are fed with the output of a 1:2 transformer arrangement. The input side of the transformer is connected to a suitable antenna. Such a circuit provides sensitive reception up to around 7 MHz.
There has also been work on the software drivers to allow direct sampling the HF spectrum. The results are fair, but limited due to limits inherent in the dongles' design. The modified RTL2832 code enables reception up to 14.4 MHz. Newer devices with the R820T2 tuners may offer more complete coverage of HF frequencies with good sensitivity.
Full high frequency reception with an RTL-SDR is possible if you use an upconverter. A very good surface mount upconverter has been created by Marty, KN0CK, which is small enough to fit inside the dongle enclosure. Opendous, with open source tools, created a high performance upconverter. These Ham it Up devices can be built from kits or purchased fully assembled from a number of suppliers.
RTL-SDR Improvement Tips
Here are some suggestions for improving performance of RTL2832 based SDRs:
- Reduce the SDR's internal gain to prevent noise due to front end overloading and intermodulation. Max gain = less sensitivity!
- Enclose the device in a grounded metal case.
- Use a good antenna designed for the range you will monitor.
- Eliminate feedline losses by mounting the SDR at the antenna feedpoint, with weatherproofing and a long USB cable to the computer. Better yet: use a microcomputer to run the RTL-SDR and connect to the network via a wireless link.
- Use a bandpass filter to protect the radio from strong out-of-band signals.
- Use a bandstop filter to block strong television or FM broadcast signals.
- Consider a quality preamplifier for the RTL-SDR to reduce the system noise figure.
- Filter the +5V supply to the radio. Use a combination of ferrite beads and bypass capacitors to target the full spectrum of noise.
- Especially for direct sampling or HF, use common mode chokes on the antenna feedline.
- Put common mode chokes on the USB cable to filter out computer noise.
- Hope for the manufacture of DVB-T receivers with 16 bit A/D converters
- Software tricks, such as oversampling and decimation can help - watch for RTL2832 firmware and driver updates!
Filtering USB Cable Noise
Edit, June 2021: There is far too much electronic noise on RTL-SDRs I see. Give more thought to using common mode chokes to get rid of much of the electronic noise covering up the weak signals. If you don't do this, you will miss a lot of activity on the bands.
The greatest source of noise in the RTL2832 based SDRs is the computer to which it is attached. The problem is not unique and is faced to varying degrees on other computerized radio or audio equipment. Use shielded USB cables when available, and add bypass capacitors between the +5V and GND lines. A combination of large values and smaller ones is best, for example 47 uf in parallel with .01 uf and .001 uf capacitors. In addition, several ferrite beads should be used along with running a few turns of cable on a large ferrite choke. Here is information on the USB connector pins and color codes:
Filtering Strong FM Broadcast Stations
Strong FM broadcast stations can wreak havoc on weak signal reception on an RTL-SDR. Intermodulation with other strong signals can pollute a great deal of spectrum unless the strongest stations are notched with an effective filter. One simple filtering method is to connect a quarter wave coaxial cable to the antenna feedline, using a T connector. Keep the far end of the quarter wave coaxial stub open (not shorted), and it notches out signals around its design frequency. Here is the formula to calculate a quarter wavelength of coaxial cable:
Length (cm) = (7494 * V) / frequency (MHz) Example: frequency = 98 MHz V = cable velocity factor = 0.80 for RG6 cable Length = 61.2 cm 1) Always use quality low loss coaxial cable. 2) Connect the center conductor to the feedline center conductor. 3) Connect the coaxial cable shield to ground. 4) Keep the far end of the cable open (shield and center NOT connected together).
The filter works well. There have been instances of this kind of coaxial stub being soldered crudely to the receiver input, with the offending broadcaster dropping 20 dB and no longer causing intermodulation problems. Very deep notches can be made by using two or three stubs. The stubs should be separated from one another by a 1/2 wavelength section of coaxial cable. For a very nice graphic along with lab test analysis, see the HB9AMO Band Notch page.
Commercial Bandpass and Bandstop Filters
Consider cleaning up you RF situation the easy way: putting an off the shelf filter in the line to pass or block spectrum depending on your needs. There are some very effective yet inexpensive rf filters for blocking the whole FM broadcast band, passing 1090 MHz ADS-B, or weather satellite bands.
There are quite a lot of designs up for sale on e-commerce platforms; study them before you order, and make sure you are getting a good deal. The filter should have low insertion loss, no more than a dB or two, and the rejection should be high, at least 10 to 15 dB. Filters made of LC components (simple coils and capacitors) are fine for HF and VHF. For UHF frequencies, look for printed circuit / stripline filters. Another type filter for UHF and above is the SAW (surface acoustic wave) type of design.
If you want the ultimate in low loss, high rejection bandbass filtering, there
are the somewhat more expensive cavity filters and
interdigital filters. These offer performance far beyond other filter
types, and are preferred by governments and professional operations.
Remote Mounting and Networking RTL-SDRs
Users of RTL-SDRs are getting top receive performance by adopting a client - server SDR architecture This refers, in practice, to remotely mounting the radio at the antenna, where it is connected to a microcomputer, which functions as a remote server. Long and lossy coaxial cable runs are eliminated this way. Instead, a long run of ethernet cable is used to provide power and carry data. In fact, the ethernet cable isn't required: one can link to the remote receiver via a broadband 802.11n link. Client - server architecture is a very good thing indeed, because it makes the receiver available to any user on the network. "On the network" means within a home or office intranet or globally via the internet. It is the way to bleeding edge multiuser / multimode operation.
For more information about using the Rasberry Pi with RTL-SDR devices (and downloadable system images), visit the Gareth Hayes website.
Windows Software for the RTL-SDRs
SDR# is SDR sharp indeed! Automatically tuning peak signals in the VHF-Aeronautical band.
Linux Software for the RTL-SDRs
Linux is where to find the most advanced activity in the world of RTL-SDR radios. Quite a bit of development is going on, and it is a good thing to see advanced software coders creating fresh software for RTL-SDRs that works great. OsmoSDR and GQRX immediately come to mind as top notch RTL-SDR packages available for Linux computers.
Linrad works nicely with RTL-SDRs too! In fact, it uses slightly modified rtl-sdr library that makes better use of the hardware. Leif has an amusing screencap on his page depicting several RTL-SDRs operating simultaneously in Linrad. It is quite a powerful software package, with countless ways to tweak and adjust an SDR to bring in elusive signals.
CubicSDR is a lightweight and elegant RTL-SDR compatible package for Linux, Mac, and Windows computers. It is easy to use and does a fine job with AM, wide or narrow FM (mono or stereo), and SSB. One can even monitor multiple frequencies at once, even in different modes, within the RTL-SDR's bandwidth. Pre-compiled packages are available for download as is the CubicSDR source code. Read more about CubicSDR and how to install it from source code with a simple script.
GNU Radio is the bleeding edge of the bleeding edge. It is a software toolkit with components that can do just about anything. One can receive GPS signals and get timing, navigation fixes or both. One can receive beautifully clean FM stereo with RDS using advanced filtering and demodulating code. Other modules enable simple AM/SSB/CW reception. GQRX is a very nice all-around program for RTL-SDR listening, which uses GNU Radio as its foundation. GNU Radio is not easy to install, so it is suggested to use a ready-made live CD/DVD with everything already installed and configured. Here is a list of bootable live systems:
- Skywave Linux: It has QTRadio, CubicSDR, and Dump1090 installed, ready to run.
- Andy's Ham Radio Linux: GNU Radio with a well rounded collection for operating, contesting, etc.
- GNU Radio Live DVD: a distro directly from the GNU Radio people.
- Kali Linux: penetration testing with good GNU Radio support.
- QTRadio (ghpsdr3-alex) USB Image: Networked high performance SDRs, but no GNU Radio.
Each of the above live Linux systems operates very nicely when installed to a portable USB flash memory device. They also work very smoothly when installed to a computer's hard drive as the main system or part of a dual booting arrangement. Tools like Unetbootin can be used to easily install these to a flashdrive, which may then serve as the boot medium for any PC with a USB drive.
Be aware that Linux now includes a kernel module for RTL devices, named "dvb_usb_rtl28xxu" for people who actually use them to receive digital television signals. It conflicts with software used to operate RTL devices in SDR mode. To detect its presence, issue the following shell command:
~$ lsmod | grep rtl28xxu
To unload dvb_usb_rtl28xxu, issue use the rmmod command (as root or use sudo):
~$ sudo modprobe -r dvb_usb_rtl28xxu
Android RTL-SDR Applications
Yes, you can plug use RTL-SDR with a tablet or smart phone! Use an OTG Cable Adapter to connect your device to the RTL-SDR, and be aware that both devices are powered by the host device's battery. Surprisingly, battery drain and CPU speed do not limit smooth operation on newer devices with quad-core CPUs, though older phones may suffer choppy reception. Here are the currently available software packages capable of operating on the Android operating system:
RTL-SDR ADS-B Reception
A large and growing number of aeronautical radio listeners have been using RTL-SDRs to capture Automatic Dependent Surveillance signals on 1090 MHz. It is possible to monitor aircraft movement in an area and get other related data: winds and temperatures aloft, aircraft registration, position, mechanical condition, etc. Many stations using Windows use RTL1090 to receive ADS-B downlinks, and Planeplotter to process the data.
Planeplotter is very sophisticated software enabling position plotting multilateration, and networked / multisite / multiuser operation. You can use Planeplotter to track aircraft with computer generated video of the aircraft's path over any location. This slick animation includes a real-time depiction of the sun, moon, and stars in the background. For use on a Rasberry PI there is PI Aware software for easily sharing ADS-B data in the Flightaware service. Others are getting better performance using MalcomRobb's Dump1090, which has better DSP code for detting usable data from distant aircraft.
Linux users are enjoying excellent performance with the open source Dump1090 package, with the most advanced versions produced by Mutability and MalcomRobb. These differ somewhat in the manner of error reduction and handling of data after it is decoded. For more, see our tutorial on Installing Dump1090 in Linux Mint and Siduction.
Matthew Ernisse has posted some useful information on using a remotely mounted Rasberry PI for with Dump1090 for ADS-B aircraft tracking. He's also created software packages to simplify setting up the RPI for client-server operation.
RTL-SDR Ship Tracking
Tracking maritime traffic is accomplished similarly to that for aircraft, but use the Automatic Identification System (AIS). For ships, the relevant signals are on 161.975 MHz and 162.025 MHz. Ship Plotter is a popular tool used with SDR# or other Windows SDR applications.
Note: some of the more specialized signal decoders don't connect directly to the SDR, and require audio to be routed from the SDR to the decoding software. There are a few different methods to accomplish this. One method is to use a virtual audio routing cable, while another involves software tricks in Windows' stereo mix. In Linux, audio can be easily routed in Jack, Pulseaudio, and plain vanilla ALSA.
Simultaneous Multichannel Reception
Software defined radios can do special things which are impossible with analog radios. One such task is monitoring many (or ALL) channels in a particular band and providing output streams for each one. Skimmers, as they are called, exist for CW, RTTY, PSK-31 and other digital modes. More sophisticated skimmers are emerging for radio monitors, thanks to more proficient software coders focusing on digital signal processing.
RTLSDR-Airband is software capable of monitoring multiple channels at once and providing an audio stream of the communications on each channel. It is special because it is the first publicly available, open sourced, skimmer for voice communications. With RTLSDR-Airband, one may monitor up to eight frequencies all at once, missing nothing. One can pick frequencies with interesting traffic, monitor them all simultaneously, and also stream the audio worldwide. It doesn't even demand much processing power, using 4.5% per dongle on a Rasberry Pi v2. This is precisely suited for radio streaming sites such as Liveatc.net.
Use Better Hardware For Demanding Applications
Radio developers have taken note of the versatility of RTL-SDR devices and sought to design new devices with significantly improved performance. Most notable are the Airspy receivers. They are a whole family of SDRs with sensible RF circuitry, higher resolution ADCs, with clean and accurate clock oscillators. It is also possible to independently control the gain of the RF, mixer, and IF stages of the Airspy radios. Independent gain controls are actually possible in basic RTL-SDRs, and may eventually appear in Linux and Mac software. The Airspy is a great brand of radio, and with the latest refinements in firmware, outperforms full sized, top of the line, superheterodyne equipment.
Another receiver which is a step above lagacy RTL-SDRs is the SDRplay. They are a group of high performance radios covering spectrum from VLF through upper UHF frequencies. With the apropriate DSP software, they can receive and decode any sort of signals. Amateur DSN monitors are feeding their downconverters into SDRplay radios to receive signals from distant interplanetary probes. ADS-B monitors, SWLs, and others are making the RSPs a very popular choice of SDR hardware.
For applications requiring very high performance, one still cannot beat a GNU Radio with its USRP hardware or a commercially manufactured communications receiver, such as an Apache Labs (ANAN) SDR or QS1R Direct Sampling SDR. Bear in mind that the RTL-SDR is a very important development in software defined radio technology! It brings quite good general coverage receiving capability to a huge number of people in the world. There once was a time when radio experimenters and hobbyists depended on a small number of sources for quality equipment. Specialized radios for weather satellites, amateur radio, or trunked public service comms were expensive and difficult to get. With the $20 SDR, based on tiny DVB-T devices, millions of people have access to a workable radio with very broad capabilities. Experimenters, hobbyists, and professionals alike will find lots of uses for these little workhorses. For the latest developments, check the lively discussion in the Reddit.com RTLSDR pages and Superkuh's RTLSDR page.