Skip to content

jacklpayne/anis-sdr

Repository files navigation

anis-sdr

Overview

An adaptive multi-notch IIR filter implemented as a GNURadio C++ OOT module. This repo most notably includes:

  • Adaptive Notch Filter OOT block that combines intermittent FFT-based peak detection stage with time-domain gradient descent tracking that allows a configurable number of cascaded IIR notches to follow drifting interferers in a complex baseband without expensive frequency domain transformations
  • Interference Source hier block exposing amplitude, center frequency, drift range, and drift velocity parameters for injecting test signals
  • Power Recovery Analyzer embedded Python block that compares original, polluted, and filtered test signals to measure the error percentage removed by the adaptive filter
  • Test harnesses implemented as flowgraphs that allow injection of complex drifting interference combinations into white noise, distress signal satellite capture, and EEG signal data while computing the power recovery of the filter tuned to each case

Blog post: http://jackpayne.space/projects/anis-sdr/

Test Harnesses

White Noise Test

White Noise Test

  • Demonstrates attenuation of four interferers with various drift velocities and overlap conditions

Satellite Test

White Noise Test

  • Attenuation of static interferers in NOAA-15 satellite retransmission of a distress beacon signal. The inclusion of a meaningful drifting tone due to the doppler shifted transmission highlights the need for careful filter tuning in situations where spectral power is not uniform. The filter threshold requires precise calibration to ensure that it does not attenuate the important transmission. This also implies sufficient discrepancy between the transmission amplitude and the interference amplitude.

EEG Test

White Noise Test

  • Demonstrates that the filter can also be used for real-valued signals in a complex domain. Because low-frequency information is so dominant is so dominant in the EEG data, the range around DC must be uniquely excluded from the filter's range of consideration. This is an acceptable limitation since the interferers that would emerge in practicality (i.e, 60Hz mains hum) exist in a different frequency region than the highest amplitude biosignal information.

Comparison

Test Average Power Recovery
White Noise 99.7%
Satellite 99.9%
EEG 91.8%
  • It is important to note that power recovery is measured with reference to the span of the frequency spectrum in each case. That is, the error introduced to the EEG data by the transition bandwidth of the IIR notch was relatively greater due to its larger coverage of the overall EEG spectrum given its low sampling rate, and vice versa for the high-frequency satellite data.

Building

I highly recommend that you build any OOT GNURadio modules in a Linux environment. It is prohibitively buggy at best on Windows.

You should have GNURadio, CMake 3.10 or greater, and Python development headers matching GNURadio (see the wiki for this).

From the repository root, ./rebuild.sh compiles and installs the OOT module.

Test Data Sources

About

Adaptive Narrowband Interference Suppressor for Software Defined Radios

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors