[[Include(WikiToC)]] == Spectrum visualization with Fosphor == === Description === This tutorial illustrates use of [https://archive.fosdem.org/2015/schedule/event/rfnocfosphor/attachments/slides/804/export/events/attachments/rfnocfosphor/slides/804/fosdem2015_rfnoc_fosphor.pdf RFNoC Fosphor block for spectrum visualization]. RFNoC Fosphor block is the FPGA accelerated version of [https://projects.osmocom.org/projects/sdr/wiki/Fosphor gr-fosphor (CPU/GPU version)]. As any other RFNoC blocks, RFNoC Fosphor can be instantiated on 3rd generation USRP devices, and can be used in conjunction with gnuradio-companion(GRC) on the host computer. This tutorial demonstrates GRC RFNoC Fosphor application on USRP-2974 in [wiki:Hardware/sdr/usrp2974 COSMOS testbed]. Running a GRC application on a testbed node requires using graphical user interface(GUI) on the node. This tutorial shows how to setup a MobaXterm session with X11 forwarding in order to access the GRC GUI. The node image used in this tutorial also has a desktop environment and chrome remote desktop server installed, enabling platform-independent remote desktop access. === 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 the COSMOS [wiki:GettingStarted getting started] page to get started. === Resources required === 1 USRP-2974 (sdr2-md1 or sdr2-s1-lg1) on COSMOS SB1 or COSMOS bed. === Tutorial Setup === Follow the steps below to gain access to the [wiki:/Architecture/Domains/cosmos_sb1 sandbox 1 console] and set up nodes with appropriate images. 1. If you don't have one already, sign up for a [https://www.cosmos-lab.org/portal-2/ COSMOS account] 1. [wiki:/GettingStarted#MakeaReservation Create a resource reservation] on sandbox 1 1. [wiki:/GettingStarted#LogintoyourReservation Login] into sandbox 1 console (console.sb1.cosmos-lab.org) with an SSH session. SSH session for COSMOS SB1 with MobaXterm can be setup as shown, with remote host = console.sb1.cosmos-lab.org, and username = your COSMOS username. X11 forwarding is enabled to access GUI. [[Image(mobaxterm_sb1_session.JPG, width=600px)]] 1. Make sure all the nodes and devices used in the experiment are turned off: {{{#!shell omf tell -a offh -t sdr2-s1-lg1 }}} 1. Load rfnoc_fosphor_uhd4_4.ndz on sdr2-s1-lg1. {{{#!shell omf load -i rfnoc_fosphor_uhd4_4.ndz -t sdr2-s1-lg1 }}} 1. Turn the SDR on and check the status {{{#!shell omf tell -a on -t sdr2-s1-lg1 }}} {{{#!shell omf stat -t sdr2-s1-lg1 }}} 1. Log into the SDR with -Y for X11 forwarding {{{#!shell ssh root@sdr2-s1-lg1 -Y }}} [[CollapsibleStart(Configure MobaXterm for node access)]] Another way to access the SDR is to set up a MobaXterm session directly to the SDR, with the console as the jump host. As shown in the pictures below, for the SSH session, use remote host = sdr2-s1-lg1.sb1.cosmos-lab.org username = root. Enable X11 forwarding in advanced settings. Set up jump host in network settings, with gateway host = console.sb1.cosmos-lab.org, username = your cosmos username. [[Image(nodessh.JPG, width=600px)]] [[Image(jumphost.png, width=600px)]] The following is displayed when this session runs. {{{#!shell ┌────────────────────────────────────────────────────────────────────┐ │ • MobaXterm 20.6 • │ │ (SSH client, X-server and networking tools) │ │ │ │ ➤ SSH session to root@sdr2-s1-lg1.sb1.cosmos-lab.org │ │ • SSH gateway : ✔ (myusername@console.sb1.cosmos-lab.org) │ │ • SSH compression : ✔ │ │ • SSH-browser : ✔ │ │ • X11-forwarding : ✔ (remote display is forwarded through SSH) │ │ • DISPLAY : ✔ (automatically set on remote server) │ │ │ │ ➤ For more info, ctrl+click on help or visit our website │ └────────────────────────────────────────────────────────────────────┘ Last login: Fri Dec 11 04:49:36 2020 from 10.106.0.21 root@sdr2-s1-lg1:~# }}} [[CollapsibleEnd]] === Experiment Execution === ==== RFNoC Fosphor FPGA image ==== Custom USRP-2974 FPGA image /bit/rfnoc3_15_fosphor_x310.lvbitx will be used for this tutorial. To use this image with a UHD or GRC application use the fpga-path argument as shown below. {{{#!shell uhd_usrp_probe --args="resource=RIO0,type=x300,fpga-path=/root/bit/rfnoc3_15_fosphor_x310.lvbitx" }}} Following are the blocks in rfnoc3_15_fosphor_x310.lvbitx {{{#!shell | | _____________________________________________________ | | / | | | 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 }}} ==== Run rfnoc-fosphor GRC application ==== {{{#!shell gnuradio-companion /root/gr-ettus/examples/rfnoc/rfnoc_fosphor.grc }}} {{{#!shell root@sdr2-s1-lg1:~# gnuradio-companion /root/gr-ettus/examples/rfnoc/rfnoc_fosphor.grc <<< Welcome to GNU Radio Companion 3.7.14.0 >>> Block paths: /usr/local/share/gnuradio/grc/blocks Loading: "/root/gr-ettus/examples/rfnoc/rfnoc_fosphor.grc" >>> Done }}} With X11 forwarding enabled, GRC should show up as below. Set Device Arguments in the Device3 block to "resource=RIO0,fpga-path=/root/bit/rfnoc3_15_fosphor_x310.lvbitx". [[Image(rfnoc_fosphor_grc.jpg, width=800px)]] Set center frequency, bandwidth and run the application to see spectrum display. || [[Image(rfnoc_fosphor_display.jpg, width=800px)]] || [[Image(rfnoc_fosphor_display_bed.jpg, width=800px)]] ||