[USRP-users] E310 Rx Timeout with higher sampling rates
Voss, Nathan J
VossN at battelle.org
Thu Apr 30 17:39:45 EDT 2015
I checked top as suggested, and the CPU isn't pegged while my application is waiting for the recv() call to return. I'm not running the E310 in network mode. I am compiling my code, transferring it over, and running it natively on the device from an SSH command line.
The symptoms are that I start the radio in continuous receive mode, and start calling recv() requesting 512 samples. The first ~250-300 calls return with the requested samples, then subsequent calls return 0 with the ERROR_TIMEOUT result in the rx_metadata. My timeout for the recv() call is currently set to 3 seconds. Identical code runs fine on an N200, I'm only seeing the issue on the E310 when the data rate is above ~500 Ksps.
From: Jason Hein [jason.j.hein at gmail.com]
Sent: Thursday, April 30, 2015 3:40 PM
To: Voss, Nathan J
Cc: usrp-users at lists.ettus.com
Subject: Re: [USRP-users] E310 Rx Timeout with higher sampling rates
It sounds like you're running in network mode (pulling streaming data off the gigabit network interface) and the usrp_e3x0_network_mode process on the E310 can't keep up with those sample rates. Try logging into the E310 and running 'top' when you're doing the usrp->recv(). Start scaling back the data rate until the CPUs aren't pegged. I was getting about 1 MSps 16-bit complex.
On Thu, Apr 30, 2015 at 2:45 PM, Voss, Nathan J via USRP-users <usrp-users at lists.ettus.com<mailto:usrp-users at lists.ettus.com>> wrote:
I am in the process of porting code that was built and tested successfully on a USRP N200 to a USRP E310. The sampling rate is user-configurable, and we really need to support as large a bandwidth as possible. On the N200, my code worked fine for sampling rates up to ~15Msps, but on the E310 the same code is struggling to run over about 500Ksps.
When I set the sampling rate on the E310 above about 500Ksps, I initially get one or two 'O' overflow notifications, and then start to get timeout errors very frequently. My code is fairly simple, in that I'm calling 'usrp->recv()' in a pretty tight loop, very similar to the 'rx_samples_to_file' example. The timeout value I'm passing into the recv() call is currently 3.0 seconds, and my 'nsampls_per_buf' is typically 512.
Thanks for your help.
USRP-users mailing list
USRP-users at lists.ettus.com<mailto:USRP-users at lists.ettus.com>
More information about the USRP-users