All projects

rf-interference-calculator

tools

IMD and harmonic analysis across 85 bands

Python Streamlit RF Analysis Monte Carlo
View on GitHub

Overview

rf-interference-calculator works out where intermodulation products and harmonics land relative to the bands you care about — then quantifies how much they actually hurt. It spans 85 wireless bands (2G/3G, 31 LTE bands, 14 5G NR FR1 bands, Wi-Fi 2.4/5/6E, BLE, GNSS, ISM, LoRa, HaLow, RFID, public safety, amateur) so coexistence problems show up on paper before they show up on the bench.

The problem

In a multi-radio product, the dangerous frequencies aren’t the carriers — they’re the mixing products. Hand-calculating IMD and harmonics across several simultaneous transmitters is tedious and error-prone, and knowing a product lands in a band doesn’t tell you whether it matters. This tool automates the arithmetic and then the impact analysis.

What it does

  • Products: IM2 / IM3 / IM4 / IM5 / IM7 intermodulation (including 3-tone triple-beat) plus harmonics 2H–5H, checked against all 85 bands and 34 per-band isolation pairs.
  • Signal-level analysis: real interference power at the victim (e.g. P_IM3 = 3·P_in − 2·IIP3), desensitization margins, receiver blocking (5-tier), and a unified frequency-plus-power risk score with technology-dependent thresholds.
  • Monte Carlo: worst-case P50 / P95 / P99 across TX power, IIP3, isolation, coupling, and temperature tolerances, with an LO phase-noise model that matters for GNSS.
  • Compliance: 3GPP TS 36.101 / 38.101 and FCC spurious-emission checks with bandwidth normalization.
  • Output: interactive spectrum / risk charts and CSV / Excel / JSON export.

Worked example from the docs: LTE Band 13 (777–787 MHz) → its 2nd harmonic at 1574 MHz lands right on GPS L1 (1575.42 MHz) — a textbook self-interference trap the tool flags as critical.

Screenshot of the interference calculator's analysis results: a products table flagging the LTE Band 13 2nd-harmonic hit on GPS L1 as critical, with risk/safe counts and export options.
That exact case in the tool — the LTE B13 2nd harmonic flagged against GPS L1, with risk scoring and export.

Tech

A Python / Streamlit web app (v2.2.0), 174 pytest tests on Python 3.10–3.12, AGPL-3.0.

Get it

Source and usage are on GitHub.