Commit Graph

32144 Commits

Author SHA1 Message Date
Jaroslava Fiedlerova
4941f44043 Merge branch 'integration_2026_w13' into 'develop'
Integration `2026.w13`

* !4004 Remove OSD, some scripts, oaisim references
* !3968 Fix DAS via index based beamforming
* !3982 UE: update pdcch config only after mib read
* !3851 Bugfix in UE DLSCH LLR functions
* !3933 mac: fixes to prevent prb overlapping
* !4006 Update cir-generator image tag to v0.0.1
* !4007 Remove old CUDA LDPC implementation
* !4005 FHI72: handle more than 64 cores
* !3805 \[E2 agent\] Refactor E2SM-KPM and implement support for REPORT style 1
* !3973 Introduce UE NAS Simulator
* !3966 PUCCH Format 1 decoder implementation and validation with nr_pucchsim
* !3681 Configure DigitalBeamTable in OAI and pass down to Aerial L1
* !3912 Fix Delta MCS mode, reimplement UL power control
* CI: Tune VNF configuration files in Aerial pipeline

Closes #1044

See merge request oai/openairinterface5g!4008
2026.w13
2026-03-26 18:58:39 +00:00
Jaroslava Fiedlerova
0576fcafa8 CI: Tune VNF configuration files in Aerial pipeline
Adjust target SNR values and introduce RSSI thresholds in the VNF configuration
files to prevent UL saturation. These changes improve uplink stability and
performance for tests with Aerial and WNC RU.
2026-03-26 18:54:35 +01:00
Jaroslava Fiedlerova
4472b9d82a Merge remote-tracking branch 'origin/fix-delta-mcs' into integration_2026_w13 (!3912)
Fix Delta MCS mode, reimplement UL power control

This change set fixes the "delta-MCS" mode, and reimplements the UL power
control loops at gNB, i.e., for PUSCH and PUCCH. It further adds new T traces
to log PUSCH/PUCCH power infrmation, and cleans up code.

The "delta-MCS" mode in OAI refers to configuring a UE with deltaMCS in the
PUSCH-PowerControl IE (see TS 38.331). In this mode, the UE adjusts the PUSCH
power for transmissions to take into account for MCS (see TS 38.213 Sec. 7.1).
In other words, the target SNR can be set to a somewhat low value, and the UE
will still use the right power for UL transmissions. Note that the spec only
foresees this adjustment of UL power when using one layer. In contrast, in the
"normal" mode, the gNB sends TPC commands to keep a UE at a fixed target SNR
(default: 20dB), regardless of the MCS or number of layers. Future work is
planned to completely remove this fixed target SNR, which is not done in this
MR yet.

Further, there is a new power control loop implementation. Prior to this MR, on
each UL transmissions, the gNB uses the SNR to decide about TPC sent to a UE in
the next transmissions. The new implementation relies on averaging the SNR, and
a "TPC in flight" average to account for the slow reaction of the average SNR.
The sum of both quantities is the current SNR that is used by the UE. See the
commit messages or documentation for more information.

Further cleanup to group data (e.g., power control configuration, refactoring of
code to save space, ...) is done. Two new T traces GNB_MAC_PUSCH_POWER_CONTROL
and GNB_MAC_PUCCH_POWER_CONTROL are added; documentation exists to explain how
to graphically plot corresponding graphs.
2026-03-26 13:57:27 +01:00
Jaroslava Fiedlerova
6a725d6e4e Merge remote-tracking branch 'origin/oran_beamforming_static_weights' into integration_2026_w13 (!3681)
Configure DigitalBeamTable in OAI and pass down to Aerial L1

With this MR it will be possible to define a Beamtable in OAI and pass it down
to a L1 (Aerial or OAI) which then will either use them locally to apply
static beamforming (Split 8 with USRP) or pass them down to the RU using 7.2
split with Section Extension 1.
2026-03-26 13:45:23 +01:00
Jaroslava Fiedlerova
a2f0cef892 Merge remote-tracking branch 'origin/pucch_format1_MR' into integration_2026_w13 (!3966)
PUCCH Format 1 decoder implementation and validation with nr_pucchsim

