11/08/18 22:10:54 UTC
234.55 MHz
TACOMA, WA
Talon and Blue Tail active in the Olympic A&B moas.
 
11/08/18 19:12:08 UTC
311.0 MHz
EDGEWATER, FL
EAM couldn't make out call sign
 
11/08/18 18:40:13 UTC
311.00 MHz
MC KINNEY, TX
EAM from "Messkit"
 
11/08/18 18:22:02 UTC
311.00 MHz
MC KINNEY, TX
"Manifold" wit "Messkit" numerous radio checks
 
11/07/18 23:32:26 UTC
248.65 MHz
CHILLICOTHE, OH
Stings & Blue Ash Ops in Buckeye MOA all freqs from 11/6 active
 

11/10/18 23:06:24 UTC
233.350 MHz
?
 
11/10/18 23:04:59 UTC
276.450 MHz
?
 
11/08/18 20:05:53 UTC
266.600 MHz
?
 
11/08/18 18:32:05 UTC
351.900 MHz
?
 
11/07/18 22:30:58 UTC
284.550 MHz
?
 
11/07/18 22:11:53 UTC
399.850 MHz
?
 
11/07/18 21:53:22 UTC
377.100 MHz
la center?
 



Click Here For Advertising Information

Cheap SDR Dongle Connected to a Raspberry Pi Computer for a Self-Contained Audio Streaming Device

This is project using the Raspberry Pi and the Dongle. I've been thinking of how I could stream audio online without tieing up a "real" computer. I've been streaming Military Aviation Communications audio for years. But sometimes I don't like streaming from the computer that I do "real" work on, this got me thinking of a new project for the Raspberry Pi computer. At this time the project isn't complete but it is just to prove the concept that it will work. This project is no more than me experimenting with the Raspberry Pi and Linux style of operating system, both new to me.

Some applications for this type of setup would be to mount this very small dongle/Raspberry system at the antenna to avoid coax losses. It would be great if powered from a battery/solar panel. You could set one at your Ham Radio repeater site and stream the repeaters audio online. Put one at your friends house if he lives close to something you would like to monitor but you're too far away for a good signal....The possibilities are endless. Please if you think of some good uses share them with me....

If you don't have any experience using the Raspberry Pi computer you first need to see my article Raspberry Pi - Getting It Ready for Neat Scanner Projects. That article will guide you through installing an operating system, setting up the networking, and getting the Raspberry Pi computer and Dongle to talk to each other.

Picture of the Self-Contained Dongle Radio Streaming via the Raspberry Pi's Wifi dongle.
Click on Picture for larger image


As a first test I installed and confirgured the required software on the Raspberry Pi computer. I then tuned the SDR Dongle to a NOAA weather radio frequency (162.400 MHz), and using ezstream and lame software I had the Raspberry Pi stream the audio to an Icecast 2 server via a wifi link. Since I now can get audio from the Raspberry Pi to Icecast, this means I could stream scanner audio to any web service that accepts Icecast such as LiveATC.net

Steps on How to Stream Dongle Audio Through Raspberry Pi to an Icecast Server

  • 1) Install ezstream, this will stream mp3 audio to an IceCast server, type the following command: sudo apt-get install ezstream
  • 2) Install lame, this will handle the MP3 audio encoding. It takes the output from the Dongle and converts it to MP3 format. Type the following command: sudo apt-get install lame


Setting Up an IceCast Server on Your PC

If you don't have access to an IceCast server to stream to (like LiveATC.com) you'll want to setup your own. You really should do this to test out your system. You will want to go to IceCast.org and download IceCast for your Windows PC. At the time of this article (Feb. 27, 2014) the link on the IceCast website didn't work for downloading the Windows version. But never fear I have a way around this that worked. scroll to the bottom of the download page. You will see a section called Icecast Old Releases Click on the linked titled Icecast. Scroll down until you see icecast2_win32_2.3.2_setup.exe, click on that file and save it to your PC. This is the version I used and it worked.

