== Wideband Channel Sounding with USRP X310s == === Description === Channel sounding is the process of evaluating the characteristics of a radio environment. Evaluating the power delay profile (PDP) of a radio channel helps in developing statistical models for channel simulation. This tutorial demonstrates how to use the RFNoC channel sounder design for obtaining the PDP of channels up to 100MHz wide. An FPGA correlator module computes real time correlation power, and an averaging module, averages contiguous sets of PDP over time, and sends the result to host CPU. This design is compatible with 3rd generation Ettus USRP devices. This tutorial uses USRP X310s on ORBIT grid. === Prerequisites === In order to access the test bed, create a reservation and have it approved by the reservation service. Access to the resources is granted after the reservation is confirmed. Please follow the process shown on [wiki:cosmos_workflow the COSMOS work flow page] to get started. === Resources required === 2 host nodes and 2 USRP X310s are required for this experiment. USRP X310 devices in ORBIT grid are located in the massive MIMO mini-racks [https://www.orbit-lab.org/wiki/Hardware/bDomains/aGrid#Massive-MIMOmini-racks]. === Execution === ==== Imaging the host nodes ==== Determine the set of nodes that you're using. If you have a topology assigned, it will be entered in the form "system:topo:group-red" for example. * Load channel-sounder.ndz on a pair of nodes {{{ prasanthi@console.grid:~$ omf load -i channel-sounder.ndz -t node19-1,node20-1 }}} or if you were assigned a topology, {{{ prasanthi@console.grid:~$ omf load -i channel-sounder.ndz -t system:topo:group-red }}} * Turn the nodes on {{{ prasanthi@console.grid:~$ omf tell -a on -t node19-1,node20-1 }}} or {{{ prasanthi@console.grid:~$ omf tell -a on -t system:topo:group-red }}} * Check the status {{{ prasanthi@console.grid:~$ omf stat -t node19-1,node20-1 }}} or {{{ prasanthi@console.grid:~$ omf stat -t system:topo:group-red }}} {{{ ----------------------------------------------- Node: node19-1.grid.orbit-lab.org State: POWERON Node: node20-1.grid.orbit-lab.org State: POWERON ----------------------------------------------- }}} * ssh to the nodes {{{ prasanthi@console.grid:~$ ssh root@node19-1 }}} ==== Preparing the USRPs ==== * Pick 2 USRP X310s from the MIMO racks 23-1...8, 23-11...18, 24-1...8, 24-11...18. If you are using a topology, USRPs are assigned by default. For example, group-red uses 23-16 as TX and 24-16 as RX. * Check if USRPs have the modules required for the experiment by running uhd_usrp_probe on each on of them. {{{ root@node19-1:~# uhd_usrp_probe --args="addr=10.10.23.16" }}} {{{ | | _____________________________________________________ | | / | | | RFNoC blocks on this device: | | | | | | * DmaFIFO_0 | | | * Radio_0 | | | * Radio_1 | | | * DDC_0 | | | * DUC_0 | | | * Corrmag63avg8k_0 | | | * Spreader_0 | | | * SpecSense2k_0 | | | * FIFO_0 | | | * FIFO_1 }}} If you see the above at the end of uhd_usrp_probe output, the USRPs are ready. * If not, load the required image using uhd_image_loader {{{ root@node19-1:~# uhd_image_loader --args="addr=10.10.23.16,type=x300" --fpga-path=""spreader_corr_specsense_uhd_3_14.bit" }}} ==== Set up web based streaming ==== * Set up SSH tunnel from your local port 5100 to grid.orbit-lab.org:5100 {{{ ssh -L 5100:grid.orbit-lab.org:5100 username@grid.orbit-lab.org }}} * Set up a web proxy for the receive node Use run-websock command to set up the proxy (this is required for remote web based streaming) {{{ prasanthi@console.grid:~$ run-websock 5100 10.10.1.19:5100 --daemon WARNING: no 'numpy' module, HyBi protocol will be slower WebSocket server settings: - Listen on :5100 - Flash security policy server - No SSL/TLS support (no cert file) - Backgrounding (daemon) }}} ==== Run the experiment * On TX * On RX * Download html and run === Run the experiment === * Run rfnoc_spec_sense_display on the receive node. The command below starts the application to receive spectrum sensing samples from 4 USRP X310s at 100MSPS. {{{ root@node1-19:~/uhd/host/build/examples# ./rfnoc_spec_sense_display --args="addr0=10.10.23.11,addr1=10.10.23.12,addr2=10.10.23.13,addr3=10.10.23.14,skip_ddc,skip_duc" --freq 5e9 --gain 15 --ddc-args="input_rate=200000000.0,output_rate=100000000.0" --num-usrp 4 --spec-sense-args="avg_size=256" }}} * Run rfnoc_spreader on the transmit node. The command below starts the application to send a 50MHz wide PN signal on node23-17. {{{ root@node14-20:~/uhd/host/build/examples# ./rfnoc_spreader_dmafifo --args="addr=10.10.24.11,skip_ddc,skip_duc" --freq 2e9 --gain 15 --duc-args="input_rate=100000000.0,output_rate=200000000.0" }}} * Download spec_sense_display.html and open it in your browser. Once you click the Start button, you should see power spectrum display as shown below. || [[Image(spec_sense_display.jpg)]]||