This is the implementation of the PUCCH Format 1 decoder, validated with
pucchsim in the current branch.
Build:
  ./build_oai --nrUE --gNB --ninja --phy_simulators
Run tests:
  ctest -L nr_pucchsim -j 8
2026-03-26 13:44:25 +01:00
Jaroslava Fiedlerova
0ceb5fd3d4 Merge remote-tracking branch 'origin/ue_nas_simulator' into integration_2026_w13 (!3973)
Introduce UE NAS Simulator

This MR introduces a simple standalone tester for 5G UE NAS signaling and NGAP
messages. It connects to the AMF to perform NGAP and NAS encoding/decoding and
validates the UE Registration and PDU Session Establishment processes without
the overhead of a full Radio Access Network (PHY/MAC/RLC).

The motivation for this tester is as follows,
- This tester is a lightweight, deterministic tool to test the UE NAS layer
directly.
- Developers can easily inject specific NAS messages depending on the use-case.
- Developers can validate custom NAS/NGAP messages without the need to implement
complete RRC/MAC etc procedures.

Start the 5G Core network to test the UE NAS simulator. The compiling and
testing procedure is described below.
To compile:
mkdir build && cd build && cmake .. -GNinja && ninja nr-ue-nas-simulator-test

To run:
  LD_LIBRARY_PATH=. ./tests/nr-ue-nas-simulator/nr-ue-nas-simulator-test -O ../tests/nr-ue-nas-simulator/test.conf
2026-03-26 13:43:11 +01:00
Rúben Soares Silva
878f6b3dca Change pack_nr_config_request to not pack VE TLVs 0xA000 and 0xA001 when compiled with Aerial, allowing them to be filled, but not sent to Aerial L1. 2026-03-25 14:18:08 +00:00
Gabriele Gemmi
610795c7d8 Read DBT from libconfig 2026-03-25 14:17:55 +00:00
Gabriele Gemmi
b4a3440128 Pack and send DBT to Aerial 2026-03-25 14:17:55 +00:00
Gabriele Gemmi
d448e99e64 read DBT from csv 2026-03-25 14:17:45 +00:00
Karim Boutiba
4649107d89 Adding unit tests for PUCCH Format 1 2026-03-25 14:29:32 +01:00
Raymond Knopp
584ace460c Add PUCCH Format 1 decoder
This commit completes the PUCCH Format 1 decoder implementation using
maximum-likelihood detection with RE averaging across symbols/RB (and
hop-wise averaging for intra-slot hopping). It also updates the PUCCH
simulation/test flow to align with the decoder changes, including
payload and logging consistency fixes needed for correct validation.
2026-03-25 14:29:32 +01:00
Robert Schmidt
2cb96ea534 Reformat pucch_rx.c 2026-03-25 14:29:31 +01:00
Robert Schmidt
1428aeac63 Add documentation for gNB power control, and explain deltaMCS 2026-03-25 09:03:49 +01:00
Robert Schmidt
22fdcd641a Print PUCCH SNR 2026-03-25 09:03:49 +01:00
Robert Schmidt
73498ccae8 Update 100MHz 2x2 test case for UL throughput
Do not limit DL power, because it is not done in the other pipelines
either. Set the UL target power high, as this increases the achievable
throughput high (PUCCH can be normal). Finally, increase BLER thresholds
to improve the MCS a bit.
2026-03-25 09:03:49 +01:00
Robert Schmidt
83e2e7760d Telnet helper to set PUSCH target SNR 2026-03-25 09:03:49 +01:00
Robert Schmidt
27a5a75685 Reuse new power control functionality for PUCCH 2026-03-25 09:03:49 +01:00
Robert Schmidt
cd0051dea1 Split compute_ph_factor() function to save space 2026-03-25 09:03:49 +01:00
Robert Schmidt
70422dc3c3 Use Msg3 PUSCH SNR measurements in new power control loop 2026-03-25 09:03:49 +01:00
Jaroslava Fiedlerova
8b9eada328 Merge remote-tracking branch 'origin/grafana-dist-channel_quality' into integration_2026_w13 (!3805)
[E2 agent] Refactor E2SM-KPM and implement support for REPORT style 1

