Problems attenuating in software - solution?

Hi,

The groups in our networking class have each built an ad-hoc wireless
networks using a modified version of tunnel.py. For the next step we
want them to develop routing in a multi-hop environment. In the code
that we started them, we pretty much used the same transmit_ and
receive_paths.

I figured the easiest way to simulate a larger-scale wireless deployment
would be to decrease the TX amplitude, similar to putting an attenuator
in between the antenna and the USRP. The two places that volume control
is directly used are in setting the receiver gain and setting the
transmitter amplifier. The receiver gain is simply set to its midpoint
by default, and the amplifier is controlled by an application parameter
(12000 by default).

I measured packet reception rates transmitting 1000 small packets across
the air, and I am not able to generate the kind of environment we need.
For amplitudes above 800 or so, it’s basically the case that around
950/1000 packets will be received, and then if I go much lower than that
what happens is the majority of the first k packets are received and
then after that another packet is never seen. K can vary as low at 10
and as high as 1000, but is typically in the 150-700 range. Something in
the tracking or synchronization is going wrong, I think.

Also, these problems seem to be very dependent on frequency in a strange
way; if I send on 2.462G (802.11 Channel 11), I can near-zero loss rates
around amplitude 500 even, but at 2.437G it’s much higher. Since part of
the class is enabling the students design their radios to flexibly
change their behavior as a function of the environment, it’s hard to
design system parameters to make this an interesting task; it seems that
some frequencies are just unusable.

I’m using more or less the same code as
tunnel.py/transmit_path.py/receive_path.py with GMSK modulation and
bitrates varying between 125k, 250k, and 500k.

Does anyone have suggestions as to how to fix this, and/or whether there
is a better way to set up this environment? Sadly, I don’t have enough
lab space to e.g. actually distribute the machines around a large
building.

Thanks

Dan

On Sat, Feb 03, 2007 at 04:01:02PM -0800, Dan H. wrote:

in between the antenna and the USRP. The two places that volume control
then after that another packet is never seen. K can vary as low at 10

Dan
Dan, how are you controlling the receiver h/w gain?

Right now we don’t implement closed-loop AGC (that is, there’s no code
that reads the RSSI and uses it to control the receiver gain). This
is a known problem, ticket:66, http://www.gnuradio.org/trac/ticket/66

Feel free to fix it :wink:

Eric

Eric B. wrote:

Dan, how are you controlling the receiver h/w gain?
… uh? Are there controls for that? Are there examples where they are
used?

Right now we don’t implement closed-loop AGC (that is, there’s no code
that reads the RSSI and uses it to control the receiver gain). This
is a known problem, ticket:66, http://www.gnuradio.org/trac/ticket/66

Feel free to fix it :wink:

I’ll add that one to the list of the many, many things that, once I
learn enough EE/FPGA/etc to fix, I will fix and mail to the group ;).
I’m studying.

-Dan

On Sat, Feb 24, 2007 at 03:33:34PM -0800, Dan H. wrote:

-Dan
Actually, you want to be using u.subdev.set_gain(…).
It’s a higher-level interface that knowns how do deal with the
concatenation of the PGA in the AD9862 and any daughterboard specific
gain that may be controlable.

Eric

Dan H. wrote:

Eric B. wrote:

Dan, how are you controlling the receiver h/w gain?

… uh? Are there controls for that? Are there examples where they are used?

Again, what controls are there for controlling the receiver h/w gain? I
only see the set_pga() function in usrp_basic.cc.

-Dan