Hi everyone,

I already asked this the ettus support, but they did not got back to me yet, maybe someone here can help me. I am working on X310 with TwinRX boards. I use a lot of timed commands and since upgrading the firmware from 003.010.002.000 to 003.014.001.001 I get this error message after a few minutes/seconds, depending on what I am doing:
terminate called after throwing an instance of 'uhd::io_error'
what(): EnvironmentError: IOError: Block ctrl (CE_01_Port_40) no response packet - AssertionError: bool(buff) in uint64_t ctrl_iface_impl<_endianness>::wait_for_ack(bool, double) [with uhd::endianness_t _endianness = (uhd::endianness_t)0u; uint64_t = long unsigned int] at /home/fschwa/src/uhd_20191010_3.14.1.1-RC1/host/lib/rfnoc/ctrl_iface.cpp:142

I know there is a very similar (same?) problem when requesting rx_stream in a loop, but I am not doing that. In my actual program I have only on rx_stream. I was able to boil that problem down to a few lines of code, which set the rx frequency in a loop (what I am doing in my actual program). When doing this with timed commands, the error occures after a few dozens of iterations. Leaving out the timed command, everything works fine. Find the small program attached. After I ran into the problem the USRP is completely unresponsive. I have to power cycle it, to get it working again.
Does anyone know a solution/workaround or has seen that before?

Best regards,
Fabian
--
--------------------------------------------------
M.-Sc. Fabian Schwartau
Technische Universität Braunschweig
Institut für Hochfrequenztechnik
Schleinitzstr. 22
38106 Braunschweig
Germany

Tel.:   +49-(0)531-391-2017
Fax:    +49-(0)531-391-2045
Email:  fabian.schwar...@ihf.tu-bs.de
WWW:    http://www.tu-braunschweig.de/ihf
--------------------------------------------------
// Compile with:
// g++ -std=c++14 -O2 UHDIOError2.cpp -luhd -lboost_system -o UHDIOError2

#include <uhd/usrp/multi_usrp.hpp>
#include <uhd/utils/safe_main.hpp>
#include <uhd/utils/thread.hpp>
#include <iostream>

using namespace std;

int UHD_SAFE_MAIN(int argc, char** argv)
{
    uhd::set_thread_priority_safe();
    
    std::string args="addr=192.168.42.2";
    uhd::usrp::multi_usrp::sptr usrp = uhd::usrp::multi_usrp::make(args);
    std::string subdev_spec="A:0";
    usrp->set_rx_subdev_spec(subdev_spec);
    usrp->set_rx_rate(25e6, 0);
    usrp->set_rx_freq(1240e6, 0);
    usrp->set_rx_gain(50.0, 0);
    usrp->set_rx_antenna("RX1", 0);

    uhd::time_spec_t nextCommandTime = usrp->get_time_now();
    nextCommandTime += uhd::time_spec_t(0.5);

    for (int iteration=0; iteration<1000; iteration++) {
        usrp->set_command_time(nextCommandTime);
        usrp->set_rx_freq(1000e6, 0);
        nextCommandTime += uhd::time_spec_t(0.02);
        cout << "iteration: "<< iteration << endl;
    }
    return 0;
}

_______________________________________________
USRP-users mailing list
USRP-users@lists.ettus.com
http://lists.ettus.com/mailman/listinfo/usrp-users_lists.ettus.com

Reply via email to