Commit Graph
386 Commits
Author SHA1 Message Date
Thomas Schlichter 1f8fe224a0 NR UE: correctly apply Doppler and TA for NTN target cell
Make sure to apply Doppler and TA not directly when receiving the target cell ntn_config,
but apply Doppler just before the initial sync, and the TA after the initial sync when
we have tha actuel cell frame and slot numbers.
2025-12-19 16:42:52 +01:00
Thomas Schlichter 3dcaacb63b NR UE FAPI: provide ntn_config as part of phy_config.config_req instead of a dedicated scheduled_response dl_config PDU
We need the ntn_config when reconfiguring the PHY layer for a new initial sync,
e.g. for calculating the DL Doppler frequency.

As a dedicated scheduled_response dl_config PDU it reaches the PHY layer too late,
as part of the phy_config.config_req it reaches the PHY layer in time with the
other configuration values.
2025-12-19 16:42:47 +01:00
Thomas Schlichter ae12190a9e NR UE: improve log output in MAC 2025-12-19 16:41:02 +01:00
Thomas Schlichter b59bcaf494 NR UE: provide velocity vector down to nr-ue.c, preparing for Doppler calculation 2025-12-19 16:38:59 +01:00
francescomani 63f3fb55ae Merge remote-tracking branch 'origin/ue_ho_improve' into integration_2025_w50 2025-12-09 11:06:52 +01:00
francescomani 7da7dda71b new UE state to trigger RA after reconfiguration with sync 2025-11-29 23:13:42 +08:00
francescomani 9c8274f6bd separate RRC to MAC message to trigger SIB scheduling 2025-11-29 22:39:43 +08:00
francescomani 56f20d49bc improve handling of ssb_perRACH_OccasionAndCB_PreamblesPerSSB according to need code
(also removing unused FAPI element ssb_per_rach)
2025-11-29 22:39:43 +08:00
francescomani e454fc41d1 Trigger MSG3 with C-RNTI in MAC CE if CBRA with newUE-Identity (handover) 2025-11-29 22:39:43 +08:00
alexjiao 2e80700d78 Fix for servedRadioBearer to be NULL in RLC Bearer Config 2025-11-29 22:39:43 +08:00
Thomas Schlichter 59af5e4ad2 NR UE: introduce orbit propagation to improve N_UE_TA_adj accuracy
Instead of trying to estimate N_UE_TA_adj with a second degree polynomial,
we introduce orbit propagation to calculate N_UE_TA_adj with higher accuracy.

When we receive the satellite ephemeris data consisting of the satellite position vector
and the satellite velocity vector, we calculate parameters for orbit propagation, assuming
a circular orbit in the plane created by the satellite position vector and the satellite
velocity vector. This is done in the function prepare_ue_sat_ta().

Every millisecond, we use these parameters together with the time since epoch to calculate
the satellite position on that orbit and from this the reound-trip-time between UE and the
satellite, what corresponds to N_UE_TA_adj. This is done in the function apply_ntn_timing_advance().
2025-11-19 10:05:45 +01:00
Thomas Schlichter 654fadb116 NR UE: calculate the epoch_hfn whenever an ntn_Config_r17 is received 2025-11-19 10:05:45 +01:00
Thomas Schlichter 0bf99d9d16 NR UE: introduce the hyper frame number (HFN) in PHY, MAC and RRC layer
Provide it to the function configure_ntn_ta() so it can be used when a new ntn_Config_r17 is received.
2025-11-19 10:05:44 +01:00
francescomani f4e4ef74ff remove emulate_l1 code 2025-10-08 17:39:29 +02:00
francescomani ce1ddb260b bugfix in BWP release at UE 2025-09-04 18:43:12 +02:00
francescomani dd0188dfdc fix for config UE TCI state ID 2025-08-21 09:41:14 +02:00
Thomas Schlichter eb6c195c9b NR UE NTN: consider acceleration on orbital path to calculate N_UE_TA_drift_variant
The acceleration magnitude on the orbital path can be calculated as:

t = 2 * pi * r / v
omega = 2 * pi / t = v / r
acceleration = omega² * r = v² / r

Where t is the orbital period, r is the orbital radius, v is the orbital velocity, omega is the angular velocity.
The acceleration direction is from the SAT position towards the earth center.
To calculate the acceleration towards the UE, this is projected on the direction from the SAT to the UE.
2025-08-09 07:37:35 +02:00
Jaroslava Fiedlerova de91ab6eb9 Merge remote-tracking branch 'origin/enhance-ssb-dci-processing' into integration_2025_w32 (!3541)
simplify and make more local variables in nr_rx_pdcch() and fix small bugs...

simplify and make more local variables in nr_rx_pdcch() and fix small bugs
(size 9 RE instaed of 12 RE)
2025-08-04 23:57:40 +02:00
Laurent THOMAS b41c9e2e85 move static some functions that are used only in one file 2025-07-25 10:04:13 +02:00
Sakthivel Velumani b37cd04134 Set sib1 reception flag as per spec
TS 38.213 4.1 says coreset 0 is present only if kssb < 24 for FR1 and <
12 for FR2. This commit sets get_sib1 flag based on kssb.

