Commit Graph
31670 Commits
Author SHA1 Message Date
Robert Schmidt 054d0f55cd base&build: install with BladeRF 2026-02-11 18:37:45 +01:00
Robert Schmidt 16c333b1a3 Compile everything in Ubuntu builder
Compile all targets in Ubuntu build to avoid breakage of software.
Remove ldd in build dockerfile, as we don't need that (can also be
inspected manually).
2026-02-11 18:37:45 +01:00
Robert Schmidt 0a585c1235 Add BladeRF configs 2026-02-11 18:37:45 +01:00
Reem Bahsoun f83b53d6d1 Update BladeRF documentation 2026-02-11 18:37:45 +01:00
Robert Schmidt 80b5d4ef22 Make functions static, reformat, use logging module
This commit does not introduce a functional change.
2026-02-11 18:37:45 +01:00
Robert SchmidtandBrice Robert 792e1ed7d9 Rewrite BladeRF's device_init()
- Add more sampling rates to support, e.g., 40MHz in 5G
- Allocate memory only at end to avoid memory leaks in case of failure
- Group recurring configuration functionality in configure_channel() to
  reduced code duplication and uniform output
- Read maximum TX gain to set maximum automatically, and analogous to
  USRP radio lib
- Check if BladeRF config (buffer size, num transfers, ...) fulfills
  requirements as specified in documentation [1]
- Set BladeRF logging early to see BladeRF output

[1] https://www.nuand.com/bladeRF-doc/libbladeRF/v2.6.0/group___f_n___s_t_r_e_a_m_i_n_g___a_s_y_n_c.html#ga72752f2a047b95544e7686596a409abd

Co-authored-by: Brice Robert <robert@eurecom.fr>
Closes: #845
2026-02-11 18:37:45 +01:00
Robert Schmidt f14aa8283c Active BladeRF on startup only, introduce BLADERF_CHECK
Don't enable radios twice, and only do it on device startup. Simplify
that function by using a new BLADERF_CHECK macro that checks return
codes and that will be reused in the following commits.
2026-02-11 18:37:45 +01:00
Brice Robert 4fdcb11edd BladeRF: Use global constant for used sampling format 2026-02-11 18:37:45 +01:00
Robert SchmidtandBrice Robert 5fdec24b52 Delete unused or useless code
Note: device->Mod_id is deleted in !3831. The calibration table has no
purpose.

Co-authored-by: Brice Robert <robert@eurecom.fr>
2026-02-11 18:37:45 +01:00
Robert Schmidt 93c37e96e6 Make BladeRF library compile
Fixes: dd8a25524a ("remove dead code in common_lib.h")
2026-02-11 18:37:45 +01:00
Robert Schmidt 4e5d92401b Add Debian 12 to list of supported distributions 2026-02-11 18:37:45 +01:00
Robert Schmidt 38975ef120 Allow installation of multiple hardwares in same build_oai invocation
There is no reason to not allow

    ./build_oai -I -w USRP -w BLADERF

To install USRP and BladeRF together (which will be used in the CI in a
later commit). Fix this.
2026-02-11 18:37:45 +01:00
Robert Schmidt 977c484524 Remove option --disable-hardware-dependency 2026-02-11 18:37:45 +01:00
Robert Schmidt c5834e6c1b Fix nr_srssim linking problems when building with E2 support
In this case, there are a number of linker errors:

    /usr/bin/ld: libL2_NR.a(rrc_gNB.c.o): in function `nr_rrc_transfer_protected_rrc_message':
    /home/richie/oai/openair2/RRC/NR/rrc_gNB.c:330:(.text+0x6f6): undefined reference to `signal_rrc_msg'

However, nr_srssim does not need RRC, while it is being linked in. Thus,
link without nr_rrc and L2. For the remaining two linker problems:

- provide a definition of NR_IF_Module_init() as in most other
  simulators
- move rrc_get_max_nr_csrs() to nr_common.c. It is already declared in
  the corresponding header, and itself does not have anything to do with
  RRC radio configuration, therefore it does not belong to
  nr_radio_config.c
