usrp-users@lists.ettus.com

Discussion and technical support related to USRP, UHD, RFNoC

View all threads

Multiple B200, Python API.

JS
J Subash
Wed, Oct 17, 2018 2:53 PM

Hi,

Hope you're doing well. I am new here and new to the USRP API. Attached
is a setup to record signals at 380MHz and 2.4Ghz on two B200's. The aim
is to sync the devices using the 10Mhz and 1PPS provided from an
external source to both devices.

Using the python API to achieve this and here is a snippet used to test
multiple-usrp

In [1]: import uhd
In [2]: my_usrp = uhd.usrp.MultiUSRP("serial0=xxx310C,serial1=xxx311F")
In [3]: my_usrp.get_master_clock_rate(0)
Out[3]: 16000000.0
In [4]: my_usrp.get_master_clock_rate(1)
Traceback (most recent call last):  File
"<ipython-input-4-aa48c097ad54>", line 1, in <module>
   my_usrp.get_master_clock_rate(1)
RuntimeError: LookupError: IndexError: multi_usrp::mb_root(1) -
LookupError: IndexError: multi_usrp::mb_root(1) - path not found

Clearly the second device is not registered by the MultiUSRP method. I
found the C++ equivalent to this for the x series devices on the usrp
manual; which is:

uhd::device_addr_t
https://files.ettus.com/manual/classuhd_1_1device__addr__t.html args
https://files.ettus.com/manual/namespaceprocess-lvbitx.html#a6105700373e342448ca66cbbdb9cf569("addr0=192.168.10.2,addr1=192.168.20.2");
uhd::usrp::multi_usrp::sptr
https://files.ettus.com/manual/classuhd_1_1usrp_1_1multi__usrp.html#a9d9112f5eac0b53a721f2a6c97021fc1
usrp = uhd::usrp::multi_usrp::make
https://files.ettus.com/manual/classuhd_1_1usrp_1_1multi__usrp.html#af0d3809a8f8dcd3c962ad5b9a0a6456c(args
https://files.ettus.com/manual/namespaceprocess-lvbitx.html#a6105700373e342448ca66cbbdb9cf569);

Have these methods been exposed to the python API? If yes, a quick
example would be helpful.

Thanks very much.

--
Joel

Hi, Hope you're doing well. I am new here and new to the USRP API. Attached is a setup to record signals at 380MHz and 2.4Ghz on two B200's. The aim is to sync the devices using the 10Mhz and 1PPS provided from an external source to both devices. Using the python API to achieve this and here is a snippet used to test multiple-usrp In [1]: import uhd In [2]: my_usrp = uhd.usrp.MultiUSRP("serial0=xxx310C,serial1=xxx311F") In [3]: my_usrp.get_master_clock_rate(0) Out[3]: 16000000.0 In [4]: my_usrp.get_master_clock_rate(1) Traceback (most recent call last):  File "<ipython-input-4-aa48c097ad54>", line 1, in <module>    my_usrp.get_master_clock_rate(1) RuntimeError: LookupError: IndexError: multi_usrp::mb_root(1) - LookupError: IndexError: multi_usrp::mb_root(1) - path not found Clearly the second device is not registered by the MultiUSRP method. I found the C++ equivalent to this for the x series devices on the usrp manual; which is: uhd::device_addr_t <https://files.ettus.com/manual/classuhd_1_1device__addr__t.html> args <https://files.ettus.com/manual/namespaceprocess-lvbitx.html#a6105700373e342448ca66cbbdb9cf569>("addr0=192.168.10.2,addr1=192.168.20.2"); uhd::usrp::multi_usrp::sptr <https://files.ettus.com/manual/classuhd_1_1usrp_1_1multi__usrp.html#a9d9112f5eac0b53a721f2a6c97021fc1> usrp = uhd::usrp::multi_usrp::make <https://files.ettus.com/manual/classuhd_1_1usrp_1_1multi__usrp.html#af0d3809a8f8dcd3c962ad5b9a0a6456c>(args <https://files.ettus.com/manual/namespaceprocess-lvbitx.html#a6105700373e342448ca66cbbdb9cf569>); Have these methods been exposed to the python API? If yes, a quick example would be helpful. Thanks very much. -- Joel
MD
Marcus D. Leech
Wed, Oct 17, 2018 2:59 PM

On 10/17/2018 10:53 AM, J Subash via USRP-users wrote:

Hi,

Hope you're doing well. I am new here and new to the USRP API.
Attached is a setup to record signals at 380MHz and 2.4Ghz on two
B200's. The aim is to sync the devices using the 10Mhz and 1PPS
provided from an external source to both devices.

