PI Based Broadcastify Server
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!