2026-02-11 18:37:45 +01:00
Jaroslava Fiedlerova 9777d23173 Merge branch 'integration_2026_w06' into 'develop'
Integration `2026.w06`

* !3690 [FHI72] Support large DU delay profiles in the xran F, and include ProtO-RU emulator designed to run 7.2 with an USRP
* !3887 Update RHEL UBI image source to `registry.redhat.io`
* !3882 Change Aerial to pack directly in nvIPC message buffer
* !3895 CI: Ensure OAI-FLEXRIC-RAN-Integration-Test pipeline always uses latest commit for non-MR builds
* !3873 Ensure noise power is non-zero
* !3889 Enable imscope for split7.2
* !3801 Resolve "7.2 split ru_thread slot miss
* !3898 Fix config_libconfig_get for string
* !3876 Removing the duplicate loop in ULSCH power computation

Closes #972

See merge request oai/openairinterface5g!3888
2026-02-06 07:42:09 +00:00
Jaroslava Fiedlerova 068e91ad0c Merge remote-tracking branch 'origin/string_libconfig_fix' into integration_2026_w06 (!3898)
Fix config_libconfig_get for string

Change in libconfig reading input for string to reject if it is not of type
string with an error message
2026-02-05 17:53:45 +01:00
Jaroslava Fiedlerova 543fab819e Merge remote-tracking branch 'origin/fix-ulsch_power' into integration_2026_w06 (!3876)
Removing the duplicate loop in ULSCH power computation

- Removing the duplicate loop in ULSCH power computation.
- The logs obtained are as follows:

[NR_MAC] UE dc65: 134.11 Generating RA-Msg2 DCI, RA RNTI 0x113, state 1, preamble_index(RAPID) 42, timing_offset = 5 (estimated distance 195.3 [m])
[PHY]    PUSCH not detected in 134.17 (307,302,50)
[PHY]    PUSCH not detected in 134.17 (311,309,50)
[NR_MAC]  135 4: RA RNTI 41c5 CC_id 0 Scheduling retransmission of Msg3 in (135,8)
[NR_MAC]  135 4: RA RNTI a3cc CC_id 0 Scheduling retransmission of Msg3 in (135,8)
[PHY]    PUSCH not detected in 134.18 (310,312,50)
[NR_MAC]  135 5: RA RNTI dc65 CC_id 0 Scheduling retransmission of Msg3 in (135,9)
[PHY]    PUSCH not detected in 135.8 (309,309,50)
[PHY]    PUSCH not detected in 135.8 (313,308,50)
[NR_MAC]  13515: RA RNTI 41c5 CC_id 0 Scheduling retransmission of Msg3 in (135,19)
[NR_MAC]  13515: RA RNTI a3cc CC_id 0 Scheduling retransmission of Msg3 in (135,19)
[PHY]    PUSCH not detected in 135.9 (308,300,50)
[NR_MAC]  136 4: RA RNTI dc65 CC_id 0 Scheduling retransmission of Msg3 in (136,8)
[NR_PHY] [RAPROC] 135.19 Initiating RA procedure with preamble 6, energy 19.1 dB (I0 63, thres 120), delay 4 start symbol 0 freq index 0
[PHY]    PUSCH not detected in 135.19 (310,310,50)
[PHY]    PUSCH not detected in 135.19 (312,310,50)
[NR_MAC] 135.19 UE RA-RNTI 010b TC-RNTI 0888: initiating RA procedure
[NR_MAC] UE 0888: Sync beam index 0
[NR_MAC] UE 0888: Msg3 scheduled at 136.17 (136.10 TDA 2) start 0 RBs 8
[NR_MAC] UE 0888: 136.10 Generating RA-Msg2 DCI, RA RNTI 0x10b, state 1, preamble_index(RAPID) 6, timing_offset = 4 (estimated distance 156.3 [m])

