User Tools

Site Tools

NFM GNU-Radio Receiver for RTL/OsmoSDR

Soon after the release of RTL-SDR a lot of people started to play with software defined radios. Although the Elonics E4000 tuner and the Realtek RTL2832U Chip are a long way from the quality and performance/stability of an USRP(2), the price of $11 - EUR30 makes these devices an ideal beginners device for SDR experiments, without having to invest +$1k into hardware.

As soon as the new OsmoSDR is finished and available, it will provide a very cost-effective device, filling the gap between the funcube, with only 96kHz bandwith - some people lovingly call it the sadcube these days - and the USRP. The OsmoSDR approach seems to be the best compromise of both worlds and the osmocom team is doing a real kick-ass job, putting it together.

Right now, not only hackers, but old-school hams and other people are drawn to gnuradio and rtlsdr but sometimes find it hard to leave their known world behind and dive into the new world of doing radio in software. In order to make the transition easier, good examples are desperately needed. The following setup is an easy to understand, uncluttered narrow band FM receiver, that most hams and radio related people should be able to grasp and tweak.


The hardware used in this test was a Hama Nano DVB-T Stick, based on the Elonics E4000 tuner and the RTL 2832 controller.

[Hama Nano DVB-T Stick] [Hama Nano Bottom] [Hama Nano Top]

GNU Radio Companion Setup

The following example is based on GNU Radio 3.5.3 and the very versatile OsmoSDR source block. With the OsmoSDR sourceblock it is possible to tune the OsmoSDR as well as the RTL-SDR and the funcube, which makes it the perfect choice for a compatible GNU Radio NFM receiver example.

This setup is meant to be a basic starting point for GNU Radio beginners and will not unleash the real power GR has under the hood.




Download GNU Radio .grc File:


  1. Use the RX Center slider to tune into a band you want to work
  2. Identify a frequency in use, let's say you find a strong signal on 149.2125
  3. Tune RX frequency slider to 149M
  4. Tune RX Offset slider to about 212k
  5. Switch from Waterfall Tab to the FFT Spectrogram Tab
  6. Use the RX Fine slider to lock onto your desired target


GNU Radio:

  • Use the left/right arrow keys in GRC to rotate blocks for a clean flow.
  • When you change the samplerate, remember to adjust the fractional interpolator.
  • The higher the frequency the more inaccurate the tuning gets. Use the FFT Spectrogram and the RX Offset/Fine sliders to compensate visually.
  • Never tune RX Center to the frequency you actually want to work, always create an offset (+200k seems like a common choice) by using the RX Offset/Fine slider to home in on your target. This is due to the DC Component on the center frequency.
  • TAU Setting: FM Pre-Emphasis (50us for WORLD / 75us USA)

2.8 MHz Bandwatch on ISM

433 MHz

Here you can see/hear a somewhat crowded overview of the 433 MHz ISM band:

[] []


868 MHz

The 868 MHz ISM band is far less crowded here, in comparison to the 433 MHz band. The right screenshot shows a bit more detailed view on a short data transmission.

[] []

2m/70cm HAM-Bands

2m Simplex

First TX/RX test on FM 145.2125 / 12.5kHz simplex. An IC-E92D with 0.1W output power was used to send:

[] []


70cm Duplex on DB0EL

Another test recording on DB0EL (Munich) when another HAM was calling on the repeater:

Last words

Share some love with the open source mobile communication team (osmocom) for their tireless efforts, to create awesome solutions and keep them open for everyone to make stuff like this possible. When time will allow more tests, we will try to go a bit deeper into APT, POCSAG, ACARS and ADS-B. As always, when you find bugs or create fixes, please report/contribute them back to the community.

73, de • −  • − − •  − − −  • − • •  • − • •  − − − 

A great tool to quickly learn morse code, is Todd Anderson's Morse Code Trainer for Android