# Mimo beam forming on USRP

**URL:** <https://www.ruby-forum.com/t/mimo-beam-forming-on-usrp/234419>\
**Category:** GNU Radio\
**Created:** [March 3, 2015, 5:07pm UTC](https://www.ruby-forum.com/t/mimo-beam-forming-on-usrp/234419 "2015-03-03T17:07:07Z")\
**Posts on this page:** 9\
**Page:** 1

<div class="post-metadata">

**Author:** ![addis\_a](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/c4cdca/32.png) [@addis\_a](https://www.ruby-forum.com/u/addis_a)\
**Post date:** [March 3, 2015, 5:07pm UTC](https://www.ruby-forum.com/t/mimo-beam-forming-on-usrp/234419/1 "2015-03-03T17:07:07Z")

</div>

Hi Guys,

I am planning to build a mimo system which supports beam forming. Is  
USRP a  
good platform for my target? I do not want to use WARP because I need to  
operate at frequencies lower than 2.4GHz.

A potential problem of USRP is phase alignment. As the following doc  
suggests, phase alignment can be done by MANUALLY tuning the phase. This  
process can be labor intensive when the number of antennas increases. I  
am  
also worried about the problem that the manual phase calibration might  
need  
to be done each time you use the mimo system. Is there any approach that  
can make this process much easier?

[http://www.ettus.com/content/files/kb/mimo\_and\_sync\_with\_usrp\_updated.pdf](http://www.ettus.com/content/files/kb/mimo_and_sync_with_usrp_updated.pdf)

Would be great if you can give me some suggestions about what devices  
should I use for building a mimo system for beam forming. Thanks.

Pengyu

---

<div class="post-metadata">

**Author:** ![Pengyu\_Z](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/p/e79b87/32.png) [@Pengyu\_Z](https://www.ruby-forum.com/u/Pengyu_Z)\
**Post date:** [March 3, 2015, 5:20pm UTC](https://www.ruby-forum.com/t/mimo-beam-forming-on-usrp/234419/2 "2015-03-03T17:20:59Z")

</div>

If you use the phase-resynch feature of the SBX card, and you have  
common refclock and 1PPS across all your USRPs in the array,  
then you should be OK.

In _general_, synthesized downconverters use fractional-N synthesizers  
where their starting phase after a re-tune is random with respect to any  
other synthesizer using the same reference clock. That’s just the way  
fractional- N synthesis works. It happens that SBX uses an ADF4351  
synthesizer, which has a (rare!) hardware feature to allow phase-resynch  
after tuning. In order to make this work, all SBXes in your “array” must  
be tuned at exactly the same time, so the timed\_commands feature must be  
used to do the tuning.

See:

> **[USRP Hardware Driver and Device Manual: Device Synchronization](https://files.ettus.com/manual/page_sync.html)**

On 2015-03-03 11:05, Pengyu Z. wrote:

> Pengyu
> 
> * * *
> 
> Discuss-gnuradio mailing list  
> [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)  
> [Discuss-gnuradio Info Page](https://lists.gnu.org/mailman/listinfo/discuss-gnuradio) [1]

Links:

---

<div class="post-metadata">

**Author:** ![Pengyu\_Z](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/p/e79b87/32.png) [@Pengyu\_Z](https://www.ruby-forum.com/u/Pengyu_Z)\
**Post date:** [March 3, 2015, 5:28pm UTC](https://www.ruby-forum.com/t/mimo-beam-forming-on-usrp/234419/3 "2015-03-03T17:28:16Z")

</div>

Can you give us some details (frequency, number of antennas) that you  
want to have?

A lot of people have done MIMO with USRPs, up to 100x100 antennas, so  
there is some precedent. For beam forming, you’ll need very good phase  
alignment, depending on what you’re planning to set up. This is always  
difficult, because all sorts of things affect phase. You should, in any  
case, have a way to test phase alignment.

Cheers,  
Martin

---

<div class="post-metadata">

**Author:** ![Pengyu\_Z](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/p/e79b87/32.png) [@Pengyu\_Z](https://www.ruby-forum.com/u/Pengyu_Z)\
**Post date:** [March 3, 2015, 5:42pm UTC](https://www.ruby-forum.com/t/mimo-beam-forming-on-usrp/234419/4 "2015-03-03T17:42:52Z")

</div>

Martin - I am thinking about doing beam forming around 900MHz. The  
number  
of antennas that I want to use is around 8x8. I am thinking about using  
USRP N210+SBX+OctoClock-G suggested by ettus. But not sure how much  
phase  
mis-alignment will I observe.

Marcus - Thanks for the tips. Maybe I should look at how other folks do  
phase calibration on USRP. Any recommendation of sample projects?  
Ideally,  
I hope that this process can be done automatically in software or in  
hardware.

Pengyu

---

<div class="post-metadata">

**Author:** ![Pengyu\_Z](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/p/e79b87/32.png) [@Pengyu\_Z](https://www.ruby-forum.com/u/Pengyu_Z)\
**Post date:** [March 3, 2015, 5:34pm UTC](https://www.ruby-forum.com/t/mimo-beam-forming-on-usrp/234419/5 "2015-03-03T17:34:44Z")

</div>

Indeed, I should have emphasized that despite having features like  
“phase resynch”, in any _practical_ phased-array, you’ll still need some  
mechanism for calibrating the phase centers of all your antenna.  
Differential environmental factors can, for example, affect the phasing  
of the antenna feed paths, even with your LOs all agreeing quite-well on  
phase.

In Radio Astronomy, they do this all the time–there’s always a  
phase-calibration process that is undertaken prior to observations,  
because despite careful layout of common LOs, carefully-measured  
feedlines from the same batch of cable, etc, differentials creep in.

On 2015-03-03 11:26, Martin B. wrote:

> Can you give us some details (frequency, number of antennas) that you want to  
> have?
> 
> A lot of people have done MIMO with USRPs, up to 100x100 antennas, so there is  
> some precedent. For beam forming, you’ll need very good phase alignment, depending  
> on what you’re planning to set up. This is always difficult, because all sorts of  
> things affect phase. You should, in any case, have a way to test phase alignment.
> 
> Cheers,  
> Martin
> 
> On 03.03.2015 08:18, [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:  
> If you use the phase-resynch feature of the SBX card, and you have common  
> refclock and 1PPS across all your USRPs in the array, then you should be OK. In  
> _general_, synthesized downconverters use fractional-N synthesizers where their  
> starting phase after a re-tune is random with respect to any other synthesizer  
> using the same reference clock. That’s just the way fractional- N synthesis works.  
> It happens that SBX uses an ADF4351 synthesizer, which has a (rare!) hardware  
> feature to allow phase-resynch after tuning. In order to make this work, all SBXes  
> in your “array” must be tuned at exactly the same time, so the timed\_commands  
> feature must be used to do the tuning. See:  
> [USRP Hardware Driver and Device Manual: Device Synchronization](http://files.ettus.com/manual/page_sync.html) [1] On 2015-03-03 11:05, Pengyu Z.  
> wrote: Hi Guys, I am planning to build a mimo system which supports beam forming.  
> Is USRP a good platform for my target? I do not want to use WARP because I need to  
> operate at frequencies lower than 2.4GHz. A potential problem of USRP  
> is phase alignment. As the following doc suggests, phase alignment can  
> be done by MANUALLY tuning the phase. This process can be labor  
> intensive when the number of antennas increases. I am also worried about  
> the problem that the manual phase calibration might need to be done each  
> time you use the mimo system. Is there any approach that can make this  
> process much easier?  
> [http://www.ettus.com/content/files/kb/mimo\_and\_sync\_with\_usrp\_updated.pdf](http://www.ettus.com/content/files/kb/mimo_and_sync_with_usrp_updated.pdf)  
> [2] Would be great if you can give me some suggestions about what  
> devices should I use for building a mimo system for beam forming.  
> Thanks. Pengyu \_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_  
> Discuss-gnuradio mailing list [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)  
> [mailto:removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)  
> [Discuss-gnuradio Info Page](https://lists.gnu.org/mailman/listinfo/discuss-gnuradio) [3]  
> \_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_ Discuss-gnuradio mailing  
> list [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)  
> [Discuss-gnuradio Info Page](https://lists.gnu.org/mailman/listinfo/discuss-gnuradio) [3]

* * *

Discuss-gnuradio mailing list  
[removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)  
[Discuss-gnuradio Info Page](https://lists.gnu.org/mailman/listinfo/discuss-gnuradio) [3]

Links:

---

<div class="post-metadata">

**Author:** ![Pengyu\_Z](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/p/e79b87/32.png) [@Pengyu\_Z](https://www.ruby-forum.com/u/Pengyu_Z)\
**Post date:** [March 3, 2015, 5:46pm UTC](https://www.ruby-forum.com/t/mimo-beam-forming-on-usrp/234419/6 "2015-03-03T17:46:06Z")

</div>

Pengyu:

I think people tend to do it differently, depending on the particular  
application. In radio astronomy, they typically point the array at a  
well-characterized “calibrator source” and make phase measurements, and  
then tweak based on known baseline geometries.

For commercial MIMO, using a distant transmitter of known properties and  
arrival angles might be useful, or a local calibrator source.

On 2015-03-03 11:41, Pengyu Z. wrote:

> In Radio Astronomy, they do this all the time–there’s always a  
> phase-calibration process that is undertaken prior to observations, because  
> despite careful layout of common LOs, carefully-measured feedlines from the same  
> batch of cable, etc, differentials creep in.  
> On 03.03.2015 08:18, [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:  
> If you use the phase-resynch feature of the SBX card, and you have common  
> refclock and 1PPS across all your USRPs in the array, then you should be OK. In  
> _general_, synthesized downconverters use fractional-N synthesizers where their  
> starting phase after a re-tune is random with respect to any other synthesizer  
> using the same reference clock. That’s just the way fractional- N synthesis works.  
> It happens that SBX uses an ADF4351 synthesizer, which has a (rare!) hardware  
> feature to allow phase-resynch after tuning. In order to make this work, all SBXes  
> in your “array” must be tuned at exactly the same time, so the timed\_commands  
> feature must be used to do the tuning. See:  
> [USRP Hardware Driver and Device Manual: Device Synchronization](http://files.ettus.com/manual/page_sync.html) [1] On 2015-03-03 11:05, Pengyu Z.  
> wrote: Hi Guys, I am planning to build a mimo system which supports beam forming.  
> Is USRP a good platform for my target? I do not want to use WARP because I need to  
> operate at frequencies lower than 2.4GHz. A potential problem of USRP  
> is phase alignment. As the following doc suggests, phase alignment can  
> be done by MANUALLY tuning the phase. This process can be labor  
> intensive when the number of antennas increases. I am also worried about  
> the problem that the manual phase calibration might need to be done each  
> time you use the mimo system. Is there any approach that can make this  
> process much easier?  
> [http://www.ettus.com/content/files/kb/mimo\_and\_sync\_with\_usrp\_updated.pdf](http://www.ettus.com/content/files/kb/mimo_and_sync_with_usrp_updated.pdf)  
> [2] Would be great if you can give me some suggestions about what  
> devices should I use for building a mimo system for beam forming.  
> Thanks. Pengyu \_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_  
> Discuss-gnuradio mailing list [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)  
> [mailto:removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)  
> [Discuss-gnuradio Info Page](https://lists.gnu.org/mailman/listinfo/discuss-gnuradio) [3]  
> \_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_ Discuss-gnuradio mailing  
> list [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)  
> [Discuss-gnuradio Info Page](https://lists.gnu.org/mailman/listinfo/discuss-gnuradio) [3]

* * *

Discuss-gnuradio mailing list  
[removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)  
[Discuss-gnuradio Info Page](https://lists.gnu.org/mailman/listinfo/discuss-gnuradio) [3]

Links:

---

<div class="post-metadata">

**Author:** ![Pengyu\_Z](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/p/e79b87/32.png) [@Pengyu\_Z](https://www.ruby-forum.com/u/Pengyu_Z)\
**Post date:** [March 3, 2015, 5:53pm UTC](https://www.ruby-forum.com/t/mimo-beam-forming-on-usrp/234419/7 "2015-03-03T17:53:23Z")

</div>

Marcus - I am thinking about sending a training signal using one TX  
antenna  
and figure out the phases of other antennas by looking at the maximum  
correlation. Does this sound like a reasonable solution for a practical  
mimo system?

---

<div class="post-metadata">

**Author:** ![Pengyu\_Z](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/p/e79b87/32.png) [@Pengyu\_Z](https://www.ruby-forum.com/u/Pengyu_Z)\
**Post date:** [March 3, 2015, 6:43pm UTC](https://www.ruby-forum.com/t/mimo-beam-forming-on-usrp/234419/8 "2015-03-03T18:43:04Z")

</div>

On 03.03.2015 08:41, Pengyu Z. wrote:

> Martin - I am thinking about doing beam forming around 900MHz. The  
> number of antennas that I want to use is around 8x8. I am thinking about  
> using USRP N210+SBX+OctoClock-G suggested by ettus. But not sure how  
> much phase mis-alignment will I observe.

In that case, SBX will work fine. How much phase alignment you’ll  
observe depends on your actual setup… there’s a lot of factors (which  
is why, as Marcus mentioned, overall systems usually get calibrated  
before usage).

If you have specific questions or concerns, I suggest you contact Neel  
(CC’d).

Cheers,  
Martin

---

<div class="post-metadata">

**Author:** ![Pengyu\_Z](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/p/e79b87/32.png) [@Pengyu\_Z](https://www.ruby-forum.com/u/Pengyu_Z)\
**Post date:** [March 4, 2015, 8:25am UTC](https://www.ruby-forum.com/t/mimo-beam-forming-on-usrp/234419/9 "2015-03-04T08:25:30Z")

</div>

When I read this, pCell comes in mind:  
[http://www.rearden.com/artemis/An-Introduction-to-pCell-White-Paper-150224.p](http://www.rearden.com/artemis/An-Introduction-to-pCell-White-Paper-150224.p)  
df

Quite exciting stuff!

Ralph.

> to have?
> 
> A lot of people have done MIMO with USRPs, up to 100x100 antennas, so  
> there is some precedent. For beam forming, you’ll need very good phase  
> alignment, depending on what you’re planning to set up. This is always  
> difficult, because all sorts of things affect phase. You should, in any  
> case,
> 
> > In _general_, synthesized downconverters use fractional-N synthesizers  
> > where their starting phase after a re-tune is random with respect to  
> > any other synthesizer using the same reference clock. That’s just the  
> > way  
> > fractional- N synthesis works. It happens that SBX uses an ADF4351  
> > synthesizer, which has a (rare!) hardware feature to allow  
> > phase-resynch after tuning. In order to make this work, all SBXes in  
> > your
