usrp-users@lists.ettus.com

Discussion and technical support related to USRP, UHD, RFNoC

View all threads

How to disconnect streamers on RFNoC graph

YN
Yang, Nan
Mon, Jan 26, 2026 10:51 PM

Hello UHD folks,

I’m trying to buffer all 4 channels tx/rx data on DRAM on X410. So my application does

  1. Connect tx_streamer to replay block and write samples to DRAM
  2. Disconnect tx_streamer
  3. Connect replay block to radio block
  4. Do tx and rx
  5. Disconnect radio blocks
  6. Connect replay block to rx_streamer and read samples

I don’t find the correct API for step 2. The uhd::rfnoc::rfnoc_graph::disconnect() function takes std::string &streamer_id, however, I can’t find a public API that returns a streamer_id. The connect() function accepts uhd::tx_streamer::sptr and uhd::rx_streamer::sptr, I wonder if disconnect() should accept same argument types.

If I skip step 2, I get an error in step 3.

Regards,
Nan

Hello UHD folks, I’m trying to buffer all 4 channels tx/rx data on DRAM on X410. So my application does 1. Connect tx_streamer to replay block and write samples to DRAM 2. Disconnect tx_streamer 3. Connect replay block to radio block 4. Do tx and rx 5. Disconnect radio blocks 6. Connect replay block to rx_streamer and read samples I don’t find the correct API for step 2. The uhd::rfnoc::rfnoc_graph::disconnect() function takes std::string &streamer_id, however, I can’t find a public API that returns a streamer_id. The connect() function accepts uhd::tx_streamer::sptr and uhd::rx_streamer::sptr, I wonder if disconnect() should accept same argument types. If I skip step 2, I get an error in step 3. Regards, Nan
RK
Rob Kossler
Mon, Jan 26, 2026 11:02 PM

I'm not sure but I seem to recall that the streamer ID could not be queried
but that it used a naming convention (something like "tx_streamer_1") that
you could guess and use to successfully disconnect the graph. Perhaps if
you log DEBUG or TRACE level messages (or inspect Ettus code), you can see
what the stream ID is.  I know that this is not the right answer, but it
might get you by if the API is missing the needed functions to query the ID.

Rob

On Mon, Jan 26, 2026 at 5:52 PM Yang, Nan via USRP-users <
usrp-users@lists.ettus.com> wrote:

Hello UHD folks,

I’m trying to buffer all 4 channels tx/rx data on DRAM on X410. So my
application does

1. Connect tx_streamer to replay block and write samples to DRAM
2. Disconnect tx_streamer
3. Connect replay block to radio block
4. Do tx and rx
5. Disconnect radio blocks
6. Connect replay block to rx_streamer and read samples

I don’t find the correct API for step 2. The
uhd::rfnoc::rfnoc_graph::disconnect() function takes std::string
&streamer_id, however, I can’t find a public API that returns a
streamer_id. The connect() function accepts uhd::tx_streamer::sptr and
uhd::rx_streamer::sptr, I wonder if disconnect() should accept same
argument types.

If I skip step 2, I get an error in step 3.

Regards,

Nan


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

I'm not sure but I seem to recall that the streamer ID could not be queried but that it used a naming convention (something like "tx_streamer_1") that you could guess and use to successfully disconnect the graph. Perhaps if you log DEBUG or TRACE level messages (or inspect Ettus code), you can see what the stream ID is. I know that this is not the right answer, but it might get you by if the API is missing the needed functions to query the ID. Rob On Mon, Jan 26, 2026 at 5:52 PM Yang, Nan via USRP-users < usrp-users@lists.ettus.com> wrote: > Hello UHD folks, > > > > I’m trying to buffer all 4 channels tx/rx data on DRAM on X410. So my > application does > > 1. Connect tx_streamer to replay block and write samples to DRAM > 2. Disconnect tx_streamer > 3. Connect replay block to radio block > 4. Do tx and rx > 5. Disconnect radio blocks > 6. Connect replay block to rx_streamer and read samples > > > > I don’t find the correct API for step 2. The > uhd::rfnoc::rfnoc_graph::disconnect() function takes std::string > &streamer_id, however, I can’t find a public API that returns a > streamer_id. The connect() function accepts uhd::tx_streamer::sptr and > uhd::rx_streamer::sptr, I wonder if disconnect() should accept same > argument types. > > > > If I skip step 2, I get an error in step 3. > > > > Regards, > > Nan > > > _______________________________________________ > USRP-users mailing list -- usrp-users@lists.ettus.com > To unsubscribe send an email to usrp-users-leave@lists.ettus.com >
YN
Yang, Nan
Thu, Jan 29, 2026 7:59 AM

Hi Rob,

Thank you for the suggestion. The ID is “TxStreamer#0”. I also found that disconnecting a streamer does not fully restore its status so I need to create new streamers every time. This works for me now. I opened an issuehttps://github.com/EttusResearch/uhd/issues/903 though.

