Actions

Difference between revisions of "Raspberry Pi RTL-SDR Broadcastify"

From The RadioReference Wiki

(45 intermediate revisions by 6 users not shown)
Line 1: Line 1:
 +
[[File:rtl_rsp_bcfy.jpg|200px|thumb|right|Raspberry Pi Broadcastify RTL-SDR Feed Appliance]]
 
These instructions show you how to purchase and setup a completely self contained Raspberry Pi with an RTL-SDR stick(s) to broadcast a live audio feed to Broadcastify.com
 
These instructions show you how to purchase and setup a completely self contained Raspberry Pi with an RTL-SDR stick(s) to broadcast a live audio feed to Broadcastify.com
 +
 +
These instructions have been verified and tested as working on a Raspberry Pi 2 Model B Project Board - 1GB RAM - 900 MHz Quad-Core CPU.  Two '''separate''' feeds running rtl_fm broadcasting both AM aviation and FM business frequencies simultaneously have been verified as working just fine.
  
 
== Purchase Equipment ==
 
== Purchase Equipment ==
Line 6: Line 9:
 
* http://amzn.to/1Ku3T9Y
 
* http://amzn.to/1Ku3T9Y
  
RTL-SDR - RTL2832U & R820T USB Stick
+
RTL-SDR - RTL2832U & R820T2 USB Stick
* http://amzn.to/1DJA79d
+
 
 +
* R820T Stick - http://amzn.to/1KFmhd6 (Most common)
 +
* R820T2 Stick - http://amzn.to/1DJA79d (slightly better performance and stability)
  
 
Male MCX Connector to...
 
Male MCX Connector to...
 +
 
* F Female - http://amzn.to/1KtVwIt
 
* F Female - http://amzn.to/1KtVwIt
 
* PL259 - http://amzn.to/1JLgjV7
 
* PL259 - http://amzn.to/1JLgjV7
Line 17: Line 23:
  
 
Power Supply for Raspberry Pi
 
Power Supply for Raspberry Pi
 +
 
* http://amzn.to/1U2r8cD
 
* http://amzn.to/1U2r8cD
  
 
Memory Card for Raspberry Pi
 
Memory Card for Raspberry Pi
 +
 
* http://amzn.to/1U2r8JG
 
* http://amzn.to/1U2r8JG
  
 
Case for Raspberry Pi
 
Case for Raspberry Pi
 +
 
* http://amzn.to/1JLgNe3
 
* http://amzn.to/1JLgNe3
 +
 +
== Install Raspbian OS ==
 +
 +
All testing and configuration was done using Raspbian
 +
 +
* Follow the instructions here:
 +
** https://www.raspberrypi.org/documentation/installation/installing-images/README.md
 +
 +
You can also download and install a completely preconfigured image that includes all the software and configuration files necessary
 +
* [[Raspberry Pi Broadcastify Image]]
  
 
== Install pre-reqs and update raspberry pi to latest version ==
 
== Install pre-reqs and update raspberry pi to latest version ==
Line 29: Line 48:
 
  sudo apt-get update
 
  sudo apt-get update
 
  sudo apt-get upgrade
 
  sudo apt-get upgrade
  sudo apt-get install git cmake libusb-1.0-0.dev build-essential
+
  sudo apt-get install git cmake libusb-1.0-0.dev build-essential lame
  sudo apt-get install lame libmp3lame-dev libvorbis-dev libshout-dev
+
  sudo apt-get install libmp3lame-dev libvorbis-dev libshout-dev
  sudo rpi-update && sudo reboot
+
  sudo reboot
  
 
== Install the latest rtl-sdr code ==
 
== Install the latest rtl-sdr code ==
Line 37: Line 56:
 
This latest git release is needed for padding zeros when squelch is enabled (-E pad option)
 
This latest git release is needed for padding zeros when squelch is enabled (-E pad option)
  
  git clone https://github.com/keenerd/rtl-sdr/
