| 1 | [[Include(WikiToC)]] |
| 2 | |
| 3 | == Spectrum visualization with Fosphor == |
| 4 | |
| 5 | === Description === |
| 6 | |
| 7 | 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]. |
| 8 | |
| 9 | Running a GRC application on a testbed node requires using graphical user interface(GUI) over SSH. This tutorial also illustrates use of [https://mobaxterm.mobatek.net/ MobaXterm] and jumphost to setup X forwarding for accessing GUI over SSH. |
| 10 | |
| 11 | === Prerequisites === |
| 12 | 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. |
| 13 | |
| 14 | === Resources required === |
| 15 | 1 USRP-2974 (sdr2-md1 or sdr2-s1-lg1) on COSMOS SB1 or COSMOS bed. |
| 16 | === Tutorial Setup === |
| 17 | |
| 18 | Follow the steps below to gain access to the [wiki:/hardware/Domains/sb1 sandbox 1 console] and set up nodes with appropriate images. |
| 19 | 1. If you don't have one already, sign up for a [https://www.cosmos-lab.org/portal-2/ COSMOS account] |
| 20 | 1. [wiki:/GettingStarted#MakeaReservation Create a resource reservation] on sandbox 1 |
| 21 | 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. |
| 22 | [[Image(mobaxterm_sb1_session.JPG, width=600px)]] |
| 23 | 1. Make sure all the nodes and devices used in the experiment are turned off: |
| 24 | {{{#!shell |
| 25 | omf tell -a offh -t sdr2-s1-lg1 |
| 26 | }}} |
| 27 | 1. Load rfnoc_fosphor_3_15.ndz on sdr2-s1-lg1. |
| 28 | {{{#!shell |
| 29 | omf load -i rfnoc_fosphor_3_15.ndz -t sdr2-s1-lg1 |
| 30 | }}} |
| 31 | 1. Turn the SDR on and check the status |
| 32 | {{{#!shell |
| 33 | omf tell -a on -t sdr2-s1-lg1 |
| 34 | }}} |
| 35 | {{{#!shell |
| 36 | omf stat -t sdr2-s1-lg1 |
| 37 | }}} |
| 38 | 1. Log into the SDR with -Y for X11 forwarding |
| 39 | {{{#!shell |
| 40 | ssh root@sdr2-s1-lg1 -Y |
| 41 | }}} |
| 42 | ==== Configure !MobaXterm for node access ==== |
| 43 | 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. |
| 44 | |
| 45 | [[Image(nodessh.JPG, width=600px)]] |
| 46 | [[Image(jumphost.png, width=600px)]] |
| 47 | |
| 48 | The following is displayed when this session runs. |
| 49 | {{{#!shell |
| 50 | ┌────────────────────────────────────────────────────────────────────┐ |
| 51 | │ • MobaXterm 20.6 • │ |
| 52 | │ (SSH client, X-server and networking tools) │ |
| 53 | │ │ |
| 54 | │ ➤ SSH session to root@sdr2-s1-lg1.sb1.cosmos-lab.org │ |
| 55 | │ • SSH gateway : ✔ (myusername@console.sb1.cosmos-lab.org) │ |
| 56 | │ • SSH compression : ✔ │ |
| 57 | │ • SSH-browser : ✔ │ |
| 58 | │ • X11-forwarding : ✔ (remote display is forwarded through SSH) │ |
| 59 | │ • DISPLAY : ✔ (automatically set on remote server) │ |
| 60 | │ │ |
| 61 | │ ➤ For more info, ctrl+click on help or visit our website │ |
| 62 | └────────────────────────────────────────────────────────────────────┘ |
| 63 | |
| 64 | Last login: Fri Dec 11 04:49:36 2020 from 10.106.0.21 |
| 65 | root@sdr2-s1-lg1:~# |
| 66 | |
| 67 | }}} |
| 68 | |
| 69 | |
| 70 | === Experiment Execution === |
| 71 | |
| 72 | ==== RFNoC Fosphor FPGA image ==== |
| 73 | 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. |
| 74 | {{{#!shell |
| 75 | uhd_usrp_probe --args="resource=RIO0,type=x300,fpga-path=/root/bit/rfnoc3_15_fosphor_x310.lvbitx" |
| 76 | }}} |
| 77 | Following are the blocks in rfnoc3_15_fosphor_x310.lvbitx |
| 78 | {{{#!shell |
| 79 | | | _____________________________________________________ |
| 80 | | | / |
| 81 | | | | RFNoC blocks on this device: |
| 82 | | | | |
| 83 | | | | * DmaFIFO_0 |
| 84 | | | | * Radio_0 |
| 85 | | | | * Radio_1 |
| 86 | | | | * DDC_0 |
| 87 | | | | * DUC_0 |
| 88 | | | | * FFT_0 |
| 89 | | | | * Window_0 |
| 90 | | | | * FIR_0 |
| 91 | | | | * SigGen_0 |
| 92 | | | | * KeepOneInN_0 |
| 93 | | | | * fosphor_0 |
| 94 | | | | * FIFO_0 |
| 95 | | | | * FIFO_1 |
| 96 | }}} |
| 97 | |
| 98 | ==== Run rfnoc-fosphor GRC application ==== |
| 99 | {{{#!shell |
| 100 | gnuradio-companion /root/gr-ettus/examples/rfnoc/rfnoc_fosphor.grc |
| 101 | }}} |
| 102 | |
| 103 | {{{#!shell |
| 104 | root@sdr2-s1-lg1:~# gnuradio-companion /root/gr-ettus/examples/rfnoc/rfnoc_fosphor.grc |
| 105 | <<< Welcome to GNU Radio Companion 3.7.14.0 >>> |
| 106 | |
| 107 | Block paths: |
| 108 | /usr/local/share/gnuradio/grc/blocks |
| 109 | |
| 110 | Loading: "/root/gr-ettus/examples/rfnoc/rfnoc_fosphor.grc" |
| 111 | >>> Done |
| 112 | }}} |
| 113 | |
| 114 | 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". |
| 115 | |
| 116 | [[Image(rfnoc_fosphor_grc.jpg, width=800px)]] |
| 117 | |
| 118 | Set center frequency, bandwidth and run the application to see spectrum display. |
| 119 | |
| 120 | || [[Image(rfnoc_fosphor_display.jpg, width=800px)]] || [[Image(rfnoc_fosphor_display_bed.jpg, width=800px)]] || |