Actions

Difference between revisions of "Broadcastify/RTLSDR-Airband"

From The RadioReference Wiki

 
(138 intermediate revisions by the same user not shown)
Line 1: Line 1:
RTLSDR-Airband receives analog radio voice channels and produces audio streams which can be routed to various outputs.
+
 
 +
[[File:Rodyeo-airband-1.jpg|200px|thumb|right|Raspberry Pi Broadcastify RTL-SDR VHF Sharing Feed Appliance]]
 +
 
 +
RTLSDR-Airband or rtl_airband receives analog radio voice channels and produces audio streams which can be routed to various outputs.
 +
 
  
 
Download: https://github.com/szpajder/RTLSDR-Airband
 
Download: https://github.com/szpajder/RTLSDR-Airband
  
Broadcastify Fully Supports RTLSDR-Airband
 
  
=== Sample Config Files ===
+
Broadcastify Fully Supports RTLSDR-Airband or rtl_airband.
 +
 
 +
 
 +
Please read and follow the initial setup guide for RTLSDR-Airband or rtl_airband.
 +
 
 +
 
 +
 
 +
User's Manual: https://github.com/szpajder/RTLSDR-Airband/wiki
 +
 
 +
 
 +
 
 +
RTLSDR-Airband or rtl_airband support multiple frequency channel scanning features.
 +
 
 +
 
 +
 
 +
After you have completed the initial setup guide by "szpajder" the come back here to follow this custom setup guide which have been tested working!
 +
 
 +
 
 +
 
 +
Here is a custom rtl_airband.conf config file for Broadcastify server and local Icecast server if you have it setup in your Raspberry Pi unit.
 +
 
 +
 
 +
 
 +
Else you can set "disable = true;" if you do not need that section profile enabled. Otherwise set "disabled = false;" if you need that section profile to be enabled for active usage.
 +
 
 +
 
 +
 
 +
Note: If you uses two RTL-SDR dongle in a Raspberry Pi unit, please set a unique serial number to either one of the units using rtl_eeprom software.
 +
 
 +
 
 +
 
 +
Install RTL-SDR drivers and setup essentials for RTL-SDR dongle ...
 +
 
 +
<nowiki>
 +
sudo apt-get update -y
 +
sudo apt-get upgrade -y
 +
 
 +
sudo cat <<EOF >/etc/modprobe.d/no-rtl.conf
 +
blacklist dvb_usb_rtl28xxu
 +
blacklist rtl8192cu
 +
blacklist rtl2832
 +
blacklist rtl2830
 +
blacklist e4000
 +
EOF
 +
 
 +
sudo apt-get install git-core -y
 +
sudo apt-get install git -y
 +
sudo apt-get install cmake -y
 +
sudo apt-get install libusb-1.0-0-dev -y
 +
sudo apt-get install build-essential -y
 +
 
 +
git clone git://git.osmocom.org/rtl-sdr.git
 +
cd rtl-sdr/
 +
autoreconf -i
 +
./configure
 +
make
 +
sudo make install
 +
sudo make install-udev-rules
 +
sudo ldconfig
 +
sudo reboot
 +
</nowiki>
 +
 
 +
 
 +
 
 +
--- BOF /usr/local/etc/rtl_airband.conf ---
 +
 
 +
<nowiki>
 +
# Sample file of "rtl-airband.conf" output to BroadCastify.com icecast streaming server
 +
# RTLSDR-Airband - User's Manual: https://github.com/szpajder/RTLSDR-Airband/wiki
 +
# Refer to here for PPM Offset correction guide - https://viatorci.com/posts/rtlsdr-police-scanner/#rtl-sdr-dongle-offset-tuning
  
# Sample file of "rtl_airband.conf" custom for BroadCastify.com server streaming
 
  
 
# index = 0 => First dongle  
 
# index = 0 => First dongle  
Line 15: Line 86:
 
   type = "rtlsdr";
 
   type = "rtlsdr";
 
   index = 0;
 
   index = 0;
   gain = 28;
