4G/LTE - BL/CE

 

 

 

 

RACH Process

 

As in legacy LTE, LTE-BL/CE UE also start with RACH process to get the initial access to a network. There are commonality and differences in this process between legacy LTE and LTE-BL/CE.

 

 

What are same ?

 

In short, Legacy LTE RACH and LTE BL/CE RACH are same in terms of general big picture and overal protocol sequence as follows :

  • The main purpose of RACH process is to achieve Uplink synchronization and obtain the grant for initial attach
  • Overall protocol sequence of the process is made up of four messages, i.e Msg 1, Msg2, Msg3 and Msg 4
  • Basic information about the RACH procedure is informed to UE via SIB2
  • prach-ConfigIndex, prach-FreqOffset, rootSequenceIndex are common for legacy LTE and MTC (Ref [8]). But some more parameters are used in MTC to configure further details.

 

 

What are the differences ?

 

In short, everything out side of the big picture differs. The most important differences are

  • RACH Preamble (Msg1) and MPDCCH for RAR(Msg2) may be transmitted in repetition
  • These repetition pattern gets different depending of CE Level

These differences are described in 3GPP specification as follows. However, I found it very difficult to figure out real / detailed meaning of these differences just from the specification. I think I need to go through many TDocs to find out the practical meaning of these differences and further details of BL/CE RACH procedure. I will keep updating this page as I read through those TDocs.

 

Based on 36.321 5.1.1, RACH Process for LTE-M1 device is modified from legacy LTE process as follows.

  • The available set of PRACH resources is associated with each enhanced coverage level
  • The preambles that are contained in Random Access Preambles groups for each enhanced coverage level are calculated from the parameters firstPreamble and lastPreamble of preambleMappingInfo IE of SIB2

In 36.321 5.1.2, it is stated as follows

  • For NB-IoT UEs, BL UEs or UEs in enhanced coverage, select the ra-ResponseWindowSize and mac-ContentionResolutionTimer corresponding to the selected enhanced coverage level and PRACH

In 36.321 5.1.3, it is stated as follows

  • if the UE is an NB-IoT UE, a BL UE or a UE in enhanced coverage:
  • instruct the physical layer to transmit a preamble with the number of repetitions required for preamble transmission corresponding to the selected preamble group (i.e., numRepetitionPerPreambleAttempt in SIB2) using the selected PRACH corresponding to the selected enhanced coverage level, corresponding RA-RNTI, preamble index or for NB-IoT subcarrier index, and PREAMBLE_RECEIVED_TARGET_POWER.

 

 

SIB Parameters for RACH

 

SystemInformationBlockType2 ::=  {

    ...,

   radioResourceConfigCommon           RadioResourceConfigCommonSIB,  

}

 

 

RadioResourceConfigCommonSIB ::=    SEQUENCE {

    rach-ConfigCommon                   RACH-ConfigCommon,

    bcch-Config                         BCCH-Config,

    pcch-Config                         PCCH-Config,

    prach-Config                        PRACH-ConfigSIB,

    pdsch-ConfigCommon                  PDSCH-ConfigCommon,

    pusch-ConfigCommon                  PUSCH-ConfigCommon,

    pucch-ConfigCommon                  PUCCH-ConfigCommon,

    soundingRS-UL-ConfigCommon          SoundingRS-UL-ConfigCommon,

    uplinkPowerControlCommon            UplinkPowerControlCommon,

    ul-CyclicPrefixLength               UL-CyclicPrefixLength,

    ...,

    [[  rach-ConfigCommon-v1250         RACH-ConfigCommon-v1250       

    ]],

 

}

 

RadioResourceConfigCommon ::=       SEQUENCE {

    rach-ConfigCommon                   RACH-ConfigCommon                   OPTIONAL,   -- Need ON

    prach-Config                        PRACH-Config,

    pdsch-ConfigCommon                  PDSCH-ConfigCommon                  OPTIONAL,   -- Need ON

    pusch-ConfigCommon                  PUSCH-ConfigCommon,

    phich-Config                        PHICH-Config                        OPTIONAL,   -- Need ON

    pucch-ConfigCommon                  PUCCH-ConfigCommon                  OPTIONAL,   -- Need ON

    soundingRS-UL-ConfigCommon          SoundingRS-UL-ConfigCommon          OPTIONAL,   -- Need ON

    uplinkPowerControlCommon            UplinkPowerControlCommon            OPTIONAL,   -- Need ON

    antennaInfoCommon                   AntennaInfoCommon                   OPTIONAL,   -- Need ON

    p-Max                               P-Max                               OPTIONAL,   -- Need OP

    tdd-Config                          TDD-Config                          OPTIONAL,   -- Cond TDD

    ul-CyclicPrefixLength               UL-CyclicPrefixLength,

    ...,

        prach-Config-v1310              PRACH-Config-v1310                  OPTIONAL,   -- Need ON

        freqHoppingParameters-r13       FreqHoppingParameters-r13           OPTIONAL,   -- Need ON

        pdsch-ConfigCommon-v1310        PDSCH-ConfigCommon-v1310            OPTIONAL,   -- Need ON

        pucch-ConfigCommon-v1310        PUCCH-ConfigCommon-v1310            OPTIONAL,   -- Need ON

        pusch-ConfigCommon-v1310        PUSCH-ConfigCommon-v1310            OPTIONAL,   -- Need ON

        uplinkPowerControlCommon-v1310  UplinkPowerControlCommon-v1310      OPTIONAL    -- Need ON

    ]]

}

 

