usrp-users@lists.ettus.com

Discussion and technical support related to USRP, UHD, RFNoC

View all threads

using rfnoc_graph and usrp

J
jmaloyan@umass.edu
Fri, Feb 24, 2023 4:05 PM

Hello,

I am currently getting the following error, but I am lost as to how to work around it…

[ERROR] [RPC] Someone tried to claim this device again (From: 192.168.10.1)

[WARNING] [MPM.RPCServer] Someone tried to claim this device again (From: 192.168.10.1)

It appears the problem comes from instantiating an object uhd::rfnoc_graph, then, when this object already exists, I try to create a uhd::usrp::multi_usrp object. For example…

auto graph = uhd::rfnoc::rfnoc_graph::make(args);

uhd::usrp::multi_usrp::sptr usrp = uhd::usrp::multi_usrp::make("addr0=192.168.10.2");

It appears that trying to create both causes the error above to happen. However, I want to be able to create an rfnoc_graph and use multi_usrp to get and set the TOD on the ettus N321. How exactly can I work around this? I saw the rfnoc_graph has a function called “synchronize_devices()”, however, it does not seem this function can get and set the TOD as I need.

Thanks,

Joe

Hello, I am currently getting the following error, but I am lost as to how to work around it… `[ERROR] [RPC] Someone tried to claim this device again (From: 192.168.10.1)` `[WARNING] [MPM.RPCServer] Someone tried to claim this device again (From: 192.168.10.1)` It appears the problem comes from instantiating an object uhd::rfnoc_graph, then, when this object already exists, I try to create a uhd::usrp::multi_usrp object. For example… `auto graph = uhd::rfnoc::rfnoc_graph::make(args);` `uhd::usrp::multi_usrp::sptr usrp = uhd::usrp::multi_usrp::make("addr0=192.168.10.2");` It appears that trying to create both causes the error above to happen. However, I want to be able to create an rfnoc_graph and use multi_usrp to get and set the TOD on the ettus N321. How exactly can I work around this? I saw the rfnoc_graph has a function called “synchronize_devices()”, however, it does not seem this function can get and set the TOD as I need. Thanks, Joe
MD
Marcus D. Leech
Fri, Feb 24, 2023 6:29 PM

On 24/02/2023 11:05, jmaloyan@umass.edu wrote:

Hello,

I am currently getting the following error, but I am lost as to how to
work around it…

|[ERROR] [RPC] Someone tried to claim this device again (From:
192.168.10.1)|

|[WARNING] [MPM.RPCServer] Someone tried to claim this device again
(From: 192.168.10.1)|

It appears the problem comes from instantiating an object
uhd::rfnoc_graph, then, when this object already exists, I try to
create a uhd::usrp::multi_usrp object. For example…

|auto graph = uhd::rfnoc::rfnoc_graph::make(args);|

|uhd::usrp::multi_usrp::sptr usrp =
uhd::usrp::multi_usrp::make("addr0=192.168.10.2");|

It appears that trying to create both causes the error above to
happen. However, I want to be able to create an rfnoc_graph and use
multi_usrp to get and set the TOD on the ettus N321. How exactly can I
work around this? I saw the rfnoc_graph has a function called
“synchronize_devices()”, however, it does not seem this function can
get and set the TOD as I need.

Thanks,

Joe


USRP-users mailing list --usrp-users@lists.ettus.com
To unsubscribe send an email tousrp-users-leave@lists.ettus.com

You can't have two objects that "own" sessions to the device.
Mixing-and-matching multi_usrp and rfnoc objects isn't,
  near as I can tell, supported.

However, your use case of wanting to do "housekeeping" functions like
"set_time_next_pps()" is legitimate, and I'm not
  sure how that is supported via RFNoC.    Perhaps one of the RFNoC
gurus on here can shed some light?

Although, looking at the rfnoc_rx_to_file.cpp example, you can:

graph->get_mb_controller(0)->set_clock_source(ref);

So there's a "mb_controller" class that looks like it takes the same
"stuff" you'd expect from a multi_usrp.

