open5gcube
open5Gcube: A Modular Framework for Mobile Network Laboratories.
Science Score: 44.0%
This score indicates how likely this project is to be science-related based on various indicators:
-
✓CITATION.cff file
Found CITATION.cff file -
✓codemeta.json file
Found codemeta.json file -
✓.zenodo.json file
Found .zenodo.json file -
○DOI references
-
○Academic publication links
-
○Academic email domains
-
○Institutional organization owner
-
○JOSS paper metadata
-
○Scientific vocabulary similarity
Low similarity (15.9%) to scientific vocabulary
Keywords
Repository
open5Gcube: A Modular Framework for Mobile Network Laboratories.
Basic Info
- Host: GitHub
- Owner: open5Gcube
- License: apache-2.0
- Language: Vue
- Default Branch: main
- Homepage: https://open5Gcube.de
- Size: 1.17 MB
Statistics
- Stars: 2
- Watchers: 1
- Forks: 3
- Open Issues: 2
- Releases: 0
Topics
Metadata Files
README.md
open5Gcube is a Modular Framework for Mobile Network Laboratories. It builds and manages open-source mobile network stacks, including 2G, 4G, and 5G systems. It is designed for research, testing, and educational purposes, providing users with a customizable and extensible environment for deploying radio access networks (RAN), core networks (CN), and supporting components.
I. Overview II. Getting Started III. Configuration IV. Usage V. Documentation VI. License
📍 Overview
open5Gcube facilitates reproducible experiments across a variety of mobile network configurations by using:
- Docker containers and Docker Compose for isolated service deployments.
- Pre-built network Stacks representing different technology combinations (e.g., OAI-RAN + Open5GS core).
- Remote container orchestration across multiple physical hosts using SSH and Docker-outside-of-Docker (DooD).
- A WebUI for visual control and monitoring of the Stack deployments.
- Support for physical SDR hardware (USRP X310/B210), as well as emulated setups.
Features
- Full-stack mobile network simulation (2G/4G/5G, NSA/SA)
- Integration with:
- Open5GS, OpenAirInterface, UERANSIM, srsRAN, osmocom, and more
- Easy-to-use WebUI
- View and control container health and logs
- Start/stop Stacks
- VoLTE configuration based on Open5GS + Kamailio IMS
- SIM card provisioning tools via
pySim
🚀 Getting Started
Prerequisites
BIOS
For performance tuning, it is recommended to disable hyper-threading, CPU frequency control, C-States, P-States and any other power management settings.
Operating System
Ubuntu 22.04 is recommended as base host distribution.
Installation
Required Packages
console
sudo apt install linux-tools-common net-tools make git-lfs ca-certificates curl gnupg openssh-server python3-virtualenv
Clone the Repository
console
git clone https://github.com/open5Gcube/open5Gcube/
cd open5Gcube
Docker Engine
See official Docker documentation
for details. Specific fixed versions of the Docker packages are installed with the script
modules/base/docker/o5gc/install-docker.sh. Execute it with
console
make system-install-docker
Install open5Gcube systemd Startup Service
console
make systemd-install-unit
Build all Docker Images
To build all docker images for all sub-projects on the Controller host as well as the ran projects on the configured ran hosts, run
console
make build-cacher-start docker-build-all
and get yourself a big cup of coffee as this will take a few hours.
Start the open5Gcube WebUI
console
make webui-start
⚙️ Configuration
The configuration of the installation and the global settings across the Stacks is done via different environment files in the etc directory.
System Specific Settings
The system installation specific configuration can be adjusted in the file etc/local.env:
- Set the
CLOCK_SRCeither toexternalorinternal, depending on whether an external clock supply is connected to the USRP or not. - If components of the network (especially the RANs like the gNB) are distributed across different hosts, set the Docker network driver for the
corenettomacvlan. If all services are running on the same host, abridgecan be used instead.shell # CORENET_DRIVER should be # - 'macvlan' if components (such as the gNB) are distributed across # different hosts # - 'bridge' if *all* components are running on this host # run 'make systemd-startup-unit' after changing one of the following # settings CORENET_DRIVER=bridge # If macvlan is used, set the parent interface here CORENET_MACVLAN_IFACE=eno1 - Set the
USRP_IFACEto the interface name of the 10G adapter connected to the USRP X310 on the RAN hosts. Leave it unchanged if USRPs B210 via USB are used. - Configure the hostname of the enb and gnb ran hosts:
shell # eNB / gNB RAN hostnames ENB_HOSTNAME=localhost GNB_HOSTNAME=localhost
settings.env
Sets especially the 4G / 5G mobile network settings like the PLMN, TAC, APN and the used frequencies. These configurations are utilised by all Stacks if not configured explicitly to different values in the Stack directory.
```shell
Mobile Network
MCC=001 MNC=01 TAC=1 APN=internet
Network Slice Selection Assistance Information
NSSAISST=1 NSSAISD=ffffff
5G Band
NR_BAND=78
5G Channel Number (ARFCN)
NR_ARFCN=641280 ... ```
uedb.env
This file contains the database for all SIM Cards, including the IMSI, Key and the OPc. On startup of the Core Networks short-living initialization containers and helper scripts uses this settings to program the corresponding databases of the particular Core Network.
```shell
IMSI Key OPc
UE1="901700000052100 F18E5DB0A8B5B8A0304E9113D121DFE3 E83C9CF73E3B9E82E48005A696E86AD8" UE2="901700000052101 85DAEB272D98D18BEC760FF7AD7A32A5 A7EAD4B9841B099AB2AE75F1F218D85D" UE_3="208920000052102 B89266F426DDAADB91830124E69A1D20 4C18A87423F6CD4CD6734B82FC90BD7B" ... ```
Stack specific settings
Each Stack can override all of the above settings by providing a separate settings.env file in its directory. This is useful if a Stack requires fix certain configurations to function correctly, for example if slicing is not supported.
🖵 Usage
Command Line
A Makefile is the central entry point for all commands on the console, so they start all with make followed by the target which should be executed. make help will list the most important targets. Most consoles supports Tab-completion which helps exploring the available commands as well.
Build Docker Images
The build process is managed by the Makefile, which takes care of handling the dependencies.
To build all images, the following command is executed:
console
make docker-build-all
For building individual images, the Makefile provides the following command format:
console
make docker-build-<image-name>
For example:
console
make docker-build-oai-amf
To delete all images, the following command is used:
console
make docker-purge-all-images
Running Stacks
For each Stack defined in the modules, there is a make run-<stackname> command. So for example, to run the 5G-SA Stack composed of OAI-RAN and Open5GS, run
console
make run-oairan-open5gs-5g
This starts all containers of the Stack and attaches to their console output. To stop the Stack just press Ctrl + c.
In general, for Mobile-Network Stacks the naming follows the convention <ran-project>-<core-project>-<technology>.
The startup-scripts of the RAN containers automatically take over the execution of the containers on the remote RAN hosts, if so configured in etc/local.env.
As an alternative, it is possible to start each component separately. This is especially useful if the RAN should run on the same host. Run
console
make run-oairan-open5gs-5g-core
to start just the core of the Stack, and
console
make run-oairan-open5gs-5g-gnb
to start the gnB.

