Changes between Initial Version and Version 1 of Tutorials/Wireless/Basic Usage2


Ignore:
Timestamp:
Aug 3, 2020, 2:29:27 PM (4 years ago)
Author:
nilanjan
Comment:

Legend:

Unmodified
Added
Removed
Modified
  • Tutorials/Wireless/Basic Usage2

    v1 v1  
     1[[Include(WikiToC)]]
     2
     3== Basic usage ==
     4
     5=== Description ===
     6In this tutorial we'll demonstrate how to navigate from the COSMOS sandbox to a single SDR on a node and run an application to read samples from the SDR.
     7
     8=== Prerequisites ===
     9In order to access the test bed, create a reservation and have it approved by the reservation service. Access to the resources are granted after the reservation is confirmed. Please follow the process shown on [wiki:CosmosOverview/Workflow the COSMOS work flow page] to get started.
     10
     11=== Resources required ===
     12This tutorial can be run from sb1.cosmos-lab.org using one SDR - either a PCIe-based USRP 2974 or the network based N310.
     13
     14=== Tutorial Setup ===
     15
     16Follow the steps below to gain access to this console and set up your node with an appropriate image.
     17
     18{{{#!td colspan=2
     19 1. Sign up for a [https://cosmos-lab.org/portal-2/ COSMOS account].
     20 2. [GettingStarted#MakeaReservation Create a resource reservation] for sandbox 1.
     21 3. Once reservation is approved, [wiki:GettingStarted#LogintoyourReservation login into the console].
     22 4. Use OMF commands to [GettingStarted#ControlResourceswithOMF load baseline-uhd.ndz image] on your resource. Based on the type of SDR used follow the corresponding column.
     23}}}
     24|-
     25{{{#!td align=left style="background: #abd"
     26 USRP2974
     27}}}
     28{{{#!td align=left style="background: #acd"
     29 N310
     30}}}
     31|-
     32{{{#!td style="background: #abd"
     33 {{{#!shell
     34 omf load -i baseline-uhd.ndz -t sdr2-s1-lg1
     35 }}}
     36}}}
     37{{{#!td style="background: #acd"
     38 {{{#!shell
     39 omf load -i baseline-uhd.ndz -t srv1-lg1
     40 }}}
     41}}}
     42|-
     43{{{#!td colspan=2
     44 5. Once the node is successfully imaged, turn it on and check the status.
     45}}}
     46|-
     47{{{#!td align=left style="background: #abd"
     48 USRP2974
     49}}}
     50{{{#!td align=left style="background: #acd"
     51 N310
     52}}}
     53|-
     54{{{#!td style="background: #abd"
     55 {{{#!shell
     56 omf tell -a on -t sdr2-s1-lg1
     57 omf stat -t sdr2-s1-lg1
     58 }}}
     59}}}
     60{{{#!td  style="background: #acd"
     61 {{{#!shell
     62 omf tell -a on -t srv1-lg1
     63 omf stat -t srv1-lg1
     64 }}}
     65}}}
     66|-
     67{{{#!td colspan=2
     68 6. After giving it some time to power up and boot, ssh to the node
     69}}}
     70|-
     71{{{#!td align=left style="background: #abd"
     72 USRP2974
     73}}}
     74{{{#!td align=left style="background: #acd"
     75 N310
     76}}}
     77|-
     78{{{#!td style="background: #abd"
     79 {{{#!shell
     80 ssh root@sdr2-s1-lg1
     81 }}}
     82 When opening a terminal into console.sb1.cosmos-lab.org [wiki:/UserGuide/RemoteAccess/SshTunnel set up a tunnel] from localhost:5002 to sdr2-s1-lg1.sb1.cosmos-lab.org:9002. This will be used by the web app to connect to a server running on the USRP 2974(Krypton)'s host.
     83}}}
     84{{{#!td style="background: #acd"
     85 {{{#!shell
     86 ssh root@srv1-lg1
     87 }}}
     88 When opening a terminal into console.sb1.cosmos-lab.org [wiki:/UserGuide/RemoteAccess/SshTunnel set up a tunnel] from localhost:5002 to srv1-lg1.sb1.cosmos-lab.org:9002.
     89 This will be used by the web app to connect to a server running on the srv1-lg1.
     90}}}
     91
     92=== Experiment Execution ===
     93
     94==== Configure and detect the radio ====
     95
     96The USRP 2974 is a PCIe based SDR while the N310 is network based. The instructions are slightly different for setting up communications to each type of SDR. Please follow the appropriate column.
     97
     98{{{#!td align=left style="background: #abd"
     99 USRP2974
     100}}}
     101{{{#!td align=left style="background: #acd"
     102 N310
     103}}}
     104|-
     105{{{#!td style="background: #abd"
     106* The USRP 2974 requires a PCIe driver to control the FPGA with the embedded PC. In the provided images, this will load automatically on boot. If it has issues, you can run it manually via
     107{{{#!shell
     108systemctl restart niusrprio.service
     109}}}
     110
     111 Detailed steps for driver installation and radio detection are on the [Resources/Notes/KryptonUsage Krypton usage page]. There is also a trouble shooting section at the bottom on that page to update the Krypton's internal firmware if necessary.
     112
     113* Run ''uhd_find_devices' and check if the X310 is detected
     114{{{#!shell
     115uhd_find_devices --args="type=x300"
     116}}}
     117
     118* Use the ''uhd_usrp_probe'' command to get more details on the x300. Specifying ''resource=rio0'' ensures only the directly connected radio is probed, instead of the radios on the network.
     119{{{#!shell
     120uhd_usrp_probe --args="resource=rio0,type=x300"
     121}}}
     122
     123 }}}
     124{{{#!td  style="background: #acd"
     125* The N310 requires a network interface for control. Setting up this interface is done with the standard network tools. Detailed instructions are provided on the [wiki:Resources/Notes/N310Usage N310 usage page].
     126
     127* Display all the network interfaces
     128{{{#!shell
     129ifconfig -a
     130}}}
     131* Configure the interface and network buffers
     132{{{#!shell
     133ifconfig eno1 10.115.1.1 netmask 255.255.0.0 mtu 8000
     134sysctl -w net.core.wmem_max=62500000
     135sysctl -w net.core.rmem_max=62500000
     136}}}
     137
     138
     139* Run ''uhd_find_devices' to find all the network based SDRs
     140{{{#!shell
     141uhd_find_devices --args="type=n3xx"
     142}}}
     143
     144* Use the ''uhd_usrp_probe'' command to get more details.
     145{{{#!shell
     146uhd_usrp_probe --args="mgmt_addr=10.113.2.1,addr=10.115.2.1"
     147}}}
     148
     149
     150}}}
     151
     152
     153
     154
     155
     156==== Configure and run the application ====
     157* Go back to SandBox1 console, download the application source code from the attachment section below and copy it to the SDR.
     158{{{#!shell-session
     159username@console:~$ wget https://wiki.cosmos-lab.org/raw-attachment/wiki/Tutorials/Wireless/BasicUsage/spectrum_view.tar.gz
     160username@console:~$ scp spectrum_view.tar.gz root@sdr2-s1-lg1:~/
     161}}}
     162
     163* Untar the source code.
     164{{{#!shell-session
     165root@sdr2-s1-lg1:~# tar -zxvf spectrum_view.tar.gz
     166root@sdr2-s1-lg1:~# cd SPECTRUM_VIEW
     167}}}
     168
     169* Please refer to the README file in SPECTRUM_VIEW directory for instructions on compiling and running the application. Before compiling install a few required libraries.
     170{{{#!shell-session
     171root@sdr2-s1-lg1:~/SPECTRUM_VIEW# apt update
     172root@sdr2-s1-lg1:~/SPECTRUM_VIEW# apt-get -y install libboost-all-dev liblog4cxx-dev cmake libfftw3-dev libxml2-dev libpopt-dev libsqlite3-dev pkg-config libxml2-utils gnulib
     173}}}
     174
     175
     176* Now compile and make the websocket library.
     177{{{#!shell-session
     178root@sdr2-s1-lg1:~/SPECTRUM_VIEW# make websock
     179}}}
     180
     181* Lastly compile the application - this will generate the executable ''app_read_sdr_samples'' that reads samples from the SDR.
     182{{{#!shell-session
     183root@sdr2-s1-lg1:~/SPECTRUM_VIEW# make
     184}}}
     185
     186* Run the application - this will start a server that listens for commands to configure the radio and stream received spectrum samples.
     187{{{#!shell-session
     188root@sdr2-s1-lg1:~/SPECTRUM_VIEW# ./app_read_sdr_samples
     189. INFO  21:17:51.808 (main.cpp:649) - Starting command server at 5180
     190 INFO  21:17:51.808 (main.cpp:171) - Starting websock server at 9002
     191.....
     192}}}
     193
     194
     195==== Visualize spectrum samples  ====
     196* Download the spectrum visualizer web client to your desktop. It is all in another zip file - ''spectrum_view.zip''. Unzip this folder and open ''spectrum_view.html'' in a Chrome browser.
     197
     198 When the viewer is first opened, the page display should be similar to the following
     199 || [[Image(wiki:Tutorials/Wireless/BasicUsage:basic_usage_spectrum_view_1.png, width=500px)]] ||
     200
     201{{{#!td align=left style="background: #abd"
     202 USRP2974
     203}}}
     204{{{#!td align=left style="background: #acd"
     205 N310
     206}}}
     207|-
     208{{{#!td align=left style="background: #abd"
     209* Set the localhost field to ''localhost:5002''. (Recall from the set up section to create a tunnel from localhost:5002 to sdr2-s1-lg1.sb1.cosmos-lab.org:9002 since the ''app_read_sdr_samples'' application has a websock server listening on that address:port.)
     210
     211 Set the device type field to ''type=x300''.
     212}}}
     213{{{#!td align=left style="background: #acd"
     214* Set the localhost field to ''localhost:5002''. (Recall from the set up section to create a tunnel from localhost:5002 to srv1-lg1.sb1.cosmos-lab.org:9002 since the ''app_read_sdr_samples'' application has a websock server listening on that address:port.)
     215
     216 Set the device type field to ''type=n3xx''.
     217}}}
     218
     219
     220
     221 Click the ''connect'' button once and a "Websocket Connection" statement should be output by the application.
     222
     223 Now click on ''make'' to create a device handle.
     224
     225 The RF radio parameters are already populated with default values for 2.4 GHz WIFI band. To view other active spectrum bands change the RATE, FREQ, GAIN fields.
     226
     227 || RF Parameter || value || description ||
     228 || RATE || 25e6 || Sampling rate ||
     229 || FREQ || 2400e6 || Center frequency ||
     230 || GAIN || 30 || Receive gain ||
     231 Then click on ''Submit'' to update the SDR.
     232
     233 Click on the ''Halted'' button to begin streaming samples from the radio to the browser. The button should change to ''Running'. This should display the spectrum if all went well.
     234 || [[Image(wiki:Tutorials/Wireless/BasicUsage:basic_usage_spectrum_wifi_sb1.png, width=500px)]] ||
     235
     236
     237==== Troubleshooting ====
     238* Check the troubleshooting section in the [https://wiki.cosmos-lab.org/wiki/Resources/Notes/KryptonUsage Krypton usage page] for common errors.