NR SA 2Step RACH
The purpose of this tutorial is to show you how to test 2Step RACH. Since I don't have any commercial UE supporting 2 step RACH I used Amari UEsim as DUT. I will put the test with commercial UE when I have any commercial UE supporting the feature. The regular RACH that is commonly used is 4 step RACH. Obviously 2 step RACH takes less steps to complete. It would shorten the signaling time greatly and I can even shorten the required timing for PUSCH transmission since PUSCH can be transmitted at the first step (Step 1) of the process. Overall process and Configuration of 2 Step RACH is as follows.
Image Source : Sharetechnote
Table of Contents
- NR SA 2Step RACH
Test Setup
Setup A
Test setup for this tutorial is as shown below.
Key Configuration Parameters
Followings are important configuration parameters for this tutorial. You may click on the items for the descriptions from Amarisoft documents.
- two_steps_prach : In this link, you will get the descriptions for all the items listed below.
- shared_ro
- cb_preambles_per_ssb_per_sro
- msga_pusch
- mcs
- time_domain_offset
- l_crb
- po_fdm
- rb_start
- n_symb
- dmrs_cdm_group
- dmrs_n_ports
- msga_rsrp_threshold
- msgb_response_window
- msgb_mcs
Test 1 : 2 step RACH with FDD, UL MIMO 2x2
Configuration
An important thing in using UE sim is to do proper matching between UE sim configuration and Call box configuration In this tutorial, I used the ue.default.cfg and and enb.default.cfg without any change
If you use other Network (e.g, other network simulator or real network), you have to make it sure to configure UE sim according to the settings on network side
I used ue-nr-sa-2step-rach.cfg which is copied from ue-nr-sa.cfg.
I used gnb-sa-2step-rach.cfg which is copied from gnb-sa.cfg.
The configuration in gnb-sa-2step-rach.cfg (Callbox) is set as follows.
The configuration in ue-nr-sa-2step-rach.cfg (UEsim) is set as follows.
Perform the Test
Log Analysis
RRC / NAS Signaling
SIB1 (SA)
: This is the SIB1 message sent by gNB to configure parameters for NR 2 Step RACH. (
{
message c1: systemInformationBlockType1: {
cellSelectionInfo {
...
},
cellAccessRelatedInfo {
...
},
connEstFailureControl {
...
},
servingCellConfigCommon {
downlinkConfigCommon {
frequencyInfoDL {
...
},
initialDownlinkBWP {
genericParameters {
...
},
pdcch-ConfigCommon setup: {
...
},
pdsch-ConfigCommon setup: {
...
}
},
bcch-Config {
...
},
pcch-Config {
...
}
},
uplinkConfigCommon {
frequencyInfoUL {
...
},
initialUplinkBWP {
genericParameters {
...
},
rach-ConfigCommon setup: {
rach-ConfigGeneric {
prach-ConfigurationIndex 16,
msg1-FDM one,
msg1-FrequencyStart 7,
zeroCorrelationZoneConfig 15,
preambleReceivedTargetPower -110,
preambleTransMax n7,
powerRampingStep dB4,
ra-ResponseWindow sl10
},
ssb-perRACH-OccasionAndCB-PreamblesPerSSB one: n8,
ra-ContentionResolutionTimer sf64,
prach-RootSequenceIndex l839: 1,
restrictedSetConfig unrestrictedSet
},
pusch-ConfigCommon setup: {
...
},
pucch-ConfigCommon setup: {
...
},
msgA-ConfigCommon-r16 setup: {
rach-ConfigCommonTwoStepRA-r16 {
rach-ConfigGenericTwoStepRA-r16 {
msgB-ResponseWindow-r16 sl40
},
msgA-CB-PreamblesPerSSB-PerSharedRO-r16 16,
msgA-RSRP-Threshold-r16 56
},
msgA-PUSCH-Config-r16 {
msgA-PUSCH-ResourceGroupA-r16 {
msgA-MCS-r16 5,
nrofSlotsMsgA-PUSCH-r16 1,
nrofMsgA-PO-PerSlot-r16 one,
msgA-PUSCH-TimeDomainOffset-r16 4,
startSymbolAndLengthMsgA-PO-r16 27,
mappingTypeMsgA-PUSCH-r16 typeA,
guardBandMsgA-PUSCH-r16 0,
frequencyStartMsgA-PUSCH-r16 7,
nrofPRBs-PerMsgA-PO-r16 1,
nrofMsgA-PO-FDM-r16 four,
msgA-DMRS-Config-r16 {
msgA-PUSCH-NrofPorts-r16 1
},
nrofDMRS-Sequences-r16 1
},
msgA-TransformPrecoder-r16 disabled
}
}
},
timeAlignmentTimerCommon infinity
},
ssb-PositionsInBurst {
inOneGroup '80'H
},
...
},
ue-TimersAndConstants {
...
}
}
}