usrp-users@lists.ettus.com

Discussion and technical support related to USRP, UHD, RFNoC

View all threads

X440 Remote Streaming Transmit

BP
Brian Padalino
Tue, Jun 24, 2025 11:00 PM

I am trying to solve a remote streaming transmit problem and I am curious
how this might work in practice.

The setup is an X440 with some custom transmit blocks. I have my baseband
processing for transmission being done by 8 different computers - one for
each antenna. I currently have a similar block structure like the radios -
2x custom TX blocks, 4 antennas for each block. A single streaming endpoint
for each TX block, 4 outputs for each SEP.

I want to modify the X440 to start up with my graph committed and running,
and the 8 different computers can stream to my custom blocks to transmit
whenever they want.

The issue is going to be figuring out the routing for the endpoints, and
the sequence numbering for the packets coming in. Since all 8 machines will
be separate, they will not adhere to the sequence numbering for the single
endpoint.

Is the solution here to utilize a unique endpoint for each TX antenna and
just "know" what EPID will be assigned to that block? Is it always
deterministic for the EPID to be the same?

Is there a way to get a map of EPID and block ID? Are there other pitfalls
that might make this a terrible/impossible idea?

Sorry for the questions, thanks in advance for any insights.

Thanks,
Brian

I am trying to solve a remote streaming transmit problem and I am curious how this might work in practice. The setup is an X440 with some custom transmit blocks. I have my baseband processing for transmission being done by 8 different computers - one for each antenna. I currently have a similar block structure like the radios - 2x custom TX blocks, 4 antennas for each block. A single streaming endpoint for each TX block, 4 outputs for each SEP. I want to modify the X440 to start up with my graph committed and running, and the 8 different computers can stream to my custom blocks to transmit whenever they want. The issue is going to be figuring out the routing for the endpoints, and the sequence numbering for the packets coming in. Since all 8 machines will be separate, they will not adhere to the sequence numbering for the single endpoint. Is the solution here to utilize a unique endpoint for each TX antenna and just "know" what EPID will be assigned to that block? Is it always deterministic for the EPID to be the same? Is there a way to get a map of EPID and block ID? Are there other pitfalls that might make this a terrible/impossible idea? Sorry for the questions, thanks in advance for any insights. Thanks, Brian
MB
Martin Braun
Tue, Jul 1, 2025 12:44 PM

Hey Brian,

remote streaming to the USRP is not a supported feature; it's on our
roadmap, but with uncertain priority.

That said, if anyone can hack it in, it might be you. Here's some pointers:

  • You will need to handle flow control on the Tx side, which is also
    something we don't provide simple code for. If you just try and jam UDP
    packets into the device, best case you lose data randomly, worst case you
    jam something up.
  • ...that is, unless your blocks directly connect to the QSFPs and are
    doing something smart.
  • ...and if you do that, you also don't need to bother with EPIDs.
  • EPIDs don't map to blocks! They map to SEPs. Of course, in a
    fixed topology, blocks map 1:1 to SEPs, but there's still a distinction.
  • In our current UHD code, the EPID assignment is indeed deterministic, but
    we make no guarantees that it will not change. For example, we might make
    it multithreaded if we get too many people doing multi-device applications
    and don't like the startup times.
  • There is no API to read the EPID, but the log messages will report them.

--M

On Wed, Jun 25, 2025 at 1:00 AM Brian Padalino bpadalino@gmail.com wrote:

I am trying to solve a remote streaming transmit problem and I am curious
how this might work in practice.

The setup is an X440 with some custom transmit blocks. I have my baseband
processing for transmission being done by 8 different computers - one for
each antenna. I currently have a similar block structure like the radios -
2x custom TX blocks, 4 antennas for each block. A single streaming endpoint
for each TX block, 4 outputs for each SEP.

I want to modify the X440 to start up with my graph committed and running,
and the 8 different computers can stream to my custom blocks to transmit
whenever they want.

The issue is going to be figuring out the routing for the endpoints, and
the sequence numbering for the packets coming in. Since all 8 machines will
be separate, they will not adhere to the sequence numbering for the single
endpoint.

Is the solution here to utilize a unique endpoint for each TX antenna and
just "know" what EPID will be assigned to that block? Is it always
deterministic for the EPID to be the same?

Is there a way to get a map of EPID and block ID? Are there other pitfalls
that might make this a terrible/impossible idea?

Sorry for the questions, thanks in advance for any insights.

Thanks,
Brian


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

Hey Brian, remote streaming to the USRP is not a supported feature; it's on our roadmap, but with uncertain priority. That said, if anyone can hack it in, it might be you. Here's some pointers: - You will need to handle flow control on the Tx side, which is also something we don't provide simple code for. If you just try and jam UDP packets into the device, best case you lose data randomly, worst case you jam something up. - ...that is, unless your blocks directly connect to the QSFPs and are doing something smart. - ...and if you do that, you also don't need to bother with EPIDs. - EPIDs don't map to blocks! They map to SEPs. Of course, in a fixed topology, blocks map 1:1 to SEPs, but there's still a distinction. - In our current UHD code, the EPID assignment is indeed deterministic, but we make no guarantees that it will not change. For example, we might make it multithreaded if we get too many people doing multi-device applications and don't like the startup times. - There is no API to read the EPID, but the log messages will report them. --M On Wed, Jun 25, 2025 at 1:00 AM Brian Padalino <bpadalino@gmail.com> wrote: > I am trying to solve a remote streaming transmit problem and I am curious > how this might work in practice. > > The setup is an X440 with some custom transmit blocks. I have my baseband > processing for transmission being done by 8 different computers - one for > each antenna. I currently have a similar block structure like the radios - > 2x custom TX blocks, 4 antennas for each block. A single streaming endpoint > for each TX block, 4 outputs for each SEP. > > I want to modify the X440 to start up with my graph committed and running, > and the 8 different computers can stream to my custom blocks to transmit > whenever they want. > > The issue is going to be figuring out the routing for the endpoints, and > the sequence numbering for the packets coming in. Since all 8 machines will > be separate, they will not adhere to the sequence numbering for the single > endpoint. > > Is the solution here to utilize a unique endpoint for each TX antenna and > just "know" what EPID will be assigned to that block? Is it always > deterministic for the EPID to be the same? > > Is there a way to get a map of EPID and block ID? Are there other pitfalls > that might make this a terrible/impossible idea? > > Sorry for the questions, thanks in advance for any insights. > > Thanks, > Brian > _______________________________________________ > USRP-users mailing list -- usrp-users@lists.ettus.com > To unsubscribe send an email to usrp-users-leave@lists.ettus.com >