Using the python API to achieve this and here is a snippet used to
test multiple-usrp

In [1]: import uhd
In [2]: my_usrp = uhd.usrp.MultiUSRP("serial0=xxx310C,serial1=xxx311F")
In [3]: my_usrp.get_master_clock_rate(0)
Out[3]: 16000000.0
In [4]: my_usrp.get_master_clock_rate(1)
Traceback (most recent call last):  File
"<ipython-input-4-aa48c097ad54>", line 1, in <module>
my_usrp.get_master_clock_rate(1)
RuntimeError: LookupError: IndexError: multi_usrp::mb_root(1) -
LookupError: IndexError: multi_usrp::mb_root(1) - path not found

Clearly the second device is not registered by the MultiUSRP method. I
found the C++ equivalent to this for the x series devices on the usrp
manual; which is:

uhd::device_addr_t
https://files.ettus.com/manual/classuhd_1_1device__addr__t.html args
https://files.ettus.com/manual/namespaceprocess-lvbitx.html#a6105700373e342448ca66cbbdb9cf569("addr0=192.168.10.2,addr1=192.168.20.2");
uhd::usrp::multi_usrp::sptr
https://files.ettus.com/manual/classuhd_1_1usrp_1_1multi__usrp.html#a9d9112f5eac0b53a721f2a6c97021fc1
usrp = uhd::usrp::multi_usrp::make
https://files.ettus.com/manual/classuhd_1_1usrp_1_1multi__usrp.html#af0d3809a8f8dcd3c962ad5b9a0a6456c(args
https://files.ettus.com/manual/namespaceprocess-lvbitx.html#a6105700373e342448ca66cbbdb9cf569);

Have these methods been exposed to the python API? If yes, a quick
example would be helpful.

Thanks very much.

Unless something has changed, you can't have more than 1 B2xx in a
single multi-usrp object.

On 10/17/2018 10:53 AM, J Subash via USRP-users wrote: > > Hi, > > Hope you're doing well. I am new here and new to the USRP API. > Attached is a setup to record signals at 380MHz and 2.4Ghz on two > B200's. The aim is to sync the devices using the 10Mhz and 1PPS > provided from an external source to both devices. > > Using the python API to achieve this and here is a snippet used to > test multiple-usrp > > In [1]: import uhd > In [2]: my_usrp = uhd.usrp.MultiUSRP("serial0=xxx310C,serial1=xxx311F") > In [3]: my_usrp.get_master_clock_rate(0) > Out[3]: 16000000.0 > In [4]: my_usrp.get_master_clock_rate(1) > Traceback (most recent call last): File > "<ipython-input-4-aa48c097ad54>", line 1, in <module> > my_usrp.get_master_clock_rate(1) > RuntimeError: LookupError: IndexError: multi_usrp::mb_root(1) - > LookupError: IndexError: multi_usrp::mb_root(1) - path not found > > Clearly the second device is not registered by the MultiUSRP method. I > found the C++ equivalent to this for the x series devices on the usrp > manual; which is: > > uhd::device_addr_t > <https://files.ettus.com/manual/classuhd_1_1device__addr__t.html> args > <https://files.ettus.com/manual/namespaceprocess-lvbitx.html#a6105700373e342448ca66cbbdb9cf569>("addr0=192.168.10.2,addr1=192.168.20.2"); > uhd::usrp::multi_usrp::sptr > <https://files.ettus.com/manual/classuhd_1_1usrp_1_1multi__usrp.html#a9d9112f5eac0b53a721f2a6c97021fc1> > usrp = uhd::usrp::multi_usrp::make > <https://files.ettus.com/manual/classuhd_1_1usrp_1_1multi__usrp.html#af0d3809a8f8dcd3c962ad5b9a0a6456c>(args > <https://files.ettus.com/manual/namespaceprocess-lvbitx.html#a6105700373e342448ca66cbbdb9cf569>); > > > Have these methods been exposed to the python API? If yes, a quick > example would be helpful. > > Thanks very much. > > Unless something has changed, you can't have more than 1 B2xx in a single multi-usrp object.
JS
J Subash
Mon, Nov 12, 2018 2:40 PM

Hi,

Hope you're doing well.

Attached is a setup to record signals at 380MHz and 2.4Ghz with two
B200's. The aim is to sync the devices using the 10Mhz and 1PPS provided
from an external source to both devices.

Looking on pointers on how to sync the two devices (meaning trigger the
data recording on both devices at the same time). Which API functions
would enable us to achieve this as closely as possible?