+
   gain = 25.4;
 
   correction = 0;
 
   correction = 0;
 
   mode = "scan";
 
   mode = "scan";
 +
  sample_rate = 2.4;
 +
  buffers = 10;
 
   channels:
 
   channels:
 
   (
 
   (
 
     {
 
     {
 
# squelch = 30; # Uncomment to set squelch manually
 
# squelch = 30; # Uncomment to set squelch manually
       freqs = ( 118200000, 119450000, 121900000, 124200000 ); # MODIFY_YOUR_AIRPORT_AIRBAND_FREQUENCY
+
       freqs = ( 118200000, 119450000, 121900000, 124200000 );     # MODIFY_YOUR_AIRPORT_AIRBAND_FREQUENCY
       labels = ( "Tower", "S-Approach", "Ground", "N-Approach" ); # MODIFY_YOUR_AIRPORT_AIRBAND_FREQUENCY_NAME_LABELS
+
       labels = ( "Tower", "S-Approach", "Ground", "N-Approach" );     # MODIFY_YOUR_AIRPORT_AIRBAND_FREQUENCY_NAME_LABELS
 
       outputs: (
 
       outputs: (
  
 
  # For local IceCast server
 
  # For local IceCast server
 
         {
 
         {
 +
          disable = true;      # IF_NO_LOCAL_ICECAST_SERVER_IS_AVAILABLE_SET_IT_TO_TRUE
 
           type = "icecast";
 
           type = "icecast";
 
           server = "127.0.0.1";
 
           server = "127.0.0.1";
 
           port = 8000;
 
           port = 8000;
           mountpoint = "LOCAL";
+
           mountpoint = "local";
 
           name = "Airport_ICAO";
 
           name = "Airport_ICAO";
 
           genre = "ATC";
 
           genre = "ATC";
 
           username = "source";
 
           username = "source";
 
           password = "hackme";
 
           password = "hackme";
           send_scan_freq_tags = true;
+
           send_scan_freq_tags = false;
  description = "LOCAL IceCast Server";
+
  description = "Local IceCast Server";
 
         },
 
         },
 
 
 
  # For remote BroadCastify server
 
  # For remote BroadCastify server
 
         {
 
         {
 +
          disable = false;      # THIS_PROFILE_TEMPLATE_ACTIVE_IN_USED
 
           type = "icecast";
 
           type = "icecast";
           server = "audioX.radioreference.com"; # FROM_YOUR_RR_FEED_PROVIDER_PAGE
+
           server = "audioXXXXXXXX.radioreference.com";     # FROM_YOUR_RR_FEED_PROVIDER_PAGE
           port = 80; # PORT_OF_RR_FEED_PROVIDER_ICECAST_SERVER_USUALLY_8000
+
           port = 80;     # PORT_OF_RR_FEED_PROVIDER_ICECAST_SERVER_USUALLY_8000
           mountpoint = "XXXXXXXX"; # MOUNT_POINT_FROM_YOUR_RR_FEED_PROVIDER_PAGE
+
           mountpoint = "XXXXXXXX";     # MOUNT_POINT_FROM_YOUR_RR_FEED_PROVIDER_PAGE
           name = "XXXXXXXX"; # FEED_NAME_THAT_RR_GAVE_YOU_WHEN_YOU_APPLIED
+
           name = "XXXXXXXX";     # FEED_NAME_THAT_RR_GAVE_YOU_WHEN_YOU_APPLIED
 
  genre = "ATC";
 
  genre = "ATC";
 
           username = "source";
 
           username = "source";
           password = "XXXXXXXX"; # PASSWD_FROM_YOUR_RR_FEED_PROVIDER_PAGE
+
           password = "XXXXXXXX";     # PASSWD_FROM_YOUR_RR_FEED_PROVIDER_PAGE
           send_scan_freq_tags = true;
+
           send_scan_freq_tags = false;
  description = "XXXXXXXX"; # DESCRIPTION_ASSIGNED_FROM_YOUR_RR_FEED_APPLICATION
+
  description = "XXXXXXXX";     # DESCRIPTION_ASSIGNED_FROM_YOUR_RR_FEED_APPLICATION
 
         }
 
         }
 
 
# If you need more outputs, put here
+
# If you need more outputs, put under here ...
# Make sure you remove the comma at the end of the profile segment template e.g. "}," to "}" else you get and error !
+
 
 +
 
 +
# NOTICE: Make sure you remove the comma at the end of the profile segment template.
 +
        # e.g. From "}," to "}" else you get an error. For the last profile template segment only.
  
 
       );
 
       );
Line 62: Line 140:
 
  }
 
  }
 
);
 
);
 +
</nowiki>
 +
 +
--- EOF /usr/local/etc/rtl_airband.conf ---
 +
 +
 +
 +
 +
Recommended RTL-Airband sample compile script for Raspberry Pi 2/3 uses V3D GPU mode by Tomasz Lemiech [mailto:szpajder@gmail.com szpajder@gmail.com]
 +
 +
 +
--- BOF /root/rtl-airband-compile.sh ---
 +
 +
<nowiki>
 +
#!/bin/bash
 +
clear
 +
cd ~
 +
apt-get install build-essential libmp3lame-dev libshout3-dev libconfig++-dev libraspberrypi-dev librtlsdr-dev git cmake libfftw3-dev libxslt1-dev -y
 +
