ProtO-RU is a software implementation of an O-RAN split 7.2-compatible Radio Unit. This is based on a fork of the srsRAN Project, version 24.10.
ProtO-RU extends the srsRAN RU emulator to become a full-fledged O-RAN RU with split 7.2 support using SDRs like the USRP B210. Benefiting from the portability and modularity of srsRAN, ProtO-RU can be used on different hardware platforms (e.g., x86, ARM) and easily adapt to various use cases.
A software-based O-RU implementation would allow researchers to customize and innovate more freely in end-to-end setups, especially given the fixed-function and proprietary nature of commercial O-RUs.
Technical report - arxiv.
ACM Open AI-RAN 2025 workshop (invited) demo - [Poster] [YouTube].
Supported features - Features.
Note: ProtO-RU is currently under active development. Please check back frequently for updates and new documentation. We are also in the process of rebasing ProtO-RU to the latest srsRAN version (i.e., 25.10).
Since ProtO-RU is based on the srsRAN project, it inherits all the dependencies of srsRAN.
Please refer to the srsRAN project documentation, sections "Build Tools and Dependencies" and "RF-drivers" (especially UHD drivers) for the list of dependencies required to build ProtO-RU.
If your current system can successfully build and run srsRAN in Split-8 mode with any UHD-compatible SDR (e.g., B210, N310), then you should be able to build and run ProtO-RU without any issues.
To download and build ProtO-RU, first, clone the ProtO-RU repository:
git clone https://github.com/NUS-CIR/ProtO-RU.gitThen, build ProtO-RU.
cd ProtO-RU
mkdir build
cd build
cmake ../
cd ./apps/examples/ofh/ # ProtO-RU extends the srsRAN RU emulator
make -j $(nproc)Before running ProtO-RU, please ensure that you have a suitable system to host ProtO-RU (see HW_REQUIREMENTS). Depending on your testbed setup (see Testbed Setup), the DU and ProtO-RU host system(s) must be time synchronized with the gNB host over PTP. We have prepared a quick guide on setting up PTP time synchronization at Time Synchronization.
Once the system is time synchronized, we can then start ProtO-RU.
To run ProtO-RU, run the following command from the build/apps/examples/ofh/ directory (assuming the configuration file is located at /path/to/ru_emu.yml):
sudo ./ru_emulator -c /path/to/ru_emu.ymlFor more details on configuration options, please refer to the Configuration Reference.
We also provide sample configuration files in the proto-ru/conf-files/ directory of the repository.
Important Note: Given that ProtO-RU requires a large delay profile, the integration with other 5G CU/DU implementations may require some patching. Please refer to the Integration Notes for more details.
If you encounter any issues while running ProtO-RU, please consult to the Troubleshooting Guide for common problems and their solutions.
The list of known issues can also be found under Known Issues.
If you find ProtO-RU useful to your research, please cite our technical report:
@techreport{zhou2025protoru,
title={ProtO-RU: An O-RAN Split-7.2 Radio Unit using SDRs},
author={Zhiyu Zhou and Xin Zhe Khooi and Satis Kumar Permal and Mun Choon Chan},
year={2025},
eprint={2512.02398},
archivePrefix={arXiv},
primaryClass={cs.NI},
url={https://arxiv.org/abs/2512.02398},
}For any questions, or if you have any comments/feedback/feature requests, there are several ways to reach out.
- File a GitHub issue under this repo.
- Start a discussion on the GitHub Discussion board.
- Drop an email to
khooixz [at] comp [dot] nus [dot] edu [dot] sg.