Installation Guide
The following steps need to be taken in order to download and build OCUDU:
- Install dependencies
- Install RF driver (only required for Split 8 deployments)
- Clone the repository
- Build the codebase
OCUDU requires a Linux-based OS, we recommend Ubuntu (22.04 or later).
Build Tools and Dependencies
OCUDU uses CMake and C++17. We recommend the following build tools:
OCUDU has the following necessary dependencies:
- libsctp
- yaml-cpp
- mbedTLS
- A FFT library
- Optional requirement: googletest
- GoogleTest is only mandatory when building with tests. You can enable test building by using the cmake option -DBUILD_TESTING=On.
You can install the required build tools and dependencies for various distributions as follows:
- Ubuntu 22.04 (or later)
- Fedora
- Arch Linux
sudo apt-get install cmake make gcc g++ pkg-config libmbedtls-dev libsctp-dev libyaml-cpp-dev libgtest-dev
sudo yum install cmake make gcc gcc-c++ lksctp-tools-devel yaml-cpp-devel mbedtls-devel gtest-devel
sudo pacman -S cmake make base-devel mbedtls yaml-cpp lksctp-tools gtest
It is also recommended users install the following (although they are not required):
- Ccache: This will help to speed up re-compilation
- backward-cpp: This library helps to generate more informative backtraces in the stdout if an error occurs during runtime
FFT Library
OCUDU requires one of the following libraries for FFT calculation:
libfftw
- Ubuntu 22.04 (or later)
- Fedora
- Arch Linux
sudo apt-get install libfftw3-dev
sudo yum install fftw-devel
sudo pacman -S fftw
oneMKL
- Ubuntu 22.04 (or later)
sudo apt update
sudo apt install -y gpg-agent wget
wget -O- <https://apt.repos.intel.com/intel-gpg-keys/GPG-PUB-KEY-INTEL-SW-PRODUCTS.PUB> | gpg --dearmor | sudo tee /usr/share/keyrings/oneapi-archive-keyring.gpg > /dev/null
echo "deb [signed-by=/usr/share/keyrings/oneapi-archive-keyring.gpg] <https://apt.repos.intel.com/oneapi> all main" | sudo tee /etc/apt/sources.list.d/oneAPI.list
sudo apt update
sudo apt install intel-oneapi-mkl-devel libomp-dev
AOCL-FFTZ
- Ubuntu 22.04 (or later)
AOCL_FFTW_VERSION="5.2"
sudo apt update
sudo apt install -y wget autoconf automake make libtool
pushd /tmp
wget --no-check-certificate "https://github.com/amd/amd-fftw/archive/refs/tags/5.2.tar.gz" -O "amd-fftw-5.2.tar.gz"
tar -xzf amd-fftw-5.2.tar.gz
rm -f amd-fftw-5.2.tar.gz
cd amd-fftw-5.2
./configure --enable-sse2 --enable-avx --enable-avx2 --enable-avx512 \
--enable-openmp --enable-shared --enable-amd-opt \
--enable-dynamic-dispatcher --prefix=/usr/local
make -j"$(nproc)"
make install
popd
rm -rf /tmp/amd-fftw-5.2
ldconfig
ARMPL
- Ubuntu 22.04 (or later)
sudo apt update
sudo apt install -y environment-modules wget
pushd /tmp
wget <https://developer.arm.com/-/cdn-downloads/permalink/Arm-Performance-Libraries/Version_24.10/arm-performance-libraries_24.10_deb_gcc.tar>
tar -xf arm-performance-libraries_24.10_deb_gcc.tar
cd arm-performance-libraries_24.10_deb/
./arm-performance-libraries_24.10_deb.sh --accept
popd
rm -Rf /tmp/arm-performance-libraries_24.10_deb
source /usr/share/modules/init/bash
export MODULEPATH=$MODULEPATH:/opt/arm/modulefiles
module avail
module load armpl/24.10.0_gcc
RF-drivers
UHD and/or ZMQ are only required for Split 8 deployments, if you are planning on using a Split 7.2 deployment you may skip this step.
OCUDU uses RF drivers to support different radio types. Currently, only UHD and ZMQ are supported:
Clone and Build
OCUDU can be built with certain features enabled or disabled. This is done during the build process by using CMake flags and/or by downloading third party dependencies prior to building the code. The following sections outline these various build options.
- Vanilla Installation
- Split 7.2 Only Configuration
- Split 8 Only Configuration
- ZMQ Enabled Installation
First, clone OCUDU repository:
git clone https://gitlab.com/ocudu/ocudu.git
Then build the code-base:
cd ocudu
mkdir build
cd build
cmake ../
make -j $(nproc)
make test -j $(nproc)
You can now run the gNB from ocudu/build/apps/gnb/. If you wish to install OCUDU, you can use the following command:
sudo make install
First, clone OCUDU repository:
git clone https://gitlab.com/ocudu/ocudu.git
Then build the code-base:
cd ocudu
mkdir build
cd build
cmake ../
make -j $(nproc)
make test -j $(nproc)
You can now run the gNB from ocudu/build/apps/gnb/. If you wish to install OCUDU, you can use the following command:
sudo make install
OCUDU allows for compile time selection of a Split 7.2 or Split 8 configuration. By default, OCUDU builds with both options enabled. If you want to compile with the option to have both Split configurations available, follow the “Vanilla” installation guide.
First, clone OCUDU repository:
git clone https://gitlab.com/ocudu/ocudu.git
Then build the code-base, making sure to pass the correct CMake flag:
cd ocudu
mkdir build
cd build
cmake -DDU_SPLIT_TYPE=SPLIT_7_2 ../
make -j $(nproc)
make test -j $(nproc)
You can now run the gNB from ocudu/build/apps/gnb/. If you wish to install OCUDU, you can use the following command:
sudo make install
OCUDU allows for compile time selection of a Split 7.2 or Split 8 configuration. By default, OCUDU builds with both options enabled. If you want to compile with the option to have both Split configurations available, follow the “Vanilla” installation guide.
First, clone OCUDU repository:
git clone https://gitlab.com/ocudu/ocudu.git
Then build the code-base, making sure to pass the correct CMake flag:
cd ocudu
mkdir build
cd build
cmake -DDU_SPLIT_TYPE=SPLIT_7_2 ../
make -j $(nproc)
make test -j $(nproc)
You can now run the gNB from ocudu/build/apps/gnb/. If you wish to install OCUDU, you can use the following command:
sudo make install
OCUDU allows for compile time selection of a Split 7.2 or Split 8 configuration. By default, OCUDU builds with both options enabled. If you want to compile with the option to have both Split configurations available, follow the “Vanilla” installation guide.
First, clone OCUDU repository:
git clone https://gitlab.com/ocudu/ocudu.git
Then build the code-base, making sure to pass the correct CMake flag:
cd ocudu
mkdir build
cd build
cmake -DDU_SPLIT_TYPE=SPLIT_8 ../
make -j $(nproc)
make test -j $(nproc)
You can now run the gNB from ocudu/build/apps/gnb/. If you wish to install OCUDU, you can use the following command:
sudo make install
OCUDU allows for compile time selection of a Split 7.2 or Split 8 configuration. By default, OCUDU builds with both options enabled. If you want to compile with the option to have both Split configurations available, follow the “Vanilla” installation guide.
First, clone OCUDU repository:
git clone https://gitlab.com/ocudu/ocudu.git
Then build the code-base, making sure to pass the correct CMake flag:
cd ocudu
mkdir build
cd build
cmake -DDU_SPLIT_TYPE=SPLIT_8 ../
make -j $(nproc)
make test -j $(nproc)
You can now run the gNB from srsRAN_Project/build/apps/gnb/. If you wish to install OCUDU, you can use the following command:
sudo make install
On Ubuntu, ZeroMQ development libraries can be installed with:
sudo apt-get install libzmq3-dev
Alternatively, ZeroMQ can also be built from source.
First, one needs to install libzmq:
git clone https://github.com/zeromq/libzmq.git
cd libzmq
./autogen.sh
./configure
make
sudo make install
sudo ldconfig
Second, install czmq:
git clone https://github.com/zeromq/czmq.git
cd czmq
./autogen.sh
./configure
make
sudo make install
sudo ldconfig
Finally, you need to compile OCUDU (assuming you have already installed all the required dependencies).
If you have already built and installed OCUDU prior to installing ZMQ and other dependencies you will have to re-build to ensure the ZMQ drivers have been recognized correctly.
The following commands can be used to clone and build from source:
git clone https://gitlab.com/ocudu/ocudu.git
cd ocudu
mkdir build
cd build
cmake ../ -DENABLE_EXPORT=ON -DENABLE_ZEROMQ=ON
make -j`nproc`
ZeroMQ is disabled by default, this is enabled when running cmake by including -DENABLE_EXPORT=ON -DENABLE_ZEROMQ=ON.
Pay extra attention to the cmake console output. Make sure you read the following line to ensure ZMQ has been correctly detected by OCUDU:
...
-- FINDING ZEROMQ.
-- Checking for module 'ZeroMQ'
-- No package 'ZeroMQ' found
-- Found libZEROMQ: /usr/local/include, /usr/local/lib/libzmq.so
...
On Ubuntu, ZeroMQ development libraries can be installed with:
sudo apt-get install libzmq3-dev
Alternatively, ZeroMQ can also be built from source.
First, one needs to install libzmq:
git clone https://github.com/zeromq/libzmq.git
cd libzmq
./autogen.sh
./configure
make
sudo make install
sudo ldconfig
Second, install czmq:
git clone https://github.com/zeromq/czmq.git
cd czmq
./autogen.sh
./configure
make
sudo make install
sudo ldconfig
Finally, you need to compile OCUDU (assuming you have already installed all the required dependencies).
If you have already built and installed OCUDU prior to installing ZMQ and other dependencies you will have to re-build to ensure the ZMQ drivers have been recognized correctly.
The following commands can be used to clone and build from source:
git clone https://gitlab.com/ocudu/ocudu.git
cd ocudu
mkdir build
cd build
cmake ../ -DENABLE_EXPORT=ON -DENABLE_ZEROMQ=ON
make -j`nproc`
ZeroMQ is disabled by default, this is enabled when running cmake by including -DENABLE_EXPORT=ON -DENABLE_ZEROMQ=ON.
Pay extra attention to the cmake console output. Make sure you read the following line to ensure ZMQ has been correctly detected by OCUDU:
...
-- FINDING ZEROMQ.
-- Checking for module 'ZeroMQ'
-- No package 'ZeroMQ' found
-- Found libZEROMQ: /usr/local/include, /usr/local/lib/libzmq.so
...
The Running OCUDU section of the documentation further discusses how to configure and run the gNB application.
Packages
OCUDU is available to download directly from packages for various linux distributions. Users looking for a simple installation who do not wish to edit the source code should use the package installation.
- Ubuntu
- Arch Linux
Ubuntu users can download OCUDU packages using the following commands:
sudo add-apt-repository ppa:softwareradiosystems/srsran-project
sudo apt-get update
sudo apt-get install srsran-project -y
Arch Linux users can download OCUDU packages using an AUR helper, e.g. ‘yay’, using the following command:
yay -Sy srsran-project-git
This will install the latest version of OCUDU from git.
When installed from packages, example configs for OCUDU can be found in /usr/share/srsran. For info on these config files, see here
The application can then be run using:
sudo gnb -c <config file>
PHY testvectors
A number of PHY tests are based on MATLAB generated testvectors. By default, those tests are disabled. The following steps are required to enable them:
- Download the latest PHY testvector set.
- Extract the PHY testvectors to their location within the srsRAN working directory:
tar -xf phy_testvectors.tar -C /path_to_your_local_repository/srsRAN_Project
- Enable the use of the PHY testvectors by regenerating the CMake build system:
cmake -B build -DUSE_PHY_TESTVECTORS=ON
- Rebuild OCUDU.