CE Operation is categorized into four difference levels. These for groups are devided into two groups and each of the group belong to two different Operation Mode as below.
The level is the finer of the two settings, and it is the one the UE chooses for itself. It says how hard the cell has to work to reach this particular device. Almost every random access parameter on this page is then carried once per level rather than once per cell.
Followings are the topics to be covered in this page.
- The four levels
- How UE can figure out which Mode and which Level it has to apply ?
- What is configured once per level
- How a UE moves from one level to the next
- Reference
The four levels
The table below is the map between the two settings, and it is worth reading first. Two levels belong to each operation mode. The description column says what separates them, which is how many times the preamble is repeated.
|
Mode |
Level |
Description |
|
Mode A |
Level 1 |
No Repetition for PRACH |
|
Level 2 |
Small Number of Repetition for PRACH |
|
|
Mode B |
Level 3 |
Medium Number of Repetition for PRACH |
|
Level 4 |
Large Number of Repetition for PRACH |
Each of the level differs mostly in RACH and Paging process. Some of the major differences with different CE levels are :
- RACH configuration and resources (e.g, frequency, time, preamble) associated with each of the RACH configuration
- Frequency resources used for RACH transmission
- Repetition Number for RACH Preamble
One difference between this page and the specifications is worth settling straight away. 36.331 numbers the levels from zero rather than from one. Level 1 to Level 4 in the table above are therefore enhanced coverage level 0 to level 3 in 36.321 and 36.213. The constant maxCE-Level-r13 is 4, which is the count of levels rather than the highest index.
The field names carry the proof. PUCCH-ConfigCommon-v1310 holds four repetition fields named pucch-NumRepetitionCE-Msg4-Level0-r13 through Level3-r13, and PRACH-Config-v1310 holds initial-CE-level-r13 as an INTEGER over 0 to 3.
Those same four fields also show that the split between the two modes is real rather than a convention. The Level0 and Level1 fields take n1, n2, n4 or n8, and the Level2 and Level3 fields take n4, n8, n16 or n32. That is exactly the boundary between the CE mode A and CE mode B PUCCH ranges.
One item in the list above needs a qualification. Paging is coverage enhanced for a BL/CE UE, but it is not configured per level. PCCH-Config-v1310 carries a single mpdcch-NumRepetition-Paging-r13 and a single paging-narrowBands-r13 for the whole cell, so every level in the cell is paged with the same repetition.
Four levels, numbered from zero in the specifications : the table above counts from one, and the two numberings differ by exactly one throughout.Two levels belong to each operation mode : 36.213 clause 6.2 reads 0 and 1 as CE mode A, and 2 and 3 as CE mode B.The level is a random access concept first : it is chosen before any message is sent, and most of what it configures is part of that procedure.Paging repetition is not one of them : that value is set once for the cell, whatever level a UE is at.
How UE can figure out which Mode and which Level it has to apply ?
Basically Operation mode is determined by eNB and the Level within each Mode is determined by UE. The operation mode is determed by eNB and informed to UE via RRC message and the level is determined by UE. Then you may ask how UE determine the level and inform it to eNB ? UE determined the level based on the reference signal power (RSRP) it measure and inform it to eNB by PRACH resource (frequency, time, preamble) it uses.
All the information that UE need to determine CE Level and necessary PRACH resource information is notified to UE via SIB2 infromation as outlined below.

