srsran / srsRAN_Project

Open source O-RAN 5G CU/DU solution from Software Radio Systems (SRS) https://docs.srsran.com/projects/project
https://www.srsran.com
GNU Affero General Public License v3.0
466 stars 159 forks source link
5g sdr srs srsran wireless

srsRAN Project

Build Status OpenSSF Best Practices

The srsRAN Project is a complete 5G RAN solution, featuring an ORAN-native CU/DU developed by SRS.

The solution includes a complete L1/2/3 implementation with minimal external dependencies. Portable across processor architectures, the software has been optimized for x86 and ARM. srsRAN follows the 3GPP 5G system architecture implementing the functional splits between distributed unit (DU) and centralized unit (CU). The CU is further disaggregated into control plane (CU-CP) and user-plane (CU-UP).

See the srsRAN Project for information, guides and project news.

Build instructions and user guides - srsRAN Project documentation.

Community announcements and support - Discussion board.

Features and roadmap - Features.

Build Preparation

Dependencies

You can install the build tools and mandatory requirements for some example distributions with the commands below:

Ubuntu 22.04 ```bash sudo apt-get install cmake make gcc g++ pkg-config libfftw3-dev libmbedtls-dev libsctp-dev libyaml-cpp-dev libgtest-dev ```
Fedora ```bash sudo yum install cmake make gcc gcc-c++ fftw-devel lksctp-tools-devel yaml-cpp-devel mbedtls-devel gtest-devel ```
Arch Linux ```bash sudo pacman -S cmake make base-devel fftw mbedtls yaml-cpp lksctp-tools gtest ```

Split-8

For Split-8 configurations, either UHD or ZMQ is required for the fronthaul interface. Both drivers are linked below, please see their respective documentation for installation instructions.

Split-7.2

For Split-7.2 configurations no extra 3rd-party dependencies are required, only those listed above.

Optionally, DPDK can be installed for high-bandwidth low-latency scenarios. For more information on this, please see this tutorial.

Build Instructions

Download and build srsRAN:

Vanilla Installation First, clone the srsRAN Project repository: ```bash git clone https://github.com/srsRAN/srsRAN_Project.git ``` Then build the code-base: ```bash cd srsRAN_Project mkdir build cd build cmake ../ make -j $(nproc) make test -j $(nproc) ``` You can now run the gNB from ``srsRAN_Project/build/apps/gnb/``. If you wish to install the srsRAN Project gNB, you can use the following command: ```bash sudo make install ```
ZMQ Enabled Installation Once ZMQ has been installed you will need build of srsRAN Project with the correct flags to enable the use of ZMQ. The following commands can be used to clone and build srsRAN Project from source. The relevant flags are added to the ``cmake`` command to enable the use of ZMQ: ```bash git clone https://github.com/srsran/srsRAN_Project.git cd srsRAN_Project mkdir build cd build cmake ../ -DENABLE_EXPORT=ON -DENABLE_ZEROMQ=ON make -j $(nproc) make test -j $(nproc) ``` Pay extra attention to the cmake console output. Make sure you read the following line to ensure ZMQ has been correctly detected by srsRAN: ```bash ... -- FINDING ZEROMQ. -- Checking for module 'ZeroMQ' -- No package 'ZeroMQ' found -- Found libZEROMQ: /usr/local/include, /usr/local/lib/libzmq.so ... ```
DPDK Enabled Installation Once DPDK has been installed and configured you will need to create a clean build of srsRAN Project to enable the use of DPDK. If you have not done so already, download the code-base with the following command: ```bash git clone https://github.com/srsRAN/srsRAN_Project.git ``` Then build the code-base, making sure to include the correct flags when running cmake: ```bash cd srsRAN_Project mkdir build cd build cmake ../ -DENABLE_DPDK=True -DASSERT_LEVEL=MINIMAL make -j $(nproc) make test -j $(nproc) ```

PHY Tests

PHY layer tests use binary test vectors and are not built by default. To enable, see the docs.

Deploying srsRAN Project

srsRAN Project can be run in two ways:

For exact details on running srsRAN Project in any configuration, see the documentation.

For information on configuring and running srsRAN for various different use cases, check our tutorials.