Commit Graph
100 Commits
Author SHA1 Message Date
Robert Schmidt 0f7550831f Clarifications on license
Signed-off-by: Robert Schmidt <robert.schmidt@openairinterface.org>
2026-04-03 04:14:46 +02:00
Robert Schmidt 0393a14049 Merge remote-tracking branch 'origin/remove-unused-code' into integration_2026_w14 (!4020)
Remove a lot of unused code, defines, and config options

Remove unused header files and defines.

Slightly clean up gnb_config.c by removing all _IDX variables. Remove
these unused parameters:

- MACRLCs.[0].num_cc
- MACRLCs.[0].local_n_portc
- MACRLCs.[0].remove_n_portc
- MACRLCs.[0].remote_s_portc
- MACRLCs.[0].remote_s_portd
- L1s.[0].num_cc
- L1s.[0].local_n_portc
2026-04-02 15:46:56 +02:00
Robert Schmidt e1a7a2e8af Remove L1s.local_n_portc: not used
Also remove intermediate variable eth_params_n that is not used
anywhere.
2026-04-02 11:58:59 +02:00
Robert Schmidt 16b1a031a9 Remove MACRLCs.remote_s_portc/d: not used
Remove the gNB_MAC_INST.eth_params_s, since it's only purpose is to
store what can be on the stack.

For the Aerial log message, don't print an empty prefix but what is
actually used for Aerial.
2026-04-02 11:58:59 +02:00
Robert Schmidt 7ee619b0bc MACRLCs my/remote_portc: remove, is unused 2026-04-02 11:58:59 +02:00
Robert Schmidt 7cf92f4bae Remove all gNB num_cc parameters in MACRLCs and L1s sections
These parameters are not used.
2026-04-01 21:38:40 +02:00
Robert Schmidt 8a48fca140 Remove L1_..._IDX
Similar like parent commit, but for L1.
2026-04-01 21:19:51 +02:00
Robert Schmidt 42d5e5a0dc Remove MACRLC_..._IDX
The indices are brittle and might be wrong. Instead, use the option name
(via gpd()) to look up config options. This will also simplify the
removal of unused parameters, as we don't have to update all indices.

Remove leading CONFIG_STRING_, as it is just repetitive and adds noise.
The constants are both short(er) and sufficiently self-explanatory
without it.
2026-04-01 21:19:14 +02:00
Robert Schmidt 1a3bf557cf delay transaction: handle if no UE found
It can happen that a message is delayed, but then no UE is found for
such message, e.g., something is delayed but the UE context is deleted
in the meantime:

    [02:23:16.320730] [NR_RRC] I [--] (UE ID 3 RNTI d2b1) Remove UE context

    Assertion (ue_context_p) failed!
    In rrc_delay_transaction() /oai-ran/openair2/RRC/NR/rrc_gNB.c:191

In that case, don't delay the message further -- all handlers gated by
this function will check for the UE context and abort the transaction if
not present.
2026-04-01 17:09:37 +02:00
Robert Schmidt 1e9476a6de E1 message: handle if no UE found
Abort message processing if no UE can be found, which is what is done in
most other messages.
2026-04-01 17:09:37 +02:00
Robert Schmidt 95e4270ea7 bugfix: do not trigger e1 bearer setup when no PDU session
It can happen that no PDU session can be setup (e.g., PDU session
already setup). Check that there is at least one before triggering the
message.

