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  

NOTE : This feature is supported from the release 2021-12-17

 

 

Table of Contents

 

 

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.

 

 

 

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

Sample Log

 

 

 

 

 

RRC / NAS Signaling

 

SIB1 (SA)

: This is the SIB1 message sent by gNB  to configure parameters for NR 2 Step RACH. (NOTE : You would see some IEs that has a specific assigned vale here, but consider it as just an example value. Those values should vary depending on test requirement)

{

  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 {

      ...

    }

  }

}