discuss-gnuradio
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Discuss-gnuradio] USRP underruns when attempting simultaneous receive a


From: Richard Clarke
Subject: [Discuss-gnuradio] USRP underruns when attempting simultaneous receive and transmit
Date: Thu, 31 Jan 2008 13:50:32 +1300
User-agent: Thunderbird 2.0.0.9 (Windows/20071031)

Hi All,

summary: If I try and receive and transmit data from and to the USRP simultaneously at the same data rate (no matter what it is, even as low as 2MB/s each way) I always get usrp underruns.

Background
*********
I have a simple cross band repeater type example running under Gnuradio 3.1.1. Basically I have configured an RFX400 to receive an FM type modulated signal on one frequency (452.75MHz) and retransmit that same signal either as complex baseband to an LFTX daughterboard, or an RF signal at another frequency (440MHz) by the RFX400. Currently this involves simultaneous reception and transmission of data across the USB2.0 interface. I've typically been using usrp_decim values of 128 (i.e500Ks/s, complex = 2MB/s), and usrp_inter of 256, again giving a nominal data rate to the usrp of 2MB/s.

I have verified the USB2.0 simplex performance of my PC (Pentium D 2.8GHz, 1GB RAM) by running standard gnuradio scripts such as usrp_fft.py for testing the data throughput to the PC. I was able to set the decimation rate of the fft scope to 8 (giving 8MS/s, complex, I assume => 32MB/s) without any usrp over runs reported.Decimation value below 8 start giving usrp over runs, as expected.

On the PC to USRP side: I've used usrp_siggen.py to generate a sine wave on the PC and output it from the LFTX daughterboard. I kep reducing the usrp interpolation rate until I started to see under runs reported. This happened at an a value of 12, at 14 it was OK. I was expecting 16 would be my lower limit (128MS/s / 16 = 8MS/s = 32MB/s over usb2.0) but it would appear my PC USB controller is slightly better at sending data than receiving.

Anyway, to get to the point. If I try and receive and transmit data simultaneously at the same data rate (no matter what it is, even 2MB/s) I always get usrp underruns.

Questions
*******
1) Do others see the same thing?
2) Is this because any buffering that's going at the PC end is insufficient to smooth out any slight differences in actual receive and transmit data rates, leading to the occasional starving of the USRP's usb receive buffers? 3) If I configure my application to receive samples from the usrp at a lower rate than I retransmit them (using the rational resampler to interpolate) this significantly reduces any under run's reported. Is this the generally used method to get around this particular issue? 4) Is it possible to configure the USRP to directly pass samples from the receive to the transmit, bypassing the PC altogether? Could be useful to me as a basic RF passband to complex baseband, cutting out PC latencies.

Thanks in advance for your responses.

Cheers
Richard


=======================================================================
This email, including any attachments, is only for the intended
addressee.  It is subject to copyright, is confidential and may be
the subject of legal or other privilege, none of which is waived or
lost by reason of this transmission.
If the receiver is not the intended addressee, please accept our
apologies, notify us by return, delete all copies and perform no
other act on the email.
Unfortunately, we cannot warrant that the email has not been
altered or corrupted during transmission.
=======================================================================





reply via email to

[Prev in Thread] Current Thread [Next in Thread]