Thanks.

BW

JS

On 17/10/2018 15:59, usrp-users@lists.ettus.com wrote:

On 10/17/2018 10:53 AM, J Subash via USRP-users wrote:

Hi,

Hope you're doing well. I am new here and new to the USRP API.
Attached is a setup to record signals at 380MHz and 2.4Ghz on two
B200's. The aim is to sync the devices using the 10Mhz and 1PPS
provided from an external source to both devices.

Using the python API to achieve this and here is a snippet used to
test multiple-usrp

In [1]: import uhd
In [2]: my_usrp = uhd.usrp.MultiUSRP("serial0=xxx310C,serial1=xxx311F")
In [3]: my_usrp.get_master_clock_rate(0)
Out[3]: 16000000.0
In [4]: my_usrp.get_master_clock_rate(1)
Traceback (most recent call last):  File
"<ipython-input-4-aa48c097ad54>", line 1, in <module>
   my_usrp.get_master_clock_rate(1)
RuntimeError: LookupError: IndexError: multi_usrp::mb_root(1) -
LookupError: IndexError: multi_usrp::mb_root(1) - path not found

Clearly the second device is not registered by the MultiUSRP method.
I found the C++ equivalent to this for the x series devices on the
usrp manual; which is:

uhd::device_addr_t
https://files.ettus.com/manual/classuhd_1_1device__addr__t.html
args
https://files.ettus.com/manual/namespaceprocess-lvbitx.html#a6105700373e342448ca66cbbdb9cf569("addr0=192.168.10.2,addr1=192.168.20.2");
uhd::usrp::multi_usrp::sptr
https://files.ettus.com/manual/classuhd_1_1usrp_1_1multi__usrp.html#a9d9112f5eac0b53a721f2a6c97021fc1
usrp = uhd::usrp::multi_usrp::make
https://files.ettus.com/manual/classuhd_1_1usrp_1_1multi__usrp.html#af0d3809a8f8dcd3c962ad5b9a0a6456c(args
https://files.ettus.com/manual/namespaceprocess-lvbitx.html#a6105700373e342448ca66cbbdb9cf569);

Have these methods been exposed to the python API? If yes, a quick
example would be helpful.

Thanks very much.

Unless something has changed, you can't have more than 1 B2xx in a
single multi-usrp object.


USRP-users mailing list
USRP-users@lists.ettus.com
http://lists.ettus.com/mailman/listinfo/usrp-users_lists.ettus.com

--
Joel

Joeal Subash
Research Fellow

Space Environment and Radio Engineering (SERENE) Group
Gisbert Kapp Bldg
University of Birmingham
Edgbaston Birmingham B15 2TT

j.subash@bham.ac.uk

Hi, Hope you're doing well. Attached is a setup to record signals at 380MHz and 2.4Ghz with two B200's. The aim is to sync the devices using the 10Mhz and 1PPS provided from an external source to both devices. Looking on pointers on how to sync the two devices (meaning trigger the data recording on both devices at the same time). Which API functions would enable us to achieve this as closely as possible? Thanks. BW JS On 17/10/2018 15:59, usrp-users@lists.ettus.com wrote: > On 10/17/2018 10:53 AM, J Subash via USRP-users wrote: >> >> Hi, >> >> Hope you're doing well. I am new here and new to the USRP API. >> Attached is a setup to record signals at 380MHz and 2.4Ghz on two >> B200's. The aim is to sync the devices using the 10Mhz and 1PPS >> provided from an external source to both devices. >> >> Using the python API to achieve this and here is a snippet used to >> test multiple-usrp >> >> In [1]: import uhd >> In [2]: my_usrp = uhd.usrp.MultiUSRP("serial0=xxx310C,serial1=xxx311F") >> In [3]: my_usrp.get_master_clock_rate(0) >> Out[3]: 16000000.0 >> In [4]: my_usrp.get_master_clock_rate(1) >> Traceback (most recent call last):  File >> "<ipython-input-4-aa48c097ad54>", line 1, in <module> >>    my_usrp.get_master_clock_rate(1) >> RuntimeError: LookupError: IndexError: multi_usrp::mb_root(1) - >> LookupError: IndexError: multi_usrp::mb_root(1) - path not found >> >> Clearly the second device is not registered by the MultiUSRP method. >> I found the C++ equivalent to this for the x series devices on the >> usrp manual; which is: >> >> uhd::device_addr_t >> <https://files.ettus.com/manual/classuhd_1_1device__addr__t.html> >> args >> <https://files.ettus.com/manual/namespaceprocess-lvbitx.html#a6105700373e342448ca66cbbdb9cf569>("addr0=192.168.10.2,addr1=192.168.20.2"); >> uhd::usrp::multi_usrp::sptr >> <https://files.ettus.com/manual/classuhd_1_1usrp_1_1multi__usrp.html#a9d9112f5eac0b53a721f2a6c97021fc1> >> usrp = uhd::usrp::multi_usrp::make >> <https://files.ettus.com/manual/classuhd_1_1usrp_1_1multi__usrp.html#af0d3809a8f8dcd3c962ad5b9a0a6456c>(args >> <https://files.ettus.com/manual/namespaceprocess-lvbitx.html#a6105700373e342448ca66cbbdb9cf569>); >> >> >> Have these methods been exposed to the python API? If yes, a quick >> example would be helpful. >> >> Thanks very much. >> >> > Unless something has changed, you can't have more than 1 B2xx in a > single multi-usrp object. > > > > _______________________________________________ > USRP-users mailing list > USRP-users@lists.ettus.com > http://lists.ettus.com/mailman/listinfo/usrp-users_lists.ettus.com -- Joel Joeal Subash Research Fellow Space Environment and Radio Engineering (SERENE) Group Gisbert Kapp Bldg University of Birmingham Edgbaston Birmingham B15 2TT j.subash@bham.ac.uk
MD
Marcus D. Leech
Mon, Nov 12, 2018 3:40 PM

