Electromagnetic interference mapping

Code - 22-04-2019


Electromagnetic Interference (EMI) describes the RF disturbance generated by an electrical circuit through electromagnetic induction, electrostatic coupling, or conduction.

There are various Electromagnetic Compatibility (EMC) regulations to limit the amount of parasitic electromagnetic emission per device. For instance, for the European market, there are constraints and test methods defined for the CE mark (e.g. EN55022).

In addition to the legal aspect, EMI can be a serious concern for the operation of a product: a radiating component on a PCB could cause some glitches or other issues. Hence, this may be considered for the integration, validation and debug of hardware systems.

For the design phase, there are some finite element analysis EM modeling and simulation tools.

EMC simulation with ANSYS EMC simulation with ANSYS, by LEAP FEA Team, finiteelementanalysis.com

However, for real tests, the equipement for compliance and pre-compliance testing is very expensive, requires a lot of physical space and specially trained engineers/technicians. Additionnally, it usually does not give a lot of insight on the spatial EM radiation distribution.

Inside of shielding room Inside of shielding room by Stan Zurek - Own work, CC BY-SA 3.0, Wikimedia

This process is not well-suited for fast prototyping, hardware iterative design and Agile developpement. I developped a proof-of-concept solution to address these issues by providing a very simple system to get inexpensive and accurate 2D EMI mapping of a board/device.

My solution

This schematic describes the principle of operation:

Schematic of the principle of operation

The near-field probe is moved above the device under test while a camera tracks its current position. The RTL-SDR performs the RF power measurements. A Python script does all of the signal processing: tracking in the camera stream, computing the RF power and generating an EMI heatmap.

I made the code in Python 3 using OpenCV (image processing and tracking), pyrtlsdr (RTL-SDR wrapper interface) and various math and signal processing libraries.


This short video shows the process of scanning of a board (an Arduino Uno performing analog readings and computation):

Below are several output samples.

Arduino Uno board EMI scan Arduino Uno board, the scan from the video.

MacBook pro EMI scan MacBook laptop under heavy artificial CPU load.

RF hairpin filter EMI scan Hairpin RF filter, see article. A signal fully out of filter bandwidth is fed from the bottom SMA.


  • Simple and fast: the setup and actual measurements only take 5 minutes at most.
  • High resolution: the physical size of the probe is the main limitation. With smart signal processing, it can be mitigated.
  • Inexpensive: all the hardware required to make this costs less than 15 USD combined (including a DIY near-field loop probe).


  • Repeatability: this is the biggest issue in my opinion. Because the probe is handheld, the distance to the device under test may not be constant. A quick solution is to use some kind of jig to keep the probe at a known height during the measurements.
  • Bandwidth: with the RTL-SDR, the bandwidth is only 2MHz. However, better SDRs can get the hundreds of MHz.
  • Software: with my current prototype implementation, the tracking of the probe is not perfect, and, more importantly, the RF signal processing is very basic. This simply requires more time investement.

Download and usage

To download the Python script, go to my Github repository: https://github.com/CGrassin/EMI_mapper. Instructions on the prerequisites, setup and usage are described there.

Note: this is an early proof-of-concept/research program. It probably requires some Python knowledge to use.


This open-source proof-of-concept proved to be a very efficient way of making 2D electromagnetic radiation heat-maps.

In spite of the known limitations of this method, there is a cornucopia of possible improvements with better signal processing. In the large amount of data collected by the SDR, I currently simply compute the RMS power over the bandwidth. The I/Q samples could be used to recover a massive amount of information on the actual radiation: harmonics, power distribution, phase, circuit states, surges, 3D mapping...

With better computer vision algorithm and adequate graphical representations, this tool could give a unique EMI/EMC insight to engineers.

Appendix: making the probe

My probe is a homemade antenna known as an H-field loop. Professionnal, calibrated near-field probes kits are very expensive. However, it is easy to make one from a piece of semi-rigid coax SMA cable. This schematic shows how it works:

H loop probe schematic

There is a lot of ressources providing information to make those antennas, for instance: interferencetechnology.com (article) or EEVBlog (video).

This is my probe before covering it with insulating tape (to avoid shorting anything while performing measurements):

uninsolated H loop probe

Author: Charles Grassin

What is on your mind?

  • #1 Martin - G8JNJ

    I wonder if this could also be used to map the radiation pattern of an antenna by means of an optically tracked drone with a suitable RF detector and data link.
    For greater precision maybe attaching something like a modulated LED (UV ?) beacon to the sensor probe would perhaps permit pin point optical tracking.

    on April 30 2019, 10:08

  • #2 Charles

    This is an interesting idea! I was actually planning to do it the manual way for a future project. I wonder if the GPS error is low enough to make it even simpler, without optical sensing. Then, the drone could be completely autonomous to take the measurements and output radiation patterns fast. Cameras are incredibely powerful and cheap sensors, but they take a lot more data processing and thought.

    on May 1 2019, 21:03

  • #3 Alexandre

    Thanks for this great work. I was wondering how do you leverage these heatmaps in order to be confident your product will pass EU certifications? Do you nees to make multiple pass, one for each frequency?

    on May 3 2019, 6:22

  • #4 Charles

    Thank you, Alexandre! The various standards define radiated EMI limits in terms of field strength (in V/m) at a given distance, for several bands. For instance, the FCC part 15 specifies a maximum of 150µV/m for the 88-216MHz, measured at 3 meters. There are several challenges to check this with the data we have and quite a bit of math involved here.
    First, the SDR/antenna would need to be calibrated, which is possible with the adequate equipment. Then, the far-field must be extrapolated from the local near-field. As you observed, a frequency sweep is required to get the power over the full band.
    Of course, this could be automated in the python script. This is why I described my current implementation as a "proof-of-concept"! The point here is that we have the tool to get a lot more information than what we would get from a far-field measurement.

    on May 4 2019, 22:51

  • #5 G8JNJ

    Hi Charles,
    This RSGB drone measurement presentation by Jenny Bailey, G0VQH may be a good starting point.

    on May 6 2019, 10:09

  • #6 John

    Nice. (I saw it on Hacker News.) Your #1 limitation, repeatability, could be somewhat addressed by OpenCV not just producing an (x,y) position but also an estimate of the size of the loop, allowing you to derive a z-coordinate?

    on May 8 2019, 6:43

  • #7 Charles

    Hi John! That is is true, and pretty smart! However, the issue with that is that we need to have a Z resolution in the order of millimeters to get consistent readings. This means that the tracking has to be incredibly accurate. Maybe with 2 or 3 markers on the probe?

    on May 8 2019, 9:16

  • #8 Thor

    Very interesting project. Thank you for sharing.

    on May 8 2019, 12:58

  Back to projects

Related articles