git clone https://github.com/szpajder/RTLSDR-Airband.git
 +
cd RTLSDR-Airband
 +
git checkout master
 +
make help
 +
sleep 10
 +
cp /usr/local/etc/rtl_airband.conf /usr/local/etc/rtl_airband.conf.old
 +
rm /usr/local/etc/rtl_airband.conf -R -f
 +
make clean
 +
 +
if cat /proc/cpuinfo | grep ARMv6
 +
then
 +
  export PLATFORM=rpiv1
 +
else
 +
  if cat /proc/cpuinfo | grep Model | grep "Pi 2"
 +
  then
 +
      export PLATFORM=rpiv2
 +
  else
 +
      if cat /proc/cpuinfo | grep Model | grep "Pi 3"
 +
      then
 +
          export PLATFORM=rpiv2
 +
      else
 +
          export PLATFORM=armv8-generic
 +
      fi
 +
  fi
 +
fi
 +
 +
export NFM=1
 +
make
 +
make install
 +
ldconfig
 +
</nowiki>
 +
 +
--- EOF /root/rtl-airband-compile.sh ---
 +
 +
 +
 +
 +
Instruction to activate and run at service mode... https://github.com/szpajder/RTLSDR-Airband/wiki/Running-the-program
 +
 +
 +
 +
--- BOF /etc/systemd/system/rtl_airband.service ---
 +
<nowiki>
 +
[Unit]
 +
Description=SDR AM/NFM demodulator
 +
Documentation=https://github.com/szpajder/RTLSDR-Airband/wiki
 +
Wants=network.target
 +
After=network.target
 +
 +
[Service]
 +
Type=simple
 +
ExecStart=/usr/local/bin/rtl_airband -Fe -c /usr/local/etc/rtl_airband.conf
 +
# The program may exit only due to startup failure (eg. misconfiguration)
 +
# or due to failure of all SDR devices (eg. disconnection). In either case,
 +
# there is no point to restart it, because it would fail once again.
 +
Restart=no
 +
 +
[Install]
 +
WantedBy=multi-user.target
 +
</nowiki>
 +
 +
--- EOF /etc/systemd/system/rtl_airband.service ---
 +
 +
 +
 +
 +
Else see here is the summary of commands on the shell terminal...
 +
 +
<nowiki>
 +
sudo chown root.root /etc/systemd/system/rtl_airband.service
 +
sudo chmod 0777 /etc/systemd/system/rtl_airband.service
 +
sudo systemctl disable rtl_airband
 +
sudo systemctl daemon-reload
 +
sudo systemctl enable rtl_airband
 +
sudo systemctl restart rtl_airband
 +
sudo systemctl status rtl_airband
 +
</nowiki>
 +
 +
 +
 +
 +
Insert this Audio web tag at the end of the html code to auto play the local icecast server VHF audio streams...
 +
 +
 +
--- BOF /var/www/html/index.html ---
 +
<nowiki>
 +
                <p>
 +
                  <b>WMSA - Sultan Abdul Aziz Shah Airport - Subang - Air Traffic Controller</b><br>
 +
                  <audio controls autoplay> <source src="http://rodyeo.dyndns.org:8000/wmsa" type="audio/mpeg">Click to play</audio>
 +
                </p>
 +
                <p>
 +
                  <b>WMKK - Kuala Lumpur International Airport - Sepang - Air Traffic Controller</b><br>
 +
                  <audio controls> <source src="http://rodyeo.dyndns.org:8000/wmkk" type="audio/mpeg">Click to play</audio>
 +
                </p>
 +
</nowiki>
 +
 +
--- EOF /var/www/html/index.html ---
 +
 +
 +
 +
Install IceCast Audio Streaming Server ...
 +
 +
<nowiki>
 +
sudo apt-get update -y
 +
sudo apt-get install icecast2 -y
 +
</nowiki>
 +
 +
 +
 +
 +
Listen to your local IceCast AirBand streams via a web browser link to the Raspberry Pi ip address http://Your-RaspPi-IP:8000/local
 +
 +
 +
 +
* Acknowledgement to Tomasz Lemiech [mailto:szpajder@gmail.com szpajder@gmail.com] for his constant guide and tutorial mentoring to make this simplifed manual guide easy for newbies... a big "Thank You" to him... else I would not have perfected my RTL-Airband audio streaming.
 +
 +
 +
 +
Multiple source streaming sample file config and IceCast local server config sample file @ https://disk.yandex.ru/d/RC7se4bIIVzgfg by Rodney Yeo (9W2YJ) [mailto:rodyeo@yahoo.com rodyeo@yahoo.com]
 +
 +
 +
 +
