Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Has anyone using Tx and Rx on the same RFNOC radio block with success on UHD 4.7 release? #798

Closed
tomwts opened this issue Oct 22, 2024 · 1 comment

Comments

@tomwts
Copy link

tomwts commented Oct 22, 2024

I am having an issue using the same RFNOC radio block for Rx and Tx on X310 running UHD 4.7 release standard FPGA firmware.

My application has flow graph configured: Rx 0/Radio#1 ==> 0/DDC#1 ==> 0/DUC#1 ==> Tx 0/Radio#1

When it started, it always aborted with a "no route found" error message:

[ERROR] [RFNOC::GRAPH::DETAIL] Cannot create route from device:1/sep:2 and device:1/sep:2, no route was found!
Error: RuntimeError: Cannot create route from device:1/sep:2 and device:1/sep:2, no route was found!

I already had the back edge property set to true in duc to Tx radio connect API call.

Anyhow, my app works as long as the Rx and Tx radio block is different:
Rx 0/Radio#1 --> Tx 0/Radio#0 (worked)
Rx 0/Radio#0 --> Tx 0/Radio#1 (worked)

From uhd_usrp_probe output, the FPGA does have a route between 0/DDC#1 ==> 0/SEP#2 and 0/SEP#2 ==> 0/DUC#1.

I am not quite sure why it used device:1 instead of device:0 as reported in the error message "Cannot create route from device:1/sep:2 and device:1/sep:2, no route was found!".

uhd_usrp_probe output:

| _____________________________________________________
| /
| | Static connections on this device:
| |
| | * 0/SEP#0:0==>0/DUC#0:0
| | * 0/DUC#0:0==>0/Radio#0:0
| | * 0/Radio#0:0==>0/DDC#0:0
| | * 0/DDC#0:0==>0/SEP#0:0
| | * 0/Radio#0:1==>0/DDC#0:1
| | * 0/DDC#0:1==>0/SEP#1:0
| | * 0/SEP#2:0==>0/DUC#1:0
| | * 0/DUC#1:0==>0/Radio#1:0
| | * 0/Radio#1:0==>0/DDC#1:0
| | * 0/DDC#1:0==>0/SEP#2:0
| | * 0/Radio#1:1==>0/DDC#1:1
| | * 0/DDC#1:1==>0/SEP#3:0
| | * 0/SEP#4:0==>0/Replay#0:0
| | * 0/Replay#0:0==>0/SEP#4:0
| | * 0/SEP#5:0==>0/Replay#0:1
| | * 0/Replay#0:1==>0/SEP#5:0

Does anyone have had any success configuring the same radio block for Rx and Tx in a graph flow?

@tomwts
Copy link
Author

tomwts commented Oct 22, 2024

I believe one possible cause of the issue related to the WBX-120 radio daughter board, which has 2 receive ports selectable by specifying port :0 or :1. It has just 1 transmit port however.

My X310 has two WBX-120 boards. When my app configured to use the same radio for Rx and Tx. The Rx control needs to configure RX2 for the receive and TX/RX for the transmit. That is, configure "0/Radio#1:1" for receive and "0:/Radio#1:0" for transmit.

Unfortunately, there is no way to configure the radio block port ":1" for Rx operation as far as I can tell. Calling set_rx_antenna("RX2", 0) has no effect, calling set_rx_antenna("RX2", 1) rejected as invalid.

When rx_blockid set to "0/Radio#1", the following code works fine:

uhd::rfnoc::block_id_t rx_radio_ctrl_id(rx_blockid);
uhd::rfnoc::radio_control::sptr rx_radio_ctrl = graph->get_block<uhd::rfnoc::radio_control>(rx_radio_ctrl_id);

But when rx_blockid set to "0/Radio#1:1" including the port number, the code rejected the rx_blockid as invalid.

Does anyone know how to configure the RFNOC Radio to select "0/Radio#1:1" (radio 1, port 1) for receive operation?

Thanks,

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant