FM MPX power monitor

I created a simple MPX power meter using GNU Radio software. It was a quite enjoyable task to create a block diagram of a stereo WFM receiver together with a bit more advanced deviation meter with GNU Radio Companion environment. In order to obtain reasonable results, the measured signal must be perfectly clear and strong.

ITU-R SM.1268 provides detailed information about required conditions for measurements. The signal level should be at least −47 dBm (73 dBf) together with SINR (signal to interference and noise ratio) of 50 dB or more. Also, there should be no multipath interference, so a directional antenna is probably the only option.

Generally, if the peak deviation exceeds ±80 kHz during measurement and the station is unlikely over-deviating, it is certain that signal quality is not sufficient. Measurements are also unreliable with stations spaced less than 300 kHz apart, because of very wide filters involved.

This project is dedicated for Airspy HF+ SDR device, so the input sample rate is fixed at 768 kHz. It can be easily adapted for other SDRs using additional interpolation and decimation operations through Rational Resampler block. The bandwidth is adjustable, with default value of 280 kHz, which is optimal for ±80 kHz peak deviation and subcarriers up to ±60 kHz (i.e. including RDS). The maximum bandwidth is limited to 320 kHz due to DC offset at the center of the frequency range, so only one side of available spectrum is used (the right one).

The measurement session can be saved as raw I/Q file by enabling the File Sink block. Consequently, in order to playback the recorded session, enable both File Source and Throttle blocks and disable the osmocom Source block. The path to a file should be also modified.

According to ITU-R BS.412, the average modulation power over any interval of 60 s cannot exceed power of a single sinusoidal tone which causes a peak deviation of ±19 kHz. Instead of measuring real signal, there is also other mode available, which can be used as a reference for mpx power magnitude. Enable the Signal Source and Frequency Mod blocks and disable all blocks starting from other sources. The gen_dev variable can be modified, which is the peak deviation of a continuous sinusoidal tone.

MPX power Deviation
0 dBr ±19 kHz
3 dBr ±27 kHz
6 dBr ±38 kHz
10 dBr ±60 kHz

To measure the deviation, the FM signal is being demodulated and then the peak value of some samples is taken. In order to measure MPX power, the RMS deviation is calculated. 

Important note: The MPX power output is based on last 60 seconds of measurement.

Both stereo pilot and RDS deviation measurement is provided as-is. Some filter refinement (order, width) may be necessary for accurate results. 

The peak deviation (20 samples per second) and MPX power (1 sample per second) data in raw float32 format can be exported to a file. Enable the following blocks and modify the path to a file to turn this feature on.

The RDS decoder requires gr-rds module. If it is not available, disable last two rows of blocks to start this project, as follows.

The signal level meter can be calibrated by modifying the rssi_ref variable. I calibrated my unit to 75 Ω dBf signal unit.

I measured my local stations and I recorded their I/Q samples. Here are the results from February 14, 2019 using directional antennas (Körner 19.3 H and 2×9-el Yagi V). Short video snippets of the mpx power monitor are also available. They contain the peak of each measurement, regarding the mpx power value. Click on a station name to watch the video.

Freq Station Location ERP Signal MPX Dev ±
88.1h RPL FM Płock – Radziwie 0.25 kW 75 dBf 6.0 dBr 82 kHz
90.4v VOX FM Płock – Kochanowskiego 0.5 kW 86 dBf 3.0 dBr 73 kHz
92.2h PR 1 Sierpc – Rachocin 60 kW 85 dBf 1.3 dBr 78 kHz
93.1v RMF Classic Płock – Radziwie 0.25 kW 80 dBf 3.0 dBr 73 kHz
94.3h RMF FM Sierpc – Rachocin 60 kW 86 dBf 2.4 dBr 74 kHz
95.2v Eska Płock Płock – Kochanowskiego 0.1 kW 83 dBf 3.0 dBr 72 kHz
96.1h PR 3 Sierpc – Rachocin 60 kW 86 dBf 0.7 dBr 78 kHz
97.3h Radio Zet Sierpc – Rachocin 60 kW 87 dBf 2.5 dBr 74 kHz
98.1h PR 2 Sierpc – Rachocin 2.5 kW 74 dBf 0.4 dBr 77 kHz
101.2v TOK FM Płock – Radziwie 1 kW 88 dBf 1.6 dBr 71 kHz
101.9h RDC Sierpc – Rachocin 60 kW 87 dBf 3.0 dBr 74 kHz
104.3v KRDP Płock – Orlen (h160) 1 kW 96 dBf 3.0 dBr 75 kHz
106.3h Radio Maryja Sierpc – Rachocin 60 kW 85 dBf 0.7 dBr 74 kHz

I did not compare my measurements, as I don’t have any devices for that. Nevertheless, the results seem to be reliable. According to ITU-R SM.1268, the instrument accuracy for deviation measurements should be within ±2 kHz for ≤ 80 kHz and ±5% for > 80 kHz.

Download the FM MPX power monitor on Github:

Update: Recently I have created a gnuplot script for deviation histogram and mpx power graph plotting. It can be executed periodically during the measurement to obtain a nice real-time view.

Other sample measurements are available at:

Leave a Reply

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