# Scanoo\_rx: New GUI, Center Freq Hopping & SSB Modulation

**URL:** <https://www.ruby-forum.com/t/scanoo-rx-new-gui-center-freq-hopping-ssb-modulation/230299>\
**Category:** GNU Radio\
**Created:** [June 9, 2014, 6:33pm UTC](https://www.ruby-forum.com/t/scanoo-rx-new-gui-center-freq-hopping-ssb-modulation/230299 "2014-06-09T18:33:57Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![jason\_sam](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/j/7993a0/32.png) [@jason\_sam](https://www.ruby-forum.com/u/jason_sam)\
**Post date:** [June 9, 2014, 6:33pm UTC](https://www.ruby-forum.com/t/scanoo-rx-new-gui-center-freq-hopping-ssb-modulation/230299/1 "2014-06-09T18:33:57Z")

</div>

Hi all,

The latest version of my scanoo\_rx GRC SDR scanning application is now  
available via GitHub. Please star the project if you like it and report  
bugs by creating an issue on the GitHub page.

Quick overview of the features:

- AM, NBFM, WBFM, LSB & USB modulation.
- Spectrum sense mode with center frequency hopping.
- Frequency lockout.
- FFT & waterfall displays.
- Adjustable squelch.
- Auto saves settings to ‘.scanoo’.
- Selectable channel bandwidth.

GitHub URL:

> **[GitHub - m0mik/scanoo: This project no longer works so please try Ham2Mon -\>](https://github.com/m0mik/scanoo)**
>
> This project no longer works so please try Ham2Mon -\> - GitHub - m0mik/scanoo: This project no longer works so please try Ham2Mon -\>

Direct link to the GRC file:

[https://raw.githubusercontent.com/m0mik/scanoo/master/apps/scanoo.com\_rx.grc](https://raw.githubusercontent.com/m0mik/scanoo/master/apps/scanoo.com_rx.grc)

BTC Donation Address: 1LCMXmjLipzoiWD5Ahc6kBkJQwQNRLbjGa

Mike

---

<div class="post-metadata">

**Author:** ![cobra050](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/c/3d9bf3/32.png) [@cobra050](https://www.ruby-forum.com/u/cobra050)\
**Post date:** [June 10, 2014, 6:51pm UTC](https://www.ruby-forum.com/t/scanoo-rx-new-gui-center-freq-hopping-ssb-modulation/230299/2 "2014-06-10T18:51:07Z")

</div>

Mike,

Can you give a general overview of how the program works, and maybe what  
you  
are doing with the FFT and IFFT, and how you accomplish the tuning via  
mouse  
click in GRC? I assume this is entirely done in GRC and there was no  
modification of the generated Python?

Thanks,  
Lou  
KD4HSO

Mike J.-2 wrote

> –  
> Mike J. M0MIK BSc MIET  
> Email:

> mike@

> Web: [http://scanoo.com](http://scanoo.com)

–  
View this message in context:  
[http://gnuradio.4.n7.nabble.com/Scanoo-rx-New-GUI-Center-Freq-Hopping-SSB-Modulation-tp48866p48882.html](http://gnuradio.4.n7.nabble.com/Scanoo-rx-New-GUI-Center-Freq-Hopping-SSB-Modulation-tp48866p48882.html)  
Sent from the GnuRadio mailing list archive at [Nabble.com](http://Nabble.com).

---

<div class="post-metadata">

**Author:** ![cobra050](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/c/3d9bf3/32.png) [@cobra050](https://www.ruby-forum.com/u/cobra050)\
**Post date:** [June 11, 2014, 2:35pm UTC](https://www.ruby-forum.com/t/scanoo-rx-new-gui-center-freq-hopping-ssb-modulation/230299/3 "2014-06-11T14:35:41Z")

</div>

Lou, thanks for your interest. Yes the entire thing was made purely  
with  
GRC and there was no modification to the generated Python. All that is  
required to run the scanoo\_rx GRC file unmodified is a UHD compatible  
device and an installation done with “./pybombs install uhd gnuradio”.  
Johnathan’s GNURadio Live DVD should work too -  
[http://gnuradio.org/redmine/projects/gnuradio/wiki/GNURadioLiveDVD](http://gnuradio.org/redmine/projects/gnuradio/wiki/GNURadioLiveDVD) .

For reference, here is a screenshot of the scanoo\_rx GRC flowgraph -  
[![](https://raw.githubusercontent.com/m0mik/scanoo/master/apps/scanoo.com_rx.grc.png) ](https://raw.githubusercontent.com/m0mik/scanoo/master/apps/scanoo.com_rx.grc.png)

Starting at the top left, the ‘UHD USRP Source’ block receives complex  
time  
domain samples from your UHD compatible SDR hardware and sends these  
complex time domain samples to the ‘Stream to Vector’ block and the  
three  
‘WX GUI’ display blocks.

The ‘Stream to Vector’ block sends the complex time domain samples in  
vector chunks of size ‘fft\_len’ to the ‘FFT’ block which outputs the  
vector  
chunks of complex samples in frequency domain format. FYI, the ‘WX GUI  
FFT  
Sink’ blocks (aka ‘FFT Rough Tune’/‘FFT Fine Tune’) do this internally  
in  
order to display the signals in the frequency domain.

The output of the ‘FFT’ block is sent to a ‘Selector’ block which is the  
pathway to the ‘Probe Signal Vector’ block used for spectrum sensing.  
The  
‘FFT’ block also sends samples to a ‘Vector to Stream’ block which puts  
the  
vector chunks back into a single stream of samples in frequency domain  
format.

The ‘Vector to Stream’ block sends the stream of frequency domain  
samples  
to the ‘Keep M in N’ block which is responsible for picking out the  
channel  
we want and at the same time it decimates the signal to  
‘channel\_samp\_rate’  
in order to reduce the amount of data processing required for blocks  
further down the chain. The channel is chosen by either a mouse click  
on  
the ‘FFT Fine Tune’ / ‘FFT Zoom’ displays or by enabling ‘Spectrum  
Sense’  
mode. When ‘Spectrum Sense’ mode is enabled, the maximum signal found  
is  
selected as determined by the ‘Probe Signal Vector’ block.

The ‘Keep M in N’ block sends the selected complex frequency domain  
samples  
to the ‘Stream to Vector’ block in order for the samples to be converted  
back into complex time domain format by the ‘FFT’ block which is set to  
‘Reverse’ (IFFT).

The ‘FFT’ block outputs a vector of complex time domain samples of the  
chosen channel and sends these via a ‘Vector to Stream’ block to an ‘FFT  
Filter’ block. The ‘FFT Filter’ block is responsible for decimating and  
filtering the time domain sample stream. The bandwidth of the filter is  
adjustable in the ‘Main’ section of the GUI controls and can be seen  
when  
viewing with the ‘FFT Zoom’ display. In the ‘FFT Filter’ block there is  
logic to change the filter automatically when the modulation is changed.  
AM/NBFM/WBFM use a lowpass filter and LSB/USB use a complex bandpass  
filter.

From the ‘FFT Filter’ block the sample stream is sent at a rate of  
‘quad\_samp\_rate’ to the ‘Power Squelch’ block. This squelch block is  
responsible for determining whether the chosen signal is powerful enough  
to  
lock on to. If so, the samples are passed through a ‘Feed Forward AGC’  
for  
signal level normalisation and then on to the audio demodulation blocks  
via  
the modulation ‘Selector’ block. The ‘Probe Avg Mag^2’ block after the  
‘Power Squelch’ block is used to halt the spectrum sensing and center  
frequency hopping in order to lock onto the selected channel. This  
‘Probe  
Avg Mag^2’ block is also the reason for the signal holding on channel  
for a  
few seconds after the squelch cuts out. This delay is adjustable with  
the  
block’s alpha setting.

If there are any queries as to the use of raw FFT bin indexes then I’ll  
be  
happy to explain that too, such as in the frequency lockout feature.

Mike

–  
Mike J. M0MIK BSc MIET  
Email: removed\_email\_address@domain.invalid  
Web: [http://scanoo.com](http://scanoo.com)

---

<div class="post-metadata">

**Author:** ![cobra050](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/c/3d9bf3/32.png) [@cobra050](https://www.ruby-forum.com/u/cobra050)\
**Post date:** [June 15, 2014, 2:07am UTC](https://www.ruby-forum.com/t/scanoo-rx-new-gui-center-freq-hopping-ssb-modulation/230299/4 "2014-06-15T02:07:28Z")

</div>

Mike, thanks for the detailed explanation. Is there a reason for doing  
the  
channel selection via FFT/IFFT method as opposed to a frequency xlating  
filter? Maybe it’s more efficient since you needed to do the FFT anyway  
for  
the spectrum sense.

I see the frequency selection with the mouse is a feature of the WX FFT  
sink  
(Freq Set Varname). I wonder if the same functionality is in the QT  
sink.

Anyway, yours is a good example to wrap my head around how the Probe  
Signals  
work. Looks like it may be a better method than the message queues I  
was  
experimenting with. I was using a queue to grab the FFT data and  
compute  
the max value.

Thanks,  
Lou  
KD4HSO

Mike J.-2 wrote

> Lou, thanks for your interest. Yes the entire thing was made purely with  
> GRC and there was no modification to the generated Python. All that is  
> required to run the scanoo\_rx GRC file unmodified is a UHD compatible  
> device and an installation done with “./pybombs install uhd gnuradio”.  
> Johnathan’s GNURadio Live DVD should work too -  
> [http://gnuradio.org/redmine/projects/gnuradio/wiki/GNURadioLiveDVD](http://gnuradio.org/redmine/projects/gnuradio/wiki/GNURadioLiveDVD) .

–  
View this message in context:  
[http://gnuradio.4.n7.nabble.com/Scanoo-rx-New-GUI-Center-Freq-Hopping-SSB-Modulation-tp48866p48924.html](http://gnuradio.4.n7.nabble.com/Scanoo-rx-New-GUI-Center-Freq-Hopping-SSB-Modulation-tp48866p48924.html)  
Sent from the GnuRadio mailing list archive at [Nabble.com](http://Nabble.com).
