Fun with filter banks - grab many NBFM signals at once

Here is a quick and dirty app I cooked up to grab a slice of spectrum
and simultaneously demodulate NBFM and create .wav files for each of an
equally spaced set of channels.

In other words, you can grab a MHz of spectrum, specify 25 KHz centers,
and get .wav files of all the audio transmissions on each center
frequency (using NBFM modulation.)

The start and stop frequencies, channel spacing, channel filter
parameters, demodulated audio filter parameters, and final audio output
file rate are all configurable (though none are checked for sanity at
this point.)

The heart of the app uses gr.analysis_filterbank to channelize a swath
of spectrum, then attaches an FM demodulator to each output channel.

As almost no resampling is done, there are a few restrictions in usage:

The difference in the start and stop frequency must be a possible
decimated output rate of the USRP. So you can grab a MHz or two or
800K, but not, say, 625K of spectrum.

Furthermore, the spectrum width must be an even multiple of the channel
spacing. This complicates things, as it ultimately requires that the
channel spacing be an integral divisor of the USRP ADC rate. This
means, for example, you can do 20K or 25K centers, but not 15K centers,
common in the ham bands.

The audio output from the low pass filter is resampled to equal the
specified ‘output-rate’ parameter.

Finally, the output files will contain the audio transmissions
interspersed with all the white noise in between transmissions, unless
you apply the “squelch skipping” patch mentioned a couple days ago.
This updates the simple_squelch_cc block to optionally drop samples
instead of outputting zeros when the signal is below the power
threshold. The result in this case is that the final audio files have
all the inter-transmission silence/white-noise removed.

Here is an example command line to grab 464.0 to 465.0 MHz from
daughterboard B with gain of 70, set the channel squelch level to 0 db,
demodulate 40 channels at 25 KHz centers, use a channel bandpass filter
of 8000 KHz (one-sided), an audio filter of 3 KHz, and create output
files resampled to 8000 sps:

./channelizer.py
–rx-board B
–gain 70
–lower-freq 464.0M
–upper-freq 465.0M
–channel-rate 25000
–channel-pass 8000
–channel-stop 10000
–squelch 0
–audio-pass 3000
–audio-stop 4000
–audio-rate 25000
–output-rate 8000

The sox program is then be used to convert the output files into .wav
format.

Enjoy.

-Johnathan, AE6HO

Johnathan C. wrote:

Here is a quick and dirty app I cooked up to grab a slice of spectrum
and simultaneously demodulate NBFM and create .wav files for each of an
equally spaced set of channels.

In other words, you can grab a MHz of spectrum, specify 25 KHz centers,
and get .wav files of all the audio transmissions on each center
frequency (using NBFM modulation.)

Sounds groovy.

The FBI would now like to talk to you about deploying the new “lawful
intercept” technology you’ve
so kindly built for them :slight_smile: :slight_smile: :slight_smile:

Examples like this are precisely why SDR is so cool. Doing this in
hardware would be many $$$$, and I’m
certain that there’s commercial equipment out there, costing thousands
of dollars, that does precisely what this
cute little Gnu Radio application does.

Were it not for the “illegal along a couple of dimensions”, you could
tune this to the cellular bands and record
conversations. But I’m certain that the FBI would always get a
warrant before they did such things. Unlike
the NSA, which doesn’t need one :slight_smile:

Marcus L. wrote:

Sounds groovy.

Movie trivia–where does this come from: Groovus!

Examples like this are precisely why SDR is so cool. Doing this in
hardware would be many $$$$, and I’m certain that there’s commercial
equipment out there, costing thousands of dollars, that does precisely
what this cute little Gnu Radio application does.

It is pretty cool, and lots of fun to work with. GNU Radio has all the
pieces a radio experimenter needs and you don’t even have to snort
solder fumes to get it working (Matt has already snorted enough for all
of us on the USRP.)

I’m pretty new to the code, so I’m hacking up these little apps as much
for the learning as for the actual functionality. Fortunately I have a
long history with Python, C++, wxPython, cvs, autotools, etc., so I
really can focus on learning the GNU Radio stuff. If others can make
use of my experiments, all the better.

Were it not for the “illegal along a couple of dimensions”, you could
tune this to the cellular bands and record conversations.

Well, there is nothing to listen to anymore with scanners since AMPS
will be officially dead in a few months, and then what remains is all
TDMA/GSM/CDMA. And the FBI/NSA already has the tech they need to
monitor these over the air…

-Johnathan