wiki:Tutorials/Wireless/GNURadioOFDM

Version 7 (modified by prasanthi, 3 years ago) ( diff )

Site Navigation

  1. COSMOS Testbed Overview
    1. Concepts
    1. Testbed Workflow
    1. Availability and Resource Status
    1. Events and Conferences
  2. Getting Started
    1. Make an Account
    2. Create and Configure SSH Keys
    3. Make a Reservation
    4. Log in to your Reservation
    5. Control Resources with OMF
    6. Run a Hello World Experiment
    7. Get Help and Support
  3. COSMOS/ORBIT User Guide
    1. The COSMOS Portal
    2. Connecting to the Testbed
    3. Running Experiments
    4. Policies and Support
    5. Quick Links
    1. Policies
    1. Account Creation
    1. Camera Streaming
    1. Scheduling and Reservations
    1. Disk Images
    1. Frequently Asked Questions
    1. Resource Control with OMF
  4. COSMOS Portal
    1. Your First Visit
    2. Setting Up Your Account
    3. Reserving Testbed Time
    4. Monitoring Your Experiment
    5. Connecting via SSH
    6. Managing Disk Images
    7. Joining the Community
    8. Browsing Users and Groups
    9. Tips
  5. Account Management
    1. Edit Profile
    2. Change Password
    3. SSH Keys
  6. Portal Dashboard
    1. Profile Card
    2. Usage Statistics
    3. Community Forum
  7. Directory
    1. Users
    2. Groups
    3. Privacy Note
  8. Disk Images
    1. Browsing Images
    2. Image Details
    3. Searching and Sorting
    4. Managing Your Images
    5. Baseline Images
    6. Saving Custom Images
    7. Storage and Retention
  9. Community Forum
    1. Accessing the Forum
    2. Forum Categories
    3. How to Use the Forum
    4. Forum Etiquette
    5. Privacy and Access
  10. Getting Started with the COSMOS Portal
    1. Creating an Account
    2. Logging In
    3. What to Do After Logging In
  11. SSH Access to Testbed Nodes
    1. Access Model
    2. Console Servers
    3. Basic Connection
    4. SSH Config File
    5. SSH Tunneling
    6. File Transfer
    7. Troubleshooting
  12. Scheduler
    1. Calendar View
    2. Reservation Colors
    3. Creating a Reservation
    4. Competing for a Slot
    5. Modifying or Canceling Reservations
    6. My Reservations
    7. Resource Information
  13. Testbed Status
    1. Node Status Grid
    2. RF Matrix Control (SB4)
    3. Understanding Node States During Experiments
    1. Remote Access
    1. Chrome Remote Desktop Setup Page
  14. Installing Chrome Remote Desktop (CRD) on a Custom Image
    1. Measurement & Result Collection
    1. Storage
    1. Support
    1. Contributing to the Wiki
  15. Tutorials
    1. SDR and Wireless
    2. Wireless Digital Twins
    3. Optical Networking
    4. Wired Networking
    5. Edge Computing
    6. 4G/5G Systems
    7. Orchestration Platforms
  16. Architecture
    1. Data Flow
    1. Deployment Map
    1. Domains
    1. Naming Convention
    1. Networks
    1. Optical
  17. Resources, Services and APIs
    1. RF Control
    2. SDR Control
    3. Compute Control
    4. Network Control
    5. Optical Control
  18. Datasets
  19. Hardware Info
    1. Cameras
    1. Compute
    1. FR3 SDRs
    1. Network
    1. Nodes
    1. Optical
    1. RF Subsystems
    1. Antennas
    1. Full-Duplex Radio
    1. RF Front End
    1. Software Defined Radios (SDR)
  20. RF Policies & Compliance
    1. Outdoor Radio Frequency Allocation
    2. Program Experiment License
    3. Spectrum Monitoring
    4. Emergency Stop Procedures
    5. Network and Platform Security

GNURadio OFDM tutorial

Description

This tutorial illustrates the use of GNURadio OFDM blocks for data transfer between a pair of USRPs. The GNURadio flowgraphs used here were obtained from the workshop material provided for POWDER-RENEW Mobile and Wireless Week 2019. They are mainly based on the GRC examples available in the GNURadio repository. For a good understanding of the flowgraphs and the blocks, please refer to OFDM pages on GNURadio Wiki such as OFDM Basics and OFDM Synchronization

Prerequisites

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 getting started page to get started.

Resources required

A pair of USRPs in COSMOS or ORBIT testbed. 2 USRP X310s (connected to node1-1,node1-2) in sb2.orbit-lab.org

Tutorial Setup

Follow the steps below to gain access to the sandbox 1 console and set up nodes with appropriate images.

  1. If you don't have one already, sign up for a COSMOS account
  2. Create a resource reservation on sandbox 1
  3. Login into sandbox 1 console (console.sb1.cosmos-lab.org) with an SSH session. SSH session for COSMOS SB1 with Moba Xterm 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.

No image "mobaxterm_sb1_session.JPG" attached to Tutorials/Wireless/GNURadioOFDM

  1. Make sure all the nodes and devices used in the experiment are turned off:
    omf tell -a offh -t system:topo:all  
    
  2. Load gnuradio_ofdm.ndz on both the nodes
    omf load -i gnuradio_ofdm.ndz -t node1-1,node1-2
    
  3. Turn the nodes on and check the status
    omf tell -a on -t node1-1,node1-2
    
    omf stat -t all
    
  4. Open 2 terminal sessions and ssh into the nodes with -Y for X11 forwarding
    ssh root@node1-1 -Y
    ssh root@node1-2 -Y
    

