Hey Marcus, I'm using UHD 4.0.0;;
[INFO] [UHD] linux; GNU C++ version 9.3.0; Boost_106700; UHD_4.0.0.0-1- gcf570707 I had stumbled on the "tune twice" thing quite accidentally (I don't think I ran into any documentation on it, I was just trying to test for repeatability with a single frequency, and noticed the first time was always wrong), but now that you mention it, I guess it kind of makes sense. I don't know how deep the command queue depth is, but I expect a tune on the twinrx would ostensibly need to e.g. set the preselector filter, enable/disable the low frequency pre-amp, select high band/low band, tune the first stage lo, tune the second stage lo, select high band first stage oscillator, and maybe another few things that I'm missing. The only bit about that which I'm not sure is what the minimum acceptable delays should be to ensure stability in this double-tune operation. As it stands presently I am taking about ~500ms to retune the receiver, it would be great if I could get that down some, though I have bigger fish to fry as of yet. Unless I'm mistaken and more is required, I'm already using LO sharing between the channels (but that doesn't seem to be enough...). For clarity, my initialization function does this: (modified for brevity, but in order). _usrp = uhd::usrp::multi_usrp::make(args); _usrp->set_clock_source("internal",0); _usrp->set_rx_subdev_spec("B:0 B:1",0); _usrp->set_tx_subdev_spec("A:0",0); _usrp->set_rx_antenna("RX1",0); _usrp->set_rx_antenna("RX2",1); _usrp->set_tx_antenna("TX/RX",0); _usrp->set_rx_lo_source("internal", uhd::usrp::multi_usrp::ALL_LOS, 0); _usrp->set_rx_lo_source("companion", uhd::usrp::multi_usrp::ALL_LOS, 1); _usrp->set_rx_rate(100e6, 0); _usrp->set_rx_rate(100e6, 1); _usrp->set_tx_rate(400e3, 0); _usrp->set_tx_gain(0,0); _usrp->set_rx_gain(65,0); _usrp->set_rx_gain(65,1); _usrp->set_rx_bandwidth(100e6,0); _usrp->set_rx_bandwidth(100e6,1); _usrp->set_tx_bandwidth(100e6,0); _usrp->set_time_unknown_pps(uhd::time_spec_t(0.0)); I had thought all I needed to do was the "set_rx_lo_source" bit to enable the LO sharing. Have I done that correctly or have I missed something? If that is correct, do I need to change how I go about tuning (detailed in the first email in the chain)? Dustin On Wed, 2020-11-11 at 19:52 -0500, Marcus D. Leech wrote: > On 11/11/2020 06:20 PM, Dustin Widmann wrote: > > Thanks for the quick response Marcus! > > > > It seems to be fairly frequency dependent. I'm attaching a link to > > a > > data file so y'all can take a look at what I mean. I ran a dense- > > ish > > sweep several times to try to get a feel for how reproducible > > things > > were /etc. The transmitter was retuned at each frequency, but the > > receiver was only retuned every 10MHz. > > https://u.pcloud.link/publink/show?code=XZviezXZGl5Ypkv46LSVf9l9n1YtOV05z92k > > in this file: > > * blue or green text = range of datapoints that seem to have > > reproducible phase offsets (I alternated between blue and green > > when I > > noticed a "jump" in the value ;; sometimes these jumps were > > 90/180/270 > > degree, but often not, and were reproducible regardless) > > * orange text = phase offset is off in some consistent manner > > (90/180/270 degree jump) and/or reproducible aberrant value > > * red text = phase offset seems to be random/garbage > > * red background = invalid datapoint (either tone is at unexpected > > bin > > on channel 1, channel 2, or both ;; this is one of the other > > questions > > I was alluding to in my first email, I'm presuming its a separate > > issue, but maybe not. It's worth noting that when the tone is > > observed > > at the wrong frequency, the frequency where it is observed is often > > a > > multiple of the reference clock instead) > > > > Dustin > > > What version of UHD are you using? > > I spoke with the original developer of the TwinRX driver, and the > preferred approach to tuning if you want coherence > is to tune it twice with timed commands. The reason for this is > that > the number of transactions required to tune the > TwinRx exceeds the size of the X310 command queue, but various > things > get cached, so the second attempt will have > fewer commands in the queue, and will go through with all the > appropriate timing. > > Since this is on a single X310 platform, and it's TwinRX, you might > consider instead using LO sharing: > > https://kb.ettus.com/TwinRX#New_Multi_USRP_Functions > > _______________________________________________ USRP-users mailing list USRP-users@lists.ettus.com http://lists.ettus.com/mailman/listinfo/usrp-users_lists.ettus.com