# How can I make WBFM receiver without using WBFM Receive block?

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

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.

• You wrote “transmitter” in your text on one place, do you mean “receiver” there? – Kevin Reid AG6YO Jan 31 '18 at 15:04
• Yeah, sorry for the mistake – Yondonjamts Ganzorig Feb 1 '18 at 17:00

## 1 Answer

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.