- Refactor E2SM-KPM to:
  - better handle different supported REPORT styles needed for "E2 Setup
    Request"
  - pass "Measurement Label" for calculating the measurement values
- Implement Subscription for E2SM-KPM REPORT style 1 and fill the PDSCH MCS
  distribution measurement (CARR.PDSCHMCSDist)
- Fix the memory leakage caused by the UEs filtering based on NSSAI for REPORT
  style 4

Tested successfully with and without ASan:
- in rfsim mode: gNB-mono, CU/DU and CU-CP/CU-UP/DU
- with the USRP B210: gNB-mono

and xapp_kpm_moni, xapp_rc_moni and xapp_kpm_rc xApps.
2026-03-24 13:40:00 +01:00
Teodora
6423b6040a Fix the memory leakage in the E2SM-KPM RAN Function for REPORT style 4
1. Allocate memory for the ue_id and ue_info_list arrays on the stack.
Explanation:
   Every granularity period, the program passes through the fp_match_cond_type,
   then through match_s_nssai_test_cond_type function pointers. Based on the node type,
   the function used calloc() for these arrays.
   => the longer a connection with an E2SM-KPM xApp was, the more memory leakage occured.
2. If matched UEs > 0, only free the memory of ue_id content after each
   Indication Message was sent.
2026-03-24 10:52:06 +01:00
Teodora
9bfe26bb49 Update the submodule commit ID
Needed notably due to MR https://gitlab.eurecom.fr/mosaic5g/flexric/-/merge_requests/74.

But also, in the meantime, the MR https://gitlab.eurecom.fr/mosaic5g/flexric/-/merge_requests/73 was merged,
with the goal of reducing compilation warnings in the "Release" build.
2026-03-24 10:52:06 +01:00
fatich
b3028fdd18 Implement E2SM-KPM REPORT style 1 containing "CARR.PDSCHMCSDist" measurement
Co-authored-by: Teodora Vladić <teodora.vladic@openairinterface.org>
2026-03-24 10:52:06 +01:00
Teodora
2c96fe5cc8 Refactor E2SM-KPM: pass the "Measurement Label" for calculating the measurement values
At this stage, all supported measurements do not take the label into account (noLabel = true),
but will be of value for distribution measurements.
2026-03-24 10:52:06 +01:00
Teodora
99f7ecfff5 Refactor E2SM-KPM: handle better supported REPORT styles needed for "E2 Setup Request"
Extend the ran_def_kpm with REPORT style types.

Implement kpm_report_style function pointer for filling different REPORT styles.
2026-03-24 10:52:06 +01:00
fatich
5e379e41db Add statistics for CQI and MCS distribution 2026-03-24 10:51:59 +01:00
Jaroslava Fiedlerova
a255b0bca6 Merge remote-tracking branch 'origin/fhi72-many-cores' into integration_2026_w13 (!4005)
FHI72: handle more than 64 cores
2026-03-24 10:07:22 +01:00
Jaroslava Fiedlerova
4973c17392 Merge remote-tracking branch 'origin/remove-old-cuda-ldpc' into integration_2026_w13 (!4007)
Remove old CUDA LDPC implementation

A new implementation is under way in !3955. To simplify the MR, remove the old
LDPC CUDA implementation in a first step.
2026-03-24 10:06:36 +01:00
Jaroslava Fiedlerova
844169962f Merge remote-tracking branch 'origin/cir-generator-image-v0.0.1' into integration_2026_w13 (!4006)
Update cir-generator image tag to v0.0.1
2026-03-23 22:35:47 +01:00
Jaroslava Fiedlerova
e3c4c4da13 Merge remote-tracking branch 'origin/prb-overlap-fix' into integration_2026_w13 (!3933)
mac: fixes to prevent prb overlapping

- this patch fixes a bug in the MAC where the scheduled PRB resources can
  overlap
