diff --git a/CHANGELOG b/CHANGELOG index b63ee40ae..14471de69 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -19,11 +19,15 @@ Change Log for Releases in some cases abused to detect overruns, but this is not a reliable method and is now explicitly declared unsupported. * Bug Fixes - - Calling `recv()` on an RX streamer connected to an RFNoC device with a - zero timeout value now correctly returns immediately. - - rfnoc-gain: Moved the fpga/ subdirectory under rfnoc/. This way, the - directory structure inside the OOT module is identical to the directory - structure after installation. + - RFNoC + - Calling `recv()` on an RX streamer connected to an RFNoC device with a + zero timeout value now correctly returns immediately. + - rfnoc-gain: Moved the fpga/ subdirectory under rfnoc/. This way, the + directory structure inside the OOT module is identical to the directory + structure after installation. + - X410: + - Fixed NCO reset mechanism that caused ADC self-cal errors to occur during + reopening of a UHD session when timed tune commands were previously used. * Removals / Deprecations - Removed tools/uhd_dump. This tool is obsolete, the USRP X3x0 is not even compatible with it any more. Dumps can be recorded and analyzed with wireshark diff --git a/host/examples/python/tx_waveforms.py b/host/examples/python/tx_waveforms.py index e401d9ca8..adb7d7364 100755 --- a/host/examples/python/tx_waveforms.py +++ b/host/examples/python/tx_waveforms.py @@ -145,18 +145,11 @@ def multi_usrp_tx(args): desired_size = 10 * np.floor(args.rate / args.wave_freq) tx_start_time = None # Start transmission immediately - if args.tx_delay != 0: - if usrp.get_mboard_name() == "x410": - print( - "WARNING: Delayed transmission implies timed tuning " - "which is not supported on X410. Ignoring tx_delay." - ) - else: - # Delay transmission start. This will allow SW to apply all - # configurations and start transmission on all channels simultaneously. - # If tx_delay is too small, tx_start_time may be in the past by the time - # all configurations are applied and late command errors being reported. - tx_start_time = usrp.get_time_now() + args.tx_delay + # Delay transmission start. This will allow SW to apply all + # configurations and start transmission on all channels simultaneously. + # If tx_delay is too small, tx_start_time may be in the past by the time + # all configurations are applied and late command errors being reported. + tx_start_time = usrp.get_time_now() + args.tx_delay print("Generating waveform...") data = uhd.dsp.signals.get_continuous_tone( args.rate, @@ -209,11 +202,9 @@ def rfnoc_dram_tx(args): else: radio.set_rate(args.rate) - is_x410 = graph.get_mb_controller().get_mboard_name() == "x410" - if not is_x410 and len(dram.radio_chan_pairs) > 1: + if len(dram.radio_chan_pairs) > 1: # Use timed tuning for more than one channel to produce consistent - # phase offsets between channels. This is supported on all devices - # except X410, which does not support timed tuning correctly yet. + # phase offsets between channels. cmd_time_offset = 0.1 cmd_time = dram.radio_chan_pairs[0][0].get_time_now() + cmd_time_offset for radio, radio_chan in dram.radio_chan_pairs: @@ -258,9 +249,8 @@ def rfnoc_dram_tx(args): f"Starting to stream waveform at the rate of {args.rate} samples/sec for the duration of {args.duration} seconds..." ) tx_md = uhd.types.TXMetadata() - # do not use time spec if tx_delay is 0 or if we are using an X410 - # X410 might run into tile sync error on timed commands - if args.tx_delay == 0 or is_x410: + # do not use time spec if tx_delay is 0 + if args.tx_delay == 0: tx_md.has_time_spec = False else: # In this case the tx_start_time needs to be sufficiently in the future diff --git a/host/examples/tx_waveforms.cpp b/host/examples/tx_waveforms.cpp index 1afafc631..d2407f8ad 100644 --- a/host/examples/tx_waveforms.cpp +++ b/host/examples/tx_waveforms.cpp @@ -248,10 +248,8 @@ int UHD_SAFE_MAIN(int argc, char* argv[]) std::cout << boost::format("Setting TX LO Offset: %f MHz...") % (lo_offset / 1e6) << std::endl; - // use timed tuning for more that one channel on all devices except X410 - // X410 does not yet support timed tuning - const bool timed_tuning = usrp->get_mboard_name() != "x410" - and channel_nums.size() > 1; + // use timed tuning for more than one channel + const bool timed_tuning = channel_nums.size() > 1; const float cmd_time_offset = 0.1; if (timed_tuning) {