USRP2+WBX full duplex doesn't receive

I’m trying to simultaneously transmit and receive with a USRP2 and WBX
in a C++ command line tool. I’m using txrx_wbx_raw_eth_20100608.bin and
u2_rev3-20100603.bin on the USRP2 and have tried GNU Radio version 3.3.0
and 3.3.1 on the Ubuntu 10.04 host. I have a spectrum analyzer on TX/RX
and an antenna on RX2.

Transmitting without receiving works fine, as does receiving without
transmitting. If I attempt to do both at the same time, the receive
thread gets stuck – that is rx_samples doesn’t call the
rx_sample_handler so I never receive the data I’m after. The transmit
thread keeps running and I can see the transmitted signal on the
spectrum analyzer. I’ve set breakpoints in various places in the USRP2
host code and as near as I can tell, there are no packets being received
(poll times out each time it’s called in eth_buffer::rx_frames).

What am I missing? Is full duplex supported using raw ethernet with the
WBX?

-Marc

On Mon, Aug 23, 2010 at 1:41 PM, Marc E. [email protected] wrote:

can see the transmitted signal on the spectrum analyzer. I’ve set
breakpoints in various places in the USRP2 host code and as near as I can
tell, there are no packets being received (poll times out each time it’s
called in eth_buffer::rx_frames).

If you stop transmitting, does your RX sample stream then begin again?
If
so, it is because I think auto transmit switching is enabled by default
with
the WBX on the USRP2. I asked a question a while back as to whether or
not
the WBX has auto TR enabled or not by default, and how to change it, but
I
don’t think I got an answer.

Auto TR switching basically stops the RX stream while something is in
your
TX buffer.

  • George

On Aug 23, 2010, at 10:10 PM, George N. wrote:

If you stop transmitting, does your RX sample stream then begin again?

Alas, no. Once it stops receiving, it never starts again. Time to dig
into the firmware.

-Marc

On Aug 24, 2010, at 11:16 PM, George N. wrote:

I don’t think I’ve had this issue with my WBX and USRP2. I will check tomorrow for you

Thanks! I’d appreciate it.

I’ve now replicated the problem with a XCVR2450, so I don’t think it’s
WBX-specific.

I’ve altered my code to support separate USRP2s for transmit and
receive, switched to a host with two ethernet ports, and… it works!
I’m able to transmit on one and receive on the other simultaneously. The
same code (except for having a single usrp2 object instead of two)
cannot transmit and receive at the same time using just one USRP2 with
either a WGX or XCVR2450.

Back to my firmware/FPGA exploration…

-Marc

On Tue, Aug 24, 2010 at 7:11 AM, Marc E. [email protected] wrote:

On Aug 23, 2010, at 10:10 PM, George N. wrote:

If you stop transmitting, does your RX sample stream then begin again?

Alas, no. Once it stops receiving, it never starts again. Time to dig into
the firmware.

I don’t think I’ve had this issue with my WBX and USRP2. I will check
tomorrow for you

On Aug 24, 2010, at 11:16 PM, George N. wrote:

I don’t think I’ve had this issue with my WBX and USRP2. I will check tomorrow for you

Thanks! I’d appreciate it.

I’ve now replicated the problem with a XCVR2450, so I don’t think it’s WBX-specific.

Just to note that the XCVR2450 has only a single VFO, so full-duplex on
different frequencies can’t work–the hardware
isn’t capable of it. But full-duplex on the WBX should work provided
that you use the RX/RX port for transmit and the RX2
(secondary receive) antenna port for Rx.


Marcus L.
Principal Investigator
Shirleys Bay Radio Astronomy Consortium
http://www.sbrac.org

Did you ever get this fixed? I’m seeing the same problem…

On Sep 23, 2010, at 1:42 AM, George N. wrote:

Did you ever get this fixed? I’m seeing the same problem…

And later:

However, I’m not using UHD. Do you know a fix for this outside of UHD?

Then:

I see the USRP2 send mac pause frames, and then no new data is sent over the interface for 5-10 seconds.

Since the USRP2 used pause frames even before UHD, it wouldn’t surprise
me if this is the same problem I encountered in UHD. Be sure to set the
rx gain, frequency, etc and call start_rx_streaming BEFORE spinning up
the tx thread. Try setting the system send buffer limit to something
small. To set it temporarily:

sudo sysctl -w net.core.wmem_max=10000

Then run your app.

HTH.

-Marc

This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs