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