RACH-ConfigCommon ::=       SEQUENCE {

    preambleInfo                        SEQUENCE {

        numberOfRA-Preambles                ENUMERATED {

                                                n4, n8, n12, n16 ,n20, n24, n28,

                                                n32, n36, n40, n44, n48, n52, n56,

                                                n60, n64},

        preamblesGroupAConfig               SEQUENCE {

            sizeOfRA-PreamblesGroupA            ENUMERATED {

                                                    n4, n8, n12, n16 ,n20, n24, n28,

                                                    n32, n36, n40, n44, n48, n52, n56,

                                                    n60},

            messageSizeGroupA                       ENUMERATED {b56, b144, b208, b256},

            messagePowerOffsetGroupB            ENUMERATED {

                                                    minusinfinity, dB0, dB5, dB8, dB10, dB12,

                                                    dB15, dB18},

            ...

        }           OPTIONAL                                                    -- Need OP

    },

    powerRampingParameters              PowerRampingParameters,

    ra-SupervisionInfo                  SEQUENCE {

        preambleTransMax                    PreambleTransMax,

        ra-ResponseWindowSize               ENUMERATED {

                                                sf2, sf3, sf4, sf5, sf6, sf7,

                                                sf8, sf10},

        mac-ContentionResolutionTimer       ENUMERATED {

                                                sf8, sf16, sf24, sf32, sf40, sf48,

                                                sf56, sf64}

    },

    maxHARQ-Msg3Tx                      INTEGER (1..8),

    ...,

    [[  preambleTransMax-CE-r13         PreambleTransMax                    OPTIONAL,   -- Need OR

        rach-CE-LevelInfoList-r13       RACH-CE-LevelInfoList-r13           OPTIONAL    -- Need OR

    ]]

}

 

RACH-ConfigCommon-v1250 ::=     SEQUENCE {

    txFailParams-r12                SEQUENCE {

        connEstFailCount-r12                    ENUMERATED {n1, n2, n3, n4},

        connEstFailOffsetValidity-r12           ENUMERATED {s30, s60, s120, s240,

                                                        s300, s420, s600, s900},

        connEstFailOffset-r12                   INTEGER (0..15)     OPTIONAL    -- Need OP

    }

}

 

RACH-ConfigCommonSCell-r11 ::=      SEQUENCE {

    powerRampingParameters-r11              PowerRampingParameters,

    ra-SupervisionInfo-r11                  SEQUENCE {

        preambleTransMax-r11                    PreambleTransMax

    },

    ...

}

 

RACH-CE-LevelInfoList-r13 ::=   SEQUENCE (SIZE (1..maxCE-Level-r13)) OF RACH-CE-LevelInfo-r13

 

RACH-CE-LevelInfo-r13 ::=       SEQUENCE {

    preambleMappingInfo-r13             SEQUENCE {

        firstPreamble-r13                   INTEGER(0..63),

        lastPreamble-r13                    INTEGER(0..63)

    },

    ra-ResponseWindowSize-r13           ENUMERATED {sf20, sf50, sf80, sf120, sf180,

                                                    sf240, sf320, sf400},

 

    mac-ContentionResolutionTimer-r13   ENUMERATED {sf80, sf100, sf120,

                                                    sf160, sf200, sf240, sf480, sf960},

    rar-HoppingConfig-r13               ENUMERATED {on,off},

    ...

}

 

PowerRampingParameters ::=          SEQUENCE {

    powerRampingStep                    ENUMERATED {dB0, dB2,dB4, dB6},

    preambleInitialReceivedTargetPower  ENUMERATED {

                                            dBm-120, dBm-118, dBm-116, dBm-114, dBm-112,

                                            dBm-110, dBm-108, dBm-106, dBm-104, dBm-102,

                                            dBm-100, dBm-98, dBm-96, dBm-94,

                                            dBm-92, dBm-90}

}

 

PreambleTransMax ::=                ENUMERATED {

                                            n3, n4, n5, n6, n7, n8, n10, n20, n50,

                                            n100, n200}

 

 

PRACH-ConfigSIB ::=             SEQUENCE {

    rootSequenceIndex                   INTEGER (0..837),

    prach-ConfigInfo                    PRACH-ConfigInfo

}

 

PRACH-ConfigSIB-v1310 ::=           SEQUENCE {

    rsrp-ThresholdsPrachInfoList-r13        RSRP-ThresholdsPrachInfoList-r13,

    mpdcch-startSF-CSS-RA-r13           CHOICE {

        fdd-r13                             ENUMERATED {v1, v1dot5, v2, v2dot5, v4, v5, v8,

                                                v10},

        tdd-r13                             ENUMERATED {v1, v2, v4, v5, v8, v10, v20, spare}

    }                                                                       

    prach-HoppingOffset-r13             INTEGER (0..94)                     

    prach-ParametersListCE-r13          PRACH-ParametersListCE-r13

}

 