- For the same scenario, develop branch gives exactly the same result. When
  there is no PUSCH, the power measured for ULSCH and noise are practically
  the same. Furthermore, the value in develop branch is also approximately
  310 for the same noise level.
2026-02-05 17:49:06 +01:00
Jaroslava Fiedlerova 0858ee8877 Merge remote-tracking branch 'origin/972-7-2-split-ru_thread-slot-miss' into integration_2026_w06 (!3801)
Resolve "7.2 split ru_thread slot miss"

Closes #972
2026-02-05 15:21:25 +01:00
rmagueta 0c2a9384d0 Removing the duplicate loop 2026-02-05 13:33:03 +00:00
francescomani 269880f89d change in libconfig for string to reject an input that is not of type string with error message 2026-02-05 13:35:13 +01:00
Robert Schmidt 12fc8112d9 Merge remote-tracking branch 'origin/imscope-for-7.2' into integration_2026_w06 (!3889)
Enable imscope for split7.2
2026-02-05 13:28:08 +01:00
andrewse 95c8fa468a fhi_72: Track delay processing via atomic variable
Add xran_queue_length atomic variable to count the number of messages in
oran_sync_fifo (as notifiedFIFO_t does not do this). Use this to
tolerate some double messages (e.g. excessive processing delay), but
start to skip if messages accumulate.

Prior to this change, "Detected double sync message" was printed each
time there was more than one message, which reflected the previous
behavior when using polling, but the gNB might catch up if it is only
once. The new logic ensure that we don't skip individual slots but do so
once messages start to accumulate.
2026-02-05 13:19:12 +01:00
Jaroslava Fiedlerova f4b9e04c61 Merge remote-tracking branch 'origin/fix-noise-calc' into integration_2026_w06 (!3873)
Ensure noise power is non-zero

Prior to this commit, noise power estimation could be zero because of a
call to clearArray() in gNB_I0_measurements(). This is problematic, as
this can lead to a noise power of 0 if all symbols in a RB are used,
which in turn leads to a spike in SNR.

To avoid this, use an intermediate array to store noise power, and only
update n0_subband_power if not all RBs are used (i.e., we can detect
noise power). Further, use an exponential moving average to smoothen
noise estimation.