Install IceCast as you would install any piece of software on your Windows PC. Once installed start IceCast by clicking on the IceCast icon. When IceCast starts, choose Configuration icecast.xml will open in Notepad, scroll down until you see source-password, relay-password, admin-password change these passwords to something you'll remember.

Next you will need to figure out what the IP address of the computer you're running IceCast on is. It probably will start with 192.168.1.xxx (in my case 192.168.1.105). If you wish to allow other people listen to streams on your IceCast computer you'll probably have to log into your router (the little box your cable modem is connected to). Usually you can do this by opening up your web browser and enter the web address exactly like this http://192.168.1.1 This is the default IP address of most routers. The default username usually is admin, default password usually is admin. Next you're going to want to look for an option called port forwarding, some routers call this Applications & Gaming as is the case of my Linksys router. You will want to tell the server to forward any requests for port 8000 to the IP address of the computer you are running IceCast on. If you do not wish to stream your IceCast audio over the internet for others to listen to, you don't need to worry about these router settings.

Now you'll want to start the IceCast server. To do this make sure you've got IceCast running, then click the Start Server button. Its as simple as that!

Setting Up Ezstream and its XML File to Stream MP3 Audio to IceStream

You will need to create a .XML which Ezstream uses to know where to send the audio to, format, password, and comments. To correctly setup the .XML file do the following:
  • 1) Type cd this will put you in your home dirctory (the directory you are put into when you login).
  • 2) Type pwd, you should see "/home/pi". We're just making sure you are really in your home directory.
  • 3) We now will use nano to create a file called ezstream.xml, type sudo nano ezstream.xml
  • 4) In the window below you'll see a template you can use for the ezstream.xml file. Click somewhere on the text below, then hit CTRL A to select the entire window. Next hit CTRL C to copy the text to your clipboard. Now return to your PuTTY window, select the window with your mouse, then hit the RIGHT mouse button. This will copy the contents of your clipboard to the ezstream.xml file you have open in nano.
    • Below you'll see a template you can use for the ezstream.xml file:

  • 5) Next you'll make some changes to the ezstream.xml file. Do Not Use Your Mouse while in nano, it just screws things up!. User your up arrow key to move to the top of the file.
  • 6) The 2nd line of text says your_icecast_stream_server replace the text between the "url" tags with the following: http://192.168.1.105:8080/stream_raspberry, but use the IP address of your IceCast machine.
  • 7) The next line says sourcepassword, change that to what you set the source password in IceCast.
  • 8) While using your down arrow key, move down the file until you find svrinfobitrate, change the 128 to 16
  • 9) Move down until you see svrinfosamplerate, change the 44100 to 22000
  • 10) You will see other informational items in the ezstream.xml file such as description of stream, URL, and so on. These don't need to be change.
  • 11) You're done editing the file, to save the file hit CTRL O, then hit Enter to write the file. Then to exit nano hit CTRL X
  • 12) Are you getting excited yet? We're almost ready to test it out!


Ok, we are ready to see if we made any mistakes. The following command is a bit long to type and its very important you get every letter correct, every space correct, and every punctuation mark correct so use care or you'll get an error.

The following command is going to tell the Dongle to tune to the frequncy 162.4 MHz in FM mode. I picked a NOAA weather frequency since its always broadcasting and makes testing easy. If you don't have a receivable weather frequency in your area, you can use any FM broadcast station. If you use a broadcast station, change fm to wbfm and change 162.4 to the frequency you want to receive. Type the following command:
sudo rtl_fm -M fm -f162.4M -r 22000 -p 48 | lame -r -s 22.0 -m m - - | ezstream -c ezstream.xml

Experimental Command for scanning frequencies:
sudo rtl_fm -M fm -f147.15M -f147.24M -f147.375M -f443.925M -f442.075M -l 400 -r 22000 -p 48 | lame -r -s 22.0 -m m - - | ezstream -c ezstream.xml