Also reference to another thread posting ... https://wiki.radioreference.com/index.php/Raspberry_Pi_RTL-SDR_Broadcastify
 +
 +
 +
 +
[[Category:Software for Live Audio Broadcasting]]

Latest revision as of 10:34, 6 May 2021

Raspberry Pi Broadcastify RTL-SDR VHF Sharing Feed Appliance

RTLSDR-Airband or rtl_airband receives analog radio voice channels and produces audio streams which can be routed to various outputs.


Download: https://github.com/szpajder/RTLSDR-Airband


Broadcastify Fully Supports RTLSDR-Airband or rtl_airband.


Please read and follow the initial setup guide for RTLSDR-Airband or rtl_airband.


User's Manual: https://github.com/szpajder/RTLSDR-Airband/wiki


RTLSDR-Airband or rtl_airband support multiple frequency channel scanning features.


After you have completed the initial setup guide by "szpajder" the come back here to follow this custom setup guide which have been tested working!


Here is a custom rtl_airband.conf config file for Broadcastify server and local Icecast server if you have it setup in your Raspberry Pi unit.


Else you can set "disable = true;" if you do not need that section profile enabled. Otherwise set "disabled = false;" if you need that section profile to be enabled for active usage.


Note: If you uses two RTL-SDR dongle in a Raspberry Pi unit, please set a unique serial number to either one of the units using rtl_eeprom software.


Install RTL-SDR drivers and setup essentials for RTL-SDR dongle ...

sudo apt-get update -y
sudo apt-get upgrade -y

sudo cat <<EOF >/etc/modprobe.d/no-rtl.conf
blacklist dvb_usb_rtl28xxu
blacklist rtl8192cu
blacklist rtl2832
blacklist rtl2830
blacklist e4000
EOF

sudo apt-get install git-core -y
sudo apt-get install git -y
sudo apt-get install cmake -y
sudo apt-get install libusb-1.0-0-dev -y
sudo apt-get install build-essential -y

git clone git://git.osmocom.org/rtl-sdr.git
cd rtl-sdr/
autoreconf -i
./configure
make
sudo make install
sudo make install-udev-rules
sudo ldconfig
sudo reboot


--- BOF /usr/local/etc/rtl_airband.conf ---

# Sample file of "rtl-airband.conf" output to BroadCastify.com icecast streaming server
# RTLSDR-Airband - User's Manual: https://github.com/szpajder/RTLSDR-Airband/wiki
# Refer to here for PPM Offset correction guide - https://viatorci.com/posts/rtlsdr-police-scanner/#rtl-sdr-dongle-offset-tuning


# index = 0 => First dongle 
# index = 1 => Second dongle

devices: ({
  type = "rtlsdr";
  index = 0;
  gain = 25.4;
  correction = 0;
  mode = "scan";
  sample_rate = 2.4;
  buffers = 10;
  channels:
  (
    {
# squelch = 30; # Uncomment to set squelch manually
      freqs = ( 118200000, 119450000, 121900000, 124200000 );      # MODIFY_YOUR_AIRPORT_AIRBAND_FREQUENCY
      labels = ( "Tower", "S-Approach", "Ground", "N-Approach" );      # MODIFY_YOUR_AIRPORT_AIRBAND_FREQUENCY_NAME_LABELS
      outputs: (

	  # For local IceCast server
        {
          disable = true;      # IF_NO_LOCAL_ICECAST_SERVER_IS_AVAILABLE_SET_IT_TO_TRUE
          type = "icecast";
          server = "127.0.0.1";
          port = 8000;
          mountpoint = "local";
          name = "Airport_ICAO";
          genre = "ATC";
          username = "source";
          password = "hackme";
          send_scan_freq_tags = false;
	  description = "Local IceCast Server";
        },
	
	  # For remote BroadCastify server
        {
          disable = false;      # THIS_PROFILE_TEMPLATE_ACTIVE_IN_USED
          type = "icecast";
          server = "audioXXXXXXXX.radioreference.com";     # FROM_YOUR_RR_FEED_PROVIDER_PAGE
          port = 80;      # PORT_OF_RR_FEED_PROVIDER_ICECAST_SERVER_USUALLY_8000
          mountpoint = "XXXXXXXX";      # MOUNT_POINT_FROM_YOUR_RR_FEED_PROVIDER_PAGE
          name = "XXXXXXXX";      # FEED_NAME_THAT_RR_GAVE_YOU_WHEN_YOU_APPLIED
	  genre = "ATC";
          username = "source";
          password = "XXXXXXXX";      # PASSWD_FROM_YOUR_RR_FEED_PROVIDER_PAGE
          send_scan_freq_tags = false;
	  description = "XXXXXXXX";      # DESCRIPTION_ASSIGNED_FROM_YOUR_RR_FEED_APPLICATION
        }
		
	# If you need more outputs, put under here ...


	# NOTICE: Make sure you remove the comma at the end of the profile segment template. 
        # e.g. From "}," to "}" else you get an error. For the last profile template segment only.

      );
    }
  );
 }
);

