Hi,
I am using an x310 to transmit a signal of about one minute at ~180 MHz.
The device is attached to a host over a 10 Gig network card and I am instrumenting it using the host part of the UHD library.
I am looking for a way to get a timestamp on the host, with sub milliseconds accuracy, that tells me precisely when the
USRP is starting to transmit my signal. I reckon since I communicate with the device over ethernet, there are network
as well as potentially buffering delays which I can currently not account for.
I thought of using the timed commands, something along the lines of:
auto usrp_time = usrp->get_time_now();
auto host_time = std::chrono::system_clock::now()
usrp->set_command_time(usrp_time + uhd::time_spec_t(1)); // usrp starts transmitting at approximately host_time + 1s
// ... start transmit
This way, I would potentially avoid some of the buffering delays. However, get_time_now() seems itself to be a network request,
and thus incurs a delay that I don't know how to assess. I can't find any mention about network delays being accounted for or not in
the documentation. I also don't know whether that will actually get rid of any delay or just block for a second on the host side.
I also thought it would be nice to simply synchronize the USRP's time via e.g. NTP/PTP with the host. However, I could only find info on
using WhiteRabbit, and it's honestly a bit over my head and seems to require special hardware for which I don't have a budget. I am also
not experienced with FPGA programming, so I would prefer solutions that don't require that.
Thanks in advance