Discussion and technical support related to USRP, UHD, RFNoC
View all threadsAre there any examples of the X440 RFNoC configuration being set up locally
on the Arm to be able to accept CHDR packets over the dual 100 Gbe
interface?
I imagine it shouldn't be too difficult since the 1Gbe management port is
used with MPM to configure RFNoC so it seems very similar (configure on one
port, listen on a different one). I am just not sure what runtime
configuration items might need to be "fixed" in the local application such
that the machines out-of-the-loop can still talk with the device.
Any pointers or suggestions on how to accomplish this would be greatly
appreciated.
Thanks,
Brian
Answering myself partially, I see there is a concept of Remote Streaming:
https://uhd.readthedocs.io/en/latest/page_stream.html#stream_remote
The example goes over how to set it up for RX streams, but not for TX
streams. Is it not required for that direction since the USRP is sensitive
to all packets destined for its address?
I assume the application on the receiving side just opens the UDP port and
uses the uhd::utils::chdr::chdr_packet class to dissect or create
the packet that just gets sent over the socket?
Lastly, the example uses MultiUSRP - is it all the same for an RFNoC
implementation? Create the graph, commit it, issue the command?
Using the chdr_packet class, is there a way to know the endpoint ID to put
into the header for the TX side of things? Is that fixed and something I
could see from uhd_usrp_probe --tree?
Sorry for all the questions, I appreciate any insights.
Thanks,
Brian
On Fri, Apr 18, 2025 at 5:18 PM Brian Padalino bpadalino@gmail.com wrote:
Are there any examples of the X440 RFNoC configuration being set up
locally on the Arm to be able to accept CHDR packets over the dual 100 Gbe
interface?
I imagine it shouldn't be too difficult since the 1Gbe management port is
used with MPM to configure RFNoC so it seems very similar (configure on one
port, listen on a different one). I am just not sure what runtime
configuration items might need to be "fixed" in the local application such
that the machines out-of-the-loop can still talk with the device.
Any pointers or suggestions on how to accomplish this would be greatly
appreciated.
Thanks,
Brian
Hi Brian,
Remote UDP streaming is currently only supported for the RX streaming direction. TX Remote UDP streaming is currently not supported.
As far as I know, nothing has been announced regarding when TX Remote UDP streaming might be added.
Regarding RFNoC Remote streaming, it should be as you mentioned and be the same as MultiUSRP as far as I am aware.
Regards,
Niels.
Answering myself partially, I see there is a concept of Remote Streaming:
https://uhd.readthedocs.io/en/latest/page_stream.html#stream_remote
The example goes over how to set it up for RX streams, but not for TX
streams. Is it not required for that direction since the USRP is sensitive
to all packets destined for its address?
I assume the application on the receiving side just opens the UDP port and
uses the uhd::utils::chdr::chdr_packet class to dissect or create
the packet that just gets sent over the socket?
Lastly, the example uses MultiUSRP - is it all the same for an RFNoC
implementation? Create the graph, commit it, issue the command?
Using the chdr_packet class, is there a way to know the endpoint ID to put
into the header for the TX side of things? Is that fixed and something I
could see from uhd_usrp_probe --tree?
Sorry for all the questions, I appreciate any insights.
Thanks,
Brian