Three lists under one message, and the item counts are the whole point. Four entries where something is configured per level, three where a boundary between levels is drawn.
RACH-CE-LevelInfo has four items : one per level, and the labels on the right say so. It carries the preamble block, the response window and the contention resolution timer for each level.prach-ParametersListCE has four items : one per level as well, which is what NOTE 1 below is about. It carries the PRACH resource and the preamble repetition count.RSRP-ThresholdsPrachInfoList has only three : the labels call them switch points, because three boundaries are all that four levels need.Nothing in the picture names a level explicitly : position in the list is the index, and no field says which item is which.
The three item list is the one to read carefully. A threshold is a boundary and not a level, so three of them cut the RSRP range into four parts. 36.321 has the UE work downward, taking the deepest level whose threshold its measurement falls below, and stopping at level 0 when no threshold is crossed.
Capability limits that walk. The UE only takes a level it supports and the cell has configured. A UE that cannot reach the deepest level therefore stops one short of it, even when the measurement would send it there.
A connected UE can be told where to start instead of measuring. PRACH-Config-v1310 carries initial-CE-level-r13 as an INTEGER over 0 to 3, and it appears only in the dedicated configuration rather than in SIB2.
The UE picks the level and the network picks the mode : the paragraph above says as much, and the split is measurement against signalling.Three thresholds fix four levels : the count in the picture is not a mistake, and the labels call them switch points for that reason.Position in the list is the index : nothing inside RACH-CE-LevelInfo or prach-ParametersListCE names the level it belongs to.A dedicated message can set the starting level : initial-CE-level-r13 spares a connected UE the measurement.
NOTE 1 : The number of items under RACH-CE-LevelInfo should be same as the number of items under prach-ParameterListCE
NOTE 2 : For the details of RACH-CE-LevelInfo, refer to this note.
NOTE 3 : For the details of RSRP-ThresholsPrachInfoList and prach-ParameterListCE, refer to this note.
What is configured once per level
The picture above shows three lists and says nothing about what is inside them. The table below opens them, and the pattern it shows is the useful part. Everything that decides how long a UE waits, or how many times it repeats, is per level. Everything that decides where in the band it goes is per cell.
Field | Where it sits | What it sets for that level |
preambleMappingInfo-r13 | RACH-CE-LevelInfo-r13 | firstPreamble-r13 and lastPreamble-r13, the block of preamble indices that announces this level to the eNB |
ra-ResponseWindowSize-r13 | RACH-CE-LevelInfo-r13 | How long the UE watches for the random access response, sf20 to sf400 |
mac-ContentionResolutionTimer-r13 | RACH-CE-LevelInfo-r13 | How long the UE watches for contention resolution after Msg3, sf80 to sf960 |
rar-HoppingConfig-r13 | RACH-CE-LevelInfo-r13 | Whether the PDSCH carrying the random access response hops in frequency, on or off |
prach-ConfigIndex-r13 and prach-FreqOffset-r13 | PRACH-ParametersCE-r13 | Which PRACH configuration and which first resource block this level uses |
prach-StartingSubframe-r13 | PRACH-ParametersCE-r13 | How often a repeated preamble may begin, sf2 to sf256 |
maxNumPreambleAttemptCE-r13 | PRACH-ParametersCE-r13 | How many attempts are made at this level before the UE moves on, n3 to n10 |
numRepetitionPerPreambleAttempt-r13 | PRACH-ParametersCE-r13 | How many times one preamble attempt is repeated, n1 to n128 |
mpdcch-NarrowbandsToMonitor-r13 | PRACH-ParametersCE-r13 | One or two narrowbands to watch for the MPDCCH that schedules the response |
mpdcch-NumRepetition-RA-r13 | PRACH-ParametersCE-r13 | The repetition ceiling for that MPDCCH, r1 to r256 |
prach-HoppingConfig-r13 | PRACH-ParametersCE-r13 | Whether the preamble hops, with the distance given once per cell rather than per level |
pucch-NumRepetitionCE-Msg4-Level0-r13 to Level3-r13 | PUCCH-ConfigCommon-v1310 | How many times the acknowledgement of Msg4 repeats, as four separate fields rather than a list |
From 36.331 v19.3.0. The RSRP thresholds are not in the table because they mark the boundary between two levels rather than belonging to one.
One row is shaped differently from the rest and it is the last one. The PUCCH repetition is not carried as a list of four items. It is four separate fields with the level in the name. That is the only place in these information elements where a level index is written down rather than implied by position.
Two values that look as though they should be per level are not. The first is prach-HoppingOffset-r13, which gives the hopping distance once for the cell. The second is the whole of PCCH-Config-v1310, so paging repetition does not vary with level either.
Timing and repetition are per level : the response window, the contention resolution timer and both repetition counts all change with the level.Frequency position is mostly per cell : the hopping offset is set once, and only the PRACH first resource block moves with the level.Only the PUCCH names its level : everywhere else the index is the position in the list.The preamble block is what makes the rest work : without it the eNB would not know which of these configurations the UE had used.
How a UE moves from one level to the next
The measurement chooses a starting level and nothing more. An unanswered preamble does not simply get sent again at the same level. The level was a guess about propagation, and silence is evidence the guess was optimistic. 36.321 clause 5.1.4 turns that evidence into a move.
Two counters run at the same time, and they bound different things. PREAMBLE_TRANSMISSION_COUNTER counts attempts across the whole procedure and gives up when it reaches preambleTransMax-CE. PREAMBLE_TRANSMISSION_COUNTER_CE counts attempts at the current level and is bounded by maxNumPreambleAttemptCE for that level.
The second counter is the one that moves the UE. When it reaches the limit for the current level, it resets and the UE considers itself to be at the next level. Both the cell and the UE have to support that level. Where the next level is not supported, the UE stays where it is and keeps trying.
Each move changes everything in the table above at once. A different PRACH resource, a different preamble block, a longer response window, a longer contention resolution timer and more preamble repetitions all take effect together. They are entries of the same index in their lists.
Two counters, two limits : one bounds the procedure and the other bounds the stay at one level.Escalation is built in, not a fallback : maxNumPreambleAttemptCE exists to decide when to move rather than when to fail.A move changes every per level value together : the entries share one index, so nothing can be escalated on its own.Capability can stop the walk : the UE only moves to a level both it and the cell support.
Reference
[1] 4G, LTE-Advanced Pro and The Road to 5G by Erik Dahlman, Stefan Parkvall, Johan Skold
[2] 3GPP TSG RAN WG1 Meeting #83 R1-156698 : MPDCCH for Paging at multiple CE Levels
[3] 3GPP TS 36.213 V13.2.0 (2016-06) : Physical layer procedures (Release 13)
[4] 3GPP TS 36.321 v19.3.0 - clause 5.1.1 for how the level is selected, clause 5.1.4 for how the UE moves to the next one
[5] 3GPP TS 36.331 v19.3.0 - the RACH-CE-LevelInfo-r13, PRACH-ParametersCE-r13 and PUCCH-ConfigCommon-v1310 information elements, and the maxCE-Level-r13 constant
[6] 3GPP TS 36.213 v19.4.0 - clause 6.2, which maps the coverage enhancement level onto the operation mode