Regards,
Nan

From: Rob Kossler rkossler@nd.edu
Sent: Tuesday, January 27, 2026 7:02 AM
To: Yang, Nan nan.yang@emerson.com
Cc: usrp-users@lists.ettus.com
Subject: [EXTERNAL] Re: [USRP-users] How to disconnect streamers on RFNoC graph

I'm not sure but I seem to recall that the streamer ID could not be queried but that it used a naming convention (something like "tx_streamer_1") that you could guess and use to successfully disconnect the graph. Perhaps if you log DEBUG or TRACE level messages (or inspect Ettus code), you can see what the stream ID is.  I know that this is not the right answer, but it might get you by if the API is missing the needed functions to query the ID.

Rob

On Mon, Jan 26, 2026 at 5:52 PM Yang, Nan via USRP-users <usrp-users@lists.ettus.commailto:usrp-users@lists.ettus.com> wrote:
Hello UHD folks,

I’m trying to buffer all 4 channels tx/rx data on DRAM on X410. So my application does

  1. Connect tx_streamer to replay block and write samples to DRAM
  2. Disconnect tx_streamer
  3. Connect replay block to radio block
  4. Do tx and rx
  5. Disconnect radio blocks
  6. Connect replay block to rx_streamer and read samples

I don’t find the correct API for step 2. The uhd::rfnoc::rfnoc_graph::disconnect() function takes std::string &streamer_id, however, I can’t find a public API that returns a streamer_id. The connect() function accepts uhd::tx_streamer::sptr and uhd::rx_streamer::sptr, I wonder if disconnect() should accept same argument types.

If I skip step 2, I get an error in step 3.

Regards,
Nan


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

Hi Rob, Thank you for the suggestion. The ID is “TxStreamer#0”. I also found that disconnecting a streamer does not fully restore its status so I need to create new streamers every time. This works for me now. I opened an issue<https://github.com/EttusResearch/uhd/issues/903> though. Regards, Nan From: Rob Kossler <rkossler@nd.edu> Sent: Tuesday, January 27, 2026 7:02 AM To: Yang, Nan <nan.yang@emerson.com> Cc: usrp-users@lists.ettus.com Subject: [EXTERNAL] Re: [USRP-users] How to disconnect streamers on RFNoC graph I'm not sure but I seem to recall that the streamer ID could not be queried but that it used a naming convention (something like "tx_streamer_1") that you could guess and use to successfully disconnect the graph. Perhaps if you log DEBUG or TRACE level messages (or inspect Ettus code), you can see what the stream ID is. I know that this is not the right answer, but it might get you by if the API is missing the needed functions to query the ID. Rob On Mon, Jan 26, 2026 at 5:52 PM Yang, Nan via USRP-users <usrp-users@lists.ettus.com<mailto:usrp-users@lists.ettus.com>> wrote: Hello UHD folks, I’m trying to buffer all 4 channels tx/rx data on DRAM on X410. So my application does 1. Connect tx_streamer to replay block and write samples to DRAM 2. Disconnect tx_streamer 3. Connect replay block to radio block 4. Do tx and rx 5. Disconnect radio blocks 6. Connect replay block to rx_streamer and read samples I don’t find the correct API for step 2. The uhd::rfnoc::rfnoc_graph::disconnect() function takes std::string &streamer_id, however, I can’t find a public API that returns a streamer_id. The connect() function accepts uhd::tx_streamer::sptr and uhd::rx_streamer::sptr, I wonder if disconnect() should accept same argument types. If I skip step 2, I get an error in step 3. Regards, Nan _______________________________________________ USRP-users mailing list -- usrp-users@lists.ettus.com<mailto:usrp-users@lists.ettus.com> To unsubscribe send an email to usrp-users-leave@lists.ettus.com<mailto:usrp-users-leave@lists.ettus.com>
MB
Martin Braun
Thu, Feb 19, 2026 12:33 PM

Hi,

a short note that might also help: The Replay block has many input ports.
You could use one input port for the Tx Streamer, and a different one for
the radio.

