What is this program for?
RTLSDR-Airband receives analog radio voice channels and produces audio streams which can be routed to various outputs, such as online streaming services like LiveATC.net. Originally the only SDR type supported by the program was Realtek DVB-T dongle (hence the project's name). However, thanks to SoapySDR vendor-neutral SDR library, other radios are now supported as well.
- ARMv6 (Raspberry Pi v1)
- ARMv7 (Raspberry Pi v2, v3, Cubieboard)
Since most Software Defined Radios are wideband receivers, it is possible to receive multiple AM or NFM channels simultaneously, without retuning (provided that their frequencies are close enough to fit within receiver bandwidth). When working in multichannel mode, RTLSDR-Airband produces separate audio stream for each received channel.
If frequencies of channels of interest are too far apart and cannot be received by the SDR device simultaneously, RTLSDR-Airband can be configured to perform frequency hopping in the same way as analog scanner does. A single audio stream per SDR device is produced in this case.
Utilize multiple receivers simultaneously
A single RTL dongle covers about 2.5 MHz of bandwidth. Need wider coverage? Just use two or more receivers tuned to different center frequencies and distribute your channels of interest between them. Each receiver may be configured to work in a different mode (multichannel or scan) and sampling rate (read: bandwidth).
RTLSDR-Airband estimates noise floor level in each configured channel and adjusts the squelch level accordingly. This works fine in most situations, but there are corner cases (like stations which transmit continuously) where automation does not perform well. You can then configure the squelch level manually.
Automatic volume equalization for AM
AM transmitter encodes voice signal by varying the amplitude of the carrier. The more distance the radio wave travels in space, the more its amplitude gets reduced (attenuated) before it reaches the receiver. This affects audio volume at the receiver - transmissions from distant sources sound quieter than signals transmitted from nearby sources. RTLSDR-Airband automatically equalizes the volume of AM channels to counteract this effect.
Streaming to Icecast servers
Icecast is a popular protocol used to run many Internet radio services. RTLSDR-Airband can encode produced audio streams to MP3 and stream them to Icecast servers for others to listen.
Recording to local MP3 files
Audio can be recorded to files. RTLSDR-Airband may record continuously or skip silence periods. Files are rotated on top of every hour and their names are time stamped.
Stream uncompressed audio to a PulseAudio server
PulseAudio is a sound server which allows sharing audio equipment (sound cards and speakers) across many sound sources (applications). It is a default sound server in pretty much every mainstream Linux distribution.
RTLSDR-Airband can stream uncompressed audio to a PulseAudio server for real-time playback. The server may run on the same machine or on another one, reachable over your local network. Using PulseAudio you can, for example, play the sound via the soundcard of the Raspberry Pi where RTLSDR-Airband is running. Or you can stream the audio from a Pi located near the antenna to speakers connected to the desktop PC you are sitting at. Of course you can do the same thing with Icecast, but with PulseAudio it comes with less hassle - no need to set up a local Icecast server, no need to launch VLC or other audio player. And you get a per-stream volume slider in your desktop mixer. Audio quality is better (no compression) and latency is low (usually below half a second).
Multiple streaming/recording destinations per channel
Want to stream a particular channel to your private Icecast server at home and a public Icecast server on the Internet and also save it to local files or play it via PulseAudio server? No problem, RTLSDR-Airband supports multiple outputs per channel. You can implement whatever fancy output combo you come up with.
Mixing several channels into a single audio stream
This is useful for channels which are somehow related to each other (eg. Ground and Tower on the same airport, two adjacent Approach/Departure sectors, etc) and if it's desirable to listen to both of them simultaneously. Of course you can launch two players, but is this convenient? RTLSDR-Airband can mix arbitrary number of channels into one audio stream. Mixed channels may come from a common SDR device or from different devices. Stereo mixing is supported, so you can put Tower stream in your left ear and Ground stream in your right. Then you may route mixed audio to any supported destination (Icecast, Pulse, file).
Optimized for high performance
The most common way to extract narrowband channels from a wideband signal received from SDR is to perform direct frequency conversion. The input signal is multiplied by a signal generated by a local oscillator, then downsampled and lowpass-filtered with a configurable filter. It gives very good results and provides excellent tuning precision and frequency selectivity, however it's computationally expensive and therefore infeasible for demodulating large number of channels simultaneously. RTLSDR-Airband utilizes Fast Fourier Transform channelization instead. FFT is essentially a bank of filters which divides the input signal into narrowband subchannels of equal width. No matter how many channels are to be extracted from the wideband signal, the computational workload is almost constant. What's more, when running on a Raspberry Pi, RTLSDR-Airband leverages Broadcom Videocore graphics unit to offload the main CPU from FFT calculation. Running a single RTL dongle on a Raspberry Pi version 3 with 2.5 MHz bandwidth takes less than 15% of the main CPU time.
However there are no miracles - this method has several drawbacks:
- It is not possible to adjust the bandwidth of individual channels separately.
- Channel selectivity is rather coarse - do not expect to be able to receive two channels spaced closer than about 40-50 kHz. They will interfere with each other. This can be mitigated to some extent by configuring a larger FFT size at the cost of increased CPU/GPU usage.
Minimalistic user interface
RTLSDR-Airband is not meant to be a replacement to graphical SDR consoles. It is designed to run unattended as a background daemon, possibly on a headless machine. It can also run in foreground displaying simple textual waterfalls to aid in troubleshooting or tuning the configuration.