Also, setting of mac state is taken out of function nr_ue_decode_mib().
2025-07-24 13:18:04 -04:00
Robert Schmidt 06a5166f17 Merge remote-tracking branch 'origin/ntn_continuous_sib19_updates' into integration_2025_w27 (!3398)
continuously update SIB19 information for rfsim NTN LEO scenarios

Contains mainly these changes:

- gNB: add function nr_update_sib19() allowing to update SIB19
  information
- rfsimulator: update SIB19 contents every frame for LEO channel
  simulations
- NR UE: improve initial timing advance calculation from SIB19

Before, we only considered ta_Common_r17 and the SAT position from SIB19
to compute the initial timing advance value. This is good enough if the
satellite does not move too fast (e.g. GEO satellite).

Now we also consider ta_CommonDrift_r17, ta_CommonDriftVariant_r17 and
the SAT velocity together with the epoch time from SIB19. This improves
the accuracy of the initial TA computation, esp. for LEO satellite
scenarios.
2025-07-04 09:42:19 +02:00
francescomani 8932566d2b improvements in T302 handling at RRC UE 2025-07-03 08:27:38 +02:00
francescomani 88af2860a2 handle RRC reject at UE 2025-07-03 08:27:38 +02:00
Thomas Schlichter 7b991c4dbf NR UE: exit from configure_ntn_ta() if ntn_Config_r17 is not provided 2025-06-20 13:58:55 +00:00
Thomas Schlichter e91fb33da3 NR UE: also use ta_CommonDriftVariant_r17 to calculate the initial timing advance 2025-06-20 11:24:06 +00:00
Thomas Schlichter 22866c3c1e NR UE: for consistency, rename ntn_ta_commondrift to N_common_ta_drift 2025-06-20 11:21:01 +00:00
Thomas Schlichter ece430b6c3 NR UE: use shorter member names for position_t structure 2025-06-20 11:18:59 +00:00
Thomas Schlichter f1d612c01b NR UE: improve initial timing advance calculation from SIB19
Before, we only considered ta_Common_r17 and the SAT position from SIB19 to compute the initial timing advance value.
This is good enough if the satellite does not move too fast (e.g. GEO satellite).

Now we also consider ta_CommonDrift_r17 and the SAT velocity together with the epoch time from SIB19.
This improves the accuracy of the initial TA computation, esp. for LEO satellite scenarios.
2025-06-20 11:18:48 +00:00
Robert Schmidt f5a07f17f1 Merge remote-tracking branch 'origin/NR_NTN_ulsyncduration' into integration_2025_w25 (!3367)
Enabling usage of ulsyncvalidityDuration timer in SIB19

ntn-UlSyncValidityDuration in SIB19 from Spec 38.331 v17.12 A validity
duration configured by the network for assistance information which
indicates the maximum time duration (from epochTime) during which the UE
can apply assistance information without having acquired new assistance
information. The unit of ntn-UlSyncValidityDuration is second. Value s5
corresponds to 5 s, value s10 indicate 10 s and so on.

    ntn-UlSyncValidityDuration-r17 ENUMERATED{ s5, s10, s15, s20, s25, s30, s35,s40, s45, s50, s55, s60, s120, s180, s240, s900}

Implementation of epochtime is under discussion.

It can be configured in configuration file according to the above
enumeration. For GEO - 240s, MEO - 20s, LEO-5s can be used.
2025-06-19 08:25:28 +02:00
Jaroslava Fiedlerova 547b2eaf52 Merge remote-tracking branch 'origin/UE_RB_suspend' into integration_2025_w25 (!3479)
Suspend RBs at UE

In case of suspended radio bearer (by RRC), the MAC needs to discarded received
PDUs and avoid to transmit using LCID related to that RB
2025-06-17 23:37:25 +02:00
Raghavendra Dinavahi 7877e38890 UE changes: Handle T430 expiry in RRC, MAC
SPEC 38.331 section 5.2.2.6
Inform MAC that UL SYNC got lost because of T430 expiry
- Send message NR_MAC_RRC_CONFIG_RESET with cause UL_SYNC_LOST_T430_EXPIRY to MAC
Reacquire SIB19 after T430 expiry

This is not checked in this commit
- RACH needs to be performed through probably PDCCH order to reobtain UL-SYNC
- system usecase involving Recovery from T430 expiry not tested yet as that requires changes on gNB side.
2025-06-17 13:50:00 +02:00
francescomani 2b4b3fcd00 discard rx PDU if RB is suspended 2025-06-16 16:39:41 +02:00
francescomani 3331a43b95 add option to suspend/resume RBs at MAC upon signaling from RRC 2025-06-16 16:36:19 +02:00
francescomani f2e06a8b12 store RB information in LCID structure at UE 2025-06-13 16:46:21 +02:00
francescomani e3e516e652 Reception of RRC Setup as response to re-establishment request
It also introduces state for resume request (even if not yet implemented)
2025-06-09 15:17:15 +02:00
Sakthivel Velumani 18c9a3720d Fix asn1c double free
The UE stores PDCCH search spaces from the network in NR_BWP_PDCCH_t
struct within NR_UE_MAC_INST_t. After storing, the pointers otherSI_SS,
ra_SS and paging_SS are updated to point to the stored SS. Multiple
pointers could point to the same stored SS struct depending on
configuration. Then when the UE wants to release the SS, the pointers
are used to free the stored SS using ASN_STRUCT_RESET(). If multiple
pointers point to the same SS, calling ASN_STRUCT_RESET() on all
pointers would lead to double free. So one needs to check for dangling
pointer before freeing.