PRACH-Config ::=                    SEQUENCE {

    rootSequenceIndex                   INTEGER (0..837),

    prach-ConfigInfo                    PRACH-ConfigInfo                   

}

 

PRACH-Config-v1310 ::=              SEQUENCE {

    rsrp-ThresholdsPrachInfoList-r13        RSRP-ThresholdsPrachInfoList-r13    

    mpdcch-startSF-CSS-RA-r13           CHOICE {

        fdd-r13                             ENUMERATED {v1, v1dot5, v2, v2dot5, v4, v5, v8,

                                                v10},

        tdd-r13                             ENUMERATED {v1, v2, v4, v5, v8, v10, v20, spare}

    }                                                                       

    prach-HoppingOffset-r13             INTEGER (0..94)                     

    prach-ParametersListCE-r13          PRACH-ParametersListCE-r13          

    initial-CE-level-r13                    INTEGER (0..3)     

}

 

PRACH-ConfigSCell-r10 ::=               SEQUENCE {

    prach-ConfigIndex-r10                   INTEGER (0..63)

}

 

PRACH-ConfigInfo ::=                SEQUENCE {

    prach-ConfigIndex                   INTEGER (0..63),

    highSpeedFlag                       BOOLEAN,

    zeroCorrelationZoneConfig           INTEGER (0..15),

    prach-FreqOffset                    INTEGER (0..94)

}

 

PRACH-ParametersListCE-r13 ::=  SEQUENCE (SIZE(1..maxCE-Level-r13)) OF PRACH-ParametersCE-r13

 

PRACH-ParametersCE-r13 ::=          SEQUENCE {

    prach-ConfigIndex-r13                   INTEGER (0..63),

    prach-FreqOffset-r13                    INTEGER (0..94),

    prach-StartingSubframe-r13        ENUMERATED {sf2, sf4, sf8, sf16, sf32, sf64, sf128, sf256}

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

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

    mpdcch-NarrowbandsToMonitor-r13         SEQUENCE (SIZE(1..2)) OF

                                                    INTEGER (1..maxAvailNarrowBands-r13),

    mpdcch-NumRepetition-RA-r13             ENUMERATED {r1, r2, r4, r8, r16,

                                                        r32, r64, r128, r256},

    prach-HoppingConfig-r13                 ENUMERATED {on,off}

}

 

RSRP-ThresholdsPrachInfoList-r13 ::= SEQUENCE (SIZE(1..3)) OF RSRP-Range

 

 

< Details on Information Elements >

 

 

< Example 1 >

 

