LTE Quick Reference                                 Go Back To Index    Home :







If you look at the high level procedure of RACH, LTE-NB RACH is not much different from legacy LTE or LTE BL/CE(M1). That is, they are all go through the 4 step message transaction (Msg1, Msg2, Msg3, Msg4). However, you would have noticed this procedure got more and more complicated if you look one step deeper into it.

  • If you compare the legacy LTE and LTE BL/CE(M1) RACH procedure, LTE BL/CE is more complicated and the most of those complication comes from repeated transmission of each message.
  • If you compare the LTE BL/CE(M1) RACH and LTE NB(M2) RACH procedure, you would notice that LTE NB(M2) RACH is more complicated. The most of this complication seems to come from physica resource allocation of Preamble signal in LTE NB (You would see a whole bunch of parameters in NPRACH-Parameters-NB-r13, most of which would not be seen in legacy LTE and LTE BL/CE(M1)) .


Followings are the topics that will be covered in this page.



Overall Process of RACH procedure for initial attach


Following is the overall procedure for RACH Process for Initial Attach. Technically the RACH procedure is from Step (B) through (H), but I added some additional steps that must be done before and after the RACH procedure. I will put further description some time later when I have time.




Time Domain Structure


In LTE NB, there are only two Preamble formats. Each preamble format is made up of two portions : CP and Sequence. The Sequence part is made up of 5 sub blocks. All of the 5 subblock is made up of identical symbols. As you see in the following illustration, the length of Sequence part of Preamble format 0 and 1 are same. The difference lies in the length of CP.




NPRACH Parameters


As I mentioned in other page, in terms of physical layer implementation LTE-NB is pretty new radio technology comparing to legacy LTE. You can see this new aspects of physical layer in RACH preamble signal design as well (Higher layer sequence (i.e, MAC and higher) of RACH process is not so different from legacy LTE and LTE BL/CE(M1) though). A lot of new parameters defining the physical layer aspect of PRACH are introduced and followings are the list of those parameters.


PHY Parameter

RRC Parameter (SIB2)



NPRACH resource periodicity


Frequency location of the first subcarrier allocated to NPRACH


Number of subcarriers allocated to NPRACH


Number of starting sub-carriers allocated to contention based NPRACH random access


Number of NPRACH repetitions per attempt


NPRACH starting time


Fraction for calculating starting subcarrier index for the range of NPRACH subcarriers reserved for indication of UE support for multi-tone msg3 transmission



Baseband Signal Generation




Time and Frequency Domain Resource Allocation




NPRACH Transmission Timing


According to 36.211-, NPRACH can be transmitted only at one specific timing within a NPRACH period as illustrated below. nprach-StartTime, nprach-Periodicity is configured by Higher Layer (SIB2)




Higher Layer Signaling Parameters


SystemInformationBlockType2-NB-r13 ::=  SEQUENCE {

    radioResourceConfigCommon-r13           RadioResourceConfigCommonSIB-NB-r13,

    ue-TimersAndConstants-r13               UE-TimersAndConstants-NB-r13,

    freqInfo-r13                            SEQUENCE {

        ul-CarrierFreq-r13                      CarrierFreq-NB-r13              

        additionalSpectrumEmission-r13          AdditionalSpectrumEmission


    timeAlignmentTimerCommon-r13            TimeAlignmentTimer,

    multiBandInfoList-r13   SEQUENCE (SIZE (1..maxMultiBands)) OF AdditionalSpectrumEmission 

    lateNonCriticalExtension                    OCTET STRING                   





RadioResourceConfigCommonSIB-NB-r13 ::= SEQUENCE {

    rach-ConfigCommon-r13                   RACH-ConfigCommon-NB-r13,

    bcch-Config-r13                         BCCH-Config-NB-r13,

    pcch-Config-r13                         PCCH-Config-NB-r13,

    nprach-Config-r13                       NPRACH-ConfigSIB-NB-r13,

    npdsch-ConfigCommon-r13                 NPDSCH-ConfigCommon-NB-r13,

    npusch-ConfigCommon-r13                 NPUSCH-ConfigCommon-NB-r13,

    dl-Gap-r13                              DL-GapConfig-NB-r13         

    uplinkPowerControlCommon-r13            UplinkPowerControlCommon-NB-r13,





RACH-ConfigCommon-NB-r13 ::=        SEQUENCE {

    preambleTransMax-CE-r13             PreambleTransMax,

    powerRampingParameters-r13          PowerRampingParameters,

    rach-InfoList-r13                   RACH-InfoList-NB-r13,

    connEstFailOffset-r13               INTEGER (0..15)                 OPTIONAL,   -- Need OP




RACH-InfoList-NB-r13 ::=    SEQUENCE (SIZE (1.. maxNPRACH-Resources-NB-r13)) OF RACH-Info-NB-r13


RACH-Info-NB-r13    ::=     SEQUENCE {

    ra-ResponseWindowSize-r13           ENUMERATED {

                                            pp2, pp3, pp4, pp5, pp6, pp7, pp8, pp10},

    mac-ContentionResolutionTimer-r13   ENUMERATED {

                                            pp1, pp2, pp3, pp4, pp8, pp16, pp32, pp64}




NPRACH-ConfigSIB-NB-r13 ::=         SEQUENCE {

    nprach-CP-Length-r13                ENUMERATED {us66dot7, us266dot7},

    rsrp-ThresholdsPrachInfoList-r13    RSRP-ThresholdsNPRACH-InfoList-NB-r13   

    nprach-ParametersList-r13           NPRACH-ParametersList-NB-r13   



NPRACH-ParametersList-NB-r13 ::=    SEQUENCE (SIZE (1.. maxNPRACH-Resources-NB-r13))

                                        OF NPRACH-Parameters-NB-r13


NPRACH-Parameters-NB-r13::=         SEQUENCE {

    nprach-Periodicity-r13                  ENUMERATED {ms40, ms80, ms160, ms240,

                                                        ms320, ms640, ms1280, ms2560},

    nprach-StartTime-r13                    ENUMERATED {ms8, ms16, ms32, ms64,

                                                        ms128, ms256, ms512, ms1024},

    nprach-SubcarrierOffset-r13             ENUMERATED {n0, n12, n24, n36, n2, n18, n34, spare1},

    nprach-NumSubcarriers-r13               ENUMERATED {n12, n24, n36, n48},

    nprach-SubcarrierMSG3-RangeStart-r13    ENUMERATED {zero, oneThird, twoThird, one},

    maxNumPreambleAttemptCE-r13             ENUMERATED {n3, n4, n5, n6, n7, n8, n10, spare1},

    numRepetitionsPerPreambleAttempt-r13    ENUMERATED {n1, n2, n4, n8, n16, n32, n64, n128},

    npdcch-NumRepetitions-RA-r13            ENUMERATED {r1, r2, r4, r8, r16, r32, r64, r128,

                                                        r256, r512, r1024, r2048,

                                                        spare4, spare3, spare2, spare1},

    npdcch-StartSF-CSS-RA-r13               ENUMERATED {v1dot5, v2, v4, v8, v16, v32, v48, v64},

    npdcch-Offset-RA-r13                    ENUMERATED {zero, oneEighth, oneFourth, threeEighth}



RSRP-ThresholdsNPRACH-InfoList-NB-r13 ::= SEQUENCE (SIZE(1..2)) OF RSRP-Range



Reference :


[1] Random Access Preamble Design and Detection for 3GPP Narrowband IoT Systems