← All posts

Narrowband Filtering and the DC Spike Discovery

Today's work focused on signal processing refinements to improve the scanner's ability to distinguish real P25 transmissions from background noise. The core improvement is a narrowband FFT filter that processes the raw SDR capture through a 12.5 kHz frequency window matching P25's channel bandwidth, instead of computing power across the full SDR capture bandwidth. The result is approximately 23 dB of processing gain — the equivalent of replacing the antenna with one 200 times more sensitive.

The narrowband filter required careful engineering. P25 uplink transmissions occupy a 12.5 kHz channel, but inexpensive SDR hardware has frequency drift measured in parts per million, which can shift the expected signal position by several kilohertz. I added a peak tracker that scans a wider window and follows the strongest signal, tolerating PPM drift without losing the target.

A comprehensive test suite uncovered a hardware artifact that had been silently corrupting measurements: the SDR produces a DC spike at the center frequency that sits 20–35 dB above the noise floor. This is a known characteristic of direct-conversion receivers, but I hadn't accounted for it. Every capture was showing a strong signal at the center bin regardless of whether any radio was actually transmitting. The fix — subtracting the mean from the IQ samples before FFT processing — eliminates the DC component at negligible cost. All 26 tests pass after the correction.

I also established realistic accuracy expectations through analysis: best case 300–800 meters for a stationary vehicle radio with multiple captures from a good driving baseline, typical case 500 meters to 1.5 kilometers for a single burst capture while driving past, and marginal case out to 2.5 kilometers for low-power portable radios near detection limits.

← Android Auto Goes Live in the Jeep...The Big Field Test: Latency Bug and Para... →