Also initialize bearer_req.gNB_cu_cp_ue_id early to avoid uninitialized
IDs (e.g., when no PDU session to be setup).
2026-04-01 17:09:37 +02:00
Robert Schmidt 40a1afda05 Rewrite RUNMODEM.md for general gNB overview
Assisted-by: Claude:claude-sonnet-4-6
2026-03-31 21:35:31 +02:00
Robert Schmidt fd2fda6260 runmodem-ue.md: update multi-UE operation, minor updates 2026-03-31 21:35:31 +02:00
Robert Schmidt faadb1aa15 doc: physim: explain timing, give more ctest examples 2026-03-31 21:35:31 +02:00
Robert Schmidt 76b4899ecb USRP driver: describe patch, --continuous-tx, -E options 2026-03-31 21:35:31 +02:00
Robert Schmidt 732f970442 Add tracy documentation 2026-03-30 23:35:22 +02:00
Robert Schmidt dd3490714c Reorganize BUILD.md: cmake first, describe how to build all targets 2026-03-30 21:20:43 +02:00
Robert Schmidt 50e6cd44af Move instruction on how to configure UE to separate page
Save space in the main tutorial, and group UE-specific configuration in
one page. Add a reference where to find UE-related configuration
information.
2026-03-30 21:20:33 +02:00
Robert Schmidt 4ad1775c1d Remove unused BWP document entry 2026-03-30 21:20:29 +02:00
Robert Schmidt 37a2a0590a Move developer-specific docs to developer's section 2026-03-30 21:20:24 +02:00
Robert Schmidt 4c9aaba54a Remove NSA from instructions: already covered elsewhere 2026-03-30 21:20:22 +02:00
Robert Schmidt fbb867adb8 Split out nrUE configuration/documentation to separate document
I only modify the headings and write an introductory sentence, but the
content is otherwise unmodified.
2026-03-30 21:19:34 +02:00
Robert Schmidt 2db282c7d3 Split out NTN configuration from RUNMODEM.md
Split out to make a standalone NTN configuratio page that would be
easier to find. I only modify the headings in the new file and write an
introductory sentence of the tutorial, the rest is unchanged.
2026-03-30 21:18:01 +02:00
Robert Schmidt bdc9c4922f Remove unused ITTI tasks 2026-03-27 18:57:11 +01:00
Robert Schmidt ab0757c4d9 Remove many unused files
The lteUE RRC was sending some messages, but no TASK_PHY_UE exists to
receive them. Remove also this code for clarity.
2026-03-27 18:57:09 +01:00
Robert Schmidt 77b898b4d3 Remove unused MACRLC defines
The removed code is a subset of what is actually defined in
MACRLC_nr_paramdef.h. The only thing missing there is
CONFIG_STRING_MACRLC_LIST.
2026-03-27 17:47:51 +01:00
Robert Schmidt af4b0d53e9 Merge branch 'license-change-cssl' into 'develop'
Change OAI license to CSSL v1.0

See merge request oai/openairinterface5g!4019
2026-03-27 16:46:25 +00:00
Robert Schmidt 8107939f08 Change OAI license to CSSL v1.0 (and others)
- all RAN code, CI code, configuration files, dockerfiles, in CSSL v1.0
- all deployment code (openshift, charts, ancillary files like shell
  scripts), in MIT
- documentation in CC-BY-4.0
- exceptions might apply and are listed in NOTICE
- there is a new LICENSES folder with all licenses
- CONTRIBUTIONS.md has been updated accordingly

