Guide to setup the project with various configurations (Dockerized 5G core, Non Dockerized 5G core, Single UE, Multiple UEs, Single gNB, Multiple gNBs, OSC RIC) on Ubuntu 22.04 and above
The config files in this are kept here in case you need to refer to any values. Make sure to download and use the latest config files from the official OCUDU website when you are running the project.
sudo apt update
sudo apt upgradeRestart the system so that updated daemons are up and running
mkdir ocudu_parent
cd ocudu_parentsudo apt-get install cmake make gcc g++ pkg-config libmbedtls-dev libsctp-dev libyaml-cpp-dev libgtest-devAdd UHD in the Parent Folder (we don't need an external USRP but we need the UHD related libraries given below)
sudo apt-get install autoconf automake build-essential ccache cmake cpufrequtils doxygen ethtool \
g++ git inetutils-tools libboost-all-dev libncurses5 libncurses5-dev libusb-1.0-0 libusb-1.0-0-dev \
libusb-dev python3-dev python3-mako python3-numpy python3-requests python3-scipy python3-setuptools \
python3-ruamel.yaml
git clone https://github.com/EttusResearch/uhd.git
cd uhd/host
mkdir build
cd build
cmake ../
make
make test # This step is optional
sudo make install
sudo ldconfigOCUDU requires one of the following libraries for FFT calculation:
sudo apt-get install libfftw3-devsudo 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-devAOCL_FFTZ_VERSION="5.2"
sudo apt update && sudo apt install -y wget autoconf automake make libtool
cd /tmp
wget --no-check-certificate -O - "https://github.com/amd/aocl-fftz/archive/refs/tags/${AOCL_FFTZ_VERSION}.tar.gz" | tar -xz
cd aocl-fftz-${AOCL_FFTZ_VERSION}
sudo cmake -B buildFFTZ
sudo cmake --build buildFFTZ --target install -j"${nproc}"sudo apt-get install libzmq3-dev
git clone https://github.com/zeromq/libzmq.git
cd libzmq
./autogen.sh
./configure
make
sudo make install
sudo ldconfig
git clone https://github.com/zeromq/czmq.git
cd czmq
./autogen.sh
./configure
make
sudo make install
sudo ldconfiggit clone https://gitlab.com/ocudu/ocudu.git
cd ocudu
mkdir build
cd build
cmake ../ -DENABLE_EXPORT=ON -DENABLE_ZEROMQ=ON
make -j`nproc`sudo apt-get install build-essential cmake libfftw3-dev libmbedtls-dev libboost-program-options-dev libconfig++-dev libsctp-dev
git clone https://github.com/srsRAN/srsRAN_4G.git
cd srsRAN_4G
mkdir build
cd build
cmake .. -DENABLE_UHD=OFF
make -j$(nproc)
make test # This step is optional
sudo make install
srsran_install_configs.sh userfor pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; done
# Add Docker's official GPG key:
sudo apt-get update
sudo apt-get install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc
# Add the repository to Apt sources:
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
$(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
sudo docker run hello-world
# Installation
git clone https://github.com/srsran/oran-sc-ricStart up each of the following components in a different terminal window.
cd ocudu/docker/
sudo docker compose up --build 5gccd oran-sc-ric
sudo docker compose upsudo ip netns add ue1
cd ocudu/build/apps/gnb
sudo ./gnb -c ./gnb_zmq.yamlcd srsRAN_4G/build/srsue/src
sudo ./srsue ue_zmq.conf
