Thomas Schlichter
4b859a2eb8
fix sidelink UE issues found by sanitizer
2024-08-26 17:08:27 +02:00
Thomas Schlichter
b17b44dffb
add description how to run a LEO satellite rfsimulation to RUNMODEM.md
2024-08-23 14:57:48 +02:00
Thomas Schlichter
ede6775ac3
fix for compilers that don't support the CMPLX() macro
2024-08-23 14:57:48 +02:00
Thomas Schlichter
0eb409f114
NR_UE: Perform autonomous timing advance to compensate for fast time drift with relatively large RTT
...
As we don't have SIB19 with continuously updated ta-Common and ta-CommonDrift values yet, the UE can only adapt it's UL timing according to it's DL drift.
This is required for the UE to keep UL sync with fast time drift and relatively long RTT (e.g. LEO satellite).
We should replace this with the standard compliant way as soon as we have SIB19 with continuously updated contents.
2024-08-23 14:57:48 +02:00
Thomas Schlichter
e662721310
NR_UE: make NTN parameter ta_CommonDrift_r17 configurable via command line parameter --ntn-ta-commondrift
...
While we don't have SIB19 support yet, UE gets this parameter from command line, just like --ntn-koffset and --ntn-ta-common.
We use this value to initialize the UE's time-tracking PI controller accumulator.
This allows to correctly track the time even if the delay is changing significantly (e.g. due to LEO satellite movement).
We also use it to compensate for the time drift that happenes while performing the initial sync.
2024-08-23 10:26:18 +02:00
Thomas Schlichter
fc4310cda7
fix multi-statement marco asn1cCallocOne()
2024-08-23 10:26:18 +02:00
Thomas Schlichter
4039473a70
NR_UE: add PI controller to time sync
...
this allows to compensate larger continuous time drift in DL (e.g. large Doppler from LEO satellite)
2024-08-23 10:26:18 +02:00
Thomas Schlichter
8ab7f1dd68
change returned value of UE_dl_preprocessing() in case no sampleShift change from 0 to INT_MAX
...
This now allows to indicate "there was a new sampleShift calculation, and the actual value is 0"
additionally to "there was no new sampleShift calculation".
2024-08-23 10:25:00 +02:00
Thomas Schlichter
cfb6ed4d82
add example configuration using transparent LEO satellite model for rfsimulator
2024-08-20 16:46:25 +02:00
Thomas Schlichter
6a8edaf317
rfsimulator: add delay and Doppler simulation for circular orbit and add according channel models SAT_LEO_TRANS and SAT_LEO_REGEN
...
Delay and Doppler computation is done as in Matlab function dopplerShiftCircularOrbit:
https://de.mathworks.com/help/satcom/ref/dopplershiftcircularorbit.html
2024-08-20 16:46:25 +02:00
Thomas Schlichter
68b07d542c
rfsimulator: correctly set center frequency
2024-08-20 16:46:25 +02:00
Thomas Schlichter
fae529b384
add documentation for disable_harq flag in NTN section of doc/RUNMODEM.md
2024-07-23 10:42:10 +02:00
Thomas Schlichter
b76eb19471
gNB: refactor code to handle end of using a specific HARQ process - finish_nr_dl_harq() and finish_nr_ul_harq()
2024-07-19 16:09:04 +02:00
Thomas Schlichter
cd052951d5
gNB: do not schedule DLSCH ACK/NACK reporting in PUCCH for harq pid where feedback is disabled
2024-07-19 10:43:52 +02:00
Thomas Schlichter
3a014e199f
NR UE: skip DLSCH ACK/NACK reporting for harq pid where feedback is disabled
2024-07-19 10:43:52 +02:00
Thomas Schlichter
fe7be3f130
Make handle_nr_uci_pucch_2_3_4() more consistent regarding logs with handle_nr_uci_pucch_0_1()
2024-07-19 10:43:52 +02:00
Thomas Schlichter
44410df598
fix double reduction of sched_ul_bytes in case of failing 4th HARQ round
...
sched_ul_bytes is reduced already in case the last HARQ round fails through handle_nr_ul_harq() -> abort_nr_ul_harq().
Therefore, the reduction in nr_rx_sdu() is wrong, and btw. it wrongly assumes the max. UL HARQ rounds to 4.
So simply remove this peace of code in nr_rx_sdu().
2024-07-19 10:43:52 +02:00
Thomas Schlichter
a6fb797477
improve tracking of sched_ul_bytes in nr_rx_sdu() by using sdu_lenP instead of sched_pusch.tb_size
...
sched_ul_bytes tracks the volume of in-flight data.
When data is successfully received, sched_ul_bytes is decreased in nr_rx_sdu().
In case of reusing HARQ processes, the tb_size stored there is not correct.
Therefore use the actual SDU size instead.
2024-07-19 10:43:52 +02:00
Thomas Schlichter
b331ad21f4
in nr_rx_sdu() use HARQ ID from nfapi_nr_crc_t instead of feedback_ul_harq
2024-07-19 10:43:52 +02:00
Thomas Schlichter
f7665357fc
dont't print warning in handle_nr_ul_harq() if disable_harq == 1
2024-07-19 10:43:52 +02:00
Thomas Schlichter
9a0408a5c7
immediately reuse Msg4 HARQ ID and don't wait for Msg4 feedback if DL HARQ feedback is disabled
2024-07-19 10:43:52 +02:00
Thomas Schlichter
4baac21ec6
immediately reuse UL HARQ ID and don't wait for feedback if disable_harq == 1
2024-07-19 10:43:52 +02:00
Thomas Schlichter
bf2baf2ffe
immediately reuse DL HARQ ID and don't wait for feedback if DL HARQ feedback is disabled
2024-07-19 10:43:52 +02:00
Thomas Schlichter
ae4cbcfb0c
gNB: add config file option "disable_harq" and set pdsch_servingcellconfig->ext3->downlinkHARQ_FeedbackDisabled_r17 accordingly
2024-07-19 10:43:52 +02:00
Thomas Schlichter
e6719d7718
remove superfluous semicolon from multi-line macros in oai_asn1.h
2024-07-15 10:46:05 +02:00
Thomas Schlichter
394431a594
remove nrqtscope
2024-07-13 11:22:36 +02:00
Thomas Schlichter
359880fa73
rfsimulator: use ceil() to calculate the integer number of chan_offset samples from the prop_delay_ms
...
The actual propagation delay should not be smaller than the one specified.
A too short propagation delay might result in too early reception of Msg1, and with that in a mis-detection of the RAPID.
2024-07-11 14:48:52 +02:00
Thomas Schlichter
9dc0dc5ffe
NR UE: improve PSS detection by reducing the detection step size from 8 to 4
...
Until commit d74b2bd19f , the PSS detection step size was 4, anyways.
The PSS detection step size is a compromise between detection duration and accuracy.
The most accurate detection step size would be 1, but this would lead to even longer initial sync time.
2024-07-11 14:43:13 +02:00
Thomas Schlichter
4ddb2d3bac
add section with NR UE NTN example to doc/RUNMODEM.md
2024-07-11 13:33:30 +02:00
Thomas Schlichter
1e47311259
NR UE: use sr_ProhibitTimer_v1700 if present
2024-07-11 13:33:30 +02:00
Thomas Schlichter
75efcf49b9
NR UE: add NTN specific parameter ta-Common and use it for initial timing advance, RA_contention_resolution_timer and RA_window_cnt
...
The value for this parameter can be set via UE command line parameter `--ntn-ta-common` in milliseconds.
2024-07-11 13:33:30 +02:00
Thomas Schlichter
021f97cf10
NR UE: increase DURATION_RX_TO_TX by cellSpecificKoffset_r17
2024-07-10 15:56:05 +02:00
Thomas Schlichter
26175c5413
NR UE: add NTN specific parameter cellSpecificKoffset_r17 and use it for UL scheduling
...
According to the RRC specification, cellSpecificKoffset is:
Scheduling offset used for the timing relationships that are modified for NTN (see TS 38.213 [13]).
The unit of the field K_offset is number of slots for a given subcarrier spacing of 15 kHz.
If the field is absent UE assumes value 0
This parameter `cellSpecificKoffset_r17` can be set via UE command line parameter `--ntn-koffset`.
2024-07-10 14:42:42 +02:00
Thomas Schlichter
f7c2732899
add section with NTN example to doc/RUNMODEM.md
2024-06-03 11:54:55 +02:00
Thomas Schlichter
75f5215b22
add exemplary cellSpecificKoffset_r17, sr_ProhibitTimer_v1700, t300, t301 and t319 to conf files for 24 and 25 PRBs
2024-06-03 11:54:55 +02:00
Thomas Schlichter
f1938acbab
gNB: make ue_TimersAndConstants configurable via conf file
2024-06-03 11:54:55 +02:00
Thomas Schlichter
90fa3d5534
gNB: make SR timers configurable in CONF file
2024-06-03 11:54:55 +02:00
Thomas Schlichter
4cdf4d61f3
gNB: add sr_ProhibitTimer_v1700
2024-06-03 11:54:55 +02:00
Thomas Schlichter
be41a4ea60
gNB: use 2 * K2 for contention_resolution_timer, as the timer starts with Msg2 transmission and ends with Msg4 ACK reception
2024-06-03 11:54:55 +02:00
Thomas Schlichter
0ce0282238
gNB: make checks for missed feedbacks more robust w.r.t. frame number warp-around in find_harq()
2024-06-03 11:54:55 +02:00
Thomas Schlichter
6b01cfb8e2
gNB: fix phytest scheduler in case no HARQ processes are available
...
In case no HARQ processes are available (because all are waiting for feedback), we skip scheduling...
2024-06-03 11:54:55 +02:00
Thomas Schlichter
8e4526e221
gNB: change TA update interval to 100 frames instead of 10
...
The RTT for GEO satellites is more than 500 ms.
And as the TA update interval must be greater than the RTT, we increase it to 1 second instead of 100 ms.
Should also do no harm for terrestrial networks.
2024-06-03 11:54:55 +02:00
Thomas Schlichter
ccba7c875d
gNB: add NTN specific parameter cellSpecificKoffset_r17 and use it for UL scheduling
...
According to the RRC specification, cellSpecificKoffset is:
Scheduling offset used for the timing relationships that are modified for NTN (see TS 38.213 [13]).
The unit of the field K_offset is number of slots for a given subcarrier spacing of 15 kHz.
If the field is absent UE assumes value 0
This parameter `cellSpecificKoffset_r17` can be set in the gNB conf file, in the section `servingCellConfigCommon`
2024-06-03 11:54:55 +02:00
Thomas Schlichter
2bb632a7fe
fix 5G NR SA FDD configs for 25 and 25 PRBs
...
make sure the SSB is offset by 4 PRBs from the BW start.
Therefore, the ARFCN for the SSB center must be offset by 14 PRB from the ARFCN for the BW start.
2024-05-24 13:21:38 +02:00
Thomas Schlichter
f969eddbe2
fix gNB to print correct --CO parameter for OAI UE in FDD case
2024-05-24 13:16:47 +02:00
Thomas Schlichter
d5a0455560
fix error of taking the absolute value of 'uint64_t'
2024-05-07 20:46:37 +02:00
Thomas Schlichter
5ac881b7c1
rfsimulator: add support to simulate a long propagation delay
...
Add the option `--rfsimulator.prop_delay` to specify the simulated receive-path (gNB: UL, UE: DL) propagation delay in ms.
This option can be used e.g. to simulate a simple GEO satellite channel by specifying `--rfsimulator.prop_delay 238.74` to both, the gNB and the UE.
This is part of the work developed by Fraunhofer IIS within the ESA-funded project 5G-GOA (https://connectivity.esa.int/projects/5ggoa ).
2024-05-07 20:46:37 +02:00
Thomas Schlichter
aa555f9125
NR_UE: fix calculation of RA_contention_resolution_target_frame when SFN wraps
2023-12-01 16:02:17 +01:00
Thomas Schlichter
6ef5d27c08
NR_UE: fix usage of PUSCH new_data_indicator and cleanup
2023-12-01 16:02:17 +01:00
Thomas Schlichter
f1a095057e
fix limited UL data throughput in do-ra mode
...
In case of noS1-mode, we initialize the 'logicalChannelBearer_exist' array element for the pre-configured DRB0 in function 'nr_l2_init_ue()'.
That array is indexed with the LCID.
For DRB0, the LCID is 4.
Unfortunately, the code incorrectly used the array at index 0.
Therefore, the UE sent neither scheduling requests nor buffer status reports, what resulted in extremely poor UL throughput.
2023-07-28 15:42:47 +02:00
Thomas Schlichter
17b191a01d
use OpenGL for LLR and IQ Plots and fix UE LLR Plot
...
Using OpenGL for IQ and LLR Plots improves plotting time significantly!
Also use the correct length for UE CIR and UE LLR Plots.
2023-07-28 13:49:52 +02:00
Thomas Schlichter
d41147f411
fix introduced segfault in old scope
2023-07-26 13:53:55 +02:00
Thomas Schlichter
c36d81a093
replace std::set<> for active plots with PlotUpdater emitting queued signals
2023-07-26 13:02:36 +02:00
Thomas Schlichter
3d1d468705
changes from review and updated indentation with clang-format
2023-07-26 10:16:56 +02:00
Thomas Schlichter
c01359215d
NR_UE: improve NFAPI_NR_DMRS_TYPE1_linear_interp()
...
The DL filter was shifted relative to the contributing DM-RS pilots.
This is fixed by using the UL filter from gNB.
2023-07-26 09:31:42 +02:00
Thomas Schlichter
5bc77ad169
fix typo in nr_slot_fep_init_sync()
...
This function is used during initial synchronization, only.
This typo leads to wrong computation of the OFDM symbol start within a slot, after PBCH decoding.
The result is a time offset and therefore a rotation in frequency domain for the initial PDCCH and PDSCH (SIB1) reception.
2023-07-21 13:34:49 +02:00
Thomas Schlichter
b3b53506a1
improve memory alignment of some arrays in nr_pusch_channel_estimation()
2023-03-15 14:03:21 +01:00
Thomas Schlichter
96c1cadf2b
fix typo in idft() function
...
In case of unaligned input array, a DFT of wrong size was executed instead of a correct IDFT.
2023-03-15 14:00:12 +01:00
Thomas Schlichter
6cee30ba79
review comments and further transform precoding cleanup
2023-03-15 11:01:47 +01:00
Thomas Schlichter
0d9268ec10
Update NR RRC to version 17.3.0
2023-03-10 10:54:43 +01:00
Thomas Schlichter
670cc4de09
fix build warnings
2023-03-09 10:50:26 +01:00
Thomas Schlichter
f83f5f1a52
NR_UE: fix noise measurement if SSB crosses the center
2023-02-23 17:46:27 +01:00
Thomas Schlichter
9eb1d24504
fix size of arrays n0_subband_power and n0_subband_power_dB
2022-11-11 10:50:09 +01:00
Thomas Schlichter
b257959dd4
fix display of UL signal energy and PUCCH signal energy
2022-11-11 10:48:16 +01:00
Thomas Schlichter
5aa75cb689
fix noise calculation also for odd number of PRBs
2022-11-11 10:43:25 +01:00
Thomas Schlichter
0e520e9456
fix in NR PUCCH scheduler when the list is larger than a frame
...
based on a patch from Francesco Mani <email@francescomani.it >
2022-11-07 15:33:20 +01:00
Thomas Schlichter
21721e967b
workaround issue of N310 with UHD >= 4.2.0 when changing the BW
...
UHD issue was reported here:
https://github.com/EttusResearch/uhd/issues/644
2022-11-04 18:18:35 +01:00
Thomas Schlichter
5063957a16
fix merge artefact in nr_dl_channel_estimation.c
2022-11-03 09:43:03 +01:00
Thomas Schlichter
c5e68e146c
NR_UE: increase the accuracy of the filtered peak position value
2022-11-03 09:42:57 +01:00
Thomas Schlichter
39fe985681
NR_UE: slightly improve timing synchronization by minimizing the adjustment of the filtered peak position value
2022-11-03 09:42:47 +01:00
Thomas Schlichter
a7d9f94ef3
NR_UE scope: show complete CIR
2022-11-03 09:42:41 +01:00
Thomas Schlichter
cd8122d24d
NR_UE: fix frequency offset estimation/compensation if SSB is in the second captured frame
2022-11-03 09:42:27 +01:00
Thomas Schlichter
f73fcd94ee
NR_UE: fix/add some debugging in nr_adjust_synch_ue.c and nr_dl_channel_estimation.c
2022-11-03 09:41:51 +01:00
Thomas Schlichter
a2c6ad42e4
NR_UE: minor improvements in nr_initial_sync()
2022-11-03 09:41:14 +01:00
Thomas Schlichter
b94d6b5b33
remove unsupported "thread_pool_size" parameter from conf files
2022-11-03 09:37:41 +01:00
Thomas Schlichter
9ae6095a78
nr_ulsim: fix calculation of statistics
2022-11-03 09:37:28 +01:00
Thomas Schlichter
54b7fde0aa
NR_UE: fix noise in PDCCH scope
2022-11-03 09:31:57 +01:00
Thomas Schlichter
4e024e1f11
remove unnecessary (void*) casts from files nr_dlsch_demodulation.c and nr_ulsch_ue.c
2022-09-20 11:03:40 +02:00
Thomas Schlichter
18500674df
improve nr_dlsch_decoding
2022-09-01 12:14:19 +02:00
Thomas Schlichter
1440807e23
increase prach_dtx_threshold to 20 dB to avoid fake PRACH detections
2022-08-30 11:17:34 +02:00
Thomas Schlichter
59cb602161
review changes
2022-08-29 12:43:50 +02:00
Thomas Schlichter
11693b1672
5G NR: remove hardcoded modulation order
2022-08-25 14:40:36 +02:00
Thomas Schlichter
e5fad77f47
5G NR DCI improvements
2022-08-25 14:40:36 +02:00
Thomas Schlichter
8f6d084c80
small cleanup in get_type0_PDCCH_CSS_config_parameters()
2022-08-25 14:40:36 +02:00
Thomas Schlichter
7129830555
fix Msg2 scheduling
...
scheduling when frame number wraps was not handled correctly
2022-08-25 14:40:36 +02:00
Thomas Schlichter
ef46fe8ba8
Add and harmonize configuration files for 5, 10, 40 MHz FDD with USRP X300
2022-08-25 14:40:36 +02:00
Thomas Schlichter
c42304a797
nr_dlsim: also dump rxdataF_ext in case of debugging
2022-08-25 14:40:36 +02:00
Thomas Schlichter
ae2e8060ea
update band 66 configuration files for USRP X300 and N300
2022-08-25 14:40:36 +02:00
Thomas Schlichter
9e1edf2957
nr_phy_scope: improve x-axis scaling of channel impulse response and PUSCH LLR
2022-08-25 14:40:36 +02:00
Thomas Schlichter
ea085b5fc1
harmonize initialization of symbol- and timeshift-rotation
2022-08-25 14:40:36 +02:00
Thomas Schlichter
1e36c48cf2
fix application of measured SSS fine frequency offset
2022-08-25 14:40:36 +02:00
Thomas Schlichter
f8de623286
NR_UE: use improved version of mult-layer dlsch_extract_rbs(), also correctly handling odd number of PRBs
2022-08-25 12:10:48 +02:00
Thomas Schlichter
421eb65a9a
NR_UE: fix ulsch precoding for RB crossing DC (odd number of RB)
2022-08-25 12:10:48 +02:00
Thomas Schlichter
6310606980
fix alignment issues in case of odd number of PRBs
2022-08-25 11:05:48 +02:00
Thomas Schlichter
3c17573f34
apply nr rotation only on used PRBs instead of complete OFDM symbol
2022-08-25 11:05:48 +02:00
Thomas Schlichter
21ea2f2136
pbchsim: apply nr rotation in frequency domain, like in all other places, instead of time domain
2022-08-25 10:17:59 +02:00
Thomas Schlichter
e639e79220
Merge remote-tracking branch 'origin/develop' into support-15-kHz-SCS
2022-05-18 10:51:19 +02:00
Thomas Schlichter
3934f2020e
slightly increase the target SNR for the nr_dlsim low SNR test to make the test more reliable
2022-05-18 09:54:59 +02:00
Thomas Schlichter
6f8b13c2ad
fix nr_ulsim option "-i" has no further parameters
2022-05-18 09:50:37 +02:00
Thomas Schlichter
c97d5d04ed
fixes from review
2022-05-18 09:35:01 +02:00