On 02/22/2018 09:15 AM, Piotr Krysik via USRP-users wrote:
Hi all,

There was a thread on this topic started by Hideyuki Matsunaga that
didn't resolve this question.

I want to reiterate this question here but from different point: it
seems that at this moment it isn't possible. I did my best to
synchronize two USRPs B210 (the description is below) and the result was
Please prove my hypothesis is wrong.

Here is the description how to reproduce the problem (keep in mind that
the code below was tested on USRP X310 and it worked correctly):

1. connect REF and PPS inputs of USRPs to reference clock source (i.e.

2. connect noise source (i.e. another USRP) at 1GHz central frequency
(this is default frequency of the recorder) through an attenuator and
splitter to inputs of USRPs B210,

3. run:

recorder.py --serial1 <serial_of_first_usrp_b210> --serial2

(recorder.py implements synchronization of two usrp_source objects, the
function that does that is Python re-implementation of
set_time_unknown_pps uhd function).

4. then open octave-cli and in it run:


You should get the results like below:

The result of cross-correlation between channels of single USRP:


Everything is fine here, the correlation peak is in the zero, which
means that correlated signals are time-synchronized.

The result of cross-correlation between channels of different USRPs:


Here there is problem: the peak is not in zero, the signals recorded by
two different USRPs *are not time-synchronized*.

I tested with UHD installed from Ubuntu 16.04 packages and fresh
compilation, for different B210s and different Octoclocks-G and the
synchronization of B210s doesn't work. Why is it the case? I might be
doing something wrong, but please take into consideration that there is
something wrong with B210s time-synchronization in general. It would be
great if someone can reproduce the problem or show that it works for him
(if yes: how he did it).

I attach whole code of the recorder (with grc file that was used to
generate part of it) and processing and image of the flowgraph.

I took a quick look at your flow-graphs.

Two things come to mind

(A) What if more than 3 seconds of wall-time occur between your __init function, and the code finally calling tb.start()? That would cause the B210 to begin streaming immediately, and since this is two different multi_usrps, there's no time-alignment between them.

(B) There is a 180deg ambiguity in the AD9361 clock logic, so that two AD9361s given the same clock can have a 180deg phase-difference at the mixer (or 0deg phase difference, depending on divider state) this is probably not your issue, but it is an *additonal* headache you'll have to deal with.

USRP-users mailing list

Reply via email to