Monitoring Multiple AM channels with RTL-SDR Airband

A new command line program for the RTL-SDR called RTL-SDR Airband has recently been released. The program can be used to simultaneously monitor multiple AM channels per dongle. It is intended to be used with online streaming services like which provide live audio streams of air traffic control communications around the world.

Its features include

  • Decode multiple AM channels per dongle (within bandwidth frequency range)
  • Auto squelch and Automatic Gain Control
  • MP3 encoding
  • Stream to Icecast or SHOUTcast server
  • Low CPU usage on Windows (<4% on i5-2430m) thanks to SSE and AVX instructions
  • FFT using GPU on Raspberry Pi (50-55% CPU with default clock)
Monitoring Multiple AM Channels with RTL-SDR Airband.
Monitoring Multiple AM Channels with RTL-SDR Airband.


  1. FungSH

    I wish there is a page that can guide newbie how to install the RTL-Airband to work on Any Pi (Raspberry Pi, Orange Pi, Nano Pi, Banana Pi etc) with step by step guide. How to configure the frequency with how many USB RTL Dongle to be used. I tried to install the RTL-SDR Airband and at last nothing success, always have error on this and that.
    I really hope that author or the experts can write it down step by step for us to try on this.
    Thank you & Regards.

    • yarmarmidale

      I’m with you on that. Not everyone is a geek, some of us are actually people that have a keen interest, but struggle – why not just have a step-by-step explanation…..

      • SH Fung

        Hi yarmarmidale,

        Below are the steps to install in Raspberry Pi 3B/3B+. Hoping that you can get it work.

        Step 1.
        sudo apt-get install -y build-essential libmp3lame-dev libshout3-dev libconfig++-dev libfftw3-dev librtlsdr-dev

        Step 2.
        wget -O RTLSDR-Airband-3.0.1.tar.gz
        tar xvfz RTLSDR-Airband-3.0.1.tar.gz
        cd RTLSDR-Airband-3.0.1
        make PLATFORM=rpiv2
        make install

        Step 3.
        apt-get install icecast2 -y

        Step 4.
        sudo nano /usr/local/etc/rtl_airband.conf

        devices = (
        index = 0;
        gain = 25.4;
        mode = “scan”;
        correction = 1;
        channels = (
        freqs = ( 118.3, 119.1, 121.6, 126.1, 128.3, 132.45 );
        outputs = (
        type = “icecast”;
        server = “”;
        port = 8000;
        mountpoint = “ATC.mp3”;
        name = “ATC”;
        genre = “ATC”;
        username = “source”;
        password = “your own password during icecast2 installation”;
        description = “Your local Airport – LiveATC”;

        Step 5.
        systemctl restart icecast2

        Step 6.
        /usr/local/bin/rtl_airband -f

        #**To test your scanned frequencies with waterfall look. If star is shown in front of the frequency means airband signal is received.

        Step 7. ( To run auto after boot)

        Starting RTLSDR-Airband on system boot
        If you wish to start the program automatically at boot, you can use example startup scripts from init.d subdirectory in the source tree. These scripts assume default installation paths (ie. the program in /usr/local/bin/rtl_airband and the config in /usr/local/etc/rtl_airband.conf).

        Debian / Raspbian Jessie or newer
        (or any other distribution based on systemd):

        sudo cp init.d/rtl_airband.service /etc/systemd/system
        sudo chown root.root /etc/systemd/system/rtl_airband.service
        sudo systemctl daemon-reload
        sudo systemctl enable rtl_airband
        You can then start, stop and restart RTLSDR-Airband manually, using systemctl commands:

        sudo systemctl start rtl_airband
        sudo systemctl stop rtl_airband
        sudo systemctl restart rtl_airband

        • SH Fung

          Sorry. Please ignore the step 1 above. The above step 1 is for other Single Board (Not Raspberry Pi).

          Step 1.
          sudo apt-get install -y build-essential libmp3lame-dev libshout3-dev libconfig++-dev libraspberrypi-dev librtlsdr-dev

  2. Pete

    Does the Icecast support include ID3 tags/metadata, so that when you’re listening to a stream, you’re aware of what frequency the RTL-USB is tuned too?

    • szpajder

      Yes, this is supported from version 2.2.0 onwards. When enabled, it outputs numeric frequency in MHz as a song title. Alternatively, you may define textual label for each frequency.

  3. Shockwave

    Update, I have it working. When I went to set the center frequency towards something closer to the average of my selected frequencies it’d bomb out. I’m at 2 currently and working my way back up. I don’t know if the Pi can’t actually handle 8 frequencies, or if my range of frequencies was too great. I’ll keep experimenting with this.

    The major downside for me is each channel has to be it’s own stream, which makes it a bit useless as a scanner. There might be a way to do this server side, but there doesn’t look to be anything built in by default other than a failover option.

  4. Shockwave

    I’m getting very close to getting this working (I think) so I’ll share what I’ve done.

    First, I have the dongle running on a raspberry pi. The instructions given for that were fine. You will need to edit config.txt in /home/pi/RTLSDR-Airband-master as follows.
    Line 1 lists the number of dongles you’re using. (probably 1)
    Line 2, first number is the dongle number, starting from 0. The second number is the number of channels defined to scan, up to 8. The third number is the bitrate I think. Fourth number is the center frequency or something to that effect. I’m not sure what it does. Fifth number I really don’t remember, I just left it default for now.
    Line 3 begins your streams. If you are running an icecast2 server on linux.. (maybe others but this what worked for me) First is your destination icecast server. I put my test server’s name in (it’s already in /etc/hosts).

    After the server name is the port. Default is 8000. Next is the stream name. It doesn’t crash if you put the same name for each stream which is what I’d think you’d do to listen to them all at once. After that is the frequency you want to listen to. Next is the username and password for your server’s SOURCE connections. Default I think is source and password.
    With that saved, start up rtl_airband. You should get a console screen of numbers.
    Now it’s time to get your icecast2 server configured..
    I found my icecast.xml in /etc/icecast2.
    You can also bring up the admin console with http://:8000/admin/stats.xsl
    If your icecast and raspberry pi config’s match, you should see 1 source, and a mount point. At this point, you should be able to bring up a webpage to http://:8000/ (or whatever you named your stream in your config.txt)

    And that’s where I’m at. I don’t have any sound yet and I haven’t seen any astericks in the rtl_sdr window which I’m guessing is a lock or receive flag.

  5. Mac

    I managed to build this on RasPi, but nothing seems to work. I’ve tried several different servers (icecast/2, Shoutcast, windows and linux) but was not able to connect even all the config files seems to be OK and other streamers connect without any problems.

    All I get when starting rtl_airband is:

    Cannot connect -4Cannot connect -4Cannot connect -4Cannot connect -4Cannot connect -4Cannot connect -4Starting RTLSDR…
    Found 7 device(s).
    Segmentation fault

  6. peter

    I wish these excellent dudes would write install instructions for the layman more often on things like this.

Post a comment

You may use the following HTML:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

This site uses Akismet to reduce spam. Learn how your comment data is processed.