--- EOF /usr/local/etc/rtl_airband.conf ---



Recommended RTL-Airband sample compile script for Raspberry Pi 2/3 uses V3D GPU mode by Tomasz Lemiech szpajder@gmail.com


--- BOF /root/rtl-airband-compile.sh ---

#!/bin/bash
clear
cd ~
apt-get install build-essential libmp3lame-dev libshout3-dev libconfig++-dev libraspberrypi-dev librtlsdr-dev git cmake libfftw3-dev libxslt1-dev -y
git clone https://github.com/szpajder/RTLSDR-Airband.git
cd RTLSDR-Airband
git checkout master
make help
sleep 10
cp /usr/local/etc/rtl_airband.conf /usr/local/etc/rtl_airband.conf.old
rm /usr/local/etc/rtl_airband.conf -R -f
make clean

if cat /proc/cpuinfo | grep ARMv6
then
   export PLATFORM=rpiv1
else
   if cat /proc/cpuinfo | grep Model | grep "Pi 2"
   then
      export PLATFORM=rpiv2
   else
       if cat /proc/cpuinfo | grep Model | grep "Pi 3"
       then
          export PLATFORM=rpiv2
       else
          export PLATFORM=armv8-generic
       fi
   fi
fi

export NFM=1
make
make install
ldconfig

--- EOF /root/rtl-airband-compile.sh ---



Instruction to activate and run at service mode... https://github.com/szpajder/RTLSDR-Airband/wiki/Running-the-program


--- BOF /etc/systemd/system/rtl_airband.service ---

[Unit]
Description=SDR AM/NFM demodulator
Documentation=https://github.com/szpajder/RTLSDR-Airband/wiki
Wants=network.target
After=network.target

[Service]
Type=simple
ExecStart=/usr/local/bin/rtl_airband -Fe -c /usr/local/etc/rtl_airband.conf
# The program may exit only due to startup failure (eg. misconfiguration)
# or due to failure of all SDR devices (eg. disconnection). In either case,
# there is no point to restart it, because it would fail once again.
Restart=no

[Install]
WantedBy=multi-user.target

--- EOF /etc/systemd/system/rtl_airband.service ---



Else see here is the summary of commands on the shell terminal...

sudo chown root.root /etc/systemd/system/rtl_airband.service
sudo chmod 0777 /etc/systemd/system/rtl_airband.service
sudo systemctl disable rtl_airband
sudo systemctl daemon-reload
sudo systemctl enable rtl_airband
sudo systemctl restart rtl_airband
sudo systemctl status rtl_airband



Insert this Audio web tag at the end of the html code to auto play the local icecast server VHF audio streams...


--- BOF /var/www/html/index.html ---

                <p>
                  <b>WMSA - Sultan Abdul Aziz Shah Airport - Subang - Air Traffic Controller</b><br>
                  <audio controls autoplay> <source src="http://rodyeo.dyndns.org:8000/wmsa" type="audio/mpeg">Click to play</audio>
                </p>
                <p>
                  <b>WMKK - Kuala Lumpur International Airport - Sepang - Air Traffic Controller</b><br>
                  <audio controls> <source src="http://rodyeo.dyndns.org:8000/wmkk" type="audio/mpeg">Click to play</audio>
                </p>

--- EOF /var/www/html/index.html ---


Install IceCast Audio Streaming Server ...

sudo apt-get update -y
sudo apt-get install icecast2 -y



Listen to your local IceCast AirBand streams via a web browser link to the Raspberry Pi ip address http://Your-RaspPi-IP:8000/local


  • Acknowledgement to Tomasz Lemiech szpajder@gmail.com for his constant guide and tutorial mentoring to make this simplifed manual guide easy for newbies... a big "Thank You" to him... else I would not have perfected my RTL-Airband audio streaming.


Multiple source streaming sample file config and IceCast local server config sample file @ https://disk.yandex.ru/d/RC7se4bIIVzgfg by Rodney Yeo (9W2YJ) rodyeo@yahoo.com


Also reference to another thread posting ... https://wiki.radioreference.com/index.php/Raspberry_Pi_RTL-SDR_Broadcastify