Raspberry Pi Broadcastify Server Build

These instructions show you how to set up a completely self-contained Raspberry Pi with an RTL-SDR dongle to broadcast a live audio feed to Broadcastify.com. This tutorial assumes you have a basic understanding of Linux and Raspberry Pi computers.
First, you will need to go to Broadcastify and apply. Once you get registered and approved you will want to navigate to “Manage my feed” and click the tab under “Technicals” You will need this information there to edit the config file below.

Once you have your Raspberry Pi OS installed and booted and online you may continue.

Install pre-reqs and update raspberry pi to latest version

sudo apt-get update
sudo apt-get upgrade
sudo apt-get install build-essential libmp3lame-dev libshout3-dev libconfig++-dev
sudo apt-get install libraspberrypi-dev
sudo apt-get install libfftw3-dev
sudo apt-get install librtlsdr-dev
sudo apt-get install rtl-sdr
sudo reboot

Install RTLSDR-Airband

cd ~/
mkdir RTLSDR-Airband
cd RTLSDR-Airband
wget -O v5.0.9.tar.gz https://github.com/charlie-foxtrot/RTLSDR-Airband/archive/refs/tags/v5.0.9.tar.gz 
tar xvfz v5.0.9.tar.gz
cd RTLSDR-Airband-5.0.9
make PLATFORM=armv8-generic NFM=1

This might take a while to compile, when finished-

sudo make install

The program should now be installed to /usr/local/bin/rtl_airband. The configuration file will be installed to /usr/local/etc/rtl_airband.conf – this will need to be edited as follows

RTLSDR-Airband Config

Edit the config file for RTLSDR-Airband:

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

Paste the following into the editor, and from the Broadcastify “Manage My Feed” – “Technicals” tab, replace the audio#, MOUNTPOINT, and PASSWORD with the information on that page, and of course edit the frequency, name and genre you will be monitoring :

# This is a minimalistic configuration file for RTLSDR-Airband. 
# More complex configurations are possible.
# Refer to https://github.com/szpajder/RTLSDR-Airband/wiki
# for description of keywords and config syntax.
# Just a single RTL dongle with one FM channel
# sent to a single Broadcastify stream. 
# Note that the center freq is 100 KHz offset from the receive freq
# Also, you must enter your server number, stream name, mountpoint and 
# password from your Broadcastify stream "Technicals"
devices:
({
  type = "rtlsdr";
  index = 0;
  gain = 25;  # This may need adjustment depending on your hardware
  centerfreq = 155.70;
  correction = 0;   # this can be determined using "cumulative" output from running 'rtl_test -p' for several minutes
  channels:
  (
    {
      freq = 155.70;
        modulation = "nfm";
        highpass = 320;
     outputs:
        (
       {
          type = "icecast";
          server = "audio#.broadcastify.com";
          port = 80;
          mountpoint = "MOUNTPOINT";  # Note: Do not include a leading slash "/"
          name = "Fire Dispatch";  # Change the name to your monitoring name
          genre = "Fire";  #Change the name of genre, might be Public Safety
          username = "source"; #Keep this as source for Broadcastify
          password = "PASSWORD"; #use password on technicals page
        }
      );
    }
  );
});

Now to find the ppm offset of your device, run

rtl_test -p

and let it start calculating. As your dongle heats up, the tuner will drift until it’s settled in about 30 minutes, so you can let this run for a while if you like. Every 10 seconds it updates the ppm calculation. Check back in a while or when it seems to not be moving and you have your offset! This can be determined using “cumulative” output. It may be negative or positive, but it should be a whole number ~ -5 to 5 (any more or less and your tuner may be wonky.

For more details on config settings, check RTLSDR-Airband’s Wiki.

Run

It’s time to test. RTLSDR-Airband must run as root in order to have access to the GPU hardware.

sudo /usr/local/bin/rtl_airband -f 

You should see a readout of numbers. The numbers should be larger when a signal is detected. Check your Broadcastify stream to see if the feed is streaming live. Once you confirmed everything is working, kill the program with CTRL+C.

If you need to kill the program to say edit and reload a config the command is sudo killall rtl_airband.

I went ahead and created a service for the program after finding it crashed occasionally after 2 or so days of uptime. There are docs for this, but the short version is navigate to your rtl_airband folder (/home/pi/RTLSDR-Airband/RTLSDR-Airband-3.1.0 for me if we’re using the standard pi user) where there is a service config already for us to copy. I made a quick change to force the service to restart on failure, you can do this by 
sudo nano /init.d/rtl_airband.service 
and change 
Restart=No 
to:

Restart=on-failure
RestartSec=5s

Save (ctrl+x and y) and then run these commands to copy the config over and create the service:

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

Now to run it, you simply need to type sudo systemctl start rtl_airband and you’re set!