Using an SDR for 915 MHz Band Analysis
A Software Defined Radio (SDR) is one of the most useful tools for mesh network operators: it lets you visualize the actual RF environment your nodes operate in, identify interference sources, and verify that your nodes are transmitting on the correct frequencies.
Getting Started with RTL-SDR
The RTL-SDR (RTL2832U based USB dongle) is the most accessible SDR for mesh operators:
- Cost: roughly $30 dongle-only, or about $40 with the dipole antenna kit, for an RTL-SDR Blog V4 (the current recommended version; MSRP as of 2026-06-08)
- Coverage: 500 kHz to 1750 MHz - covers the entire 902-928 MHz ISM band
- Software: SDR# (Windows), GQRX (Linux/Mac), SDRangel (cross-platform)
- Antenna: The included whip antenna works at 915 MHz; a dedicated 915 MHz antenna improves sensitivity
# Install SDR# on Windows:
# Download from airspy.com/download, extract, run SDRSharp.exe
# GQRX on Ubuntu:
sudo apt install gqrx-sdr
Configuring SDR# for 915 MHz Observation
- Set center frequency to 915,000,000 Hz (915 MHz)
- Set sample rate to 2.4 MHz. Note this shows only ~2.4 MHz of spectrum at once (about 913.8-916.2 MHz at a 915 MHz center) — the RTL-SDR cannot display the full 26 MHz band simultaneously. To survey the whole 902-928 MHz band, step the center frequency across the band in ~2 MHz increments (or use a wideband SDR / scan feature).
- Enable WFM or Raw I/Q mode (you're looking at signal presence, not decoding)
- Enable the spectrum analyzer and waterfall displays
- Set FFT size to 32768 for high resolution
The waterfall shows frequency (horizontal) vs. time (vertical, scrolling). Each LoRa transmission appears as a faint chirp pattern - rising or falling tones, typically 250 kHz wide for the common Meshtastic presets (range 125-500 kHz depending on preset).
What to Look For
Normal LoRa Activity
LoRa transmissions are characterized by chirp spread spectrum - the signal appears as a diagonal streak in the waterfall (rising chirp = upchirp, falling = downchirp). A healthy mesh network shows occasional bursts of activity at the configured center frequency.
Interference Sources
- Constant carrier (narrow spike): Could be a CW interferer, oscillator leakage, or a malfunctioning device
- Wide noise floor increase: Could be FHSS device (900 MHz cordless phone), wideband noise from switching power supply
- Pulsed narrowband: Smart meter AMI networks (itron, Landis+Gyr) often operate in 902-928 MHz; appears as regular narrow pulses
- Broadband hash: Arc welders, brush motors, and variable-speed drives produce broadband electrical noise that raises the noise floor broadly
Measuring Channel Utilization Empirically
SDR# can be used to empirically measure how busy your mesh channel is:
- Tune to your network's center frequency
- Record 10-15 minutes of waterfall data
- Count the number of LoRa packet events per minute
- Estimate channel occupancy from the LoRa airtime, not from a raw bitrate. (LoRa data rate is low: SF9/250 kHz is only ~1.7-3 kbps, far below the 250 kHz bandwidth — do not confuse the two.) A typical ~50-byte packet at SF9/250 kHz has an airtime of roughly 150 ms, so 10 packets/min × 0.15 s ≈ 2.5% channel occupancy. Slower spreading factors (SF11/SF12) have much longer airtimes and reach high occupancy with far fewer packets.
The Meshtastic app reports Channel Utilization as a device metric (via the Telemetry module / node info, often shown as ChUtil) - check this before breaking out the SDR. The SDR is most useful when you suspect non-LoRa interference.
No comments to display
No comments to display