"Click to tune" prototype USRP Scanner (files attached)

Attached is snapshot of my current progress towards a ‘click to tune’
scanner using a USRP. It doesn’t scan yet, though.

The application will bring up a waterfall sink display based on a 1024
point FFT of the incoming IF samples, and start demodulating audio at
the rx frequency set.

It’s working…but hard to use. Right now everything but the tuned
frequency is set at start via the command line:

usage: scanner.py [options]

options:
-h, --help show this help message and exit
–center-freq=FREQ set FFT center frequency to FREQ
–rx-freq=Hz set receive frequency to FREQ
–rx-board=SIDE select USRP Rx side A or B
–if-rate=RATE set IF sample rate to RATE, complex
–middle-rate=RATE set first downconversion sample rate (complex)
–output-rate=RATE set output sample rate to RATE, float
–channel-pass=Hz set channel bandpass frequency to Hz
–channel-stop=Hz set channel stopband frequency to Hz
–channel-rate=RATE set channel sample rate to RATE, complex
–deviation=Hz set FM deviation to Hz
–audio-rate=RATE set final audio sampling rate, float
–audio-pass=Hz set audio filter passband Hz
–audio-stop=Hz set audio filter stopband Hz
–modulation=TYPE set modulation type (AM,FM)
–squelch=dB set RF squelch to dB
–gain=dB set RF gain

None of the options have defaults right now, and none of them are
checked for validity.

Moving the mouse around will display the frequency in a tooltip along
the bottom. (You might have to leave the window with the mouse and
return to it.)

Clicking on a trace will set the demodulation frequency to that trace.
It’s pretty cool.

Also attached are some helper scripts:

./2m will set up a 144-148 MHz waterfall, click to decode FM.

./440m will set up a 440-445 MHz waterfall, click to decode FM.

./460m will set up a 460-465 (UHF LO business band) waterfall

./aviation will set up a 119-125 MHz waterfall, click to decode AM

./fm center_freq rx_freq will do center_freq ±3MHz and decode FM

./wfm center_freq rx_freq will do the same for WFM

./kfox will play good music in the San Francisco Bay Area

There is much, much more work to do–I plan to add a bunch of controls
under the waterfall to control everything currently specified on the
command line as well as a keyboard shortcuts to “fly around” the
spectrum.

A note on parameters: Some sound cards (like mine) only accept 48000
sample rate. The flow graph demodulates the selected signal down to
‘audio_rate’ samples per second, then resamples this to the
‘output_rate’. So you may need to edit the helper scripts to change the
‘output_rate’ parameter to something your sound card likes. It needs to
be a rational fraction of the audio_rate parameter.

if_rate, middle_rate, channel_rate, audio_rate all need to be decreasing
integral divisors. (e.g., 6400000, 128000, 32000, 8000)

Testing only done under current CVS gnuradio/usrp and Ubuntu 6.06 Linux.

Comments, tweaks, bugs reports, etc., are welcome.

Enjoy.

-Johnathan, AE6HO