Skip to main content

Running

info

This guide outlines how to manually run OCUDU applications in a Split 8 deployment with a USRP. For Split 7.2 deployments and/or Kubernetes execution see here.

Baseline Requirements

To successfully run an end-to-end network OCUDU applications you will need the following:

  • A PC with a Linux based OS (Ubuntu 22.04 or later)
  • A USRP device
  • OCUDU (see the Installation Guide
  • A 3rd-party 5G core (we recommend Open5GS)
  • A 3rd-party 5G UE
tip

If you plan to connect the gNB to a COTS UE best performance is achieved using an external clock source such as an Octoclock or GPSDO that is compatible with your RF-frontend, as the on-board clock within the USRP may not be accurate enough to enable a connection with the UE. This is discussed further in the relevant tutorial.


System Preparation

Before running any of OCUDU applications, we recommend tuning your system for best performance. We provide a script to configure known performance parameters:

The script does the following:

  1. Sets the scaling governor to performance
  2. Disables DRM KMS polling
  3. Tunes network buffers (Ethernet based USRPs only)

Run the script as follows from the main project folder:

sudo ./scripts/ocudu_performance

Running OCUDU

If OCUDU has been installed using sudo make install or installed from packages then you will be able to run the gNB from anywhere on your machine.

If you have built OCUDU from source and have not installed it, then you can run the gNB from: /ocudu/build/apps/gnb. In this folder you will find the gNB application binary.

Run the gNB as follows, passing the YAML configuration file:

sudo ./gnb -c gnb_rf_b200_tdd_n78_10mhz.yml

Run the gNB with sudo to ensure threads are configured with the correct priority.

Example configuration files can be found in the configs/ folder in OCUDU codebase. For more information on the configuration files and the available parameters see the configuration reference.

When running, the gNB should generate the following console output:

Available radio types: uhd.

--== OCUDU gNB (commit 77be7d339) ==--

[INFO] [UHD] linux; GNU C++ version 9.4.0; Boost_107100; UHD_4.2.0.HEAD-0-g197cdc4f
Making USRP object with args 'type=b200'
Cell pci=1, bw=10 MHz, dl_arfcn=632628 (n78), dl_freq=3489.42 MHz, dl_ssb_arfcn=632640, ul_freq=3489.42 MHz

==== gNodeB started ===
Type <t> to view trace

Entering t will enable the console trace, see here for more details.

Configuration parameters can also be passed on the command line. To see the list of options, use:

./gnb --help

If OCUDU has been installed using sudo make install or installed from packages then you will be able to run the gNB from anywhere on your machine.

If you have built OCUDU from source and have not installed it, then you can run the gNB from: /ocudu/build/apps/gnb. In this folder you will find the gNB application binary.

Run the gNB as follows, passing the YAML configuration file:

sudo ./gnb -c gnb_rf_b200_tdd_n78_10mhz.yml

Run the gNB with sudo to ensure threads are configured with the correct priority.

Example configuration files can be found in the configs/ folder in OCUDU codebase. For more information on the configuration files and the available parameters see the configuration reference.

When running, the gNB should generate the following console output:

Available radio types: uhd.

--== OCUDU gNB (commit 77be7d339) ==--

[INFO] [UHD] linux; GNU C++ version 9.4.0; Boost_107100; UHD_4.2.0.HEAD-0-g197cdc4f
Making USRP object with args 'type=b200'
Cell pci=1, bw=10 MHz, dl_arfcn=632628 (n78), dl_freq=3489.42 MHz, dl_ssb_arfcn=632640, ul_freq=3489.42 MHz

==== gNodeB started ===
Type <t> to view trace

Entering t will enable the console trace, see here for more details.

Configuration parameters can also be passed on the command line. To see the list of options, use:

./gnb --help

For more information on running OCUDU, and configuring for various use-cases see the full list of tutorials.