# Spectrum

> See RF activity on 2.4, 5 and 6 GHz as a live FFT trace, peak hold and waterfall from a WiPry Clarity, a Qualcomm WCN7850/QCNCM865 card or ESP32-C5 boards on a sensor.

Spectrum shows energy on the air that a packet capture cannot see, such as non-Wi-Fi interference, busy channels and wide transmitters.

## What you need

- iPhone, iPad or Android, connected to a sensor that has a shell (a Linux sensor, not an ESP32-C5 paired over Bluetooth).
- One spectrum source on that sensor:

| Source in the app | Bands | Levels |
|---|---|---|
| **WiPry Clarity** (USB on the sensor) | 2.4, 5, 6 GHz | dBm |
| **Qualcomm WCN7850 / QCNCM865** (Android: **Qualcomm**) | 5, 6 GHz | Relative, uncalibrated |
| **ESP32-C5 (Pi)**: one to six idle C5 boards on the sensor's USB | 2.4, 5 GHz | Relative, uncalibrated |

Spectrum hardware and packet-capture radios are different capabilities. Confirm the exact model and transport before you buy or connect one. New USB adapters run beta code.

## How to run a live spectrum view

1. Connect the sensor in **Devices**.
2. Open Spectrum. On iPhone, go to **More** › **Spectrum**; on iPad, it is in the sidebar. On Android, go to **More** › **Spectrum**. The screen shows **Sensor connected**. If it shows **Select a sensor**, go back and connect one.
3. Pick the source:
    - On iPhone, use the **Source** segmented control: **WiPry Clarity**, **Qualcomm WCN7850 / QCNCM865** or **ESP32-C5 (Pi)**.
    - On Android, tap **Source: …** and choose **WiPry**, **Qualcomm** or **ESP32-C5 (Pi)**. The Android menu lists this as "experimental ESP32 FFT".
4. For WiPry only, tap **Detect**. You should see **WiPry Clarity detected**. The Qualcomm and ESP32 sources skip this step. Instead they show **relative FFT levels (uncalibrated)** (iPhone) or **Relative FFT · uncalibrated** (Android).
5. Choose the band: **2.4 GHz**, **5 GHz** or **6 GHz**. Only the bands that source supports are offered. The band is fixed while a session runs.
6. Start:
    - On iPhone, tap **Start Live**. The button reads **Live…** while it streams.
    - On Android, tap **Start Sweep**, or **Start FFT** for the ESP32 source.

   The status line counts sweeps or FFT frames as they arrive.
7. Tap **Stop** when you are done. The app stops the sensor's spectrum job.

You can't change the source or band while a session runs. Stop it first.

## How to read the FFT and waterfall

1. Switch between **FFT** and **Waterfall** with the view control.
2. **FFT** plots level against frequency for the latest sweep. Channel markers mark the band. Drag across the chart to read the frequency under your finger. On Android, double-tap to clear the cursor.
3. Turn on **Peak hold** (iPhone) or **Max hold** (Android) to keep the highest level seen at each frequency. On iPhone, it is drawn as a dashed line.
4. For the relative sources, iPhone also offers **Smooth live trace**. This smooths the live line, not the stored data.
5. **Waterfall** stacks successive sweeps over time; colour shows level. A steady vertical stripe is a constant transmitter. Short bursts show as broken streaks.
6. On iPhone, tap **Expand chart** to give the plot the full screen. Tap **Show controls** to bring the controls back.

## Tips

- **Relative is not dBm.** Qualcomm and ESP32 levels are relative magnitudes. Compare them within one session and one source. Don't compare them with a WiPry's dBm or with another card's numbers. The chart's y-axis says **Relative level** or **dBm**. Check it before you read a value.
- **Qualcomm sweeps visit channels one at a time.** The app sweeps the enabled channels in the band. Blank or grey ranges were not measured. On iPhone, each waterfall row is one completed channel cycle. One completed sweep is not a capture of the whole band at the same moment.
- **The Qualcomm radio must be idle.** Stop any scan, capture or join on that card first. On a Mudi 7, connect over USB or Ethernet, not over the Wi-Fi radio you want to measure.
- **ESP32-C5 boards give gapped snapshots.** Each board covers a slice of the band. The boards must be idle, not scanning or capturing.
- Only one spectrum session runs at a time across your sensors.

## If it doesn't work

| What you see | What to do |
|---|---|
| **WiPry not found** / **WiPry Clarity not seen on USB (26ae:000c)** | Check the WiPry's USB connection and power on the sensor, then tap **Detect** again. |
| **Start** stays disabled | Connect a sensor with a shell. For WiPry, a failed **Detect** blocks Start until the WiPry is found. |
| "Another operation is using the radio" | Stop the scan, capture or join that is using the card, then start again. |
| "A spectrum sweep is already running on another device" | Stop the other session first. |
| **Waiting for first completed sweep…** for a long time | A Qualcomm sweep has to visit every channel before it draws. Wait for one cycle. If nothing arrives, stop, check that the radio is idle, and start again. |

## Related

[Browser spectrum controls](/guides/sensor-console/) · [Unified image](/guides/unified-sensor-image/) · [Compatibility](/sensors/compatibility/) · [Experimental work](/features/experimental/)
