Files
openairinterface5g/ci-scripts
Jaroslava Fiedlerova e1a327ca4f Merge remote-tracking branch 'origin/nr_ue_multiple_rf' into integration_2026_w05 (!3593)
NR UE: add support for multiple RF frontends

This MR adds basic support for multiple RF-frontends at the UE.
There are multiple reasons why we might want this:
1. There might be different antennas needed for different bands (e.g. NTN or
   TN antennas). These antennas might be connected to different RF-frontends.
   In case of Handover, the UE needs to dynamically switch between these
   RF-frontends.
2. Each rf-simulator connection carries baseband I/Q samples. To be able to
   perform a handover between two cells at different frequencies, there must
   be two rf-simulator connections, as the baseband channels should not
   interfere and thus cannot simply be added.
3. When we want to support multiple UE simulation within one instance of
   nr-uesoftmodem, and allow multiple cells and probably even handover between
   these cells, we need either:
   1. dedicated RF-frontends for each simulated UE, or
   2. dedicated RF-frontends for each connected cell and dynamically assign
      simulated UEs accordingly.

This MR implements what is needed for 1., 2. and 3.1.
2026-01-28 20:19:48 +01:00
..
2025-09-26 14:58:47 +02:00
2026-01-14 23:43:08 +01:00
2025-11-03 18:46:00 +01:00
2023-02-23 17:37:31 +01:00
2023-02-24 18:19:36 +01:00
2025-09-12 14:54:49 +02:00
2025-09-10 16:43:16 +02:00
2025-11-14 18:17:29 +01:00
2025-11-14 18:17:29 +01:00
2025-11-14 18:17:29 +01:00
2025-11-14 18:17:29 +01:00
2025-11-14 18:17:29 +01:00
…
2025-11-06 13:21:08 +01:00
2026-01-14 23:43:08 +01:00
2025-09-16 15:34:53 +02:00
2025-11-14 14:57:12 +01:00

This document outlines how to use the OAI CI framework and gives a quickstart.

[[TOC]]

Quickstart

There is a script main.py that

  • reads scenario files from XML
  • executes the steps (e.g., deployment of CN/gNB/UE, attach, ping, ...)

To simplify, a script run_locally.sh can be used to run a single scenario locally. First, download images for gNB&UE (we assume you already downloaded the CN) and tag them "latest", which is expected by run_locally.sh:

docker pull oaisoftwarealliance/oai-gnb:develop
docker tag oaisoftwarealliance/oai-gnb:develop oai-gnb
docker pull oaisoftwarealliance/oai-nr-ue:develop
docker tag oaisoftwarealliance/oai-nr-ue:develop oai-nr-ue

Now, run the scenario:

cd ~/openairinterface5g/ci-scripts/
./run_locally.sh xml_files/container_5g_rfsim_simple.xml

Output should look like

[2025-08-07 18:07:49,631]     INFO: ----------------------------------------
[2025-08-07 18:07:49,631]     INFO:   Creating HTML header 
[2025-08-07 18:07:49,631]     INFO: ----------------------------------------
[2025-08-07 18:07:49,766]     INFO: ----------------------------------------
[2025-08-07 18:07:49,767]     INFO:   Starting Scenario: xml_files/container_5g_rfsim_simple.xml
[2025-08-07 18:07:49,767]     INFO: ----------------------------------------
[2025-08-07 18:07:49,767]     INFO: placing all artifacts for this run in /home/richie/oai/cmake_targets/log/container_5g_rfsim_simple.xml.d/

[...]

[2025-08-07 18:07:49,771]     INFO: ----------------------------------------
[2025-08-07 18:07:49,771]     INFO:  Test ID: 1 (#1)
[2025-08-07 18:07:49,771]     INFO:  Deploy OAI 5G CoreNetwork
[2025-08-07 18:07:49,771]     INFO: ----------------------------------------

it will run an end-to-end test, connecting one UE to the gNB, and ping, before undeploying. As shown, logs will be under /home/richie/oai/cmake_targets/log/container_5g_rfsim_simple.xml.d/. The python code also produces an HTML report in ci-scripts/test_results.html.

Running with local changes

In order to run the tests as above, with local changes, please build images locally.

It is not yet possible to override an existing image with changes made locally to a source file and run it directly through the CI framework. However, it is possible to override an existing image with local changes, and run the scenario manually following the console logs steps provided above. This is described in the 5G RFsimulator README.