== Using two RFNoC streams simultaneously on a single USRP device == === Description === This example shows how to run two concurrent streams (RX or TX) on a single USRP device using GNU Radio on Orbit Wireless Testbed. The example assumes usage of node 21-1 on the Grid, along with the USRP node 23-1. However, any node connected to a USRP X310 may be used instead. Information on SDR availability on particular nodes can be found on [https://www.orbit-lab.org/cPanel/controlPanel/start Orbit] by clicking on ''Status Page'', then on ''grid'', and then filtering the displayed nodes by SDR devices equipped. === Set Up === 1. Make a reservation on [https://www.orbit-lab.org/cPanel/controlPanel/start Orbit] to use the Grid. 2. Make sure the node of interest is turned off: {{{username@console.grid:~$ omf tell -a offh -t node21-1}}} 3. Load the ''rfnoc-tutorial.ndz'' image onto the node. Note that this process might take several minutes. {{{username@console.grid:~$ omf load -i rfnoc-tutorial.ndz -t node21-1}}} 4. Turn on the node. After issuing the "on" command, wait a couple of minutes for the node to boot up. {{{username@console.grid:~$ omf tell -a on -t node21-1}}} 5. Connect to the node using SSH with X11 tunneling enabled: {{{username@console.grid:~$ ssh -Y root@node21-1}}} === Running the Simulation === After the node is imaged, make sure the USRP device connected at 10.10.23.1 is imaged with the required RFNoC FPGA image. The implemented RFNoC blocks on the currently loaded image can be checked by running {{{uhd_usrp_probe --args "addr=10.10.23.1"}}} The RFNoC blocks will be shown at the very end of the listing that appears: {{{ _____________________________________________________ / | RFNoC blocks on this device: | | | * DmaFIFO_0 | | * Radio_0 | | * Radio_1 | | * DDC_0 | | * DUC_0 | | * FFT_0 | | * Window_0 | | * FIR_0 | | * SigGen_0 | | * KeepOneInN_0 | | * fosphor_0 | | * FIFO_0 | | * FIFO_1 }}} The blocks listed above are present in the ''usrp_x310_fpga_RFNOC_HG.bit'' image. If the required blocks are not listed, desired image can be loaded by running {{{uhd_image_loader --fpga-path /usr/local/share/uhd/images/usrp_x310_fpga_RFNOC_HG.bit --args "type=x300,addr=10.10.23.1"}}} When a new image is loaded, the USRP needs to be power cycled. In order to do this, run the following commands from the grid console (not from the node21-1 itself): {{{ username@console.grid:~$ omf tell -a offh -t node23-1 username@console.grid:~$ omf tell -a on -t node23-1 }}} Make sure that the GNU Radio Companion scheme is present in the home directory. The scheme shown in the image below can be found [http://www.orbit-lab.org/attachment/wiki/Tutorials/k0SDR/Tutorial21/rfnoc_rxtx_fft.grc here]. || [[Image(grc-scrot.png, width=1200px)]] || GNU Radio Companion may report an error in the scheme, but this is a common problem when RFNoC blocks are used in GRC. The scheme can be run by pressing ''F6''. The provided scheme contains two RFNoC chains, a simple single tone transmitter, and a receiver that performs FFT and averages it over time.