If everything is working your PuTTY screen should have the following:



Now your Dongle is streaming to your IceCast server. If you want to stop the process you simply can hit CTRL C from your PuTTY window.

If things didn't work you'll be sitting at your Linux prompt. If you scroll up the screen you'll probably see an error message telling you want you may have done wrong. Simply fix the issue and try again.

Here is a handy command to save some 'retyping' Linux commands. If you hit your Up arrow you'll see the last few commands you typed, this is a handy timesaving thing to know.

To listen to your streaming audio from any computer attached to your router (either wired Ethernet, or Wifi) go to your web browser and type the following: http://192.168.1.105:8000, but use the actual IP address of the computer running IceCast. If things are working you should then see the Icecast2 Status display. To listen to the audio stream click on the icon that says M3U. If you want someone to go directly to the audio without seeing the Icecast2 Status display you can type the following into your web browser: http://IpAddress_Your_ISP_Assigned_You:8000/stream_raspberry.m3u.

To find the IP address your ISP assigned you go to the website WhatIsMyIpAddress.com.

I have tested this with an Apple iPhone and it sounds good. I have not tested with other smartphones.

If your audio sounds like its off frequency you will have to play with the Dongle frequency correction. Its easy to use SDRSharp to determine just what the correction should be. In my case I had to add a correction factor or 48, that is the -p 48 part of the rtl_fm command.

Below I'm including some of the parameters that can be used with the rtl_fm program.

RTL_FM Parameters
  • -M fm | wbfm | am | usb | lsb | raw
  • Selects a demodulator.
    • -M fm narrow band FM
    • -M wbfm wide band FM
    • -M am amplitude modulation
    • -M lsb lower sideband
    • -M usb upper sideband
    • -M raw raw output, 2x16 bit IQ pairs. Purely debugging and no sane person has any use for this.
  • -f "freq" | "start:stop:step"
    • Tune to a frequency. Value can be specified as an integer (89100000), a float (89.1e6) or as a metric suffix (89.1M). Multiple values or ranges will be scanned.
  • -s "sample_rate"
    • Bandwidth of signal.
  • -d "index"
    • When using multiple dongles, this indicated which. You can also identify dongles by the text in the serial number field of the EEPROM.
  • -g "gain"
    • A floating point gain value. The dongle will use the closest gain setting available.
  • -p "error"
    • Correct for the parts-per-million error in the crystal.
  • -F 0 | 9
    • Enable a higher quality downsampling FIR than the default boxcar filter. -F 0 is okay to use while -F 9 is still a work in progress.
  • -A std | fast | lut
    • Choose how arctan is computed. Options select between the standard (floating) lib, a fast polynomial integer approximation and a precomputed look-up-table.
  • -E dc | deemp | direct | offset
    • -E dc dc blocking filter
    • -E deemp de-emphasis filter for WBFM
    • -E direct direct sampling mode
    • -E offset offset tuning mode (E4000 only)
  • -l "squelch level"
    • Squelch is required for scanning multiple frequencies, to indicated when a frequency should be skipped. When used with a single frequency the output will be muted instead. Default value is 0/off. Squelch values are extremely sensitive to external conditions (noise and antenna) as well as the other options used. For example, squelch should be halved when the sample rate is doubled. When in doubt, start at zero and work upwards.
  • -t "squelch delay"
    • The number of squelch hits to count up to. Default value is 20. So the squelch must be trigger 20 times consecutively before rtl_fm moves on to the next channel. Negative delay values cause rtl_fm to exit instead of hopping to another channel or muting the output. This is useful for scripts or trunked systems.
  • -r "output rate"
    • In some odd circumstances you might want to apply an extra low pass downsampling/resampling stage. This is for that, but most of the time it is rarely needed. It will also change the output rate. It is also a very poor quality resampler. Use sox for resampling.


I hope you've enjoyed this article.