| | 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)]] || |