How to get the power level of two or more RF signals

In our previous post, we showed you how to set up two RTL-SDR dongles to work in a Raspberry Pi and run a python library: pyrtlsdr.

Get the script

If you’ve already done that, you can now use our script to receive two or more different RF signals and get their power level concurrently. We use the multi-threading Python function “Pool” to achieve this.

Run an example

For example, we selected two radio stations:

  • 88.20MHz, named “RNE” channel and located in Torrespaña (Madrid, Spain), 15km away from us.
  • 103.5MHz, named “Radio Marca” channel and located in Nuevos Ministerios(Madrid, Spain), 10km away from us.

Usually, we would expect that the signal received from the nearest radio station would be the strongest. However, we run the script many times and we always get a result of 15dB difference, where the farest radio station signal is received with more power:

How is this possible? Well, there are many facts, apart from the distance, that can affect the received power:

  1. Obstacles in the line of sight.
  2. FM signals radiate in two planes, horizontal and vertical. There is also circular antenna polarization for better reception to compensate for receiving antennas that are not perfectly horizontal or vertical.
  3. Therefore, our receiver also matters


We hope you enjoyed this post. You can modify the frequencies in the script and meassure the power of any RF signal from 80 to 1 GHz approximately. You can also add more RTL-SDR dongles and scan them all concurrently 🙂 If you have any question, you can drop us an email.

Add a Comment

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