Discussion and technical support related to USRP, UHD, RFNoC
View all threadsHi everyone,
I ran into a RX timeout issue where if I don't issue a stream cmd within a certain amount of time, the RX side times out whenever I do a recv(). I looked through the USRP mailing list and saw that someone else reported the same problem about half a year ago here: http://lists.ettus.com/pipermail/usrp-users_lists.ettus.com/2014-April/009329.html
But for me, I can reproduce the timeout behavior after just 30 seconds of inactivity, instead of 64 as noted in the other thread.
My setup:
Linux 3.12.26 based on Debian
UHD 003.008.002-86-g566dbc2b
x300 box with SBX-120 and 10GbE NIC recommended on Ettus website
Test script:
//initialization routine... pretty generic like make, subdev spec, etc.
//boost::this_thread::sleep(boost::posix_time::seconds(30)); //NOTE: this sleep breaks recv()
//RX stream_cmd_t
stream_cmd_t stream_cmd(stream_cmd_t::STREAM_MODE_NUM_SAMPS_AND_DONE);
stream_cmd.stream_now = false;
stream_cmd.num_samps = 10000;
stream_cmd.time_spec = usrp->get_time_now() + time_spec_t(0.2); //padded buffer time
usrp->issue_stream_cmd(stream_cmd);
rx_metadata_t md;
size_t numSampsRet = 0;
numSampsRet = rx_stream->recv(&Buff.front(), stream_cmd.num_samps, md, 5);
So like the other thread, I noticed if I initialized the USRP but I don't call issue_stream_cmd within 30 seconds, I cannot get any sample returned back to me via recv(). It looks like from the other thread that Michael West from Ettus confirmed the bug. I guess I can have a loop that issues a stream cmd every 29 seconds to
prevent the RX from timing out, but it is not really an ideal solution
and adds unnecessary network traffic. So I am wondering if there is any estimated time or UHD driver version that will include the fix? Or maybe there is a better workaround? The other thread describes putting the sleep before usrp->get_rx_stream() but that doesn't really apply to me since I could have a long idle wait between just initializing the box (which includes get_rx_stream) and actually issuing a cmd to capture IQ...
As always, any help is greatly appreciated! Thanks everyone!
Joe
Hi again everyone,
Is there an update to this issue, or has no one else ran into this? Is there already a fix that I can implement to my system?
Regards,
Joe
To: usrp-users@lists.ettus.com
Date: Tue, 3 Mar 2015 14:20:47 -0800
Subject: [USRP-users] x300 RX Timeout With Issue_stream_cmd() and Recv()
From: usrp-users@lists.ettus.com
Hi everyone,
I ran into a RX timeout issue where if I don't issue a stream cmd within a certain amount of time, the RX side times out whenever I do a recv(). I looked through the USRP mailing list and saw that someone else reported the same problem about half a year ago here: http://lists.ettus.com/pipermail/usrp-users_lists.ettus.com/2014-April/009329.html
But for me, I can reproduce the timeout behavior after just 30 seconds of inactivity, instead of 64 as noted in the other thread.
My setup:
Linux 3.12.26 based on Debian
UHD 003.008.002-86-g566dbc2b
x300 box with SBX-120 and 10GbE NIC recommended on Ettus website
Test script:
//initialization routine... pretty generic like make, subdev spec, etc.
//boost::this_thread::sleep(boost::posix_time::seconds(30)); //NOTE: this sleep breaks recv()
//RX stream_cmd_t
stream_cmd_t stream_cmd(stream_cmd_t::STREAM_MODE_NUM_SAMPS_AND_DONE);
stream_cmd.stream_now = false;
stream_cmd.num_samps = 10000;
stream_cmd.time_spec = usrp->get_time_now() + time_spec_t(0.2); //padded buffer time
usrp->issue_stream_cmd(stream_cmd);
rx_metadata_t md;
size_t numSampsRet = 0;
numSampsRet = rx_stream->recv(&Buff.front(), stream_cmd.num_samps, md, 5);
So like the other thread, I noticed if I initialized the USRP but I don't call issue_stream_cmd within 30 seconds, I cannot get any sample returned back to me via recv(). It looks like from the other thread that Michael West from Ettus confirmed the bug. I guess I can have a loop that issues a stream cmd every 29 seconds to
prevent the RX from timing out, but it is not really an ideal solution
and adds unnecessary network traffic. So I am wondering if there is any estimated time or UHD driver version that will include the fix? Or maybe there is a better workaround? The other thread describes putting the sleep before usrp->get_rx_stream() but that doesn't really apply to me since I could have a long idle wait between just initializing the box (which includes get_rx_stream) and actually issuing a cmd to capture IQ...
As always, any help is greatly appreciated! Thanks everyone!
Joe
USRP-users mailing list
USRP-users@lists.ettus.com
http://lists.ettus.com/mailman/listinfo/usrp-users_lists.ettus.com
On 03/13/2015 06:28 PM, Joe Leech via USRP-users wrote:
Hi again everyone,
Is there an update to this issue, or has no one else ran into this? Is
there already a fix that I can implement to my system?
Regards,
Joe
It's being noodled about in R&D. We aren't ignoring you.
Thanks for the code snippet, this makes things a lot easier.
To: usrp-users@lists.ettus.com
Date: Tue, 3 Mar 2015 14:20:47 -0800
Subject: [USRP-users] x300 RX Timeout With Issue_stream_cmd() and Recv()
From: usrp-users@lists.ettus.com
Hi everyone,
I ran into a RX timeout issue where if I don't issue a stream cmd
within a certain amount of time, the RX side times out whenever I do a
recv(). I looked through the USRP mailing list and saw that someone
else reported the same problem about half a year ago here:
http://lists.ettus.com/pipermail/usrp-users_lists.ettus.com/2014-April/009329.html
But for me, I can reproduce the timeout behavior after just 30 seconds
of inactivity, instead of 64 as noted in the other thread.
My setup:
Linux 3.12.26 based on Debian
UHD 003.008.002-86-g566dbc2b
x300 box with SBX-120 and 10GbE NIC recommended on Ettus website
Test script:
//initialization routine... pretty generic like make, subdev spec, etc.
//boost::this_thread::sleep(boost::posix_time::seconds(30)); //NOTE:
this sleep breaks recv()
//RX stream_cmd_t
stream_cmd_t stream_cmd(stream_cmd_t::STREAM_MODE_NUM_SAMPS_AND_DONE);
stream_cmd.stream_now = false;
stream_cmd.num_samps = 10000;
stream_cmd.time_spec = usrp->get_time_now() + time_spec_t(0.2);
//padded buffer time
usrp->issue_stream_cmd(stream_cmd);
rx_metadata_t md;
size_t numSampsRet = 0;
numSampsRet = rx_stream->recv(&Buff.front(), stream_cmd.num_samps, md, 5);
So like the other thread, I noticed if I initialized the USRP but I
don't call issue_stream_cmd within 30 seconds, I cannot get any sample
returned back to me via recv(). It looks like from the other thread
that Michael West from Ettus confirmed the bug. I guess I can have a
loop that issues a stream cmd every 29 seconds to prevent the RX from
timing out, but it is not really an ideal solution and adds
unnecessary network traffic. So I am wondering if there is any
estimated time or UHD driver version that will include the fix? Or
maybe there is a better workaround? The other thread describes putting
the sleep before usrp->get_rx_stream() but that doesn't really apply
to me since I could have a long idle wait between just initializing
the box (which includes get_rx_stream) and actually issuing a cmd to
capture IQ...
As always, any help is greatly appreciated! Thanks everyone!
Joe
_______________________________________________ USRP-users mailing
list USRP-users@lists.ettus.com
http://lists.ettus.com/mailman/listinfo/usrp-users_lists.ettus.com
USRP-users mailing list
USRP-users@lists.ettus.com
http://lists.ettus.com/mailman/listinfo/usrp-users_lists.ettus.com
On 03/13/2015 06:28 PM, Joe Leech via USRP-users wrote:
Hi again everyone,
Is there an update to this issue, or has no one else ran into this? Is
there already a fix that I can implement to my system?
Regards,
Joe
So, what happens if you acquire the streamer object just before you
actually use it? That is, do all the device init, but acquire the
strreamer just
before you use it. Use it for however long you're going to use it,
then destroy it? [With a possible rinse/repeat].
To: usrp-users@lists.ettus.com
Date: Tue, 3 Mar 2015 14:20:47 -0800
Subject: [USRP-users] x300 RX Timeout With Issue_stream_cmd() and Recv()
From: usrp-users@lists.ettus.com
Hi everyone,
I ran into a RX timeout issue where if I don't issue a stream cmd
within a certain amount of time, the RX side times out whenever I do a
recv(). I looked through the USRP mailing list and saw that someone
else reported the same problem about half a year ago here:
http://lists.ettus.com/pipermail/usrp-users_lists.ettus.com/2014-April/009329.html
But for me, I can reproduce the timeout behavior after just 30 seconds
of inactivity, instead of 64 as noted in the other thread.
My setup:
Linux 3.12.26 based on Debian
UHD 003.008.002-86-g566dbc2b
x300 box with SBX-120 and 10GbE NIC recommended on Ettus website
Test script:
//initialization routine... pretty generic like make, subdev spec, etc.
//boost::this_thread::sleep(boost::posix_time::seconds(30)); //NOTE:
this sleep breaks recv()
//RX stream_cmd_t
stream_cmd_t stream_cmd(stream_cmd_t::STREAM_MODE_NUM_SAMPS_AND_DONE);
stream_cmd.stream_now = false;
stream_cmd.num_samps = 10000;
stream_cmd.time_spec = usrp->get_time_now() + time_spec_t(0.2);
//padded buffer time
usrp->issue_stream_cmd(stream_cmd);
rx_metadata_t md;
size_t numSampsRet = 0;
numSampsRet = rx_stream->recv(&Buff.front(), stream_cmd.num_samps, md, 5);
So like the other thread, I noticed if I initialized the USRP but I
don't call issue_stream_cmd within 30 seconds, I cannot get any sample
returned back to me via recv(). It looks like from the other thread
that Michael West from Ettus confirmed the bug. I guess I can have a
loop that issues a stream cmd every 29 seconds to prevent the RX from
timing out, but it is not really an ideal solution and adds
unnecessary network traffic. So I am wondering if there is any
estimated time or UHD driver version that will include the fix? Or
maybe there is a better workaround? The other thread describes putting
the sleep before usrp->get_rx_stream() but that doesn't really apply
to me since I could have a long idle wait between just initializing
the box (which includes get_rx_stream) and actually issuing a cmd to
capture IQ...
As always, any help is greatly appreciated! Thanks everyone!
Joe
_______________________________________________ USRP-users mailing
list USRP-users@lists.ettus.com
http://lists.ettus.com/mailman/listinfo/usrp-users_lists.ettus.com
USRP-users mailing list
USRP-users@lists.ettus.com
http://lists.ettus.com/mailman/listinfo/usrp-users_lists.ettus.com
Hi Marcus,
I think that may work... to test that, is there a destructor to the class function that I can use to properly destroy the object, or just simply do another get_rx_stream()?
Regards,
Joe
Date: Fri, 13 Mar 2015 20:55:47 -0400
To: usrp-users@lists.ettus.com
Subject: Re: [USRP-users] x300 RX Timeout With Issue_stream_cmd() and Recv()
From: usrp-users@lists.ettus.com
On 03/13/2015 06:28 PM, Joe Leech via
USRP-users wrote:
Hi again everyone,
Is there an update to this issue, or has no one else ran into
this? Is there already a fix that I can implement to my system?
Regards,
Joe
So, what happens if you acquire the streamer object just before you
actually use it? That is, do all the device init, but acquire the
strreamer just
before you use it. Use it for however long you're going to use
it, then destroy it? [With a possible rinse/repeat].
To: usrp-users@lists.ettus.com
Date: Tue, 3 Mar 2015 14:20:47 -0800
Subject: [USRP-users] x300 RX Timeout With Issue_stream_cmd()
and Recv()
From: usrp-users@lists.ettus.com
Hi everyone,
I ran into a RX timeout issue where if I don't issue a
stream cmd within a certain amount of time, the RX side
times out whenever I do a recv(). I looked through the USRP
mailing list and saw that someone else reported the same
problem about half a year ago here: http://lists.ettus.com/pipermail/usrp-users_lists.ettus.com/2014-April/009329.html
But for me, I can reproduce the timeout behavior after just
30 seconds of inactivity, instead of 64 as noted in the
other thread.
My setup:
Linux 3.12.26 based on Debian
UHD 003.008.002-86-g566dbc2b
x300 box with SBX-120 and 10GbE NIC recommended on Ettus
website
Test script:
//initialization routine... pretty generic like make, subdev
spec, etc.
//boost::this_thread::sleep(boost::posix_time::seconds(30));
//NOTE: this sleep breaks recv()
//RX stream_cmd_t
stream_cmd_t
stream_cmd(stream_cmd_t::STREAM_MODE_NUM_SAMPS_AND_DONE);
stream_cmd.stream_now = false;
stream_cmd.num_samps = 10000;
stream_cmd.time_spec = usrp->get_time_now() +
time_spec_t(0.2); //padded buffer time
usrp->issue_stream_cmd(stream_cmd);
rx_metadata_t md;
size_t numSampsRet = 0;
numSampsRet = rx_stream->recv(&Buff.front(),
stream_cmd.num_samps, md, 5);
So like the other thread, I noticed if I initialized the
USRP but I don't call issue_stream_cmd within 30 seconds, I
cannot get any sample returned back to me via recv(). It
looks like from the other thread that Michael West from
Ettus confirmed the bug. I guess I can have a loop that
issues a stream cmd every 29 seconds to prevent the RX from
timing out, but it is not really an ideal solution and adds
unnecessary network traffic. So I am wondering if there is
any estimated time or UHD driver version that will include
the fix? Or maybe there is a better workaround? The other
thread describes putting the sleep before
usrp->get_rx_stream() but that doesn't really apply to me
since I could have a long idle wait between just
initializing the box (which includes get_rx_stream) and
actually issuing a cmd to capture IQ...
As always, any help is greatly appreciated! Thanks everyone!
Joe
_______________________________________________
USRP-users mailing list
USRP-users@lists.ettus.com
http://lists.ettus.com/mailman/listinfo/usrp-users_lists.ettus.com
_______________________________________________
USRP-users mailing list
USRP-users@lists.ettus.com
http://lists.ettus.com/mailman/listinfo/usrp-users_lists.ettus.com
USRP-users mailing list
USRP-users@lists.ettus.com
http://lists.ettus.com/mailman/listinfo/usrp-users_lists.ettus.com
On 03/16/2015 07:25 PM, Joe Leech via USRP-users wrote:
Hi Marcus,
I think that may work... to test that, is there a destructor to the
class function that I can use to properly destroy the object, or just
simply do another get_rx_stream()?
Regards,
Joe
You should be able to just use standard C++ "~" syntax on the streamer
object.
Date: Fri, 13 Mar 2015 20:55:47 -0400
To: usrp-users@lists.ettus.com
Subject: Re: [USRP-users] x300 RX Timeout With Issue_stream_cmd() and
Recv()
From: usrp-users@lists.ettus.com
On 03/13/2015 06:28 PM, Joe Leech via USRP-users wrote:
Hi again everyone,
Is there an update to this issue, or has no one else ran into
this? Is there already a fix that I can implement to my system?
Regards,
Joe
So, what happens if you acquire the streamer object just before you
actually use it? That is, do all the device init, but acquire the
strreamer just
before you use it. Use it for however long you're going to use it,
then destroy it? [With a possible rinse/repeat].
------------------------------------------------------------------------
To: usrp-users@lists.ettus.com <mailto:usrp-users@lists.ettus.com>
Date: Tue, 3 Mar 2015 14:20:47 -0800
Subject: [USRP-users] x300 RX Timeout With Issue_stream_cmd() and
Recv()
From: usrp-users@lists.ettus.com <mailto:usrp-users@lists.ettus.com>
Hi everyone,
I ran into a RX timeout issue where if I don't issue a stream cmd
within a certain amount of time, the RX side times out whenever I
do a recv(). I looked through the USRP mailing list and saw that
someone else reported the same problem about half a year ago here:
http://lists.ettus.com/pipermail/usrp-users_lists.ettus.com/2014-April/009329.html
But for me, I can reproduce the timeout behavior after just 30
seconds of inactivity, instead of 64 as noted in the other thread.
My setup:
Linux 3.12.26 based on Debian
UHD 003.008.002-86-g566dbc2b
x300 box with SBX-120 and 10GbE NIC recommended on Ettus website
Test script:
//initialization routine... pretty generic like make, subdev spec,
etc.
//boost::this_thread::sleep(boost::posix_time::seconds(30));
//NOTE: this sleep breaks recv()
//RX stream_cmd_t
stream_cmd_t stream_cmd(stream_cmd_t::STREAM_MODE_NUM_SAMPS_AND_DONE);
stream_cmd.stream_now = false;
stream_cmd.num_samps = 10000;
stream_cmd.time_spec = usrp->get_time_now() + time_spec_t(0.2);
//padded buffer time
usrp->issue_stream_cmd(stream_cmd);
rx_metadata_t md;
size_t numSampsRet = 0;
numSampsRet = rx_stream->recv(&Buff.front(), stream_cmd.num_samps,
md, 5);
So like the other thread, I noticed if I initialized the USRP but
I don't call issue_stream_cmd within 30 seconds, I cannot get any
sample returned back to me via recv(). It looks like from the
other thread that Michael West from Ettus confirmed the bug. I
guess I can have a loop that issues a stream cmd every 29 seconds
to prevent the RX from timing out, but it is not really an ideal
solution and adds unnecessary network traffic. So I am wondering
if there is any estimated time or UHD driver version that will
include the fix? Or maybe there is a better workaround? The other
thread describes putting the sleep before usrp->get_rx_stream()
but that doesn't really apply to me since I could have a long idle
wait between just initializing the box (which includes
get_rx_stream) and actually issuing a cmd to capture IQ...
As always, any help is greatly appreciated! Thanks everyone!
Joe
_______________________________________________ USRP-users mailing
list USRP-users@lists.ettus.com
<mailto:USRP-users@lists.ettus.com>
http://lists.ettus.com/mailman/listinfo/usrp-users_lists.ettus.com
_______________________________________________
USRP-users mailing list
USRP-users@lists.ettus.com <mailto:USRP-users@lists.ettus.com>
http://lists.ettus.com/mailman/listinfo/usrp-users_lists.ettus.com
_______________________________________________ USRP-users mailing
list USRP-users@lists.ettus.com
http://lists.ettus.com/mailman/listinfo/usrp-users_lists.ettus.com
USRP-users mailing list
USRP-users@lists.ettus.com
http://lists.ettus.com/mailman/listinfo/usrp-users_lists.ettus.com
Hi Marcus,
Using the destructor works, so I could maybe do that in the meantime although it means I'll have to carry my stream_args_t information inside the class so I can retain and recall that whenever I destroy and create a new streamer object. Please let me know if your team is able to reproduce this issue in Linux as well. Thank you!
Date: Mon, 16 Mar 2015 20:31:42 -0400
To: usrp-users@lists.ettus.com
Subject: Re: [USRP-users] x300 RX Timeout With Issue_stream_cmd() and Recv()
From: usrp-users@lists.ettus.com
On 03/16/2015 07:25 PM, Joe Leech via
USRP-users wrote:
Hi Marcus,
I think that may work... to test that, is there a destructor to
the class function that I can use to properly destroy the
object, or just simply do another get_rx_stream()?
Regards,
Joe
You should be able to just use standard C++ "~" syntax on the
streamer object.
Date: Fri, 13 Mar 2015 20:55:47 -0400
To: usrp-users@lists.ettus.com
Subject: Re: [USRP-users] x300 RX Timeout With
Issue_stream_cmd() and Recv()
From: usrp-users@lists.ettus.com
On 03/13/2015 06:28 PM, Joe
Leech via USRP-users wrote:
Hi again everyone,
Is there an update to this issue, or has no one else ran
into this? Is there already a fix that I can implement to
my system?
Regards,
Joe
So, what happens if you acquire the streamer object just
before you actually use it? That is, do all the device init,
but acquire the strreamer just
before you use it. Use it for however long you're going to
use it, then destroy it? [With a possible rinse/repeat].
To: usrp-users@lists.ettus.com
Date: Tue, 3 Mar 2015 14:20:47 -0800
Subject: [USRP-users] x300 RX Timeout With
Issue_stream_cmd() and Recv()
From: usrp-users@lists.ettus.com
Hi everyone,
I ran into a RX timeout issue where if I don't issue a
stream cmd within a certain amount of time, the RX
side times out whenever I do a recv(). I looked
through the USRP mailing list and saw that someone
else reported the same problem about half a year ago
here: http://lists.ettus.com/pipermail/usrp-users_lists.ettus.com/2014-April/009329.html
But for me, I can reproduce the timeout behavior after
just 30 seconds of inactivity, instead of 64 as noted
in the other thread.
My setup:
Linux 3.12.26 based on Debian
UHD 003.008.002-86-g566dbc2b
x300 box with SBX-120 and 10GbE NIC recommended on
Ettus website
Test script:
//initialization routine... pretty generic like make,
subdev spec, etc.
//boost::this_thread::sleep(boost::posix_time::seconds(30));
//NOTE: this sleep breaks recv()
//RX stream_cmd_t
stream_cmd_t
stream_cmd(stream_cmd_t::STREAM_MODE_NUM_SAMPS_AND_DONE);
stream_cmd.stream_now = false;
stream_cmd.num_samps = 10000;
stream_cmd.time_spec = usrp->get_time_now() +
time_spec_t(0.2); //padded buffer time
usrp->issue_stream_cmd(stream_cmd);
rx_metadata_t md;
size_t numSampsRet = 0;
numSampsRet = rx_stream->recv(&Buff.front(),
stream_cmd.num_samps, md, 5);
So like the other thread, I noticed if I initialized
the USRP but I don't call issue_stream_cmd within 30
seconds, I cannot get any sample returned back to me
via recv(). It looks like from the other thread that
Michael West from Ettus confirmed the bug. I guess I
can have a loop that issues a stream cmd every 29
seconds to prevent the RX from timing out, but it is
not really an ideal solution and adds unnecessary
network traffic. So I am wondering if there is any
estimated time or UHD driver version that will include
the fix? Or maybe there is a better workaround? The
other thread describes putting the sleep before
usrp->get_rx_stream() but that doesn't really apply
to me since I could have a long idle wait between just
initializing the box (which includes get_rx_stream)
and actually issuing a cmd to capture IQ...
As always, any help is greatly appreciated! Thanks
everyone!
Joe
_______________________________________________
USRP-users mailing list USRP-users@lists.ettus.com
http://lists.ettus.com/mailman/listinfo/usrp-users_lists.ettus.com
_______________________________________________
USRP-users mailing list
USRP-users@lists.ettus.com
http://lists.ettus.com/mailman/listinfo/usrp-users_lists.ettus.com
_______________________________________________
USRP-users mailing list
USRP-users@lists.ettus.com
http://lists.ettus.com/mailman/listinfo/usrp-users_lists.ettus.com
_______________________________________________
USRP-users mailing list
USRP-users@lists.ettus.com
http://lists.ettus.com/mailman/listinfo/usrp-users_lists.ettus.com
USRP-users mailing list
USRP-users@lists.ettus.com
http://lists.ettus.com/mailman/listinfo/usrp-users_lists.ettus.com