usrp-users@lists.ettus.com

Discussion and technical support related to USRP, UHD, RFNoC

View all threads

x300 RX Timeout With Issue_stream_cmd() and Recv()

JL
Joe Leech
Tue, Mar 3, 2015 10:20 PM

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

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
JL
Joe Leech
Fri, Mar 13, 2015 10:28 PM

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

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
MD
Marcus D. Leech
Sat, Mar 14, 2015 12:49 AM

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 > 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
MD
Marcus D. Leech
Sat, Mar 14, 2015 12:55 AM

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

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
JL
Joe Leech
Mon, Mar 16, 2015 11:25 PM

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

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
MD
Marcus D. Leech
Tue, Mar 17, 2015 12:31 AM

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

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
JL
Joe Leech
Tue, Mar 17, 2015 12:50 AM

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

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