+-sib2 ::= SEQUENCE [00]

  +-ac-BarringInfo ::= SEQUENCE OPTIONAL:Omit

  +-radioResourceConfigCommon ::= SEQUENCE

  | +-rach-ConfigCommon ::= SEQUENCE

  | | +-preambleInfo ::= SEQUENCE [0]

  | | | +-numberOfRA-Preambles ::= ENUMERATED [n64]

  | | | +-preamblesGroupAConfig ::= SEQUENCE OPTIONAL:Omit

  | | +-powerRampingParameters ::= SEQUENCE

  | | | +-powerRampingStep ::= ENUMERATED [dB2]

  | | | +-preambleInitialReceivedTargetPower ::= ENUMERATED [dBm-90]

  | | +-ra-SupervisionInfo ::= SEQUENCE

  | | | +-preambleTransMax ::= ENUMERATED [n5]

  | | | +-ra-ResponseWindowSize ::= ENUMERATED [sf10]

  | | | +-mac-ContentionResolutionTimer ::= ENUMERATED [sf64]

  | | +-maxHARQ-Msg3Tx ::= INTEGER (1..8) [4]

  | | +-EXTENSION ::= SEQUENCE [1]

  | |   +-VERSION-BRACKETS1 ::= SEQUENCE [11] OPTIONAL:Exist

  | |     +-preambleTransMax-CE-r13 ::= ENUMERATED [n5] OPTIONAL:Exist

  | |     +-rach-CE-LevelInfoList-r13 ::= SEQUENCE OF SIZE(1..maxCE-Level-r13[4]) [1]

  | |       +-RACH-CE-LevelInfo-r13 ::= SEQUENCE

  | |         +-preambleMappingInfo-r13 ::= SEQUENCE

  | |         | +-firstPreamble-r13 ::= INTEGER (0..63) [0]

  | |         | +-lastPreamble-r13 ::= INTEGER (0..63) [63]

  | |         +-ra-ResponseWindowSize-r13 ::= ENUMERATED [sf80]

  | |         +-mac-ContentionResolutionTimer-r13 ::= ENUMERATED [sf200]

  | |         +-rar-HoppingConfig-r13 ::= ENUMERATED [off]

  | |         +-EXTENSION ::= SEQUENCE

  | +-bcch-Config ::= SEQUENCE

  | +-pcch-Config ::= SEQUENCE

  | +-prach-Config ::= SEQUENCE

  | | +-rootSequenceIndex ::= INTEGER (0..837) [0]

  | | +-prach-ConfigInfo ::= SEQUENCE

  | |   +-prach-ConfigIndex ::= INTEGER (0..63) [3]

  | |   +-highSpeedFlag ::= BOOLEAN [FALSE]

  | |   +-zeroCorrelationZoneConfig ::= INTEGER (0..15) [0]

  | |   +-prach-FreqOffset ::= INTEGER (0..94) [1]

  | +-pdsch-ConfigCommon ::= SEQUENCE

  | +-pusch-ConfigCommon ::= SEQUENCE

  | +-pucch-ConfigCommon ::= SEQUENCE

  | +-soundingRS-UL-ConfigCommon ::= CHOICE [release]

  | | +-release ::= NULL

  | +-uplinkPowerControlCommon ::= SEQUENCE

  | | +-p0-NominalPUSCH ::= INTEGER (-126..24) [-108]

  | | +-alpha ::= ENUMERATED [al09]

  | | +-p0-NominalPUCCH ::= INTEGER (-127..-96) [-96]

  | | +-deltaFList-PUCCH ::= SEQUENCE

  | | +-deltaPreambleMsg3 ::= INTEGER (-1..6) [3]

  | +-ul-CyclicPrefixLength ::= ENUMERATED [len1]

  | +-EXTENSION ::= SEQUENCE [0001]

  |   +-VERSION-BRACKETS1 ::= SEQUENCE OPTIONAL:Omit

  |   +-VERSION-BRACKETS2 ::= SEQUENCE OPTIONAL:Omit

  |   +-VERSION-BRACKETS3 ::= SEQUENCE OPTIONAL:Omit

  |   +-VERSION-BRACKETS4 ::= SEQUENCE [1010011] OPTIONAL:Exist

  |     +-bcch-Config-v1310 ::= SEQUENCE OPTIONAL:Exist

  |     +-pcch-Config-v1310 ::= SEQUENCE OPTIONAL:Omit

  |     +-freqHoppingParameters-r13 ::= SEQUENCE [000000] OPTIONAL:Exist

  |     | +-mpdcch-pdsch-HoppingNB-r13 ::= ENUMERATED OPTIONAL:Omit

  |     | +-interval-DLHoppingConfigCommonModeA-r13 ::= CHOICE OPTIONAL:Omit

  |     | +-interval-DLHoppingConfigCommonModeB-r13 ::= CHOICE OPTIONAL:Omit

  |     | +-interval-ULHoppingConfigCommonModeA-r13 ::= CHOICE OPTIONAL:Omit

  |     | +-interval-ULHoppingConfigCommonModeB-r13 ::= CHOICE OPTIONAL:Omit

  |     | +-mpdcch-pdsch-HoppingOffset-r13 ::= INTEGER OPTIONAL:Omit

  |     +-pdsch-ConfigCommon-v1310 ::= SEQUENCE OPTIONAL:Omit

  |     +-pusch-ConfigCommon-v1310 ::= SEQUENCE OPTIONAL:Omit

  |     +-prach-ConfigCommon-v1310 ::= SEQUENCE [10] OPTIONAL:Exist

  |     | +-rsrp-ThresholdsPrachInfoList-r13 ::= SEQUENCE OF SIZE(1..3) [1]

  |     | | +-RSRP-Range ::= INTEGER (0..97) [60]

  |     | +-mpdcch-startSF-CSS-RA-r13 ::= CHOICE [fdd-r13] OPTIONAL:Exist

  |     | | +-fdd-r13 ::= ENUMERATED [v5]

  |     | +-prach-HoppingOffset-r13 ::= INTEGER OPTIONAL:Omit

  |     | +-prach-ParametersListCE-r13 ::= SEQUENCE OF SIZE(1..maxCE-Level-r13[4]) [1]

  |     |   +-PRACH-ParametersCE-r13 ::= SEQUENCE [11]

  |     |     +-prach-ConfigIndex-r13 ::= INTEGER (0..63) [3]

  |     |     +-prach-FreqOffset-r13 ::= INTEGER (0..94) [1]

  |     |     +-prach-StartingSubframe-r13 ::= ENUMERATED [sf2] OPTIONAL:Exist

  |     |     +-maxNumPreambleAttemptCE-r13 ::= ENUMERATED [n3] OPTIONAL:Exist

  |     |     +-numRepetitionPerPreambleAttempt-r13 ::= ENUMERATED [n1]

  |     |     +-mpdcch-NarrowbandsToMonitor-r13 ::= SEQUENCE OF SIZE(1..2) [1]

  |     |     | +- ::= INTEGER (1..maxAvailNarrowBands-r13[16]) [2]

  |     |     +-mpdcch-NumRepetition-RA-r13 ::= ENUMERATED [r1]

  |     |     +-prach-HoppingConfig-r13 ::= ENUMERATED [off]

  |     +-pucch-ConfigCommon-v1310 ::= SEQUENCE [10000] OPTIONAL:Exist

  +-ue-TimersAndConstants ::= SEQUENCE

  +-freqInfo ::= SEQUENCE [00]

  +-mbsfn-SubframeConfigList ::= SEQUENCE OF OPTIONAL:Omit

  +-timeAlignmentTimerCommon ::= ENUMERATED [infinity]

  +-EXTENSION ::= SEQUENCE [0000000]

 

 