Experiment Execution

Find the USRPs

  1. As mentioned in the sb2.orbit page, the X310s have their port 1 directly connected to their respective nodes, and the IP addresses hardcoded to 192.168.40.2 as given in the X310 manual. To access the X310s run eth_config_sb2_orbit.sh on both the nodes. It sets a static IP address 192.168.40.1 on eno2 interface, and modifies the maximum send and receive socket buffer sizes.
    root@node1-2:~# ./eth_config_sb2_orbit.sh
    net.core.wmem_max = 25000000
    net.core.rmem_max = 25000000
    root@node1-2:~# ip addr show DATA2
    4: DATA2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9000 qdisc mq state UP group default qlen 1000
        link/ether f4:52:14:83:af:80 brd ff:ff:ff:ff:ff:ff
        inet 192.168.40.1/24 scope global DATA2
           valid_lft forever preferred_lft forever
        inet6 fe80::f652:14ff:fe83:af80/64 scope link
           valid_lft forever preferred_lft forever
    
  2. Run uhd_find_devices and uhd_usrp_probe to detect the X310s and to make sure they have a compatible firmware installed.
    root@node1-2:~# uhd_find_devices
    [INFO] [UHD] linux; GNU C++ version 9.4.0; Boost_107100; UHD_4.4.0.0-0ubuntu1~focal1
    --------------------------------------------------
    -- UHD Device 0
    --------------------------------------------------
    Device Address:
        serial: 30F10F9
        addr: 192.168.40.2
        fpga: XG
        name:
        product: X310
        type: x300
    
    root@node1-2:~# uhd_usrp_probe --args="addr=192.168.40.2"
    [INFO] [UHD] linux; GNU C++ version 9.4.0; Boost_107100; UHD_4.4.0.0-0ubuntu1~focal1
    [INFO] [X300] X300 initialization sequence...
    [INFO] [X300] Maximum frame size: 8000 bytes.
    [INFO] [GPS] No GPSDO found
    [INFO] [X300] Radio 1x clock: 200 MHz
      _____________________________________________________
     /
    |       Device: X-Series Device
    |     _____________________________________________________
    |    /
    |   |       Mboard: X310
    |   |   revision: 8
    |   |   revision_compat: 7
    |   |   product: 30818
    |   |   mac-addr0: 00:80:2f:27:0d:51
    |   |   mac-addr1: 00:80:2f:27:0d:52
    |   |   gateway: 192.168.10.1
    |   |   ip-addr0: 192.168.10.2
    |   |   subnet0: 255.255.255.0
    |   |   ip-addr1: 192.168.20.2
    |   |   subnet1: 255.255.255.0
    |   |   ip-addr2: 192.168.30.2
    |   |   subnet2: 255.255.255.0
    |   |   ip-addr3: 192.168.40.2
    |   |   subnet3: 255.255.255.0
    |   |   serial: 30F10F9
    .
    .
    .
    .
    |   |    /
    |   |   |       RX Frontend: 0
    |   |   |   Name: UBX RX
    |   |   |   Antennas: TX/RX, RX2, CAL
    |   |   |   Sensors: lo_locked
    |   |   |   Freq range: 10.000 to 6000.000 MHz
    |   |   |   Gain range PGA0: 0.0 to 31.5 step 0.5 dB
    |   |   |   Bandwidth range: 160000000.0 to 160000000.0 step 0.0 Hz
    |   |   |   Connection Type: IQ
    |   |   |   Uses LO offset: No
    
    
    

    In case of firmware mismatch, follow the directions displayed in the error message and use uhd_image_loader to update the firmware.

Run the GRC application

  1. Open OFDM receiver on node1-2
    root@node1-2:~# cd GNURadioOFDMExample/
    root@node1-2:~/GNURadioOFDMExample# gnuradio-companion RX_OFDM_GUI.grc
    <<< Welcome to GNU Radio Companion 3.9.8.0 >>>
    
    Block paths:
            /usr/local/share/gnuradio/grc/blocks
    
    Loading: "/root/GNURadioOFDMExample/RX_OFDM_GUI.grc"
    >>> Done
    
    

With X11 forwarding enabled, GRC should show up as below.

  1. Open OFDM transmitter on node1-1
    root@node1-1:~# cd GNURadioOFDMExample/
    root@node1-1:~/GNURadioOFDMExample# gnuradio-companion TX_OFDM.grc
    <<< Welcome to GNU Radio Companion 3.9.8.0 >>>
    
    Block paths:
            /usr/local/share/gnuradio/grc/blocks
    
    Loading: "/root/GNURadioOFDMExample/TX_OFDM.grc"
    >>> Done
    
    

  1. Make sure the device arguments on both nodes are correctly set as shown below. Check the center frequencies and sample rates, and make sure they match. TX_OFDM.grc has a "File Source" block which reads the text file to be transmitted. RX_OFDM.grc stores the received data in a local file that is specified in the "File Sink" block.
Image(FileSink.PNG, width=300px
  1. Run the receive flowgraph followed by the transmit flowgraph.

Attachments (7)

Download all attachments as: .zip

Note: See TracWiki for help on using the wiki.