To get a better overview of the running containers on the Controller host, ctop provides a concise and condensed overview of real-time metrics. It can be started with
console
make ctop
WebUI

When booting the Controller host, the open5Gcube WebUI is started automatically, listening on the standard HTTP port. The WebUI provides a user-friendly interface to * Get an overview of the currently running containers, including * the log output, * the health status * and detailed container information * Start and stop Stacks, optionally with adjusted settings * Read and write SIM Cards * Get links to web services by the Stack
📄 Documentation
Comprehensive documentation can be found in the Doc directory as well as in the WebUI.
📜 License
This project is licensed under the terms of the Apache-2.0 license. For more details, refer to the LICENSE file.
Owner
- Name: open5Gcube
- Login: open5Gcube
- Kind: organization
- Location: Germany
- Repositories: 1
- Profile: https://github.com/open5Gcube
Citation (CITATION.cff)
cff-version: 1.2.0
message: 'To cite package "open5Gcube" in publications use:'
title: "open5Gcube: A Modular Framework for Mobile Network Laboratories."
authors:
- given-names: Thorsten
family-names: Horstmann
repository-code: 'https://github.com/open5Gcube/open5Gcube'
url: 'https://open5gcube.de'
preferred-citation:
type: proceedings
authors:
- family-names: "Horstmann"
given-names: "Thorsten"
orcid: "https://orcid.org/0009-0000-2880-9838"
journal: "Mobilkommunikation; 29. ITG-Fachtagung"
title: "A Modular and Usable Framework for Mobile Network Laboratories."
month: 5
year: 2025
keywords:
- 5G
- open-source
GitHub Events
Total
- Issues event: 4
- Watch event: 1
- Delete event: 1
- Issue comment event: 1
- Push event: 10
- Public event: 1
- Fork event: 3
Last Year
- Issues event: 4
- Watch event: 1
- Delete event: 1
- Issue comment event: 1
- Push event: 10
- Public event: 1
- Fork event: 3
Dependencies
- base latest build
- o5gc/o5gc-base jammy build
- o5gc/o5gc-base jammy build
- mysql 5.7-debian build
- o5gc/o5gc-base jammy build
- o5gc/o5gc-base jammy build
- o5gc/o5gc-base jammy build
- develop latest build
- o5gc/o5gc-base jammy build
- proxy latest build
- develop latest build
- o5gc/o5gc-base jammy build
- proxy latest build
- o5gc/o5gc-base jammy build
- o5gc/o5gc-base focal build
- o5gc/o5gc-base focal build
- o5gc/o5gc-base focal build
- o5gc/o5gc-base jammy build
- o5gc/o5gc-base focal build
- 420 dependencies
- @quasar/app-vite ^1.3.0 development
- @quasar/quasar-app-extension-qmarkdown 2.0.0-beta.10 development
- @types/node ^12.20.21 development
- @typescript-eslint/eslint-plugin ^5.10.0 development
- @typescript-eslint/parser ^5.10.0 development
- autoprefixer ^10.4.2 development
- babel-cli ^6.26.0 development
- babel-core ^6.26.3 development
- eslint ^8.10.0 development
- eslint-config-prettier ^8.1.0 development
- eslint-plugin-only-error ^1.0.2 development
- eslint-plugin-vue ^9.0.0 development
- prettier ^2.5.1 development
- typescript ^4.5.4 development
- @quasar/cli ^2.3.0
- @quasar/extras ^1.16.4
- ansicolor ^1.1.100
- async-mutex ^0.4.0
- axios ^1.4.0
- dotenv ^16.4.5
- lodash ^4.17.21
- patch-package ^8.0.0
- pinia ^2.0.11
- pinia-plugin-persist ^1.0.0
- quasar ^2.6.0
- vue ^3.0.0
- vue-router ^4.0.0
- docker *
- flask *
- flask-cors *
- gunicorn *
- jsonschema *
- pytest *
- python-dotenv *
- pytz *
- codespell *
- nrarfcn *
- smpplib *
- robotframework >=5,<6 test
- robotframework-robocop * test