+
  git clone https://github.com/keenerd/rtl-sdr
 
  cd rtl-sdr/
 
  cd rtl-sdr/
 
  mkdir build
 
  mkdir build
Line 49: Line 68:
 
== Blacklist the kernel's bundled RTL drivers ==
 
== Blacklist the kernel's bundled RTL drivers ==
  
We do this so we don't conflict with the RTL drivers we're about to install
+
We do this before connecting the USB dongle so we don't conflict with the RTL drivers we're about to install
  
 
  sudo su -
 
  sudo su -
Line 57: Line 76:
 
  echo "blacklist dvb_usb_rtl28xxu" >> /etc/modprobe.d/dvb-blacklist.conf
 
  echo "blacklist dvb_usb_rtl28xxu" >> /etc/modprobe.d/dvb-blacklist.conf
 
  exit
 
  exit
 +
 +
== Install rtl_airband customized for Broadcastify ==
 +
 +
This tutorial's rtl_airband implements a pre-compiled binary that is customized to read a specific configuration file named /etc/rtlairband2_config.txt and use an AM filter bandwidth of 16khz. It was compiled for the Raspberry Pi2.
 +
 +
sudo su -
 +
cd /usr/local/bin
 +
wget http://s.broadcastify.com/rtl_airband/rtl_airband_bcfy_v02 -O rtl_airband_bcfy
 +
chmod +x rtl_airband_bcfy
 +
 +
If you want to use the original working source for rtl_airband for any other distribution, please follow the instructions on the rtl_airband git source page:
 +
 +
https://github.com/blantonl/RTLSDR-Airband
  
 
== Install and configure ezstream ==
 
== Install and configure ezstream ==
Line 62: Line 94:
 
  sudo apt-get install ezstream
 
  sudo apt-get install ezstream
  
