How to speed up spectrum sensing?

Hi all,

I am working on the implementation of dynamic spectrum access with
gnuradio and usrp2. I modified usrp_spectrum_sense for usrp2 to do the
sensing job. However, I find the sensing speed is intolerably slow,
which is about 1s for 1MHz.

I try to reduce the fft size but no significant improvement. My goal is
to sense 4MHz in 10ms or so. I am wondering any ideas to improve the
speed? Or is there any other ways to sense faster?

Any help would be appreciated! Thank you.

On Fri, May 13, 2011 at 11:12 AM, Yang [email protected] wrote:

Hi all,

I am working on the implementation of dynamic spectrum access with gnuradio
and usrp2. I modified usrp_spectrum_sense for usrp2 to do the sensing job.
However, I find the sensing speed is intolerably slow, which is about 1s for
1MHz.

Yang,
Considering that the USRP2 can sample 25 MHz, you should be able to
capture
that bandwidth instantaneously. It then matters what algorithm you are
using
and how many samples you require to make your sensing decision.

In general, you probably want to avoid making any decisions on the
bandedge
(maybe 10 - 20%) due to filtering. So if you are planning on sweeping a
spectrum, it would probably be best to change the center frequency be
less
than the bandwidth of the receiver so that you have some overlap. Also,
you
will have to allow for some amount of settling time after changing
frequencies.

Tom

On Fri, May 13, 2011 at 14:25, Tom R. [email protected]
wrote:

that bandwidth instantaneously.
Note, that while USRP2 can sample 25MHz, you probably can’t receive
that much in your PC. I’m working with USRP N210 and having troubles
with receiving even 16 MSPS.


Regards,
Alexander C…

Thank you for replying.

I have already tried different fft size (256, 128, 32, etc) but as you
said it did not change my sensing time. I also change my decimation but
no luck too.

I intend to sense a broad band, say, 20M or 40M. But it seems this
script costs too much time working. Should I retune or not? Because if I
do not it only sense a very narrow band.

Yang
Sent with Sparrow

Changing the fft size won’t change your sensing time that much unless
the
machine you’re using is really slow or the fft size is outrageous. What
fft
sizes are you using?

What will affect your sensing time more is the sampling/decimation rate
you
sent, the tune delay, and the dwell delay. Be careful when changing the
tune delay, if it is too short your data will be corrupted.

Look at the usrp_spectrum_sense.py code and try this:

$ python usrp_spectrum_sense.py --help

Also, since you’re only trying to look at a narrow band,
usrp_spectrum_sense.py isn’t for you. This script is really for looking
at
different bands and different times, but you really only need to look at
one
band. Basically, you never need to retune and a lot of that script does
is
retune.

Devin

On Sat, May 14, 2011 at 8:11 AM, Alexander C. <

Well if you’re sensing a 40 MHz band you have to retune. The largest
band
you can sense without retuning is about 25 MHz.

Also I would try higher FFT sizes, like 1024, 2048, or 4096. Watch your
CPU
load when you run your script, your processor probably isn’t slowing you
down even with large FFT sizes.

I highly suggest you look at tune delay and dwell delay, manipulating
those
can really speed up your sensing times. The tune delay you can only set
to
be so low without corrupting your data. However, the dwell delay you
can
set to be as low as one sweep, it all depends on how much averaging you
want
to do. Look at the code where it deals with the delay times.

Also, just how fast do you need this to be? You should be able to do
thousands of sweeps in less than a second if I remember correctly.

Devin