HEX : 00 00 6F 7C BF 60 20 99 00 3F 52 02 C0 00 C0 05 E2 00 00 04 26 00 01 2D F2 02 01 88 65 30 21 E2 98 60 40 01 0C 10 00 00 83 CD C3 01 C0

 

 

< Example 2 >

 

+-sib2 ::= SEQUENCE [00]

  +-ac-BarringInfo ::= SEQUENCE OPTIONAL:Omit

  +-radioResourceConfigCommon ::= SEQUENCE

  | +-rach-ConfigCommon ::= SEQUENCE

  | | +-preambleInfo ::= SEQUENCE [0]

  | | | +-numberOfRA-Preambles ::= ENUMERATED [n64]

  | | | +-preamblesGroupAConfig ::= SEQUENCE OPTIONAL:Omit

  | | +-powerRampingParameters ::= SEQUENCE

  | | | +-powerRampingStep ::= ENUMERATED [dB2]

  | | | +-preambleInitialReceivedTargetPower ::= ENUMERATED [dBm-90]

  | | +-ra-SupervisionInfo ::= SEQUENCE

  | | | +-preambleTransMax ::= ENUMERATED [n5]

  | | | +-ra-ResponseWindowSize ::= ENUMERATED [sf10]

  | | | +-mac-ContentionResolutionTimer ::= ENUMERATED [sf64]

  | | +-maxHARQ-Msg3Tx ::= INTEGER (1..8) [4]

  | | +-EXTENSION ::= SEQUENCE [1]

  | |   +-VERSION-BRACKETS1 ::= SEQUENCE [11] OPTIONAL:Exist

  | |     +-preambleTransMax-CE-r13 ::= ENUMERATED [n5] OPTIONAL:Exist

  | |     +-rach-CE-LevelInfoList-r13 ::= SEQUENCE OF SIZE(1..maxCE-Level-r13[4]) [1]

  | |       +-RACH-CE-LevelInfo-r13 ::= SEQUENCE

  | |         +-preambleMappingInfo-r13 ::= SEQUENCE

  | |         | +-firstPreamble-r13 ::= INTEGER (0..63) [0]

  | |         | +-lastPreamble-r13 ::= INTEGER (0..63) [63]

  | |         +-ra-ResponseWindowSize-r13 ::= ENUMERATED [sf80]

  | |         +-mac-ContentionResolutionTimer-r13 ::= ENUMERATED [sf200]

  | |         +-rar-HoppingConfig-r13 ::= ENUMERATED [off]

  | |         +-EXTENSION ::= SEQUENCE

  | +-bcch-Config ::= SEQUENCE

  | +-pcch-Config ::= SEQUENCE

  | +-prach-Config ::= SEQUENCE

  | | +-rootSequenceIndex ::= INTEGER (0..837) [0]

  | | +-prach-ConfigInfo ::= SEQUENCE

  | |   +-prach-ConfigIndex ::= INTEGER (0..63) [3]

  | |   +-highSpeedFlag ::= BOOLEAN [FALSE]

  | |   +-zeroCorrelationZoneConfig ::= INTEGER (0..15) [0]

  | |   +-prach-FreqOffset ::= INTEGER (0..94) [1]

  | +-pdsch-ConfigCommon ::= SEQUENCE

  | +-pusch-ConfigCommon ::= SEQUENCE

  | +-pucch-ConfigCommon ::= SEQUENCE

  | +-soundingRS-UL-ConfigCommon ::= CHOICE [release]

  | +-uplinkPowerControlCommon ::= SEQUENCE

  | | +-deltaPreambleMsg3 ::= INTEGER (-1..6) [3]

  | +-ul-CyclicPrefixLength ::= ENUMERATED [len1]

  | +-EXTENSION ::= SEQUENCE [0001]

  |   +-VERSION-BRACKETS1 ::= SEQUENCE OPTIONAL:Omit

  |   +-VERSION-BRACKETS2 ::= SEQUENCE OPTIONAL:Omit

  |   +-VERSION-BRACKETS3 ::= SEQUENCE OPTIONAL:Omit

  |   +-VERSION-BRACKETS4 ::= SEQUENCE [1010011] OPTIONAL:Exist

  |     +-bcch-Config-v1310 ::= SEQUENCE OPTIONAL:Exist

  |     | +-modificationPeriodCoeff-v1310 ::= ENUMERATED [n64]

  |     +-pcch-Config-v1310 ::= SEQUENCE OPTIONAL:Omit

  |     +-freqHoppingParameters-r13 ::= SEQUENCE [111111] OPTIONAL:Exist

  |     | +-mpdcch-pdsch-HoppingNB-r13 ::= ENUMERATED [nb2] OPTIONAL:Exist

  |     | +-interval-DLHoppingConfigCommonModeA-r13 ::= CHOICE [interval-FDD-r13] OPTIONAL:Exist

  |     | | +-interval-FDD-r13 ::= ENUMERATED [int1]

  |     | +-interval-DLHoppingConfigCommonModeB-r13 ::= CHOICE [interval-FDD-r13] OPTIONAL:Exist

  |     | | +-interval-FDD-r13 ::= ENUMERATED [int2]

  |     | +-interval-ULHoppingConfigCommonModeA-r13 ::= CHOICE [interval-FDD-r13] OPTIONAL:Exist

  |     | | +-interval-FDD-r13 ::= ENUMERATED [int1]

  |     | +-interval-ULHoppingConfigCommonModeB-r13 ::= CHOICE [interval-FDD-r13] OPTIONAL:Exist

  |     | | +-interval-FDD-r13 ::= ENUMERATED [int2]

  |     | +-mpdcch-pdsch-HoppingOffset-r13 ::= INTEGER (1..maxAvailNarrowBands-r13[16]) [1]

  |     +-pdsch-ConfigCommon-v1310 ::= SEQUENCE OPTIONAL:Omit

  |     +-pusch-ConfigCommon-v1310 ::= SEQUENCE OPTIONAL:Omit

  |     +-prach-ConfigCommon-v1310 ::= SEQUENCE [10] OPTIONAL:Exist

  |     | +-rsrp-ThresholdsPrachInfoList-r13 ::= SEQUENCE OF SIZE(1..3) [1]

  |     | | +-RSRP-Range ::= INTEGER (0..97) [60]

  |     | +-mpdcch-startSF-CSS-RA-r13 ::= CHOICE [fdd-r13] OPTIONAL:Exist

  |     | | +-fdd-r13 ::= ENUMERATED [v5]

  |     | +-prach-HoppingOffset-r13 ::= INTEGER [0]

  |     | +-prach-ParametersListCE-r13 ::= SEQUENCE OF SIZE(1..maxCE-Level-r13[4]) [1]

  |     |   +-PRACH-ParametersCE-r13 ::= SEQUENCE [11]

  |     |     +-prach-ConfigIndex-r13 ::= INTEGER (0..63) [3]

  |     |     +-prach-FreqOffset-r13 ::= INTEGER (0..94) [1]

  |     |     +-prach-StartingSubframe-r13 ::= ENUMERATED [sf2] OPTIONAL:Exist

  |     |     +-maxNumPreambleAttemptCE-r13 ::= ENUMERATED [n3] OPTIONAL:Exist

  |     |     +-numRepetitionPerPreambleAttempt-r13 ::= ENUMERATED [n1]

  |     |     +-mpdcch-NarrowbandsToMonitor-r13 ::= SEQUENCE OF SIZE(1..2) [1]

  |     |     | +- ::= INTEGER (1..maxAvailNarrowBands-r13[16]) [2]

  |     |     +-mpdcch-NumRepetition-RA-r13 ::= ENUMERATED [r1]

  |     |     +-prach-HoppingConfig-r13 ::= ENUMERATED [off]

  |     +-pucch-ConfigCommon-v1310 ::= SEQUENCE [11111] OPTIONAL:Exist

  |       +-n1PUCCH-AN-InfoList-r13 ::= SEQUENCE OF SIZE(1..maxCE-Level-r13[4]) [2] OPTIONAL:Exist

  |       | +- ::= INTEGER (0..2047) [0]

  |       | +- ::= INTEGER (0..2047) [2]

  |       +-pucch-NumRepetitionCE-Msg4-Level0-r13 ::= ENUMERATED [n1] OPTIONAL:Exist

  |       +-pucch-NumRepetitionCE-Msg4-Level1-r13 ::= ENUMERATED [n1] OPTIONAL:Exist

  |       +-pucch-NumRepetitionCE-Msg4-Level2-r13 ::= ENUMERATED [n4] OPTIONAL:Exist

  |       +-pucch-NumRepetitionCE-Msg4-Level3-r13 ::= ENUMERATED [n4] OPTIONAL:Exist

  +-ue-TimersAndConstants ::= SEQUENCE

  +-freqInfo ::= SEQUENCE [00]

  +-mbsfn-SubframeConfigList ::= SEQUENCE OF OPTIONAL:Omit

  +-timeAlignmentTimerCommon ::= ENUMERATED [infinity]

  +-EXTENSION ::= SEQUENCE [0000000]

 