Fixes: fb4235fd ("changes in PUCCH0 SNR measurement, testing for
PUCCH power control")
2026-02-05 10:20:45 +01:00
Laurent THOMAS 74b998a0d8 Rewrite n0_subband_power_avg_dB calculation with better locality 2026-02-04 19:22:00 +01:00
Laurent THOMAS ee00eb346e Reformat dump_nr_I0_stats() 2026-02-04 19:11:10 +01:00
Laurent THOMAS 656b1d52a0 Remove unused global variables 2026-02-04 19:09:38 +01:00
Robert Schmidt b533127553 Ensure noise power is non-zero
Prior to this commit, noise power estimation could be zero because of a
call to clearArray() in gNB_I0_measurements(). This is problematic, as
this can lead to a noise power of 0 if all symbols in a RB are used,
which in turn leads to a spike in SNR.

To avoid this, use an intermediate array to store noise power, and only
update n0_subband_power if not all RBs are used (i.e., we can detect
noise power). Further, use an exponential moving average to smoothen
noise estimation.

Fixes: fb4235fd50 ("changes in PUCCH0 SNR measurement, testing for
    PUCCH power control")
2026-02-04 18:36:08 +01:00
Robert Schmidt ec0b97beae Merge remote-tracking branch 'origin/ci-fix-jenkinsfile' into integration_2026_w06 (!3895)
CI: Ensure OAI-FLEXRIC-RAN-Integration-Test pipeline always uses latest commit for non-MR builds

Related MR -> mosaic5g/flexric!77

For push events, we have:

    sh "git fetch"
    sh "git checkout -f ${commitID}"

We need to do a reset hard so that the run is executed on synchronized
develop branch.

In the pipeline, we see:

    17:38:34  + git checkout -f develop
    17:38:34  Previous HEAD position was 9cb79027e4 Merge branch 'integration_2026_w05' into 'develop'
    17:38:34  Switched to branch 'develop'
    17:38:34  Your branch is behind 'origin/develop' by 526 commits, and can be fast-forwarded.
    17:38:34    (use "git pull" to update your local branch)

After implementing the fix:

Below are the runs for pipeline triggered by a merge request event:

    https://jenkins-oai.eurecom.fr/job/OAI-FLEXRIC/229/
    https://jenkins-oai.eurecom.fr/job/OAI-FLEXRIC-RAN-Integration-Test/3788/

In the OAI-FLEXRIC-RAN-Integration-Test pipeline, which is executed by
Build with Parameters from OAI-FLEXRIC

We see the pipeline took the latest develop:

    11:26:02  + git reset --hard origin/develop
    11:26:02  HEAD is now at 9cb79027e4 Merge branch 'integration_2026_w05' into 'develop'
2026-02-04 12:55:33 +01:00
Robert Schmidt 357496a88a Merge remote-tracking branch 'origin/Change_nvIPC_send_functions' into integration_2026_w06 (!3882)
Change Aerial to pack directly in nvIPC message buffer

This MR changes the Aerial pack/send procedures to pack the messages
directly into the nvIPC message buffers.

This saves the use of some memcopy calls, as well as clean up the code.

The P7 message packing/send is now only handled in the file
`fapi_nv_p7.c`

Add 3 functions in fapi_nvIPC.c to allow message allocation, release and
send from fapi_vnf_p7.c

Add 2 functions to access the memory pool sizes allocated from nvIPC, as
we can't use sizeof to report the buffer size to the packing functions

Remove now unused aerial_send_P5_msg , aerial_send_P7_msg and
aerial_send_P7_msg_with_data functions

Now Aerial only has one function to handle sending P5 and another to
send P7 messages

Remove fapi_phy_api_msg from fapi_nvIPC.h as it is duplicated in
nr_fapi.h
2026-02-04 12:12:47 +01:00
Shubhika Garg df7db3ab27 ci-fix: Ensure downstream pipeline always uses latest commit for non-MR events
- ensure the local branch is synchronized with the latest commit from the remote.
     - Related MR!77 on mosaic5g/Flexric repository
2026-02-04 11:15:18 +01:00
Rúben Soares Silva b7867a4053 Change data_len type in aerial_pack_tx_data_request to match with nv_ipc_msg_t.data_len type 2026-02-03 10:20:45 +00:00
Rúben Soares Silva 54076927ba Remove duplicated FAPI header struct from fapi_nvIPC.h 2026-02-03 10:20:45 +00:00
Rúben Soares Silva aeba59a9ad Change Aerial to pack directly in nvIPC message buffer.
Get mempool sizes from nvIPC for usage in the packing procedures.

Remove now unused functions.
2026-02-03 10:20:45 +00:00
Bartosz Podrygajlo 315fe92253 Enable imscope for split7.2 2026-02-03 10:04:42 +01:00
Jaroslava Fiedlerova 2c1687e44f Merge remote-tracking branch 'origin/rhel-fix' into integration_2026_w06 (!3887)
Update RHEL UBI image source to registry.redhat.io

This merge request updates the RHEL UBI base image source to registry.redhat.io,
aligning with Red Hat’s supported container registry and avoiding potential
access or availability issues with registry.access.redhat.com.
2026-02-03 08:12:06 +01:00
Jaroslava Fiedlerova 358c17ce58 Merge remote-tracking branch 'origin/xran-large-delay-profile' into integration_2026_w06 (!3690)
[FHI72] Support large DU delay profiles in the xran F, and include ProtO-RU
emulator designed to run 7.2 with an USRP

This MR does the following:
- we patch xRAN to support large DU delay profiles (i.e., T1a/Ta4 values larger
  than a TTI)
- we update the FHI72 docs to introduce ProtO-RU, a software implementation of a
  Split-7.2 O-RU with large delay profile
- we provide an example configuration for ProtO-RU

Details on the xRAN patch:
In xRAN, it appears that T1a/Ta4 values are assumed to be within a TTI. When
T1a/Ta4 values larger than a TTI are used, this causes two issues:
(1) C-plane packets to be generated later than expected, and
(2) oai_xran_fh_rx_callback() receives the wrong timing information, resulting
    in potentially empty/stale PUSCH/PRACH data to be read.
In the xRAN patch, we modify xRAN to make it handle large T1a/Ta4 values properly.
The changes include:
(1) three additional variables in offset_num_slots_* (xran_dev.h),
(2) modify "xran_timing_create_cbs" and "xran_timer_arm_for_deadline"
    (xran_cb_proc.c), and
(3) revise "tx_cp_dl_cb" and "tx_cp_ul_cb" (xran_main.c).
Additionally, we add additional guard conditions to prevent xran_tx_proc.c from
sending U-plane packets when it is not a downlink slot.
2026-02-03 08:07:56 +01:00
Xin Zhe Khooi 95df8b174e protoru: fix doc indent 2026-02-02 15:28:06 +00:00
Xin Zhe Khooi 34c001d488 protoru: sample config update 2026-02-02 15:07:42 +00:00
Xin Zhe Khooi 0388bf0e67 protoru: add docs and sample config 2026-02-02 15:01:44 +00:00
Xin Zhe Khooi 003d72c859 fhi7.2: introduce support for T1a and Ta4 values larger than TTI interval
In xRAN, it appears that T1a/Ta4 values are assumed to be within a TTI.
When T1a/Ta4 values with larger than a TTI are used, this causes two issues: (1) C-plane packets to be generated later than expected and (2) oai_xran_fh_rx_callback() receives the wrong timing information resulting in potentially empty/stale PUSCH/PRACH data to be read.

In this patch, we modify xRAN to make it handle large T1a/Ta4 values properly.
The changes include: (1) three additional variables in offset_num_slots_* (xran_dev.h), (2) modify "xran_timing_create_cbs" and "xran_timer_arm_for_deadline" (xran_cb_proc.c), and (3) revise "tx_cp_dl_cb" and "tx_cp_ul_cb" (xran_main.c).
Additionally, we add additional guard conditions to prevent xran_tx_proc.c from sending U-plane packets when it is not a downlink slot.
2026-02-02 15:00:01 +00:00
Robert Schmidt 9cb79027e4 Merge branch 'integration_2026_w05' into 'develop'
Integration `2026.w05`

* !3850 Update vrtsim timing job thread
* !3853 Clear memory in shm_td_iq_channel after RX
* !3823 Fix RSRP overflow
* !3766 UE support to send CSI report on PUSCH
* !3848 Initial implementation of O-RU for 7.2 emulator
* !3860 NGAP: improve error handling in RRCReconfiguration from Handover Command decoding
* !3507 Create Debian and Redhat packages with CPack
* !3875 Fix FFT size for xran_fh_tx_send_slot_BySymbol() and xran_fh_rx_read_slot_BySymbol()
* !3593 NR UE: add support for multiple RF frontends
* !3769 Add Ethernet PDU session support and make PDU session request configurable
* !3831 semi-manual remove of not used #define commands
* Update RFsim4G UE configs for RFsim changes after !3593
* !3821 [FHI72] [xran F] Handle fragmented (un)compressed packets
* !3732 Implement TS 38.473 transparency for CellGroupConfig forwarding and handle re-establishment on a different DU
* !3880 Prevent the PNF from sending P7 messages after sending a STOP.indication
* !3868 CI: Upgrade Aerial pipeline to 25-3
* Revert one CI XML change after !3732

Closes #1045, #837, and #1043

See merge request oai/openairinterface5g!3877
2026-01-30 16:38:25 +00:00
Robert Schmidt 50e133f791 Revert "CI: upgrade RAN-SA-Handover-CN5G F1 handover test to test Reestablishment on a different DU"
The CI test proved not as stable as expected (because the UE triggers A3
events which we don't want), so revert this functionality while we work
on a new pipeline.

This reverts commit bc62e8abca.
2026-01-30 15:55:33 +01:00
Jaroslava Fiedlerova 5ff032f9a7 Merge remote-tracking branch 'origin/aerial_25-3' into integration_2026_w05 (!3868)
CI: Upgrade Aerial pipeline to 25-3

Upgrade Aerial CI pipeline to 25-3 after aerial-cuda-accelerated-ran became
open source.
2026-01-30 12:17:10 +01:00
Reem Bahsoun 81eb336add Add -l option to DL throughput tests in the Aerial pipeline 2026-01-30 12:13:05 +01:00
Reem Bahsoun 37b1a0a9f3 Align configuration file in targets/ with the configuration file in ci-scripts/ and fix spacing. 2026-01-30 12:13:05 +01:00
Reem Bahsoun 283063f3da Update tutorial to align with the new Aerial release (25-3) 2026-01-30 12:13:01 +01:00
Shubhika Garg f393300da1 RHEL: switch registry to registry.redhat.io
- Switched base image source from registry.access.redhat.com to registry.redhat.io for all RHEL9 variants.
2026-01-30 10:11:21 +01:00
Jaroslava Fiedlerova 7ba52783fb CI: fix missing rfsimulator section in UE conf file in 5G RF-Sim
Update UE config introduced in !3769 to align with changes from !3593.
2026-01-30 09:18:23 +01:00
Robert Schmidt a0ff4828cf Merge remote-tracking branch 'origin/prevent-p7-msg-after-stop-indication' into integration_2026_w05 (!3880)
Prevent the PNF from sending P7 messages after sending a STOP.indication

Upon stopping the PNF, when sending the STOP.indication to the VNF, set
pnf_p7->terminate to 1.

Add a check on the PNF P7 send functions to not send a message after
pnf_p7->terminate is set.

This prevents the PNF from sending SLOT.indications after stopping,
which sometimes was causing the VNF to process a SLOT.indication after
it had received the indication to STOP.

Also, this MR adds a sanity check on the VNF P7 message handler to
ignore any P7 messages it receives after having it's own terminate flag
set to 1

This MR closes issue #1045
2026-01-29 17:22:15 +01:00
Robert Schmidt bc6f710b23 Merge remote-tracking branch 'origin/uncompressed-f' into integration_2026_w05 (!3821)
[FHI72] [xran F] Handle fragmented (un)compressed packets

In both E and F, the radio-transport fragmentation is not supported, and
all the "fragmented" (not seen as fragments in the xran, only as
sections) packets contain "E-bit" equal to 1. Per spec, the value 1 for
"E-bit" signifies the last fragment of one symbol. For more info, please
see "ecpriSeqid" section in the spec.

In E:

- nRBStart and nRBSize is updated according to the sent/received packet;
- max sections = 1;
- when a packet is fragmented, the xran uses memcpy(pos, iq_data_start,
  size) function, and nothing is stored in start_prbu , num_prbu ,...

In F:

- nRBStart and nRBSize is only used for C-plane messages;
- nPrbElm represents the number of sections for DL only;
- based on the nPrbElm, each section contains UP_nRBStart and UP_nRBSize
  parameters which represent the start and number of PRBs in one section
  or one fragment;
- when a packet is fragmented, the xran uses nSecDesc and sec_desc to
  extract the packet section content, and the data is stored in
  start_prbu , num_prbu ,...

Previous work on the fragmentation in F:

- #884
- !3394 - only increases the XRAN_MAX_FRAGMENT from 4 to 6, since it was
  only tested with BFP 8, but not end-to-end unfortunately. But this MR
  fixes all the issues.

Tested with VVDN RU, 2x2, 16 bits, 100MHz, 30kHz, MTU <= 9216 B, and
Quectel UE RM520N-GL Revision: RM520NGLAAR03A03M4G.
2026-01-29 17:20:54 +01:00