RDS reception using RTL-SDR dongle

If you have a RTL-SDR dongle and Windows machine you might want to try out this simple project. It’s a proof of concept using an Ubuntu machine with GNU Radio Companion to obtain the RDS signal from the FM broadcast. Then the data is sent over TCP to a Windows 7 machine, running a .NET program which decodes and displays the RDS data.

The software required is the free and open source GNU Radio program and the closed source Visual Studio 2010 (which is available for download without charge from Microsoft.)

Visit the blog at AnotherUrl for project details and code downloads.

Join the Conversation


  1. These SDR USB devices work pretty good but to get the best use you really need to get them as far away from the pc as possible. The one I purchased has zero shielding on the tuner chips, the board is just inside a plastic case so it picks up every bit of local pc generated RF.
    A quick solution for the shielding issue, without the case, it fits in a metal altoids container after drilling a hole in the side of the container for the RF connector.

    If you are using a laptop try using the radio without the power adapter connected to the laptop. I noticed some adapters cause lots of RF noise to be present .

    1. I just got a NooElec dongle with an R820T tuner (tunes approx. 24-1700 MHz). I have been having my way with it for a week now. I don’t notice much pick-up from my laptop or PC. I’m using a high quality shielded USB cable though. Maybe that makes a difference.

      1. The NoElec one I don’t know about the one I have is the Terratec e4000.
        Would be interesting to know if the Noelec one has shielding or not.

  2. What’s the CPU usage like? I’d loooove a way to monitor RDS streams across a bunch of stations at once, but I’m not sure I want to dive down this rabbithole if it’s gonna take more processor than I can muster.

    1. The issue with that is the bandwidth limitation on the dongles. However, from what I gathered, the decoding is done via tcp so in theory you should be able to run multiple instances of the decoder provided the receive blocks on gnuradio aren’t to narrow.

      1. On my NooElec R820T tuner equipped dongle, the BW (span) using SDRSharp seem to equal the “Bulk-In” USB rate. On an old IBM laptop with a P-III Tualatin CPU (1.2GHz clock?) and 1GB SDRAM, WinXP SP3+ 32-bit (yep we’re talking old IAx86 hardware – which I prefer for many reasons). SDRSharp can do something like 3.4 MHz span (or is it 3.2 MHz, don’t have the application running right now). But things get pretty slow. But when I reduce the sample rate to 1024 or 2048 Msps via USB bulk-transfer settings, things get pretty good. I’m using the spectrum analyzer ONLY display in SDRSharp (turn off the waterfall). Note, I’m not post-processing anything with “plug-ins” and only setting AM demod as a basic spectrum analyzer in this case. Yes there are some settings in SDRSharp that can slow things down. But for general use on a legacy IAx86 32-bit machines this is my experience is pretty good. It would be nice if SDRSharp had an option to turn off “back-end” processing for audio output (using portaudio?) That may speed things up further.

        As I’m writing this I’m watching a VSAT HF-TDMA 8PSK terminal bursting at a 40ms frame rate with an occupied BW of around 1.2 MHz on the P-III laptop with a 2048 bulk-in setting. Looks good, near real-time over a 2MHz span.

        I have an E4000 Terratec dongle purchased from NooElec too, but haven’t had time to test it. But the R820T tuner version, as stated previously, doesn’t pick-up much extraneous stuff here on the bench.

        My opinion is use high quality USB shielded cables with RTL-SDR dongles, avoid ground loops, especially with speakers connected to your machine (try unplugging the speakers or microphones), I use only quality pointing devices (mouse), no wireless pointing or keyboard devices. Turn your hand phone OFF, especially TDMA (e.g., GSM) hand phones. on and on… Common sense.

        Best Regards….

      2. @Drone

        The RTL2832 chip is capable of doing 3.2MS/s but it isn’t reliable at that rate. You’ll find it drops samples occasionally. What rasz said is correct. You’ll only want a little over 2MS/s if you don’t want any dropped samples.

    2. CPU usage on the host pc is really low for streaming . The main CPU usage is in the decoding of the signal into audio and even then we are talking about 10% on a 2Ghz cpu.
      I’m going to be using an ARM board with multiple dongles to stream to my pc. The ARM board and dongles get mounted in a box at the antenna and just a cat5 cable back to the pc.

Leave a comment

Your email address will not be published. Required fields are marked *

Notify me of followup comments via e-mail. You can also subscribe without commenting.