wiki:Tutorials/k0SDR/Tutorial02

Version 2 (modified by seskar, 10 years ago) ( diff )

OFDM radio example with GNURADIO benchmark scripts

Table of Contents

  1. SDR Tutorials
    1. Working with USRP2 - Universal Software Radio Peripheral
      1. Description
      2. Hardware / Software Resources utilized
      3. Set up
      4. Usage
      5. Capture waveform and record to file & add time-domain plot of waveform
      6. Troubleshooting
    1. Working with USRP X310
      1. Description
      2. Hardware / Software Resources Utilized
      3. Set Up
        1. Imaging
        2. Accessing the Nodes
        3. Configuring the Network Interface
        4. Setting up GNU Radio
      4. Building the GNU Radio Flowgraphs
        1. Transmitter
        2. Receiver
      5. Running the Experiment
      6. Troubleshooting
        1. xterm Executable Not Found
        2. FPGA Compatibility Mismatch
    1. Simple radio example with GNURADIO benchmark scripts
      1. Description
      2. Hardware / Software Resources utilized
      3. Set up
      4. Running GNU Radio benchmark scripts
      5. Outputs from transmitter and receiver
      6. Troubleshooting
    1. Simple radio example with GNURADIO benchmark scripts (OEDL)
      1. Description
      2. Hardware / Software Resources utilized
      3. Set up
      4. Running OEDL script and viewing results
      5. OEDL script
    1. OFDM radio example with GNURADIO benchmark scripts
      1. Description
      2. Hardware / Software Resources utilized
      3. Set up
      4. Running OEDL script
    1. Spectrum sensing with USRP2 and wiserd
      1. Description
      2. Hardware / Software Resources utilized
      3. Set up
      4. Generate signal source file using octave
      5. Set up transmitting node
      6. Set up receiving node(s)
    1. Spectrum sensing with USRP2 and wiserd (OEDL and OML)
      1. Description
      2. Hardware / Software Resources utilized
      3. Transmit predefined tone
      4. Record spectrum data to an OML file
      5. Performing the experiment using OEDL
    1. Transmitting wideband signals using USRP X310 and wiserd
      1. Description
      2. Transmitting a signal using wiserd
      3. Creating the signal
    1. Running DSC match script from the grid console
    1. Working with GNURadio and Nutaq ZeptoSDR
      1. Description
      2. Set up
      3. Run the GRC scripts
    1. Realtek 2832 EZCap - A Frugal SDR
      1. Prereqs
      2. A cheap spectrum analyzer
    1. MacSwitch (Obsolete)
      1. Prerequisites
      2. Start Mac Switch
    1. Zynq-based WISER platform - Start-up test
      1. Description
      2. Hardware / Software Resources utilized
      3. Set up
      4. Loading the Zedboard
      5. Running a start up test
    1. Zynq-based WISER platform - Spectrum Sensing
      1. Description
      2. Hardware / Software Resources utilized
      3. Set up
      4. Start spectrum sensing
    1. Zynq-based WISER platform - Spectrum sensing with multiple nodes (OEDL)
      1. Description
      2. Hardware / Software Resources utilized
      3. Spectrum sensing with an OEDL script
    1. Zynq-based WISER platform - Building the Firmware
      1. Description
      2. Getting the FPGA source code
      3. Building the FPGA design
      4. Building ARM core software
    1. Nutaq - PicoSDR start-up and configuration
      1. Description
      2. Set up
      3. Launch demo scripts
    1. Multi channel sample collection with x310
      1. Description
      2. Set up
      3. Collect samples
    1. Getting started with RFNoC X310
      1. Description
      2. Set up
      3. Find USRP X310s
      4. Program the FPGA
    1. Multi Channel Sample Processing & Visualization
      1. Hardware / software resources utilized
      2. Receive multi channel signal for processing and plotting
      3. Transmit a signal using a single usrp
    2. Plot the IQ Constellation of received signal
      1. Multi-channel Uhd STreamer (MUST)
      2. Description
      3. How it works (without going into the source-code :-D
      4. Source code & compilation
      5. Hardware interface application
      6. XML file
      7. Command server
      8. Usage Example
      9. Signal handler applications
      10. Tutorials
    1. Using two RFNoC streams simultaneously on a single USRP device
      1. Description
      2. Set Up
      3. Running the Simulation
    1. Using 2 transmit or 2 receive antennas simultaneously
      1. Description
      2. Set Up
      3. Running the Experiment
    1. Generate random transmissions emulating Primary Transmitters
      1. Description
      2. Set Up
      3. Running the Experiment
    1. RFNoC Spectrum Sensing
      1. Description
      2. Set Up
        1. Prepare Receive Node
        2. Prepare Receive USRPs
        3. Prepare Transmit Node
        4. Prepare Transmit USRP
        5. Set up SSH tunnel from your local port 5100 to grid.orbit-lab.org:5100
        6. Set up a web proxy for the receive node
      3. Run the experiment
    1. Full-Duplex Wireless using USRP N210
      1. Description
        1. Technical Report
        2. Updates
      2. Hardware / Software Resources Utilized
      3. Set Up
      4. Run the Experiments
      5. Example Experiment 1: A Real-Time Full-Duplex Radio with OFDM PHY (GNU …
      6. Example Experiment 2: A Simple Full-Duplex Radio Experiment (Terminal …
        1. In Terminal 1
          1. In Terminal 2 (SUB-20)
        2. A Secondary Transmitter Using Node13-8
        3. Acknowledgements
    1. LTE Traffic Trace Collection
      1. Description
      2. Setup OAI emulation framework
      3. Connecting UE to LTE network
      4. Connecting Multiple UEs
      5. Enabling OAI logging Module
      6. Application Design
      7. Running OAI using scripts
    1. Simple Radio Example with USRP X310 on ORBIT Sandbox 2
      1. Description
      2. Set Up
        1. Prepare the nodes
        2. Prepare network setup for USRP access
      3. Run the experiment
    1. Wideband Channel Sounding with USRP X310s
      1. Description
      2. Set Up
        1. Prepare Receive Node
        2. Prepare Receive USRPs
        3. Prepare Transmit Node
        4. Prepare Transmit USRP
        5. Set up SSH tunnel from your local port 5100 to grid.orbit-lab.org:5100
        6. Set up a web proxy for the receive node
      3. Run the experiment

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.