wiki:Tutorials/4G5G/openairinterface

Version 13 (modified by seskar, 6 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

This tutorial contains instructions for running the openairinterface eNB and UE on various platforms. It adapts the Eurecom tutorial at : https://gitlab.eurecom.fr/oai/openairinterface5g/wikis/HowToConnectOAIENBWithOAIUEWithoutS1Interface for the ORBIT and COSMOS testbeds.

Prerequisites

  1. Two nodes, with appropriate hardware, within RF range
  2. Currently supported: USRP x310, USRP 2974, USRP b210
  3. Load the image tutorial-oai.ndz onto both nodes
  4. Turn the nodes on
  5. If graphical display is desired, enable x11 tunneling to console and then to nodes
  6. ssh to the nodes

On node 1

  1. run /opt/oaiscripts/build_oai.sh to build for the current hardware and kernel
  2. edit the file /opt/oaiscripts/run_enb.sh for the SDR in use, for example, set SDR IP addr and max gain
  3. run /opt/oaiscripts/run_enb.sh

Example script, change parameters as needed:

  • run_enb.sh:
    #! /bin/bash
    #sdr_addrs takes standard uhd arguments, such as:
    #"type=x300,addr=192.168.40.2"  #x310 over direct network
    #"type=x300,resource=rio0"      #x310 over pcie
    #"type=b210"                    #b210 over usb
    #values for RUs.[0] override config file, must be set per usrp type
    # -d enables xforms charts
    
    cd /opt/openairinterface5g
    source oaienv
    cd ./cmake_targets
    ./lte_build_oai/build/lte-softmodem \
    -O $OPENAIR_HOME/ci-scripts/conf_files/enb.band7.tm1.25PRB.usrpb210.conf \
    --nokrnmod 1 --noS1 --eNBs.[0].rrc_inactivity_threshold 0 \
    --RUs.[0].att_tx 40 --RUs.[0].att_rx 0 \
    --usrp-args "type=b200" \
    -d
    

On Node 2

  1. run /opt/oaiscripts/build_oai.sh to build for the current hardware and kernel
  2. edit the file /opt/oaiscripts/run_ue.sh for the SDR in use, for example, set SDR IP addr and max gain
  3. run /opt/oaiscripts/run_ue.sh

Example script, change parameters as needed:

  • run_ue.sh:
    #! /bin/bash
    #sdr_addrs takes standard uhd arguments, such as:
    #"type=x300,addr=192.168.40.2"  #x310 over direct network
    #"type=x300,resource=rio0"      #x310 over pcie
    #"type=b210"                    #b210 over usb
    #values for RUs.[0] override config file, must be set per usrp type
    # -d enables xforms charts
    
    cd /opt/openairinterface5g
    source oaienv
    cd ./cmake_targets/lte_build_oai/build
    ./lte-uesoftmodem \
    -C 2680000000 -r 25 \
    --ue-scan-carrier --nokrnmod 1 --noS1 \
    --ue-rxgain 120 --ue-txgain 30 --ue-max-power 0 \
    --ue-nb-ant-tx 1 --ue-nb-ant-rx 1 \
    --usrp-args "type=b200" \
    -d
    

Once Both nodes are running

  • if all is successfull, you shouuld see new interfaces on the two nodes, with addresses:
    • 10.0.1.1
    • 10.0.1.2
  • you should be able to run ping, iperf, and so on

Understanding xforms terms and plots

  • PBCH: physical broadcast channel
    • The PBCH carries part of the system information required for terminals to access the network
  • PUSCH: physical uplink control channel
  • PDCCH: physical downlink control channel
    • The PDCCH conveys control information, scheduling decisions for PDSCH reception, and for scheduling grants enabling transmission on the PUSCH.
  • PUSCH: physical uplink shared channel
  • PDSCH: physical downlink shared channel
    • The PDSCH carries user data and paging information to the terminal.

Calibration

  • physical attenuation
  • received signal at UE
  • received signal at eNB
  • pdsch constellation at UE
  • pdsch constellation at eNB

Expected Performance

This depends on a number of factors, including:

  • the total bandwidth (number of resource blocks)
    • 5mhz:25prb
    • 10mhz:50prb
    • 20mhz:100prb
  • p(d/u)sch modulation:
    • qpsk
    • 16qam
    • 64qam
    • 256qam
  • FDD vs TDD
  • number of MIMO channels
  • control vs data channel split

For the default config file in this tutorial, it's:

  • 1/1 non-mimo
  • FDD band 7
  • 5mhz/25PRB
  • up to 256qam, depending on signal
  • control / data split of (0.25/0.75?)
  • so you can expect up to 19mbps downlink at 64qam, and 25mbps downlink at 256qam

Specifics per domain

sb2.cosmos-lab.org

  1. set usrp address to "type=x3xx,resource=rio0"
  2. on eNB, set att_tx=70, att_rx=10
  3. use RFSWITCH service to set all switches to port 1 for antenna

sb2.orbit-lab.org

  1. set usrp address to "type=x3xx,addr=192.168.40.2"
  2. bring up usrp ethernet interface, set ip to 192.168.40.1/16

sb1.orbit-lab.org

  1. set usrp address to "type=b210"
  2. UE_rxgain: 120
  3. UE_txgain: 30
  4. UE_maxpower: 0
  5. eNB_att_tx: 40
  6. eNB_att_rx: 0

sb4.orbit-lab.org

  1. set usrp address to "type=b210"
  2. configure RF matrix for 60db of attenuation between eNB and UE node chosen
Note: See TracWiki for help on using the wiki.