- at the same time, we try to enforce the same semantics for "rbStart" (which
  should be relative to the BWP) across the code as much as possible
2026-03-23 22:33:37 +01:00
Robert Schmidt
db0f6696f4 Reimplement (PUSCH) power control
Introduce new data structures to track the average SNR and RSSI, and
that allow to dynamically modify the target SNR (per UE) as well as
continuously get TPC updates based on the average SNR. The target SNR is
per power control loop (which a future commit will extend to use for
PUCCH).

Concretely, it maintains an average of measured SNR and RSSI.  It also
updates "tpc_in_flight", which tracks TPC changes that don't show up in
the average yet. For instance, imagine that the target SNR of 15 changes
to 20. Three successive TPC commands need to be sent (+3, +1, +1), but
it will take time to show up in the average SNR. To account for this,
tpc_in_flight is updated by the TPCs sent, and an average will make it
go down back to zero at the same pace as the average SNR approaches the
target SNR.  The sum of average SNR and tpc_in_flight sums up to the
actual, current SNR, which approximates the target SNR.

The SNR is kept within -1<=targetSNR<=+2dB to avoid too many TPC
changes.

The current average SNR (sum of average SNR and tpc_in_flight) is used
to continuously get TPC updates, taking into account recent TPCs sent,
the difference to target SNR, and RSSI.

If there is DTX, tpc_in_flight is modified to artificially introduce TPC
commands which increase the currently used SNR of the UE. This is
temporary, as tpc_in_flight eventually will go back to zero. If the DTX
was due to sudden SNR drop (e.g., higher path loss), this will allow to
quickly adapt the UE's SNR to new conditions.

The periodical logs are extended to not only show the current SNR, but
also the difference from the target for better analysis.

Co-authored-by: Maxime Elkael <m.elkael@northeastern.edu>
2026-03-23 17:47:32 +01:00
Robert Schmidt
ffae59427a Logs for debugging 2026-03-23 17:47:32 +01:00
Robert Schmidt
3d5edef27e Remove unused PH factor calculation
The same calculation is done in post_process_ulsch(), so we don't need it here.
2026-03-23 17:47:32 +01:00
Robert Schmidt
6fbaaa02a0 Fix deltaMCS scheduling mode: save phr_txpower_calc
The phr_txpower_calc field actually needs to be saved in the HARQ
process for later retrieval, so set sched_pusch after phr_txpower_calc
has been calculated.
2026-03-23 17:47:32 +01:00
Jaroslava Fiedlerova
15239d2595 Merge remote-tracking branch 'origin/ue-simplify-dlsch-llr' into integration_2026_w13 (!3851)
Bugfix in UE DLSCH LLR functions

Closes #1044
Fix bug in PTRS compensation.
2026-03-23 17:13:03 +01:00
Jaroslava Fiedlerova
23c4312630 Merge remote-tracking branch 'origin/nr_fix_ssbpos2' into integration_2026_w13 (!3982)
UE: update pdcch config only after mib read

- In MR !3929, this change was done to call update_pdcch_config if mac
  configuration is changed.
- Observed that the issue related to RAR after handover if SSB position changes
  occurs also in develop 2026_w10 where MR !3929 is merged.
- update_pdcch_config should be done only after sync obtained.
- this fix is similar to the fix in initial commits of MR !3929
2026-03-23 17:11:47 +01:00
Robert Schmidt
c229d59efd Add PUCCH power control T traces 2026-03-23 16:49:51 +01:00
Robert Schmidt
28d770108f Log PUSCH power control variables via T trace GNB_MAC_PUSCH_POWER_CONTROL
Include plotting tool and README on how to log and visualize graphics.
2026-03-23 16:49:08 +01:00
Romain Beurdouche
3a92eed5b9 fix(build & doc): Remove remaining mentions of ldpc_cuda
* Option to build ldpc_cuda was remaining in the build script
* Build script option to build ldpc_cuda was still used in CI
* Mentions of ldpc_cuda were remaining in the documentation