For automated changes based on OAI PL v1.1:

    perl -i~ -0pe 's/\/\*.*Licensed to the OpenAirInterface.*openairinterface.org\n#?/\/*\n * SPDX-License-Identifier: LicenseRef-CSSL-1.0\n/s' **/*.{c,h,cpp}
    perl -i~ -0pe 's/\/\*.*Licensed to the OpenAirInterface.*openairinterface.org\n#?/\/*\n * SPDX-License-Identifier: LicenseRef-CSSL-1.0\n/s' **/*.ts
    perl -i~ -0pe 's/<!--.*Licensed to the OpenAirInterface.*openairinterface.org\n.*-->/<!-- SPDX-License-Identifier: LicenseRef-CSSL-1.0 -->/s' **/*.xml

The rest (cmake, files with missing license, cmake) manually.
2026-03-27 16:36:37 +01:00
Robert Schmidt 6ae4ec37ca Remove most doxygen file-level commands, copyrights, and authors
Remove the \file directive, as it is always superfluous  because the
current file is implicit [1]:

> If the file name is omitted (i.e. the line after \file is left blank)
> then the documentation block that contains the \file command will belong
> to the file it is located in.

Author names and e-mails are not relevant for us: it can always be
inferred from git blame, and is often outdated.

Eurecom code has been contributed and was under OAI PL v1.0/v1.1.

For the cpack package contact: put generic email address that is
independent of an individual and that will remain reachable.

[1] https://www.doxygen.nl/manual/commands.html#cmdfile
2026-03-27 14:52:47 +01:00
Robert Schmidt 9c7f174124 Add missing header guards 2026-03-27 09:37:54 +01:00
Robert Schmidt 2a47d9d9fb Remove unused CI files 2026-03-27 09:37:54 +01:00
Robert Schmidt 63ffdbddb4 CI HTML copyright 2026 2026-03-27 08:37:52 +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
Robert SchmidtandMaxime Elkael 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
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
Robert 55adbe8890 Remove old CUDA LDPC implementation 2026-03-23 12:48:45 +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
Robert Schmidt ec7ad3b87c Apply clang-format to pucchsim.c
See diff with --ignore-all-space to see the meaningful, non-space
changes.
2026-03-19 17:57:53 +01:00
Robert Schmidt ec3642ea05 Merge remote-tracking branch 'origin/srs-delay-comp' into integration_2026_w12 (!3859)
Delay compensation in SRS

Implementation of delay compensation in channel estimation based on SRS.

Testing, for example, with

    sudo ./nr_ulsim -n1 -s50 -S50 -R51 -E 1 -W2 -y2 -z2 -d 10

we obtain the following logs.

LOGs with develop branch:

    [NR_PHY] 	  __lsRe__________lsIm__|____intRe_______intIm__|____noiRe_______noiIm__
    [NR_PHY] (   0)    687	  -198  |     688	  -198  |      -1	    -3
    [NR_PHY] (   1)      0	     0  |     688	  -196  |      -1	    -3
    [NR_PHY] (   2)    687	  -198  |     644	  -272  |      -1	    -1
    [NR_PHY] (   3)      0	     0  |     600	  -346  |      -1	    -1
    [NR_PHY] (   4)    513	  -498  |     556	  -422  |      -1	    -1
    [NR_PHY] (   5)      0	     0  |     512	  -496  |      -1	    -1
    [NR_PHY] (   6)    513	  -498  |     440	  -542  |      -1	     0
    [NR_PHY] (   7)      0	     0  |     370	  -588  |      -1	     0
    [NR_PHY] (   8)    226	  -682  |     298	  -634  |      -1	    -3
    [NR_PHY] (   9)      0	     0  |     228	  -680  |      -1	    -3
    [NR_PHY] (  10)    226	  -682  |     140	  -686  |      -1	    -1
    [NR_PHY] (  11)      0	     0  |      52	  -690  |      -1	    -1

intRe and intIm are the real and imaginary part of the interpolated
channel, respectively. These are the columns that matter. As we can see,
for example, in subcarrier 0 we have (688, -198), then in subcarrier 1
we have (688, -196), which is almost the same, and then in subcarrier 3
we have a jump (644, -272). This MR improves channel estimation by
taking delay into account. If we look at the following logs, we see that
the values vary more consistently from subcarrier to subcarrier.

LOGs with this MR:

    [NR_PHY] 	  __lsRe__________lsIm__|____intRe_______intIm__|____noiRe_______noiIm__
    [NR_PHY] (   0)    487	  -139  |     490	  -111  |      -1	     0
    [NR_PHY] (   1)    487	  -139  |     483	  -138  |      -1	     0
    [NR_PHY] (   2)    487	  -139  |     465	  -197  |       0	     0
    [NR_PHY] (   3)    487	  -139  |     436	  -254  |       0	     0
    [NR_PHY] (   4)    364	  -353  |     402	  -305  |      -1	    -1
    [NR_PHY] (   5)    364	  -353  |     361	  -352  |      -1	    -1
    [NR_PHY] (   6)    364	  -353  |     317	  -392  |      -1	    -1
    [NR_PHY] (   7)    364	  -353  |     269	  -426  |      -1	    -1
    [NR_PHY] (   8)    160	  -481  |     214	  -455  |       0	    -1
    [NR_PHY] (   9)    160	  -481  |     159	  -478  |       0	    -1
    [NR_PHY] (  10)    160	  -481  |      98	  -495  |      -1	     0
    [NR_PHY] (  11)    160	  -481  |      39	  -502  |      -1	     0
2026-03-19 17:41:59 +01:00
Robert Schmidt 7c81c8ad71 Remove most of oaisim references: does not exist anymore 2026-03-19 17:22:32 +01:00
Robert Schmidt a7bd188042 Remove unused/useless scripts 2026-03-19 17:17:06 +01:00
Robert Schmidt 79ab29c87f Remove unused defines in NGAP/S1AP 2026-03-19 17:14:05 +01:00
Robert Schmidt 49ad65c5a5 FHI72: handle more than 64 cores
xran needs to be informed about the cores to use for packet processing.
Prior to this change, we only filled the first 64bits, but it can go up
to 128 in xran. Change the helper accordingly to support all.
2026-03-19 12:17:07 +01:00
Robert Schmidt a088f6aab9 Remove OSD
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.
2026-03-19 12:13:39 +01:00
Robert Schmidt e3ac95035f Remove unused ci-scripts/mysql4testresults/ dir and content 2026-03-18 14:26:47 +01:00
Robert Schmidt fb685665e2 vrtsim doc: clarify container requirements 2026-03-18 08:59:05 +01:00
Robert Schmidt fdb6b44b05 Merge branch 'fixes-xnap' into 'develop' (!3985)
Fix XNAP to avoid recompilation and unnecessary includes

See merge request oai/openairinterface5g!3985
2026-03-13 18:59:12 +00:00
Robert Schmidt 19d1fe16ff Move xnap lib back to openair2/XNAP/
Remove the ITTI header, because it would trigger compilation errors (we
don't link in LTE/NR RRC headers), but we don't actually need it.
2026-03-13 17:17:51 +01:00
Robert Schmidt 2eacb82da5 Correct list of XNAP ASN.1 files generated by asn1c
Notably, remove asn_codecs_prim_xer.h from the list of files, triggering
problems when re-running ninja, because the "canonical OAI asn1c"
(https://github.com/mouse07410/asn1c, commit ID
940dd5fa9f3917913fd487b13dfddfacd0ded06e) does not generate it:

    ninja explain: output openair2/XNAP/MESSAGES/asn_codecs_prim_xer.h doesn't exist

In this version, a couple of files are not generated, so remove them
from the list.

Also, leave the files in the order as shown by ls.
2026-03-13 17:09:47 +01:00
Robert Schmidt c1462838b2 Merge branch 'integration_2026_w11' into 'develop'
Integration `2026.w11`

* !3864 remove xran_fh_tx_send_slot_BySymbol() and xran_fh_rx_read_slot_BySymbol()
* !3967 Harmonize the use of definition for number of symbols per slot
* !3971 Limit dl_DataToUL_ACK values to 15 as per standard
* !3414 Added NTN-FR2 FDD bands defined in release 18 in Ka-band range
* !3919 Reduce number of mutex locking in MAC->RLC direction
* !3923 XNAP: Add encode/decode and unit tests for Xn Setup Request/Response/Failure
* !3965 Enable BladeRF support in gNB Docker image
* !3904 add multi-ue support to vrtsim
* !3980 SDR reordering: correct warning, and USRP: return samples written
* !3834 Use flat buffer for txdataF in gNB L1
* !3981 Bugfix: make longer telnet cmdfunc names
* Reduce timing reference value for feptx_total in 40 MHz phytest

See merge request oai/openairinterface5g!3976
2026-03-13 08:39:06 +00:00
Robert Schmidt d82b5c1ec2 Bugfix: make longer telnet cmdfunc names
The maximum number of cmdfunc names is 20, which IMO is too low. Worse,
if it's longer, nothing will warn us because C will just fill the array
to it's end (without \0 at the end). To remedy this:

- Allow longer names till 64 bytes (I hit the previous limit of 20)
- Check that the name is within the length limit: if somebody wants a
  very long name, the strnlen() will return the maximum length, hitting
  that assertion.
- When reading a command during runtime, allow the corresponding maximum
  length.

On that occasion, also increase total number of permitted cmdfuncs.
2026-03-11 16:09:55 +01:00
Robert SchmidtandSagar Arora 61b3f3b5b4 Update RF failed to write warning, add for harmonization
The original error was simply "failed to write to RF", which is not very
precise. Update with sample numbers for context, and add it in another
similar case for consistency.

Co-authored-by: Sagar Arora <sagar.arora@openairinterface.org>
2026-03-11 15:48:22 +01:00
Robert SchmidtandSagar Arora e031af0665 USRP: usrp-tx-write-thread: return number of samples written
At least writerProcessWaitingQueue() checks for the exact number of
samples written. In many other places, we check that the return is
non-zero.

The usrp-tx-write-thread functionality returned 0, which triggers
various problems. Return the number of samples, as in the "direct write"
case (if-block before else-block).

Co-authored-by: Sagar Arora <sagar.arora@openairinterface.org>
2026-03-11 15:47:32 +01:00
Robert Schmidt 17d1e5674c reduce max buffer status size 2026-03-10 13:28:30 +01:00
Robert Schmidt 4c9b7ec679 increase priority of Aerial thread 2026-03-10 13:28:30 +01:00
Robert Schmidt 4426fb1a2e RLC data req: Add API to fill multiple RLC PDUs in one TB, use at gNB
Adds the API, which will always prepend a 3 byte header before writing a
PDU. This can be used to call less often into RLC, and avoid potential
locking.

The API is used at the gNB DLSCH scheduler.  Also, this removes the
"overhead" calculation: since we fill the entire TB at once, RLC will
leave space for headers as necessary.
2026-03-10 13:28:30 +01:00
Robert Schmidt c0a78e6c47 RLC data ind: single call for complete TB at UE 2026-03-10 13:28:30 +01:00
Robert Schmidt 2e0493632d RLC data ind: single call for complete TB at gNB 2026-03-10 13:28:30 +01:00
Robert Schmidt d0a6be27da RLC data ind: change API to handle multiple TB, but use only one 2026-03-09 11:08:34 +01:00
Robert Schmidt f8aeba44f4 RLC status ind: make only one call per UE 2026-03-09 11:08:34 +01:00
Robert Schmidt 1d69eb0e1e Add T tracer to record configured events to database
This extends the functionality provided by record in that it allows
collection of data into a Clickhouse database, allowing aggregation of
data from gNB and UE for functions like channel estimation for PUSCH
transmissions that did not decode successfully at the gNB.

It is intended to be used in conjunction with Aerial Data Lake but is
not limited to it. Data access is simpler than in !3462, but could be
improved using the metadata approach from !3462.

The integration uses logfmt for fast logging, and a clickhouse DB
client, both integrated using CPM.

This change set also adds a docker-compose file for a UE on 100MHz, to
be used with Aerial configurations, and builds the tracer for Aerial and
nrUE docker files.
2026-03-05 14:39:28 +01:00
Robert Schmidt 356a905d5a Remove RHEL and Rocky 8 from supported distributions 2026-03-04 16:10:07 +01:00
Robert Schmidt 1ea2b1b3ac Upgrade Fedora req to 43 2026-03-02 14:07:08 +01:00
Robert Schmidt d37cb161ea Update minimum cmake version to 3.19 2026-03-02 12:13:25 +01:00
Robert Schmidt 649ae91e59 Remove Ubuntu 20 support
Ubuntu 20 is EOL [1] unless people pay for support. Therefore, remove it
from build_helper. People can still use it, but might need to install a
more recent cmake version (which the next commit will upgrade). The rest
should be the same.

[1] https://ubuntu.com/about/release-cycle
2026-03-02 11:28:09 +01:00
Robert Schmidt 710ac4e29c Remove unused files/targets in CMakeLists.txt 2026-03-02 11:26:39 +01:00
Robert Schmidt 46b7670672 Merge branch 'integration_2026_w09' into 'develop'
Integration `2026.w09`

* !3944 Fail early if configuration module can not initialize properly
* !3945 gNB: Reset NDI only after usage in case of disable HARQ
* !3822 NR UE: fix PRACH k1 calculation at MAC when handover
* !3874 print better message for rsrp: invalid doesn't mean it is not measures, it...
* !3928 NR UE: correctly compute writeTimestamp for SCS > 30 kHz with rf-simulator
* !3949 fix: removed the nssai_sd parameter in the ue.conf file
* !3897 Change Aerial config file in targets to match Nvidia's CI setup
* !3951 Fix handling of IPv4v6 PDU sessions
* !3940 IPV6 support for telnet socket binding
* !3947 Add missing packing for CONFIG.request parameter BetaPSS
* !3871 Support for up to 12 ports in NR gNB
* !3943 Remove L1 dependence from NR band number
* !3892 Synchronize multiple gNBs by aliging their the slot boundaries
* !3952 Fixes for Initial UE Context Setup
* !3953 Improvements in compilation dependence
* change dl_absoluteFrequencyPointA in targets/PROJECTS/GENERIC-NR-5GC/CONF/gnb.sa.band78.fr1.24PRB.usrpb210.conf to 640032
* !3900 [CI] Pull Ubuntu base image from internal registry
* !3910 GPU Channel Simulation: nr_dlsim/nr_ulsim Integration + CI Test
* !3942 CI: rework log analysis to simplify and allow new use cases
* !3870 Configure CSI-RS according to beam_id used by UE

Closes #897 and #834

See merge request oai/openairinterface5g!3950
2026-02-27 08:41:22 +00:00
Robert Schmidt e7360679f4 Merge remote-tracking branch 'origin/pull-noble-internal' into integration_2026_w09 (!3900)
[CI] Pull Ubuntu base image from internal registry

This MR updates the Docker build process for OAI images to use a private
registry for the Ubuntu base image ubuntu:noble. This will reduce the
possibility for CI disruption if no internet connection exists.

  - Replace FROM ubuntu:noble with FROM <DEFAULT_REGISTRY>/ubuntu:noble in Ubuntu Dockerfiles

This change overcomes the pull rate limit issues from DockerHub in the
CI.

The <DEFAULT_REGISTRY> contains a multi-architecture image (arm64 and
amd64)

    $ docker buildx imagetools inspect gracehopper3-oai.sboai.cs.eurecom.fr/ubuntu:noble | grep Platform
      Platform:  linux/amd64
      Platform:  linux/arm64

- The scripts run from the jenkins server everyday using a crontab.
- It pulls the AMD and ARM ubuntu:noble image on respective servers and
  checks if the internal registry is in sync.
- If not, it pushes the ubuntu:noble image to the registry to remain in
  sync with dockerhub.
2026-02-26 16:52:44 +01:00
Robert Schmidt af19e6bce8 Fix dl_absoluteFrequencyPointA in config file
Analogously to other files under ci-scripts/.
2026-02-26 16:51:58 +01:00
Robert Schmidt 378d3a7a6b Add AnalyzeRTStatsObject() XML step 2026-02-26 14:17:28 +01:00
Robert Schmidt c6bb50edb1 Add LogAnalysis in all XML files
I try to retain/match the previous log checks, without adding new
checks.
2026-02-26 14:17:28 +01:00
Robert Schmidt 5165834051 Introduce EndsWithBye log analysis check
It was initially foreseen to just check the program exit code, but most
executables don't return with 0 (so the CI would always fail). Add a
separate check that will check for the Bye., only going through the last
X lines instead of the entire file.
2026-02-26 14:17:28 +01:00
Robert Schmidt 735058f5c4 New log-analysis checker LastLineContains 2026-02-26 14:17:28 +01:00
Robert Schmidt 366df408a1 Default checker: check for assertions 2026-02-26 14:17:28 +01:00
Robert Schmidt 30a27432f0 Remove unused logging and unused imports 2026-02-26 14:17:28 +01:00
Robert Schmidt 707cb560d5 Implement retransmission checker, include unit test 2026-02-26 14:17:28 +01:00
Robert Schmidt fe464ec6d0 Initial code for log analysis
- we agreed to basically throw away the old log checker (as it is
  unmaintainable)
- now: provide list of analysis to do
  * all checkers in cls_log_analysis, can be unit tested (see also next
    commit)
  * looked up dynamically to simplify adding of new tests + config
  * configured with

      <analysis>
        <services>DESCRIPTION [DESCRIPTION...]</services>
        <service>DESCRIPTION</service>
        ...
      </analysis>

    where DESCRIPTION follows service=func[=options]:
    - service is name of service to check
    - func is function to call, which receives filename
    - option are arbitary options to pass to func
    <services> is whitespace delimited (so can take multiple service
    analysis definitions)
    <service> exists to allow service definitions with whitespace
    changes that would not work in <services>
- I initially planned to check return code, but most softmodems actually
  exit with non-zero return code, so this is still TODO
- Default analyzer (checking for assertions, ...) is always run if a
  service is listed
- checks for file size
- add unit tests
2026-02-26 14:17:28 +01:00
Robert Schmidt 03f56c10e7 GetDeployedServices(): return container ID
will be relevant to get the return code in the next commit.
2026-02-26 13:39:39 +01:00
Robert Schmidt 2e85f67646 Remove air_interface: it's not used 2026-02-26 13:39:39 +01:00
Robert Schmidt 9e35799ca6 Remove X2HO eNBmbmsEnables variables
- it is spaghetti code: difficult to understand which code paths are
  taken
- the only effect seems to be in the UE log analysis function: it might
  make the log fail. However, we test that iperf is successful
  (Iperf2_Unidir()), and would detect before the log analysis if MBMS
  traffic does not work
- the rest is only messages that likely nobody reads

The real reason for this change is to reduce the number of class members
in the ran.py class, to simplify the functioning of the eNB analysis
function (no self) to reduce dependencies on the ran.py class.
2026-02-26 13:39:39 +01:00
Robert Schmidt 65dab3e027 Add unit test phytest analysis 2026-02-26 13:39:39 +01:00
Robert Schmidt e809841aea Move Real-Time Stats Analysis to separate step
Factor out to make existing log analysis simpler. It will also allow to
more easily port this functionality to docker-based setups.
2026-02-26 13:39:39 +01:00
Robert Schmidt 41a6188c04 Change bash set options to improve run_locally.sh
set -e makes the script exit on error. However, there is code to handle
a non-zero return code of the script, and -e prevents from writing the
footer.

add set -x to see all the commands that are being executed.
2026-02-26 13:39:39 +01:00
Robert Schmidt 44ad255195 Remove unused USRP_IPAddress 2026-02-26 13:39:39 +01:00
Robert Schmidt 92997fba2b Update tests/README.md 2026-02-26 13:39:39 +01:00
Robert Schmidt 4a2f6cd823 Remove unused docker file 2026-02-26 13:39:39 +01:00