HEX : 00 00 6F 7C BF 60 20 99 00 3F 52 02 C0 00 C0 05 E2 00 00 04 26 00 01 2D F2 02 01 88 7D 3F C0 00 10 F1 4C 30 20 00 87 E8 00 00 40 03 CD C3 01 C0

 

 

RACH Sequence for Initial Access

 

Following is the overal protocol sequence of MTC(BL/CE) RACH process for Initial Access (Initial Registration). If you see the big picture, it would look very similar to RACH Process in Legacy LTE. The only outstanding difference would be you see a whole lots more arrows in MTC RACH process comparing to the process in legacy LTE.

Actually the 'lots of arrows' is very important characteristics in MTC RACH and it is the most important differences between legacy LTE RACH and MTC RACH in detailed pictures. As you can easily guess, the multiple arrows at each step indicates the repetative transmission.

When you trying to understand the details of MTC RACH process, you need to be able to answer to following questions. In other words, if you can answer to the following questions, you may say you have pretty good understandings on MTC RACH process. You need to ask following questions for each and every steps (except the step (A))

    i) Does this step require the repetative transmission ?

    ii) If it requires the repetition, how many times it has to repeat ?

    iii) How UE/eNB can figure out whether it should be repeated or not and how many times ?

    iv) Through which narrowband (Narrowband Index) this message should be transmitted ?

    v) How UE/eNB can figure out which Narrowband should be used ?

    vi) Does this message should be transmitted in a fixed frequency ? or in hopping frequency ?

    vii) How UE/eNB can figure out whether it should be transmitted in a fixed frequency ? or in hopping frequency ?

    viii) What should be the timing gap between each steps ?

 

 