Also, in your list of actions, I don't see a need to actually disconnect
the Tx Streamer. Sounds like you'd be fine just leaving it connected. I
find it helpful, when possible, to do all the connection setup first, then
call commit(), and then only do streaming stuff (but yes, there are
scenarios where that doesn't work and then disconnecting is totally fine).

As for disconnecting: When you destroy the streamer object, it will get
properly disconnected. That is typically the approach I would recommend if
you really need to disconnect streamers.

--M

On Thu, Jan 29, 2026 at 9:00 AM Yang, Nan via USRP-users <
usrp-users@lists.ettus.com> wrote:

Hi Rob,

Thank you for the suggestion. The ID is “TxStreamer#0”. I also found that
disconnecting a streamer does not fully restore its status so I need to
create new streamers every time. This works for me now. I opened an issue
https://github.com/EttusResearch/uhd/issues/903 though.

Regards,

Nan

From: Rob Kossler rkossler@nd.edu
Sent: Tuesday, January 27, 2026 7:02 AM
To: Yang, Nan nan.yang@emerson.com
Cc: usrp-users@lists.ettus.com
Subject: [EXTERNAL] Re: [USRP-users] How to disconnect streamers on
RFNoC graph

I'm not sure but I seem to recall that the streamer ID could not be
queried but that it used a naming convention (something like
"tx_streamer_1") that you could guess and use to successfully disconnect
the graph. Perhaps if you log DEBUG or TRACE level messages (or inspect
Ettus code), you can see what the stream ID is.  I know that this is not
the right answer, but it might get you by if the API is missing the needed
functions to query the ID.

Rob

On Mon, Jan 26, 2026 at 5:52 PM Yang, Nan via USRP-users <
usrp-users@lists.ettus.com> wrote:

Hello UHD folks,

I’m trying to buffer all 4 channels tx/rx data on DRAM on X410. So my
application does

1. Connect tx_streamer to replay block and write samples to DRAM
2. Disconnect tx_streamer
3. Connect replay block to radio block
4. Do tx and rx
5. Disconnect radio blocks
6. Connect replay block to rx_streamer and read samples

I don’t find the correct API for step 2. The
uhd::rfnoc::rfnoc_graph::disconnect() function takes std::string
&streamer_id, however, I can’t find a public API that returns a
streamer_id. The connect() function accepts uhd::tx_streamer::sptr and
uhd::rx_streamer::sptr, I wonder if disconnect() should accept same
argument types.

If I skip step 2, I get an error in step 3.

Regards,

Nan


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


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

Hi, a short note that might also help: The Replay block has many input ports. You could use one input port for the Tx Streamer, and a different one for the radio. Also, in your list of actions, I don't see a need to actually disconnect the Tx Streamer. Sounds like you'd be fine just leaving it connected. I find it helpful, when possible, to do all the connection setup first, then call commit(), and then only do streaming stuff (but yes, there are scenarios where that doesn't work and then disconnecting is totally fine). As for disconnecting: When you destroy the streamer object, it will get properly disconnected. That is typically the approach I would recommend if you really need to disconnect streamers. --M On Thu, Jan 29, 2026 at 9:00 AM Yang, Nan via USRP-users < usrp-users@lists.ettus.com> wrote: > Hi Rob, > > > > Thank you for the suggestion. The ID is “TxStreamer#0”. I also found that > disconnecting a streamer does not fully restore its status so I need to > create new streamers every time. This works for me now. I opened an issue > <https://github.com/EttusResearch/uhd/issues/903> though. > > > > Regards, > > Nan > > > > *From:* Rob Kossler <rkossler@nd.edu> > *Sent:* Tuesday, January 27, 2026 7:02 AM > *To:* Yang, Nan <nan.yang@emerson.com> > *Cc:* usrp-users@lists.ettus.com > *Subject:* [EXTERNAL] Re: [USRP-users] How to disconnect streamers on > RFNoC graph > > > > I'm not sure but I seem to recall that the streamer ID could not be > queried but that it used a naming convention (something like > "tx_streamer_1") that you could guess and use to successfully disconnect > the graph. Perhaps if you log DEBUG or TRACE level messages (or inspect > Ettus code), you can see what the stream ID is. I know that this is not > the right answer, but it might get you by if the API is missing the needed > functions to query the ID. > > > > Rob > > > > On Mon, Jan 26, 2026 at 5:52 PM Yang, Nan via USRP-users < > usrp-users@lists.ettus.com> wrote: > > Hello UHD folks, > > > > I’m trying to buffer all 4 channels tx/rx data on DRAM on X410. So my > application does > > 1. Connect tx_streamer to replay block and write samples to DRAM > 2. Disconnect tx_streamer > 3. Connect replay block to radio block > 4. Do tx and rx > 5. Disconnect radio blocks > 6. Connect replay block to rx_streamer and read samples > > > > I don’t find the correct API for step 2. The > uhd::rfnoc::rfnoc_graph::disconnect() function takes std::string > &streamer_id, however, I can’t find a public API that returns a > streamer_id. The connect() function accepts uhd::tx_streamer::sptr and > uhd::rx_streamer::sptr, I wonder if disconnect() should accept same > argument types. > > > > If I skip step 2, I get an error in step 3. > > > > Regards, > > Nan > > > > _______________________________________________ > USRP-users mailing list -- usrp-users@lists.ettus.com > To unsubscribe send an email to usrp-users-leave@lists.ettus.com > > _______________________________________________ > USRP-users mailing list -- usrp-users@lists.ettus.com > To unsubscribe send an email to usrp-users-leave@lists.ettus.com >