wiki:Tutorials/k0SDR/Tutorial02

Version 1 (modified by nilanjan, 10 years ago) ( diff )

OFDM radio example with GNURADIO benchmark scripts

Description

This example is similar to the simple radio example using GNU Radio; however, this utilizes an OFDM transmitter and receiver. In this tutorial we'll also use another node as a spectrum analyzer to verify OFDM transmission.

Hardware / Software Resources utilized

  1. Grid nodes with a USRP connect via Ethernet.
  2. baseline-12-04-gnu.ndz: disk image loaded onto nodes. This image has all the precompiled - software required to configure the USRP N210s and all the required GNU Radio software libraries. The USRP N210's interface with the node is already configured.
  3. GNU Radio - software library to create SDR. Click here for additional info.
  4. USRP N210 - hardware platform for SDR. Click here for more info.

Set up

  • After logging into grid console, make sure all nodes are turned off
    nilanjan@console.grid:~$ omf tell -a offh -t system:topo:all
    
  • Verify state of node before continuing. Make sure all nodes are in the POWEROFF state.
    nilanjan@console.grid:~$ omf stat
    
  • Image the node to use as a spectrum analyzer - check inventory status to find a node with a USRP N210. In this example we'll use the node 19-19. Load the image baseline-12-04-gnu.ndz and then turn the node on.
    nilanjan@console.grid:~$ omf load -i baseline-12-04-gnu.ndz -t node19-19
    :
    :
    :
    nilanjan@console.grid:~$ omf tell -a on -t node19-19
    
  • Once this node is on, ssh into the node, run the ascii-art spectrum analyzer and leave this running.
    nilanjan@console.grid:~$ ssh root@node19-19
    root@node19-19:~# cd uhd/host/build/examples/
    root@node19-19:~/uhd/host/build/examples# ./rx_ascii_art_dft --freq 2400e6 --rate 8e6 --gain 15 --ref-lvl -40 --dyn-rng 70
    
  • Find 2 other nodes with N210s for the OFDM radio and image with baseline-12-04-gnu.ndz. In this example we'll use node19-20 and node20-19.
    nilanjan@console.grid:~$ omf load -i baseline-12-04-gnu.ndz -t node19-20,node20-19
    :
    :
    :
    nilanjan@console.grid:~$ omf tell -a on -t system:topo:imaged
    

Running OEDL script

  • Run the experiment script using the following OMF command and aurguments
    nilanjan@console.grid:~$ omf exec system:exp:ofdm-benchmark -- --bandwidth 1M --modulation qpsk --freq 2401M
    
     INFO NodeHandler: OMF Experiment Controller 5.4 (git 3fb37b9)
     INFO NodeHandler: Reading configuration file /etc/omf-expctl-5.4/services.yaml
     INFO NodeHandler: Add domain http - http://internal1.orbit-lab.org:5054/
     INFO NodeHandler: Add domain http - http://repository1.orbit-lab.org:5054/
     INFO NodeHandler: Slice ID: default_slice (default)
     INFO NodeHandler: Experiment ID: default_slice-2014-08-07t09.52.51.485-04.00
     INFO NodeHandler: Message authentication is disabled
     INFO Experiment: load system:exp:stdlib
     INFO property.resetDelay: resetDelay = 230 (Fixnum)
     INFO property.resetTries: resetTries = 1 (Fixnum)
     INFO Experiment: load system:exp:eventlib
     INFO Experiment: load system:exp:winlib
     INFO Experiment: load system:exp:ofdm-benchmark
     INFO property.bandwidth: bandwidth = "1M" (String)
     INFO property.modulation: modulation = "qpsk" (String)
     INFO property.freq: freq = "2401M" (String)
     INFO property.rxgain: rxgain = "25" (String)
     INFO property.txgain: txgain = "25" (String)
     INFO property.txamplitude: txamplitude = "0.7" (String)
     INFO property.runtime: runtime = 10 (Fixnum)
     INFO Topology: Loaded topology '/tmp/pxe_slice-2014-08-07t09.06.49.229-04.00-topo-success'.
     INFO Topology: Loaded topology 'system:topo:imaged'.
    TX: node19-20.grid.orbit-lab.org
    RX: node20-19.grid.orbit-lab.org
     INFO ALL_UP_AND_INSTALLED: Event triggered. Starting the associated tasks.
     INFO exp: Request from Experiment Script: Wait for 2s....
     INFO exp: Start receiver app
     INFO exp: Request from Experiment Script: Wait for 2s....
     INFO exp: Start sending packets
     INFO exp: Request from Experiment Script: Wait for 10s....
     INFO exp: Stop transmitter and receiver
     INFO exp: Request from Experiment Script: Wait for 2s....
     INFO exp: done
     INFO EXPERIMENT_DONE: Event triggered. Starting the associated tasks.
     INFO NodeHandler:
     INFO NodeHandler: Shutting down experiment, please wait...
     INFO NodeHandler:
     INFO run: Experiment default_slice-2014-08-07t09.52.51.485-04.00 finished after 0:25
    
    nilanjan@console.grid:~$
    
  • While the above script runs monitor the spectrum analyzer for activity around the specified operating frequency. The spectrum should look similar to the following:
    -40
    
    
                                                                                          .
                                                                                          | .
                                                                                        !!|!|
    -60                                                                               |||||||
                                                                                      |||||||
                                                                                      |||||||
                                                                                      |||||||!
                                                                                      ||||||||
                                                                                      ||||||||
                                                                                      ||||||||
    -80                                                                               ||||||||
                                                                         .            ||||||||
                                                                         |           |||||||||
                                                        !                |           |||||||||
                                                      . |:        .     !|           |||||||||
                                                   .  | |||. :  . |     ||       :   ||||||||| : :.        :.
    -100                            ::     |  :    |. |!||||.| :|:| |   |||!|    |:| ||||||||| | ||  ::    ||
                                    ||   ..|!|| | .|| ||||||||!||||||:  |||||| ::|||||||||||||!|:||. ||: !|||..:::                 :
                          :     |.  ||  |||||||||.|||||||||||||||||||| ||||||||||||||||||||||||||||| |||!|||||||||| :   :..  . ! .||
          !   |::|| :::!. | :!.!||!|||! ||||||||||||||||||||||||||||||:|||||||||||||||||||||||||||||!||||||||||||||||..:|||::|.|||||!! .
     dBfs            2397MHz         2398MHz         2399MHz          2400MHz         2401MHz         2402MHz         2403MHz
    
Note: See TracWiki for help on using the wiki.