Step (A) : SIB2

  • Parameters required for basic configurations for RACH is transmitted by SIB2

NOTE : If you are working on verification or protocol stack implementation, you have to make it sure that Network populate valid (consistant among multiple parameters) the PRACH parameters SIB2 and UE (DUT) has successfully decoded SIB2 and has no complain about the parameter settings in SIB2. Even when UE successfully decoded SIB2, there is some possibility where UE does not like some of the parameter setting and print error. In this case, UE would not send PRACH preamble.

 

 

Step (B) : Msg1 (Preamble) Transmission

 

Before UE send Msg1 (RACH Preamble), it has to determine what kind of RACH resource (time, frequency and preamble ID). Most of these resource information is notified to UE via SIB2 and some of the information (e.g, CE Level) is determined by UE based on cell power(RSRP) measurement.  Followings are the list of information that UE figure out from higher layer signaling message (SIB2).

  • PRACH configuration is signaled based on Table 5.7.1.2~5.7.1.4 in TS 36.211. The signaling parameters for PRACH configuration are as follows (Refer to 36.211-5.7.1). All of them are in SIB2.
    • prach-ConfigurationIndex
    • prach-FrequencyOffset
    • numRepetitionPerPreambleAttempt
    • prach-StartingSubframe
  • The starting frequency location of the preamble is signaled(prach-FreqOffset). The unit of the frequency location is indicated in the unit of PRB. (Ref [8])
  • PRACH can be transmitted in frequency hopping mode if following parameters are configured.(Refer to 36.211-5.7.1). All of them are in SIB2.
    • prach-HoppingConfig
    • prach-HoppingOffset

 

NOTE : If UE log says it has sent PRACH Preamble and eNB log says that it has not received PRACH, you have to check all the detailed lower layer configuration both in UE and eNB. If you are at this stage, you might have already checked SIB2 and there wouldn't be any issues in SIB2 parameter itself. However, there might be problems of interpreting SIB2 parameters to lower layer configuration on UE or on eNB. For this kind of troubleshooting, you should have access to very detailed low layer logging tool for both UE and eNB, and you have knowledge to interpret those log. There are many cases where higher layer signaling parameter (SIB2 in this case) is not directly mapped to lower layer configuration and many cases higher layer specification and lower layer specification uses different terminology. So it would be very difficult (almost impossible) for a single person to understand everything. So you should have good contact to various engineers specialized in each separate layers.

 

 

Step (C) : MPDCCH for RACH Response

 

A certain period (3 subframs) after PRACH premable has tranmitted, UE start trying to decode MPDCCH carrying DCI that is required to decode RAR message. It means .. once eNB received RACH Preamble, the eNB would send MPDCCH carrying DCI for PDSCH carrying RAR. Regarding this MPDCCH, you would have a couple of questions listed below.

  • In which narrowband the RAR will be transmitted ?
  • Does MPDCCH for RAR be transmitted in repetition ? or transmitted only once ?
  • How many times ?
  • How the repetition is configured ?
  • When the first MPDCCH should be transmitted and how it is configured ?

 

The answer to these questions are

  • The narrowband for RAR MPDCCH (i.e, MPDCCH to decode the PDSCH carrying RAR) is determined by SIB2 parameter mpdcch-NarrowbandsToMonitor.
  • This MPDCCH is being transmitted in repetition.
  • The number of repetition is configured by mpdcch-NumRepetition-RA-r13 in SIB2.   

 

NOTE : The SIB2 parameter for this MPDCCH is simple. It is defined by mpdcch-NumRepetition-RA-r13, but this single parameter is related to a few other lower layer parameters and in terms of 3GPP specification, a pretty complicated procedure and hidden tables are involved. You need to understand every details of 36.213-9.1.5 MPDCCH assignment procedure. Without complete understanding of this process, it would be difficult to troubleshoot for this step.   

 

 

Step (D) : RACH Response (RAR)

 

As in legacy LTE, RAR carries two critical information as follows.

  • Response to PRACH Preamble (It says 'Yes, I got the PRACH Preamble withi this ID (RAPID)')
  • Resource Allocation Information for Msg3.