Instead of using pointers and assigning them during configuration, we
use SS id for otherSI_SS, ra_SS and paging_SS to retrieve the pointers
whenever needed. When the UE wants to release the SS, we make them -1
indicating an invalid SS id.
2025-04-25 15:40:07 -04:00
francescomani 08da0bd2cc improvements at UE to receive multiple instances of otherSIB
for example SIB2 and SIB19 which are scheduled in separate messages
2025-04-14 10:15:50 +02:00
Jaroslava Fiedlerova 0c5e7b439c Merge remote-tracking branch 'origin/NTN_Koffset_updated' into integration_2025_w13 (!3343)
K-offset updated with configured sub carrier spacing

According to 38.331 , cell specific K-OFFSET provided in SIB19 is provided in
number of slots as per 15Khz SCS Koffset before being applied, needs to be
updated to the slots according to the configured subcarrier spacing.
2025-03-31 15:25:41 +02:00
Raghavendra Dinavahi b141faaf30 K-offset updated with configured sub carrier spacing
According to 38.331 , cell specific K-OFFSET provided in SIB19 is provided in number of slots as per 15Khz SCS
Koffset before being applied, needs to be updated to the slots according to the configured subcarrier spacing.
2025-03-28 16:44:51 +01:00
francescomani 159f06cbf5 remove unnecessary gNB include in config_ue 2025-03-26 10:39:32 +01:00
luis_pereira87 c152177327 Harmonize and update Frequency Range computation to the current values specified by the standard
3GPP TS 38.101-1 Version 19.0.0 Table 5.1-1: Definition of frequency ranges
- FR1 from 410 MHz to 7125 MHz
- FR2 from 24.25 GHz to 71 GHz
2025-03-20 20:41:21 +00:00
francescomani dcf7e4ddcd Merge remote-tracking branch 'origin/issue_907' into integration_2025_w11 2025-03-17 16:50:56 +01:00
francescomani 9f3f7b041c clearing old structures and functions for rach occasions 2025-03-12 10:15:49 +01:00
francescomani 220af3f669 move function to build ssb list after common configuration (reception of SSB information)
also removed unnecessary BWP dependence
2025-03-12 10:11:38 +01:00
francescomani a7e3e8a312 harmonization of functions to get info from PRACH config tables 2025-03-12 10:11:38 +01:00
francescomani 796c2a61a3 improvements in RA init procedures according to 5.1.1 in 38.321 2025-03-12 09:49:54 +01:00
Bartosz Podrygajlo 75f04874d1 Handle changing N_TA_offset on the UE correctly in higher layers
Send new N_TA_offset in config_request to PHY. Remove N_TA_offset update
from ta_command.
2025-03-10 16:00:54 +01:00
luis_pereira87 1d84b6d07d Fix OAI UE uplink_frequency in FDD mode 2025-03-06 13:30:58 +00:00
Sakthivel Velumani 4bfc0147ce ue mac changes for long prach
Fix bug in talbe 38.211 6.3.3.2-1 for FR2.
2025-02-23 16:18:01 -05:00
Robert Schmidt 7d574ffcfb Merge remote-tracking branch 'origin/fix_ntn_leo' into integration_2025_w07 (!3194)
fix NTN LEO scenarios

- gNB: add support for NTN parameter ta-CommonDrift-r17
- NR UE: fix application of NTN TA information
- NR UE: add command line parameter ntn-initial-time-drift to compensate
  time drift during initial sync
- NR UE: fix writeTimestamp inconsistencies
- NR UE: add MAC state UE_RECEIVING_SIB ensuring to start RA only after
  successfully receiving SIBs
- rfsimulator: update earth radius for LEO simulation to match UE
  position in ue.conf file
- update conf files for NTN LEO scenario
- update description how to run NTN scenarios in RUNMODEM.md
- fix: ta-Common is a round-trip-time, not a one-way delay
- NR UE: simplify calculation of next_tx_slot_and_frame by moving up
  assignment of duration_rx_to_tx
- cellbarredNTN indicates notbarred in SIB1 if NTN access is available
- Removed b66 NTN and enabled B254 NTN conf file in CI
- NR UE: RRC layer now explicitly tells MAC layer when the RA procedure
  can be started
- move NTN LEO config to band 254 and update doc/RUNMODEM.md

Closes #901
2025-02-17 15:09:24 +01:00