Hi all, Update to the previous post. Nate Temple on IRC pointed that what I observe might be a result of a bug in recent UHD's, where co-channel phase difference on TwinRX doesn't behave as expected. Nate's advice was to go back to UHD 3.13, which I did (I took the top from UHD-3.13 branch).
I did tests with original twinrx_usrp_source.py (where on UHD_3.15.0.git-13-g52138314 I had problem with phase changes). With UHD 3.13 I didn't need additional call to set_time_unknown_pps. The co-channel phase differences were constant from one program running to another without it. So it seems the strange behavior of phase in signal coming from TwinRXes might be a result of a bug that Nate was informing about. -- Best Regards, Piotr Krysik W dniu 13.03.2019 o 14:48, Piotr Krysik via USRP-users pisze: > Hello everyone, > > TwinRXes requires special treatment when setting frequency in order to > keep co-channel phase differences across multiple executions of a > program communicating with USRP. > > What exactly 'treatment' I mean can be seen for example here: > https://github.com/EttusResearch/gr-doa/blob/master/python/twinrx_usrp_source.py#L100 > > or here: > > https://github.com/gnuradio/gnuradio/blob/master/gr-uhd/apps/uhd_app.py#L298 > > > The procedure is following (correct configuration of LO export and LO > sources is assumed): > > 1. set the frequency for the channel exporting LOs, and store result, > 2. set the frequency for the rest of the channels using the result saved > previously and POLICY_MANUAL for rf and dsp, > 3. set the frequency again for all channels with use of timed commands. > > In uhd_app's constructor there is also call to set_time_unknown_pps > between points 2 and 3. In twinrx_usrp_source.py set_time_unknown_pps is > called before point 1. The placement of this function call after the > first setting of the carrier frequency seems to be crucial. Without it > there are random 180 degree changes of phase differences between > channels from one run to another. And this issue can be observed for > twinrx_usrp_source.py, because it calls set_time_unknown_pps before > setting the frequency (checked on UHD_3.15.0.git-13-g52138314). > > I also changed different settings to see what effects they have. I > didn't notice any effect of POLICY_MANUAL setting in point 2. Setting > the frequency in regular way seems to work just as well. Also removing > point 3 completely (setting freq. with use of timed commands) seems to > not have any effect for TwinRX (I checked this with use of sine wave as > the input signal, in case it is important). > > In the end what I did was configuring LO export/sources in GNU Radio and > adding usrp.set_time_unknown_pps(..) at the end of the of the > constructor. As a result co-channel phase differences were (~) constant > across multiple runs. > > > My question: > 1. What is the rationale for all of the steps of frequency setting for > TwinRX? Did I have luck that most of them didn't have any effect for me? > 2. Why is the call to set_time_unknown_pps required at all? And why when > it is called after the first setting of carrier frequency in all > channels, it fixes the issue with 180 degree phase shifts from one run > to another? If it's called before, it doesn't seem to have this positive > effect. > _______________________________________________ USRP-users mailing list USRP-users@lists.ettus.com http://lists.ettus.com/mailman/listinfo/usrp-users_lists.ettus.com