On 24/02/2023 11:05, jmaloyan@umass.edu wrote: > > Hello, > > I am currently getting the following error, but I am lost as to how to > work around it… > > |[ERROR] [RPC] Someone tried to claim this device again (From: > 192.168.10.1)| > > |[WARNING] [MPM.RPCServer] Someone tried to claim this device again > (From: 192.168.10.1)| > > It appears the problem comes from instantiating an object > uhd::rfnoc_graph, then, when this object already exists, I try to > create a uhd::usrp::multi_usrp object. For example… > > |auto graph = uhd::rfnoc::rfnoc_graph::make(args);| > > |uhd::usrp::multi_usrp::sptr usrp = > uhd::usrp::multi_usrp::make("addr0=192.168.10.2");| > > It appears that trying to create both causes the error above to > happen. However, I want to be able to create an rfnoc_graph and use > multi_usrp to get and set the TOD on the ettus N321. How exactly can I > work around this? I saw the rfnoc_graph has a function called > “synchronize_devices()”, however, it does not seem this function can > get and set the TOD as I need. > > Thanks, > > Joe > > > _______________________________________________ > USRP-users mailing list --usrp-users@lists.ettus.com > To unsubscribe send an email tousrp-users-leave@lists.ettus.com You can't have two objects that "own" sessions to the device. Mixing-and-matching multi_usrp and rfnoc objects isn't,   near as I can tell, supported. However, your use case of wanting to do "housekeeping" functions like "set_time_next_pps()" is legitimate, and I'm not   sure how that is supported via RFNoC.    Perhaps one of the RFNoC gurus on here can shed some light? Although, looking at the rfnoc_rx_to_file.cpp example, you can: graph->get_mb_controller(0)->set_clock_source(ref); So there's a "mb_controller" class that looks like it takes the same "stuff" you'd expect from a multi_usrp.
MD
Marcus D. Leech
Fri, Feb 24, 2023 6:32 PM

On 24/02/2023 11:05, jmaloyan@umass.edu wrote:

Hello,

I am currently getting the following error, but I am lost as to how to
work around it…

|[ERROR] [RPC] Someone tried to claim this device again (From:
192.168.10.1)|

|[WARNING] [MPM.RPCServer] Someone tried to claim this device again
(From: 192.168.10.1)|

It appears the problem comes from instantiating an object
uhd::rfnoc_graph, then, when this object already exists, I try to
create a uhd::usrp::multi_usrp object. For example…

|auto graph = uhd::rfnoc::rfnoc_graph::make(args);|

|uhd::usrp::multi_usrp::sptr usrp =
uhd::usrp::multi_usrp::make("addr0=192.168.10.2");|

It appears that trying to create both causes the error above to
happen. However, I want to be able to create an rfnoc_graph and use
multi_usrp to get and set the TOD on the ettus N321. How exactly can I
work around this? I saw the rfnoc_graph has a function called
“synchronize_devices()”, however, it does not seem this function can
get and set the TOD as I need.

Thanks,

Joe


USRP-users mailing list --usrp-users@lists.ettus.com
To unsubscribe send an email tousrp-users-leave@lists.ettus.com

On 24/02/2023 11:05, jmaloyan@umass.edu wrote: > > Hello, > > I am currently getting the following error, but I am lost as to how to > work around it… > > |[ERROR] [RPC] Someone tried to claim this device again (From: > 192.168.10.1)| > > |[WARNING] [MPM.RPCServer] Someone tried to claim this device again > (From: 192.168.10.1)| > > It appears the problem comes from instantiating an object > uhd::rfnoc_graph, then, when this object already exists, I try to > create a uhd::usrp::multi_usrp object. For example… > > |auto graph = uhd::rfnoc::rfnoc_graph::make(args);| > > |uhd::usrp::multi_usrp::sptr usrp = > uhd::usrp::multi_usrp::make("addr0=192.168.10.2");| > > It appears that trying to create both causes the error above to > happen. However, I want to be able to create an rfnoc_graph and use > multi_usrp to get and set the TOD on the ettus N321. How exactly can I > work around this? I saw the rfnoc_graph has a function called > “synchronize_devices()”, however, it does not seem this function can > get and set the TOD as I need. > > Thanks, > > Joe > > > _______________________________________________ > USRP-users mailing list --usrp-users@lists.ettus.com > To unsubscribe send an email tousrp-users-leave@lists.ettus.com Also: https://files.ettus.com/manual/classuhd_1_1rfnoc_1_1mb__controller.html
J
jmaloyan@umass.edu
Fri, Feb 24, 2023 7:21 PM

i found that I needed to create a timekeeper, within the mb_controller. i.e

uhd::rfnoc::mb_controller::timekeeper::sptr tk = graph->get_mb_controller(0)->get_timekeeper(0);

This seems to do the trick. Im now getting a late error, but it is probably another kind of issue.

i found that I needed to create a timekeeper, within the mb_controller. i.e `uhd::rfnoc::mb_controller::timekeeper::sptr tk = graph->get_mb_controller(0)->get_timekeeper(0);` This seems to do the trick. Im now getting a late error, but it is probably another kind of issue.