-
Notifications
You must be signed in to change notification settings - Fork 137
Home
Updated for v5.0.x
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.
- GNU/Linux
- x86/x86_64
- ARMv6 (Raspberry Pi v1)
- ARMv7 (Raspberry Pi v2, v3, Cubieboard)
- ARMv8
- FreeBSD
- x86/x86_64
- MacOS (builds correctly, but not thoroughly tested - feedback is welcome)
- Intel
- Apple silicon
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.
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.
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.
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.
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. Rotation might also be triggered by squelch activity, so that every transmission is saved in a separate file.
Narrowband downcoverted I/Q samples can be saved to disk for further processing with other DSP software.
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).
This feature is similar to the above, but it sends just raw audio samples over network, without any sort of control protocol.
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.
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).
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.
Note: GPU offloading works on units equipped with Broadcom VideoCore IV graphics chip (ie. Raspberry Pi v1, v2 and v3). VideoCore VI is not supported, so it's not possible to use GPU offloading on Raspberry Pi v4, however the main CPU power on this SBC is sufficiently fast to do all the work.
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.
- Overview
- Installation
-
Configuration essentials
- Grammar basics
- General configuration file structure
- Configuring devices
- Configuring channels
- Configuring outputs
-
Configuring optional features
- Disabling configuration sections
- Changing PID file location
- Manual squelch setting
- CTCSS
- NFM deemphasis
- Audio filters in MP3 outputs
- Notch filter
- Limiting channel bandwidth
- Icecast metadata updates in scan mode
- Logging activity of scanned frequencies
- Channel usage statistics
- Tweaking sampling rate and FFT size
- Mixers
- Multithreaded operation
- Running
- Troubleshooting
- Configuring auxiliary software to work with RTLSDR-Airband