I'm trying to make a WBFM receiver without using WBFM Receive block. So I've tried this way

FM receiver flowgraph

But it won't work. The problem is

RuntimeError: flow graph has loops!

and I need to use loop feedback for implement FM demodulation.

Very pleasure for any suggestions and advises.

  • 1
    $\begingroup$ You wrote “transmitter” in your text on one place, do you mean “receiver” there? $\endgroup$
    – Kevin Reid AG6YO
    Commented Jan 31, 2018 at 15:04
  • $\begingroup$ Yeah, sorry for the mistake $\endgroup$ Commented Feb 1, 2018 at 17:00

1 Answer 1


General principle: In GNU Radio you cannot ever have a flow graph with a loop in it. If you wish to have feedback of some kind, it must be implemented in a single block.

(There are many existing blocks that do this, such as AGC blocks and IIR filter blocks, and classes to help create them, though they still require writing C++ code.)

However, you do not need feedback to implement a FM demodulator. The key block to FM demodulation in GNU Radio is the Quadrature Demod (gnuradio.analog.quadrature_demod_cf) block. This block takes in a complex signal and outputs the phase difference — or instantaneous frequency — of every successive pair of samples, which is exactly the core of FM demodulation.

Besides the Quadrature Demod block, you will want

  • A low-pass filter on the input, as with any demodulator.
  • A suitable FM de-emphasis filter (provided in the FM Deemphasis block).
  • Optionally a DC blocking filter, because if the input signal is not centered at 0 there will be a corresponding DC offset in the output audio, which will create clicks at start/stop if minor or clipping of the audio if severe.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .