USRP2 MIMO Synchronisation using grc and uhd


I’m still working on the issue described by Johannes in

Here is my setup: I try to synchronise two USRP2 devices using an
external reference clock and pps-signal. The flowgraph is created with
grc and is currently using the following blocks:

The two outputs of an uhd_mimo_source are each split up in real part
and imaginary part using gr_complex_to_real and gr_complex_to_imag and
then saved to files using gr_file_sink. So i get all in all 4 files
with data type float. Each two files that belong together are
recomposed in matlab so that i get again complex data. The reason why
the source output is split up anyway is that I get better result that
way when I’m checking if the sources were synchronised. First I
directly saved complex data with the filesinks with much worse

To check whether the USRP2s were synchronised I have a matlab script
which executes a cross correlation of the two files composed earlier
in matlab. And that’s where I’m stuck. In round about 50% of my tries
everything works perfect and I get the result that the usrp2s were
synchronised. But without changing anything of the setup the test
fails in other runs.

If I interpret the output while running the flow graph correctly the
usrp2 should be synchronised:
When the pps-Signal is connected to both devices I get

Set time with unknown pps edge:

  1. set times next pps (race condition)
  2. catch seconds rollover at pps edge
  3. set times next pps (synchronously)

When the pps-signal is connected only to one device I get

Set time with unknown pps edge:
1) set times next pps (race condition)
2) catch seconds rollover at pps edge
3) set times next pps (synchronously)

Detected time deviation between board 1 and board 0.
Board 0 time is 33.938985 seconds.
Board 1 time is 0.940063 seconds.

So the usrp2 should be synchronously when the pps is connected.

Have you any idea how I can improve my results?

OS: Ubuntu 10.04
Daughterboards: XCVR2450

Kind regards,