Note: In the documentation, the example of ldpctest usage that was
loading ldpc_cuda was replaced by an example in which it is loading
ldpc_orig even though this is pointless as it makes ldpctest compare
ldpc_orig with ldpc_orig. On the other hand, it is the only library
other than the default ldpc that uses the former interface.
2026-03-23 13:56:46 +01:00
Jaroslava Fiedlerova
c065a59890 Merge remote-tracking branch 'origin/fix_analog_das' into integration_2026_w13 (!3968)
Fix DAS via index based beamforming

DAS implementation via index based analog beamforming was broken after !3715.
This MR fixes it.
2026-03-23 13:10:16 +01:00
Robert
55adbe8890 Remove old CUDA LDPC implementation 2026-03-23 12:48:45 +01:00
Jaroslava Fiedlerova
390d96e55a Merge remote-tracking branch 'origin/remove-osd' into integration_2026_w13 (!4004)
Remove OSD, some scripts, oaisim references

The README says:
  It is just generating the XML file and it is placing it in
  $(OPENAIR_TARGETS)/SIMU/EXAMPLE/OSD/WEBXML/ or http://localhost/xmlfile/
  so that the oaisim could pars and run the simulation/emulation

oaisim does not exist anymore, and corresponding simulation cannot be done.
Also, it requires XAMPP and similar technologies, that I think nobody uses
in the context of OAI.
Remove also most references to oaisim.
Remove some scripts that are likely not used by anybody, or straight useless.
2026-03-23 12:26:47 +01:00
Robert Schmidt
f282402ea2 Move power configuration into struct
Group related parameters and simplify setup of these parameters.
2026-03-23 12:18:32 +01:00
Robert Schmidt
15ac13e882 Add assert: on Msg3, we cannot have phr_txpower_calc
It is not filled in the Msg3 scheduler.
2026-03-23 12:18:32 +01:00
Robert Schmidt
2ab6b88d64 Remove write-only or unused variables 2026-03-23 12:18:32 +01:00
Robert Schmidt
7dbb6251b8 Remove unused nb_nr_mac_CC 2026-03-23 12:18:32 +01:00
Merkebu Girmay
5b05df39d3 ci: update cir-generator image tag to v0.0.1 2026-03-20 18:57:57 -07:00
Thomas Schlichter
5287ed68c6 gNB MAC: use new function get_rb_alloc() for RB allocation and prevent prb overlapping
Co-authored-by: Xin Zhe Khooi <khooixz@comp.nus.edu.sg>
Assisted-by: Gemini:3 Flash
Reviewed-by: Francesco Mani <email@francescomani.it>
2026-03-20 20:59:02 +01:00
Jaroslava Fiedlerova
0ba31c0f89 Merge branch 'integration_2026_w12' into 'develop'
Integration `2026.w12`

* !3985 Fix XNAP to avoid recompilation and unnecessary includes
* !3724 Better c style pss sss
* !3972 Resolve "Demote AssertFatal `PUCCH list is full` message to a warning"
* !3956 [FHI72] [xran F] Revert and simplify the code for Liteon FR2 interoperability
* !3970 Fix for NTN phy-test mode
* !3987 T: minor: remove target record_db from automatic building
* !3993 UE: Derive Serving Network Name from SIB1 PLMN
* !3997 vrtsim doc: clarify container requirements
* !3935 [FHI72] Fix long PRACH format
* !3998 Set rxgain to 0 in vrtsim
* !3964 CI: Add FHI7.2 phytest pipeline
* !4001 Remove unused ci-scripts/mysql4testresults/ dir and content
* !3999 bugfix: use proper pointer
* !3986 handle start symbol on non-zeroth downlink symbol for SIB1 for multiplexing pattern 3 configuration.
* !3957 replace static allocation of max antennas in a dynamic structure for gnb rach
* !3859 Delay compensation in SRS
* !3909 Adjust ssPBCH_BlockPower in FHI7.2 configs

Closes #1058

See merge request oai/openairinterface5g!3989
2026.w12
2026-03-20 13:29:57 +00:00