On 11/12/2018 09:40 AM, J Subash via USRP-users wrote:

Hi,

Hope you're doing well.

Attached is a setup to record signals at 380MHz and 2.4Ghz with two
B200's. The aim is to sync the devices using the 10Mhz and 1PPS
provided from an external source to both devices.

Looking on pointers on how to sync the two devices (meaning trigger
the data recording on both devices at the same time). Which API
functions would enable us to achieve this as closely as possible?

Thanks.

BW

JS

There is a restriction that you can only have a single B2xx device in a
multi_usrp object, so, you'll need two objects.

So, create two multi_usrp objects--one for each device.

Use a wait loop on ONE of those devices for the get_time_last_pps() to
change, and THEN use set_time_next_pps() on BOTH devices
to reset the clock to the same value.

Then use timed streaming on both devices to cause streaming to start at
some time in the not-too-distant future.

On 17/10/2018 15:59, usrp-users@lists.ettus.com wrote:

On 10/17/2018 10:53 AM, J Subash via USRP-users wrote:

Hi,

Hope you're doing well. I am new here and new to the USRP API.
Attached is a setup to record signals at 380MHz and 2.4Ghz on two
B200's. The aim is to sync the devices using the 10Mhz and 1PPS
provided from an external source to both devices.

Using the python API to achieve this and here is a snippet used to
test multiple-usrp

In [1]: import uhd
In [2]: my_usrp = uhd.usrp.MultiUSRP("serial0=xxx310C,serial1=xxx311F")
In [3]: my_usrp.get_master_clock_rate(0)
Out[3]: 16000000.0
In [4]: my_usrp.get_master_clock_rate(1)
Traceback (most recent call last):  File
"<ipython-input-4-aa48c097ad54>", line 1, in <module>
my_usrp.get_master_clock_rate(1)
RuntimeError: LookupError: IndexError: multi_usrp::mb_root(1) -
LookupError: IndexError: multi_usrp::mb_root(1) - path not found

Clearly the second device is not registered by the MultiUSRP method.
I found the C++ equivalent to this for the x series devices on the
usrp manual; which is:

uhd::device_addr_t
https://files.ettus.com/manual/classuhd_1_1device__addr__t.html
args
https://files.ettus.com/manual/namespaceprocess-lvbitx.html#a6105700373e342448ca66cbbdb9cf569("addr0=192.168.10.2,addr1=192.168.20.2");
uhd::usrp::multi_usrp::sptr
https://files.ettus.com/manual/classuhd_1_1usrp_1_1multi__usrp.html#a9d9112f5eac0b53a721f2a6c97021fc1
usrp = uhd::usrp::multi_usrp::make
https://files.ettus.com/manual/classuhd_1_1usrp_1_1multi__usrp.html#af0d3809a8f8dcd3c962ad5b9a0a6456c(args
https://files.ettus.com/manual/namespaceprocess-lvbitx.html#a6105700373e342448ca66cbbdb9cf569);

Have these methods been exposed to the python API? If yes, a quick
example would be helpful.

Thanks very much.

Unless something has changed, you can't have more than 1 B2xx in a
single multi-usrp object.


