# USRP: Are RX and TX on the same or different channel for single daughterboard?

I've got a USRP X310, currently with just one daughterboard, a WBX-120. I'm writing some C which needs to operate the radio full duplex - I receive on RF A RX2 and transmit on RF A TX/RX.

But I'm confused as to how I identify which number channels I use, because I was under the impression that the function uhd_usrp_set_tx_subdev_spec essentially attached my TX path to a particular channel. So if I call uhd_usrp_set_rx_subdev_spec and then uhd_usrp_set_tx_subdev_spec with A:0 as the subdevice, am I getting RX on channel 0 and TX on channel 1, or am I getting both on channel 0?

What happens when I add the second daughterboard, to be an SBX-120? In pseudocode I will be calling:

uhd_usrp_set_rx_subdev_spec("A:0")
uhd_usrp_set_tx_subdev_spec("A:0")
uhd_usrp_set_rx_subdev_spec("B:0")
uhd_usrp_set_tx_subdev_spec("B:0")


Will these then be channels 0, 1, 2, 3? What happens if I change the order of calling uhd_usrp_set_xx_subdev_spec?

• which daughterboard type Jul 28 '17 at 15:44
• Hey Kevin, thanks for the edit, but OP doesn't mention he's using GNU Radio, and both the usage of the C API and the fact that he's manually setting subdev specs point out that's not the case :) so I removed the gnuradio tag! Jul 28 '17 at 18:05
• @MarcusMüller Whoops. Thanks for catching that. Jul 28 '17 at 18:15

So, if you just get two dual-channel RX streams with uhd_usrp_get_rx_stream, you just use a uhd_stream_args_t that has its n_channels field set to 2. Same for uhd_usrp_get_tx_stream.
• That doesn't make sense to me because, when using the uhd_rx_streamer_recv function, there is no parameter for the channel. The data coming in on the WBX and on the SBX are completely different. How is this distinguishable? Jul 31 '17 at 9:42