Create this configuration file at '''/etc/ezstream_bcfy.xml''' and replace with your mount, password, and stream name
+
Create the following configuration file at '''/etc/ezstream_bcfy.xml''' and replace with your mount, password, and stream name.  If you plan on having multiple streams make sure and create a separate named configuration file (i.e.'/etc/ezstream_bcfy2.xml) for each stream and reference accordingly in your command script below.
  
 
  <ezstream>
 
  <ezstream>
Line 79: Line 111:
 
  </ezstream>
 
  </ezstream>
  
== Command for AM Aviation Scanning and Streaming ==
+
== Use rtl_airband to Stream AM Aviation ==
 +
 
 +
'''''rtl_airband is the recommend method for feeding an AM Aviation feed to Broadcastify using the Raspberry Pi and an RTL stick.'''''
 +
 
 +
Create this configuration file below and save to '''/etc/rtlairband2_config.txt''' - configure it appropriate to your setup.
 +
 
 +
The example config below monitors 119.8 MHz AM, with a gain of -35.0db and broadcasts to mount point /999888777 on Broadcastify using the feed's assigned master server audio3.broadcastify.com and a source password of "coolpassword" - -15000 is the frequency correction which works well with most rtl devices.  Adjust between -5000 and -20000 to fix any frequency offset issues (a whine on the feed etc).  You can also adjust the gain between 200 and 496 (-20.0db and -49.6db) based on your local setup. 
 +
 
 +
1
 +
0      1      350    119800000      -15000
 +
audio3.broadcastify.com 80      999888777      119800000      source  coolpassword
 +
 
 +
For a more advanced configuration, including multiple feeds and frequencies using the same dongle and multiple dongles, please see the documentation for rtl_airband at https://github.com/szpajder/RTLSDR-Airband
 +
 
 +
After creating the configuration file, start rtl_airband_bcfy
 +
 
 +
sudo su -
 +
mknod char_dev c 100 0
 +
/usr/local/bin/rtl_airband_bcfy &
 +
 
 +
You should now be streaming the configured AM aviation frequency to broadcastify
 +
 
 +
== Use rtl_fm for AM Aviation Scanning and Streaming ==
  
 
  /usr/local/bin/rtl_fm -M am -f 124.55M -f 133.4M -f 121.6M -l 65 -p 69 -g 40 -t 0 -E pad -s 8k |
 
  /usr/local/bin/rtl_fm -M am -f 124.55M -f 133.4M -f 121.6M -l 65 -p 69 -g 40 -t 0 -E pad -s 8k |
 
  lame -r -s 8 -m m -b 16 --cbr --lowpass 4 --scale 16 - - |
 
  lame -r -s 8 -m m -b 16 --cbr --lowpass 4 --scale 16 - - |
  ezstream -c /etc/ezstream_bcfy.xml
+
  ezstream -c /etc/ezstream_bcfy.xml > /var/log/bcfy.log 2>&1 &
  
 
rtl_fm - command line tuner for rt stick
 
rtl_fm - command line tuner for rt stick
Line 92: Line 146:
 
  -f 124.55M      tune to 124.55 MHz (use multiple -f entries to scan through frequencies)
 
  -f 124.55M      tune to 124.55 MHz (use multiple -f entries to scan through frequencies)
 
  -l 65          set scanning squelch to 65 (adjust as needed)
 
  -l 65          set scanning squelch to 65 (adjust as needed)
  -p 69          ppm offset
+
  -p 69          ppm offset (adjust as needed for your dongle)
 
  -g 40.2        gain (0-49.6) - adjust as needed
 
  -g 40.2        gain (0-49.6) - adjust as needed
 
  -t 0            scanning delay (I set to 0, default is 10)
 
  -t 0            scanning delay (I set to 0, default is 10)
Line 113: Line 167:
 
  ezstream -c /etc/ezstream_bcfy.xml
 
  ezstream -c /etc/ezstream_bcfy.xml
  
== Command for FM Scanning and Streaming ==
+
== Use rtl_fm for FM Scanning and Streaming ==
  
 
  /usr/local/bin/rtl_fm -d 0 -M fm -f 461.4M -p 69 -l 65 -g 50 -t 2 -E pad -s 12k |
 
  /usr/local/bin/rtl_fm -d 0 -M fm -f 461.4M -p 69 -l 65 -g 50 -t 2 -E pad -s 12k |
Line 126: Line 180:
 
  -f 461.4M      tune to 461.4 MHz (use multiple -f entries to scan through frequencies)
 
  -f 461.4M      tune to 461.4 MHz (use multiple -f entries to scan through frequencies)
 
  -l 65          set scanning squelch to 65 (adjust as needed)
 
  -l 65          set scanning squelch to 65 (adjust as needed)
  -p 69          ppm offset
+
  -p 69          ppm offset (adjust as needed for your dongle)
 
  -g 40.2        gain (0-49.6) - adjust as needed
 
  -g 40.2        gain (0-49.6) - adjust as needed
 
  -t 2            scanning delay (I set to 2, default is 10)
 
  -t 2            scanning delay (I set to 2, default is 10)
Line 146: Line 200:
  
 
  ezstream -c /etc/ezstream_bcfy.xml
 
  ezstream -c /etc/ezstream_bcfy.xml
 +
 +
== Stream directly from a USB sound card ==
 +
 +
If you already have a scanner ready to go and just want to use the Raspberry Pi to broadcast your radio to broadcastify, simply purchase an inexpensive USB sound card dongle, plug it in to the Raspberry Pi, and follow these steps:
 +
 +
* Purchase USB Soundcard Dongle:  http://amzn.to/1hekylB  ($1.70)
 +
* Install and configure ezstream with your feed's details
 +
* Start alsamixer
 +
 +
pi@raspberrypi:~# alsamixer
 +
 +
* press F6, choose the "USB Headphone Set" entry
 +
* press your tab key to select the "Capture" device volume control
 +
* use your "up arrow" key to adjust the level to it's lowest level possible above 0 -  (6)
 +
* press escape to exist alsamixer
 +
* run the following command to save the volume settings
 +
 +
sudo alsactl store
 +
 +
* Run this command to start the sound card broadcast
 +
 +
arecord -f dat -c 1 -D hw:1,0 | \
 +
/usr/bin/lame -r -s 48 --resample 22.05 -m m -b 16 --cbr --lowpass 4 - - | \
 +
/usr/bin/ezstream -c /etc/ezstream_bcfy1.xml > /var/log/bcfy1.log 2>&1 &
 +
 +
Note: very little volume will be needed from your scanner - adjust the levels as appropriate for a good sounding feed.
 +
 +
== Start stream on boot ==
 +
 +
Easiest way is to add your full command(s) to /etc/rc.local just before the exit 0 entry
 +
 +
TODO: formal startup scripts.
 +
 +
== Verify System is running and connected ==
 +
 +
I've found that occasionally lame will crash/stop and take the feed offline (at least with my setup).
 +
 +
I've made a script to reboot the Pi if it happens.  The script will check if the user pi is logged in - if so it won't reboot because maybe you are working on it.
 +
 +
Copy the script below, and create a file in /etc called checkstuff.sh
 +
 +
sudo nano /etc/checkstuff.sh
 +
 +
#!/bin/sh
 +
 +
PROCESS="$1"
 +
PROCANDARGS=$*
 +
 +
RESULT=`who | grep pi`
 +
 +
if [ "${RESULT:-null}" = null ]; then
 +
echo "Nobody logged in.  We'll check for  other stuff"
 +
logger "checkstuff: Nobody logged in.  Continueing checks."
 +
else
 +
logger "checkstuff: Pi is logged in.  Bypass all other checks."
 +
exit 0
 +
fi
 +
 +
RESULT=`netstat -an | grep :80`
 +
 +
if [ "${RESULT:-null}" = null ]; then
 +
logger "checkstuff: No connection to RadioReference.  Rebooting."
 +
sudo reboot
 +
else
 +
logger "checkstuff: Connection established to RadioReference."
 +
fi
 +
 +
RESULT=`pgrep rtl_fm`
 +
 +
if [ "${RESULT:-null}" = null ]; then
 +
logger "checkstuff: rtl_fm not running.  Rebooting."
 +
sudo reboot
 +
else
 +
logger "checkstuff: rtl_fm running."
 +
fi
 +
 +
RESULT=`pgrep lame`
 +
 +
if [ "${RESULT:-null}" = null ]; then
 +
logger "checkstuff: Lame not running.  Rebooting."
 +
sudo reboot
 +
else
 +
echo "lame running"
 +
logger "checkstuff: Lame running."
 +
fi
 +
 +
RESULT=`pgrep ezstream`
 +
 +
if [ "${RESULT:-null}" = null ]; then
 +
logger "checkstuff: EZStream not running.  Rebooting."
 +
sudo reboot
 +
else
 +
logger "checkstuff: EZStream running."
 +
fi
 +
 +
logger "checkstuff: Feed should be online."
 +
 +
Save the file and exit nano. 
 +
 +
Now the file needs to be made executable:
 +
 +
sudo chmod 755 /etc/checkstuff.sh
 +
 +
You now need to set up a schedule to run the script.  I've set mine to run automatically every 10 minutes.  This can be done by updating the cron jobs:
 +
 +
sudo crontab -e
 +
 +
Paste the following lines at the bottom.
 +
 +
*/10 * * * * /etc/checkstuff.sh
 +
 +
Save & exit the file.  The script will now run every 10 minutes (at x:00, x:10, x:20, x:30, x:40 and x:50).  It will log to the /var/log/messages logfile every time it runs.
 +
 +
 +
 +
[[Category:Software for Live Audio Broadcasting]]

Revision as of 01:42, 5 September 2018

File:Rtl rsp bcfy.jpg
Raspberry Pi Broadcastify RTL-SDR Feed Appliance

These instructions show you how to purchase and setup a completely self contained Raspberry Pi with an RTL-SDR stick(s) to broadcast a live audio feed to Broadcastify.com

These instructions have been verified and tested as working on a Raspberry Pi 2 Model B Project Board - 1GB RAM - 900 MHz Quad-Core CPU. Two separate feeds running rtl_fm broadcasting both AM aviation and FM business frequencies simultaneously have been verified as working just fine.

Purchase Equipment

Raspberry Pi 2 Model B Project Board - 1GB RAM - 900 MHz Quad-Core CPU

RTL-SDR - RTL2832U & R820T2 USB Stick

Male MCX Connector to...

Power Supply for Raspberry Pi

Memory Card for Raspberry Pi

Case for Raspberry Pi

Install Raspbian OS

All testing and configuration was done using Raspbian

You can also download and install a completely preconfigured image that includes all the software and configuration files necessary

Install pre-reqs and update raspberry pi to latest version

sudo apt-get update
sudo apt-get upgrade
sudo apt-get install git cmake libusb-1.0-0.dev build-essential lame 
sudo apt-get install libmp3lame-dev libvorbis-dev libshout-dev
sudo reboot

Install the latest rtl-sdr code

This latest git release is needed for padding zeros when squelch is enabled (-E pad option)

git clone https://github.com/keenerd/rtl-sdr
cd rtl-sdr/
mkdir build
cd build
cmake ../
make
sudo make install
sudo ldconfig
sudo mv $HOME/rtl-sdr/rtl-sdr.rules /etc/udev/rules.d/rtl-sdr.rules

Blacklist the kernel's bundled RTL drivers

We do this before connecting the USB dongle so we don't conflict with the RTL drivers we're about to install.

sudo su -
echo "blacklist r820t" >> /etc/modprobe.d/dvb-blacklist.conf
echo "blacklist rtl2832" >> /etc/modprobe.d/dvb-blacklist.conf
echo "blacklist rtl2830" >> /etc/modprobe.d/dvb-blacklist.conf
echo "blacklist dvb_usb_rtl28xxu" >> /etc/modprobe.d/dvb-blacklist.conf
exit

Install rtl_airband customized for Broadcastify

This tutorial's rtl_airband implements a pre-compiled binary that is customized to read a specific configuration file named /etc/rtlairband2_config.txt and use an AM filter bandwidth of 16khz. It was compiled for the Raspberry Pi2.

sudo su -
cd /usr/local/bin
wget http://s.broadcastify.com/rtl_airband/rtl_airband_bcfy_v02 -O rtl_airband_bcfy
chmod +x rtl_airband_bcfy

If you want to use the original working source for rtl_airband for any other distribution, please follow the instructions on the rtl_airband git source page:

https://github.com/blantonl/RTLSDR-Airband

Install and configure ezstream

sudo apt-get install ezstream

Create the following configuration file at /etc/ezstream_bcfy.xml and replace with your mount, password, and stream name. If you plan on having multiple streams make sure and create a separate named configuration file (i.e.'/etc/ezstream_bcfy2.xml) for each stream and reference accordingly in your command script below.

<ezstream>
    <url>http://audio#.broadcastify.com:80/your_mount</url>
    <sourcepassword>your_source_password</sourcepassword>
    <format>MP3</format>
    <filename>stdin</filename>
    <svrinfoname>Stream Name</svrinfoname>
    <svrinfourl>http://www.broadcastify.com</svrinfourl>
    <svrinfogenre>Scanner</svrinfogenre>
    <svrinfodescription></svrinfodescription>
    <svrinfobitrate>16</svrinfobitrate>
    <svrinfochannels>1</svrinfochannels>
    <svrinfosamplerate>22050</svrinfosamplerate>
    <svrinfopublic>0</svrinfopublic>
</ezstream>

Use rtl_airband to Stream AM Aviation

rtl_airband is the recommend method for feeding an AM Aviation feed to Broadcastify using the Raspberry Pi and an RTL stick.

Create this configuration file below and save to /etc/rtlairband2_config.txt - configure it appropriate to your setup.

The example config below monitors 119.8 MHz AM, with a gain of -35.0db and broadcasts to mount point /999888777 on Broadcastify using the feed's assigned master server audio3.broadcastify.com and a source password of "coolpassword" - -15000 is the frequency correction which works well with most rtl devices. Adjust between -5000 and -20000 to fix any frequency offset issues (a whine on the feed etc). You can also adjust the gain between 200 and 496 (-20.0db and -49.6db) based on your local setup.

1
0       1       350     119800000       -15000
audio3.broadcastify.com 80      999888777       119800000       source  coolpassword

For a more advanced configuration, including multiple feeds and frequencies using the same dongle and multiple dongles, please see the documentation for rtl_airband at https://github.com/szpajder/RTLSDR-Airband

After creating the configuration file, start rtl_airband_bcfy

sudo su -
mknod char_dev c 100 0
/usr/local/bin/rtl_airband_bcfy &

You should now be streaming the configured AM aviation frequency to broadcastify

Use rtl_fm for AM Aviation Scanning and Streaming

/usr/local/bin/rtl_fm -M am -f 124.55M -f 133.4M -f 121.6M -l 65 -p 69 -g 40 -t 0 -E pad -s 8k |
lame -r -s 8 -m m -b 16 --cbr --lowpass 4 --scale 16 - - |
ezstream -c /etc/ezstream_bcfy.xml > /var/log/bcfy.log 2>&1 &

rtl_fm - command line tuner for rt stick

rtl_fm
-d 0           	device 0 (first rtl stick, second rtl stick would be -d 1)
-M am           tune to AM Mode
-f 124.55M      tune to 124.55 MHz (use multiple -f entries to scan through frequencies)
-l 65           set scanning squelch to 65 (adjust as needed)
-p 69           ppm offset (adjust as needed for your dongle)
-g 40.2         gain (0-49.6) - adjust as needed
-t 0            scanning delay (I set to 0, default is 10)
-E pad          when squelch is enabled pad output with zeros (required when broadcasting)
-s 8k           sample at 8k

which is then piped to the mp3 lame encoder...

lame - MP3 encoder
-r           accept raw data input
-s 8          sample in at 8k
-m m          encode mono
-b 16          encode at 16kbs bitrate
--cbr         use Broadcastify’s mp3 cbr standard
--lowpass 4  use a low pass filter of 4
--scale 16   turn up the volume for AM Mode

which is then piped to ezstream

ezstream -c /etc/ezstream_bcfy.xml

Use rtl_fm for FM Scanning and Streaming

/usr/local/bin/rtl_fm -d 0 -M fm -f 461.4M -p 69 -l 65 -g 50 -t 2 -E pad -s 12k |
/usr/bin/lame -r -s 12 --resample 22.05 -m m -b 16 --cbr --lowpass 4 - - |
/usr/bin/ezstream -c /etc/ezstream_bcfy.xml > /var/log/bcfy2.log 2>&1 &

rtl_fm - command line tuner for rt stick

rtl_fm
-d 0           	device 0 (first rtl stick, second rtl stick would be -d 1)
-M fm           tune to FM Mode
-f 461.4M      tune to 461.4 MHz (use multiple -f entries to scan through frequencies)
-l 65           set scanning squelch to 65 (adjust as needed)
-p 69           ppm offset (adjust as needed for your dongle)
-g 40.2         gain (0-49.6) - adjust as needed
-t 2            scanning delay (I set to 2, default is 10)
-E pad          when squelch is enabled pad output with zeros (required when broadcasting)
-s 12k           sample NFM at 12k

which is then piped to the mp3 lame encoder...

lame - MP3 encoder
-r           accept raw data input
-s 12          input at 12k
--resample 22.05   resample at 22.05Khz
-m m          encode mono
-b 16          encode at 16kbs bitrate
--cbr         use Broadcastify’s mp3 cbr standard
--lowpass 4  use a low pass filter of 4

which is then piped to ezstream

ezstream -c /etc/ezstream_bcfy.xml

Stream directly from a USB sound card

If you already have a scanner ready to go and just want to use the Raspberry Pi to broadcast your radio to broadcastify, simply purchase an inexpensive USB sound card dongle, plug it in to the Raspberry Pi, and follow these steps:

  • Purchase USB Soundcard Dongle: http://amzn.to/1hekylB ($1.70)
  • Install and configure ezstream with your feed's details
  • Start alsamixer
pi@raspberrypi:~# alsamixer
  • press F6, choose the "USB Headphone Set" entry
  • press your tab key to select the "Capture" device volume control
  • use your "up arrow" key to adjust the level to it's lowest level possible above 0 - (6)
  • press escape to exist alsamixer
  • run the following command to save the volume settings
sudo alsactl store
  • Run this command to start the sound card broadcast
arecord -f dat -c 1 -D hw:1,0 | \
/usr/bin/lame -r -s 48 --resample 22.05 -m m -b 16 --cbr --lowpass 4 - - | \
/usr/bin/ezstream -c /etc/ezstream_bcfy1.xml > /var/log/bcfy1.log 2>&1 &

Note: very little volume will be needed from your scanner - adjust the levels as appropriate for a good sounding feed.

Start stream on boot

Easiest way is to add your full command(s) to /etc/rc.local just before the exit 0 entry

TODO: formal startup scripts.

Verify System is running and connected

I've found that occasionally lame will crash/stop and take the feed offline (at least with my setup).

I've made a script to reboot the Pi if it happens. The script will check if the user pi is logged in - if so it won't reboot because maybe you are working on it.

Copy the script below, and create a file in /etc called checkstuff.sh

sudo nano /etc/checkstuff.sh
#!/bin/sh

PROCESS="$1"
PROCANDARGS=$*

RESULT=`who | grep pi`

if [ "${RESULT:-null}" = null ]; then
echo "Nobody logged in.  We'll check for  other stuff"
logger "checkstuff: Nobody logged in.  Continueing checks."
else
logger "checkstuff: Pi is logged in.  Bypass all other checks."
exit 0
fi

RESULT=`netstat -an | grep :80`

if [ "${RESULT:-null}" = null ]; then
logger "checkstuff: No connection to RadioReference.  Rebooting."
sudo reboot
else
logger "checkstuff: Connection established to RadioReference."
fi

RESULT=`pgrep rtl_fm`

if [ "${RESULT:-null}" = null ]; then
logger "checkstuff: rtl_fm not running.  Rebooting."
sudo reboot
else
logger "checkstuff: rtl_fm running."
fi

RESULT=`pgrep lame`

if [ "${RESULT:-null}" = null ]; then
logger "checkstuff: Lame not running.  Rebooting."
sudo reboot
else
echo "lame running"
logger "checkstuff: Lame running."
fi

RESULT=`pgrep ezstream`

if [ "${RESULT:-null}" = null ]; then
logger "checkstuff: EZStream not running.  Rebooting."
sudo reboot
else
logger "checkstuff: EZStream running."
fi

logger "checkstuff: Feed should be online."

Save the file and exit nano.

Now the file needs to be made executable:

sudo chmod 755 /etc/checkstuff.sh

You now need to set up a schedule to run the script. I've set mine to run automatically every 10 minutes. This can be done by updating the cron jobs:

sudo crontab -e

Paste the following lines at the bottom.

*/10 * * * * /etc/checkstuff.sh

Save & exit the file. The script will now run every 10 minutes (at x:00, x:10, x:20, x:30, x:40 and x:50). It will log to the /var/log/messages logfile every time it runs.