USRP-users mailing list
USRP-users@lists.ettus.com
http://lists.ettus.com/mailman/listinfo/usrp-users_lists.ettus.com

--
Joel

Joeal Subash
Research Fellow

Space Environment and Radio Engineering (SERENE) Group
Gisbert Kapp Bldg
University of Birmingham
Edgbaston Birmingham B15 2TT

j.subash@bham.ac.uk


USRP-users mailing list
USRP-users@lists.ettus.com
http://lists.ettus.com/mailman/listinfo/usrp-users_lists.ettus.com

On 11/12/2018 09:40 AM, J Subash via USRP-users wrote: > > Hi, > > Hope you're doing well. > > Attached is a setup to record signals at 380MHz and 2.4Ghz with two > B200's. The aim is to sync the devices using the 10Mhz and 1PPS > provided from an external source to both devices. > > Looking on pointers on how to sync the two devices (meaning trigger > the data recording on both devices at the same time). Which API > functions would enable us to achieve this as closely as possible? > > Thanks. > > BW > > JS > There is a restriction that you can only have a single B2xx device in a multi_usrp object, so, you'll need two objects. So, create two multi_usrp objects--one for each device. Use a wait loop on ONE of those devices for the get_time_last_pps() to change, and THEN use set_time_next_pps() on BOTH devices to reset the clock to the same value. Then use timed streaming on both devices to cause streaming to start at some time in the not-too-distant future. > On 17/10/2018 15:59, usrp-users@lists.ettus.com wrote: >> On 10/17/2018 10:53 AM, J Subash via USRP-users wrote: >>> >>> Hi, >>> >>> Hope you're doing well. I am new here and new to the USRP API. >>> Attached is a setup to record signals at 380MHz and 2.4Ghz on two >>> B200's. The aim is to sync the devices using the 10Mhz and 1PPS >>> provided from an external source to both devices. >>> >>> Using the python API to achieve this and here is a snippet used to >>> test multiple-usrp >>> >>> In [1]: import uhd >>> In [2]: my_usrp = uhd.usrp.MultiUSRP("serial0=xxx310C,serial1=xxx311F") >>> In [3]: my_usrp.get_master_clock_rate(0) >>> Out[3]: 16000000.0 >>> In [4]: my_usrp.get_master_clock_rate(1) >>> Traceback (most recent call last): File >>> "<ipython-input-4-aa48c097ad54>", line 1, in <module> >>> my_usrp.get_master_clock_rate(1) >>> RuntimeError: LookupError: IndexError: multi_usrp::mb_root(1) - >>> LookupError: IndexError: multi_usrp::mb_root(1) - path not found >>> >>> Clearly the second device is not registered by the MultiUSRP method. >>> I found the C++ equivalent to this for the x series devices on the >>> usrp manual; which is: >>> >>> uhd::device_addr_t >>> <https://files.ettus.com/manual/classuhd_1_1device__addr__t.html> >>> args >>> <https://files.ettus.com/manual/namespaceprocess-lvbitx.html#a6105700373e342448ca66cbbdb9cf569>("addr0=192.168.10.2,addr1=192.168.20.2"); >>> uhd::usrp::multi_usrp::sptr >>> <https://files.ettus.com/manual/classuhd_1_1usrp_1_1multi__usrp.html#a9d9112f5eac0b53a721f2a6c97021fc1> >>> usrp = uhd::usrp::multi_usrp::make >>> <https://files.ettus.com/manual/classuhd_1_1usrp_1_1multi__usrp.html#af0d3809a8f8dcd3c962ad5b9a0a6456c>(args >>> <https://files.ettus.com/manual/namespaceprocess-lvbitx.html#a6105700373e342448ca66cbbdb9cf569>); >>> >>> >>> Have these methods been exposed to the python API? If yes, a quick >>> example would be helpful. >>> >>> Thanks very much. >>> >>> >> Unless something has changed, you can't have more than 1 B2xx in a >> single multi-usrp object. >> >> >> >> _______________________________________________ >> USRP-users mailing list >> USRP-users@lists.ettus.com >> http://lists.ettus.com/mailman/listinfo/usrp-users_lists.ettus.com > -- > Joel > > Joeal Subash > Research Fellow > > Space Environment and Radio Engineering (SERENE) Group > Gisbert Kapp Bldg > University of Birmingham > Edgbaston Birmingham B15 2TT > > j.subash@bham.ac.uk > > > _______________________________________________ > USRP-users mailing list > USRP-users@lists.ettus.com > http://lists.ettus.com/mailman/listinfo/usrp-users_lists.ettus.com