The second part (i.e, Resource Allocation Information for Msg3) is made up of following information. As you see, depending on CE mode the bit field structure varies.

 

 

 

Most of the field in this structure is pretty straight forward but there some field that are a little challenging to understand mainly due to the nature of repetition and you would need some other tables as follows.

 

The narrowband index for Msg PUSCH in CEmodeA is directly defined by the field 'Msg3 PUSCH narrowband index', but the meaning of 'Msg3 PUSCH narrowband index' in CE mode B is determined by another table a shown below (This table defines the Msg3 PUSCH narrowband index for the first transmission. The narrowband index for the retransmitted Msg may change by some other factors) .

 

NOTE : NB_RAR in this table is determined by higher layer signaling parameter mpdcch-NarrowbandsToMonitor-r13 in SIB2.

 

The repetition number field in the random access response grant configured by higher layers indicates the repetition level for Msg3 PUSCH as given in Table 6.2-C for CEmodeA and Table 6.2-D for CEmodeB, where Y_A is determined by higher layer parameter pusch-maxNumRepetitionCEmodeA-r13, and Y_B is determined by higher layer parameter pusch-maxNumRepetitionCEmodeB-r13

 

Following is the interpretation of 'Number of Reptition for Msg3 PUSCH' for CEmodeA

 

 

Following is the interpretation of 'Number of Reptition for Msg3 PUSCH' for CEmodeA

 

 

With this, do you think you can interpret all of the field in RAR(36.213-Table 6-2) ? Unfortunately, No. You need another table to interpret the field Msg3/4 MPDCCH narrowband index. The interpretation of this field comes from following table.

 

 

 

You see a parameter NB_RAR in Table 6.2-A and 6.2-B. That parameter is defined by another table shown below. As you see here, NB_RAR is determined by mpdcch-NarrowbandsToMonitor-r13 and whether Preamble Index is even or odd.

 

< 36.213 - Table 6.2-E: Narrowband ( NB_RAR ) for MPDCCH RAR >

 

Yes , I know... it would be so confusing to follow through all of these tables and get some clear meaning out of the RAR message.

 

 

Step (E) : Msg 3

 

Once UE completed the Step (D), that is, decoding the contents of RAR, UE send Msg3 (RRC Connection Request). Before UE send this message and Network trying to receive this message, they both should know of the following information.

  • In which narrowband the message will be transmitted ?
  • Will it be transmitted in repetition ? How many times ?
  • Which MCS, TBS is used for this message ?

The answer is simple as follows.

  • The answers to all of the questions listed above lies in the contents of RAR

 

 

Step (F) : MDPDCCH for Msg 4

 

As soon as UE transmit the Msg3(RRC Connection Request), UE start monitoring (trying to detect) the MPDCCH that is needed to receive Msg4 PDSCH (i.e, the PDSCH carrying Msg4).  For UE to properly decode this channel, it has to know of following params.

  • Which Narrowband is used to carry the MPDCCH ?
  • From which OFDMA symbol is the MPDCCH allocated (assinged) ?
  • How many PRB pairs are used to carry this MPDCCH ?

 

The answer to these questions comes from RAR and SIB2 as follows.

  • Which Narrowband is used to carry the MPDCCH ? ==> This comes from the item Msg3/4 MPDCCH narrowband index in RAR
  • From which OFDMA symbol is the MPDCCH allocated (assinged) ? ==> This comes from prach-ConfigCommon-v1310.mpdcch-startSF-CSS-RA-r13.fdd-r13 in SIB2
  • How many PRB pairs are used to carry this MPDCCH ?

 

 

Step (G) : Msg 4

 

Once UE has decoded MPDCCH for Msg4 decoding, it decode Msg4 (MAC CE for Contention Resolution) and it completes RACH process if there is no problem with CR. Usually this CR and RRC Connection Setup message is carried in the same MAC PDU.

 

 

 

Reference

 

[1] 3GPP TS 36.321 V13.2.0 (2016-06)

[2] 3GPP R1-156420 : TSG RAN WG1 Meeting #83 - Random access for MTC

[3] 3GPP R1-156446 : TSG RAN WG1 Meeting #83 - On PRACH resource indication and level determination during random access

[4] 3GPP R1-156447 : TSG RAN WG1 Meeting #83 - New DCI format to support efficient RAR transmission for MTC UEs

[5] 3GPP R1-156565 : TSG RAN WG1 Meeting #83 - Remaining issues on random access for Rel-13 MTC   

[6] 3GPP R1-156651 : TSG RAN WG1 Meeting #83 - Random Access for MTC

[7] 3GPP R1-156685 : TSG RAN WG1 Meeting #83 - RAR transmission for Rel-13 MTC

[8] 3GPP R1-156847 : TSG RAN WG1 Meeting #83 - Details on RACH procedure for MTC UE

[9] 3GPP R2-153717 : TSG RAN WG2 Meeting #91 - Random access for Rel-13 low complexity and enhanced coverage UEs  // Strongly Recommended