Random Access (Contention & Non-Contention) in LTE 4G
The RACH procedure — preamble, Random Access Response, Msg3 and contention resolution, plus contention-free RA.
Random Access is how an LTE UE first gets the attention of a cell it is not yet scheduled on — or re-synchronises to one it has drifted away from. It is the handshake that turns "I can hear this eNB" into "this eNB knows me, has given me an uplink grant, and has told me my timing advance." LTE offers two flavours: the classic four-step contention-based procedure, and a faster contention-free variant the network sets up in advance. Everything below is grounded in the MAC procedure of TS 36.321 and the physical-layer timing of TS 36.213.
Introduction
Random Access (RACH) is the MAC-layer handshake (TS 36.321) an LTE UE runs whenever it needs uplink synchronisation or a scheduling opportunity and has no other way to ask. It is the first uplink procedure in the connection lifecycle: before any scheduled uplink can flow, the eNB has to detect the UE, measure its round-trip delay, hand it a Timing Advance, and give it an initial grant.
It is not only for power-on. The same procedure runs for initial access from RRC_IDLE (RRCConnectionRequest), for RRC connection re-establishment after radio link or handover failure, for handover into a target cell, for regaining uplink sync when the timeAlignmentTimer has expired, for a Scheduling Request when no PUCCH SR resource is configured (or after SR failure), and for positioning when a fresh timing advance is required.
Because RACH is four distinct messages (Msg1–Msg4 in contention-based access, or two in the contention-free variant), a failure almost always lives in one specific step. That is exactly why a step-by-step troubleshooting habit pays off: if you know which message broke, you have already narrowed the root cause enormously.
On this page
Why Random Access is needed
In plain words: think of RACH as raising your hand in a crowded classroom. You first get the teacher's attention (the preamble), the teacher acknowledges you and says "go ahead, and here's when" (the RAR with a grant and timing), you speak your name (Msg3), and the teacher repeats your name back so everyone knows it was you, not the person next to you who raised their hand at the same moment (Msg4 contention resolution).
Concretely, three things must happen before the UE can send any scheduled uplink. First, the eNB must detect the UE — it has no idea the UE exists until it hears a preamble. Second, it must synchronise the uplink: because the propagation delay is unknown, the eNB measures the round-trip and returns a Timing Advance so the UE's transmissions land inside the eNB's FFT window. Third, it must allocate initial uplink resources — a grant the UE uses to send its identity. RACH is the only uplink channel a UE can use before it holds any grant, so it bootstraps everything that follows.
When Random Access Is Used
Random Access (RACH) is not only for power-on. It is the generic MAC procedure (TS 36.321) the UE runs whenever it needs uplink synchronisation or a scheduling opportunity and has no other way to ask. Think of it as the single door a UE walks through any time it wants to talk uplink but the eNB either does not yet know it, or no longer has a valid timing relationship with it. The distinct triggers are:
- Initial access from
RRC_IDLE— the UE has selected a cell, readMIB/SIB2, and now wants to set up a connection withRRCConnectionRequest. There is no prior uplink relationship at all, so contention-based access is the only option. - RRC connection re-establishment — after radio link failure, handover failure, or integrity-check failure, the UE re-accesses a cell to recover with
RRCConnectionReestablishmentRequest. It is racing theT311timer, so speed matters. - Handover — the UE accesses the target cell, usually with a dedicated (contention-free) preamble supplied inside the handover command's
mobilityControlInfo. This keeps the mobility interruption short. - Downlink data arrival when out of sync — the UE is
RRC_CONNECTEDbut its uplink timing has expired (thetimeAlignmentTimerlapsed), so before it can send HARQ feedback for a downlink transmission the eNB orders a RACH via aPDCCHorder. - Uplink data arrival when out of sync — the UE has UL data but no valid timing advance, or it is in sync but has no
PUCCHresource configured for a Scheduling Request, so it falls back to RACH to regain sync and ask for a grant. - Scheduling Request failure — the UE did have a dedicated
PUCCHSR resource but exhausteddsr-TransMaxwithout a grant; the SR procedure then falls back to a RACH. - Positioning — when timing advance is needed for a UE-positioning method that requires it, the network can order RACH to obtain a fresh
Timing Advance.
A MAC-layer procedure to acquire uplink synchronisation (a Timing Advance) and, for contention-based access, a unique identity resolved against everyone else who happened to pick the same preamble.
The UE cannot transmit scheduled uplink until the eNB knows its round-trip delay. RACH is the only uplink channel a UE can use before it holds a grant, so it bootstraps everything that follows.
Send a preamble on PRACH; the eNB replies with a Random Access Response carrying a Timing Advance and a UL grant; the UE transmits its identity; the eNB echoes it back to resolve any contention.
| Trigger | UE state | Type | What Msg3 carries |
|---|---|---|---|
| Initial access | RRC_IDLE | Contention-based | RRCConnectionRequest (S-TMSI or random value) |
| RRC re-establishment | RRC_CONNECTED after failure | Contention-based | RRCConnectionReestablishmentRequest |
| Handover | RRC_CONNECTED | Contention-free (usually) | C-RNTI MAC CE (+ buffer status) |
| DL data, out of sync | RRC_CONNECTED | Contention-free (PDCCH order) | C-RNTI MAC CE |
| UL data, out of sync / no SR | RRC_CONNECTED | Contention-based | C-RNTI MAC CE + BSR |
SR failure (dsr-TransMax) | RRC_CONNECTED | Contention-based | C-RNTI MAC CE + BSR |
| Positioning | RRC_CONNECTED | Contention-free | — (ends at Msg2, TA obtained) |
The Four-Step Contention-Based Procedure
This is the default when the UE has no dedicated resources. It is "contention-based" because many UEs share the same pool of preambles, and two of them can collide on the same choice. The four messages are conventionally called Msg1 through Msg4.
Msg1 — preamble on PRACH. The UE picks one of the up to 64 preambles configured for the cell and transmits it on a PRACH time/frequency resource. The set of 64 Zadoff-Chu sequences is split into groups signalled in SIB2; within the allowed group the UE chooses one randomly. From the time and frequency of the PRACH resource it used, the UE computes an RA-RNTI — a temporary identity that tells it which upcoming response is for its transmission (TS 36.321).
Msg2 — Random Access Response (RAR). The eNB, having detected the preamble, sends a MAC RAR on PDSCH scheduled by a PDCCH addressed to that RA-RNTI. The UE monitors for it inside the ra-ResponseWindowSize, a window that opens a few subframes after Msg1. The RAR carries an 11-bit Timing Advance command (so the UE corrects its uplink timing), a 20-bit uplink grant for Msg3, and a Temporary C-RNTI. It also echoes the detected preamble index (the RAPID, Random Access Preamble Identifier) so the UE confirms it was heard. One RAR MAC PDU can carry responses for several UEs, each keyed by its RAPID.
Msg3 — first scheduled uplink on PUSCH. Using the 20-bit grant, and scrambling with the Temporary C-RNTI, the UE transmits its identity — for initial access this is RRCConnectionRequest carrying the UE identity (S-TMSI or a 40-bit random value) on the CCCH. Msg3 is where contention actually bites: two UEs that chose the same preamble on the same resource both received the same RAR and now transmit on the same grant. Msg3 is HARQ-protected and can be retransmitted.
Msg4 — contention resolution. The eNB echoes back the identity it decoded, using the UE Contention Resolution Identity MAC CE (for a UE that already holds a C-RNTI, contention is instead resolved by a PDCCH addressed to that C-RNTI). The UE whose identity matches declares success and promotes its Temporary C-RNTI to C-RNTI; the loser fails contention resolution and retries.
| Message | Direction / Channel | Carries |
|---|---|---|
Msg1 (preamble) | UE → eNB, PRACH | One of 64 preambles, chosen randomly; the UE derives RA-RNTI from the preamble's time/frequency resource. |
Msg2 (RAR) | eNB → UE, PDCCH(RA-RNTI) + PDSCH | 11-bit Timing Advance, 20-bit UL grant for Msg3, Temporary C-RNTI, echoed RAPID; decoded within ra-ResponseWindowSize. |
Msg3 | UE → eNB, PUSCH | UE identity, e.g. RRCConnectionRequest / RRCConnectionReestablishmentRequest, or a C-RNTI MAC CE. |
Msg4 | eNB → UE, PDCCH + PDSCH | UE Contention Resolution Identity MAC CE; on success Temporary C-RNTI becomes C-RNTI. |
Which channel carries what — the whole procedure: Msg1 has no DCI (the UE just transmits PRACH). Msg2's PDSCH is scheduled by a DCI format 1A/1C whose CRC is scrambled with the RA-RNTI, in the common search space. Msg3 is sent on PUSCH using the RAR uplink grant (not a DCI), scrambled with the Temporary C-RNTI; a Msg3 retransmission is scheduled by a DCI format 0 with CRC scrambled by the Temporary C-RNTI. Msg4's PDSCH is scheduled by a DCI format 1A with CRC scrambled by the Temporary C-RNTI (CCCH path) — or, when the UE already has one, addressed to its C-RNTI.
| Message | Physical channel | Scheduled by | RNTI (CRC scramble) | Search space |
|---|---|---|---|---|
| Msg1 (preamble) | PRACH | UE-initiated (no DCI) | — | — |
| Msg2 (RAR) | PDSCH | DCI format 1A/1C | RA-RNTI | Common search space |
| Msg3 | PUSCH | RAR UL grant (retx: DCI 0) | Temporary C-RNTI (retx) | — (retx: common SS) |
| Msg4 | PDSCH | DCI format 1A | Temporary C-RNTI (or C-RNTI) | Common search space |
Reading the four-step flow in the logs
Walk the trace message by message: preamble sent, RAR received in-window, Msg3 CRC at the eNB, Msg4 contention-resolution match. The first line that does not appear (or does not match) is the broken step.
Representative UE log (LTE initial access) — illustrative, values vary by vendor/build:
| Field | Meaning | Example (from log) | Debugging check |
|---|---|---|---|
preamble | Preamble index the UE selected. | 23 | Must equal the RAPID echoed in Msg2; a mismatch means the eNB detected a different sequence. |
prachConfigIndex | PRACH config: format + which subframes carry PRACH. | 3 | Must match the SIB2 broadcast; a mismatch means the UE transmits where the eNB is not listening. |
raRnti | RA-RNTI derived from the PRACH occasion (1 + t_id + 10×f_id). | 3 | Must match the value the eNB scrambles Msg2 with, or the UE never decodes the RAR. |
TA | 11-bit Timing Advance command in the RAR. | 42 | Sanity-check against expected cell range; carried into Msg3 timing. |
tcRnti | Temporary C-RNTI assigned in the RAR. | 0x3D01 | Track it through Msg3/Msg4; promoted to C-RNTI on success. |
ContentionResolutionId | Msg4 echo of the first 48 bits of the Msg3 CCCH SDU. | MATCH | Match = this UE won; mismatch or timer expiry = lost contention, back off and retry. |
Preambles: Zadoff-Chu Sequences and Groups A/B
A preamble is not a random noise burst — it is a carefully chosen Zadoff-Chu (ZC) sequence. ZC sequences are "constant amplitude zero autocorrelation" (CAZAC): each has perfectly flat power across the band and, crucially, near-zero correlation with cyclically shifted versions of itself. That last property is what lets the eNB tell many simultaneous preambles apart and estimate the round-trip delay of each from where the correlation peak lands.
Each cell needs 64 preambles. They are generated from one or more root Zadoff-Chu sequences (identified by the rootSequenceIndex broadcast in SIB2) by applying cyclic shifts. The shift step is governed by zeroCorrelationZoneConfig (the NCS parameter): a larger zero-correlation zone tolerates larger propagation delay (bigger cells) but yields fewer shifts per root, so more root sequences are consumed to reach 64. If one root cannot produce 64 usable shifts, the UE simply rolls to the next consecutive root index — which is why rootSequenceIndex is a starting point, not a single value.
The 64 preambles are partitioned into up to two groups, A and B. The group tells the eNB, before it has decoded anything, roughly how big a Msg3 the UE intends to send and how good its coverage is. The UE selects Group B only when its Msg3 payload would exceed the messageSizeGroupA threshold and its estimated pathloss leaves enough power headroom (the eNB advertises the criteria via messagePowerOffsetGroupB); otherwise it uses Group A. This gives the eNB a hint to size the Msg2 grant appropriately.
| Aspect | Group A | Group B |
|---|---|---|
| Chosen when | Small Msg3, or limited power headroom | Large Msg3 and sufficient power headroom |
| Signals to eNB | "Give me a small grant" | "Give me a larger grant" |
| Governed by | — | messageSizeGroupA, messagePowerOffsetGroupB, numberOfRA-Preambles |
| Availability | Always present | Optional (present only if configured) |
RA-RNTI, precisely: in LTE FDD the UE computes RA-RNTI = 1 + t_id + 10 × f_id, where t_id (0–9) is the first subframe of the PRACH occasion and f_id (0–5) is its frequency index within that subframe. The eNB scrambles the Msg2 PDCCH CRC with the same value, so the UE only decodes the RAR for its own occasion — not somebody else's.
Preamble Formats and PRACH Configuration
The Msg1 preamble's length in the time domain depends on the preamble format, chosen to match the cell size: larger cells need a longer cyclic prefix (CP) and guard time to tolerate the greater round-trip delay before the preamble smears into the next symbol. LTE defines formats 0–4 (sequence and CP lengths in TS 36.211; timing and cell-radius implications per TS 36.213). Formats 0–3 use the 1.08 MHz (6-RB) PRACH band in normal subframes; format 4 is the very short format living in the TDD special subframe's UpPTS.
| Format | Sequence / structure | Approx. cell radius | Typical use |
|---|---|---|---|
| 0 | 1 preamble seq, short CP; ~1 ms | up to ~15 km | Normal macro cells (most common). |
| 1 | 1 seq, long CP + long guard; ~2 ms | up to ~77 km | Large cells. |
| 2 | 2 repeated seqs, short CP; ~2 ms | up to ~30 km | Coverage-limited cells (extra energy). |
| 3 | 2 repeated seqs, long CP; ~3 ms | up to ~100 km | Very large / high-speed cells. |
| 4 | Very short seq in UpPTS | up to ~1.4 km | TDD special subframe, small cells only. |
The prach-ConfigIndex (broadcast in SIB2 within the prach-Config / PRACH-ConfigInfo structure) selects both the preamble format and which subframes and system-frame parity carry PRACH resources, from a lookup table in TS 36.211. Alongside it, prach-FreqOffset positions the 6-RB PRACH band in frequency, rootSequenceIndex seeds the ZC generation, and zeroCorrelationZoneConfig sets the cyclic-shift spacing. Together these tell every UE in the cell exactly when and where to send Msg1 and how the 64 preambles are generated — without any per-UE signalling. In TDD, PRACH occasions can additionally recur in frequency within a subframe, which is where the f_id term in the RA-RNTI earns its keep.
✅ Debugging steps (Msg1 — preamble)
- Confirm the UE actually transmitted a preamble — check UE Tx power and that
PCMAXis not already hit on the first attempt. - Verify every PRACH parameter the UE derived from
SIB2(prach-ConfigIndex, format,rootSequenceIndex,zeroCorrelationZoneConfig,prach-FreqOffset) matches the broadcast. - Check the RF that feeds the open-loop path-loss estimate (RSRP/SINR) and uplink interference on the PRACH resource.
- Cross-check the UE's
RA-RNTIagainst the eNB's, and confirm the eNB actually detected the preamble index the UE sent.
⚠ Common causes of failure (Msg1)
- Low UE Tx power or
PCMAXalready reached, so the preamble never arrives strong enough to detect. - Poor RF / low SINR at the eNB, or high PRACH interference, so the preamble is missed.
- PRACH config mismatch: wrong format, root sequence, or occasion, so the eNB is not listening where the UE transmits.
RA-RNTIdisagreement (UE and eNB map the occasion differently), so the UE cannot decode its own RAR.
✅ Debugging steps (Msg2 — RAR)
- Confirm the eNB generated a RAR against the detected preamble index and pushed it before
ra-ResponseWindowSizeclosed. - Verify the Msg2
PDCCHwas transmitted with CRC scrambled by the correctRA-RNTI, and that common-search-space CCEs were allocated. - Check the RAR's echoed RAPID matches the UE's preamble, and that the UL grant is large enough for the intended Msg3 (Group A/B).
- Confirm
ra-ResponseWindowSizelength and its start offset relative to Msg1.
⚠ Common causes of failure (Msg2)
- RAR not generated — preamble not detected, or the scheduler dropped it under load.
- PDCCH CCE allocation failure / control-channel congestion, so no grant reaches the UE.
- Wrong
RA-RNTIderivation, so the UE never decodes the RAR PDCCH. - RAR arrives after
ra-ResponseWindowSize, so the UE treats it as no RAR and ramps.
Contention Resolution: Two UEs, One Preamble
The word "contention" only means something when two UEs clash. Picture UE-A and UE-B starting random access at the same instant and happening to pick the same preamble on the same PRACH resource. The eNB detects one preamble energy at one delay and issues one RAR — which both UEs receive, because both computed the same RA-RNTI and both see their RAPID echoed. They now hold the same Temporary C-RNTI and the same grant, so they transmit Msg3 on the same PUSCH — a second collision.
The eNB typically decodes only the stronger Msg3 (capture effect). Msg4 then carries the UE Contention Resolution Identity MAC CE, which echoes back the first 48 bits of the CCCH SDU (the RRCConnectionRequest) it decoded. The UE whose transmitted identity matches those 48 bits declares success, stops the mac-ContentionResolutionTimer, and promotes Temporary C-RNTI to C-RNTI. The other UE sees a mismatch, declares failure when the mac-ContentionResolutionTimer expires, discards the Temporary C-RNTI, backs off by a random amount up to ra-ResponseWindowSize-related backoff, ramps power, picks a fresh random preamble, and retries.
There is a subtle second path. A UE that already has a valid C-RNTI (for example, doing RACH after losing uplink sync) does not use the identity MAC CE. It sends a C-RNTI MAC CE in Msg3, and contention is considered resolved the moment it receives a PDCCH addressed to its own C-RNTI — no 48-bit echo needed, because the C-RNTI is already unique in the cell.
Where identity lives: a preamble is only a signature sequence — it carries no identity. The UE's identity first appears in Msg3, which is exactly why contention can only be resolved at Msg4, never earlier. The preamble collision is detected only in hindsight, by the identity mismatch.
✅ Debugging steps (Msg3 & Msg4)
- Check whether Msg3 passed CRC at the eNB — a CRC failure points to weak uplink, a collision, or a misapplied grant.
- Verify the
Timing Advancefrom Msg2 was applied; a stale/bad TA smears Msg3 across slot boundaries. - Inspect the Msg3 HARQ trace and how many retransmissions occurred before the retry budget was spent.
- Confirm Msg4 was sent and its
UE Contention Resolution Identitymatches the Msg3 CCCH bits, withinmac-ContentionResolutionTimer; for a C-RNTI UE, confirm the resolvingPDCCHwas addressed to the rightC-RNTI.
⚠ Common causes of failure (Msg3 & Msg4)
- Msg3 CRC failures from weak uplink, interference, or a Msg3 collision between colliding UEs.
- Bad or stale
Timing Advance, so Msg3 lands outside the expected window. - Contention-resolution identity mismatch — the UE lost, or the eNB decoded a different Msg3.
mac-ContentionResolutionTimerexpiry, or poor downlink so Msg4's PDCCH/PDSCH is not decoded even though it was sent.
Contention-Free (Non-Contention) Random Access
When the network already knows the UE and wants a fast, collision-proof access, it hands the UE a dedicated preamble in advance. Because no one else in the cell will be told to use that specific ra-PreambleIndex, there is no possibility of collision, and the procedure ends at Msg2 — no Msg3/Msg4 resolution is needed. This is the whole point: contention-free RACH trades a little signalling overhead (the eNB must pre-assign the preamble) for deterministic, minimum latency.
Two ways the eNB assigns the dedicated preamble:
- Handover command — the
RRCConnectionReconfigurationcarryingmobilityControlInfoincludes arach-ConfigDedicatedwith a reservedra-PreambleIndexandra-PRACH-MaskIndex, so the UE accesses the target cell deterministically the instant it arrives. PDCCHorder — the eNB sends a DCI format 1A on thePDCCH(addressed to the UE'sC-RNTI) carrying a specific preamble index, telling aRRC_CONNECTEDbut out-of-sync UE to launch RACH — typically to restore uplink timing before delivering pending downlink data, or to obtain a freshTiming Advancefor positioning.
Note a self-healing fallback: if the eNB assigned ra-PreambleIndex = 000000 in a PDCCH order, that instructs the UE to fall back to the ordinary contention-based procedure with a randomly chosen preamble. And if a dedicated attempt fails repeatedly (reaching preambleTransMax), the UE likewise falls back to contention-based access rather than giving up.
| Aspect | Contention-based (CBRA) | Contention-free (CFRA) |
|---|---|---|
| Preamble choice | UE picks randomly from the shared pool | eNB assigns a dedicated ra-PreambleIndex |
| Collision possible? | Yes — two UEs can pick the same preamble | No — preamble reserved for one UE |
| Steps | Four (Msg1–Msg4) | Two (Msg1 preamble, Msg2 RAR) |
| Contention resolution | Required (Msg3/Msg4) | Not needed |
| Triggered by | Initial access, re-establishment, UL data w/o SR, SR failure | Handover, PDCCH order for DL data, positioning |
| Latency | Variable (collisions → retries) | Deterministic, minimal |
| Configured by | RACH-ConfigCommon in SIB2 | rach-ConfigDedicated or PDCCH order |
Rule of thumb: contention-based = "cold" access where the network does not yet know or cannot reach the UE (idle access, re-establishment). Contention-free = network-initiated access where the eNB can pre-assign a preamble (handover, PDCCH order for DL data to an out-of-sync UE).
Power Ramping and Retransmission
The UE does not know the exact path loss to the cell, so it sets the first preamble power by open-loop estimation and then ramps it. If no valid RAR arrives within ra-ResponseWindowSize, or Msg4 does not resolve contention before mac-ContentionResolutionTimer expires, the UE increments its preamble transmission counter (PREAMBLE_TRANSMISSION_COUNTER), raises transmit power by powerRampingStep, waits a backoff drawn from the RAR's backoff indicator, picks a newly chosen random preamble, and tries again. This repeats until success or until the counter reaches preambleTransMax, at which point the MAC declares a random access problem to RRC (which may lead to re-establishment or cell reselection).
Here PL is the estimated downlink path loss (from the cell-specific reference-signal RSRP), preambleInitialReceivedTargetPower is the received level the eNB wants to see, and n is the current preamble attempt (TS 36.213). For a preamble chosen from Group B, an additional deltaPreambleMsg3-style offset and the group-B power offset apply. All of these higher-layer parameters — preambleInitialReceivedTargetPower, powerRampingStep, preambleTransMax, ra-ResponseWindowSize, mac-ContentionResolutionTimer, and the group-selection thresholds — are broadcast in the RACH-ConfigCommon of SIB2 for contention-based access, or delivered in rach-ConfigDedicated for a contention-free attempt.
| Parameter | Role | Where signalled |
|---|---|---|
preambleInitialReceivedTargetPower | Target received power for the first preamble | RACH-ConfigCommon (SIB2) |
powerRampingStep | dB increment added per failed attempt | RACH-ConfigCommon (SIB2) |
preambleTransMax | Max preamble transmissions before RA problem | RACH-ConfigCommon (SIB2) |
ra-ResponseWindowSize | Subframes to wait for the RAR (Msg2) | RACH-ConfigCommon (SIB2) |
mac-ContentionResolutionTimer | Subframes to wait for Msg4 resolution | RACH-ConfigCommon (SIB2) |
LTE ↔ NR: the four-step CBRA skeleton is identical, but several details change. Where LTE broadcasts RACH config in SIB2 (RACH-ConfigCommon), NR broadcasts rach-ConfigCommon inside ServingCellConfigCommon in SIB1. LTE preambles use long ZC sequences (L=839, formats 0–4); NR adds short formats (L=139) for higher SCS and mmWave. NR's RA-RNTI formula includes the OFDM-symbol index and carrier (NUL/SUL), not just subframe/frequency, and NR ties preambles to SSB beams (SSB-to-RACH-occasion association). NR also adds the 2-step MsgA/MsgB variant and beam-failure recovery, neither of which exists in LTE. The RAR Timing Advance widens from 11 bits (0–1282) in LTE to 12 bits (0–3846) in NR, with a numerology-scaled step.
Q. How does the UE compute the RA-RNTI, and why does it matter?
A. In LTE FDD the RA-RNTI is a function of the PRACH resource used — it is 1 + t_id + 10 × f_id, where t_id is the first subframe of the PRACH occasion (0–9) and f_id is the frequency index within that subframe (0–5). It matters because the eNB scrambles the Msg2 PDCCH with that same RA-RNTI, so the UE only decodes the RAR meant for its occasion.
Q. Why are LTE preambles Zadoff-Chu sequences, and how do you get 64 of them?
A. Zadoff-Chu sequences are CAZAC — flat amplitude and zero cyclic autocorrelation — so the eNB can separate many simultaneous preambles and read each UE's round-trip delay from the correlation-peak position. The 64 are generated by cyclically shifting one or more root sequences (from rootSequenceIndex), with the shift spacing set by zeroCorrelationZoneConfig; when one root runs out of usable shifts, the next root index is used.
Q. What is the difference between preamble Group A and Group B?
A. Both are subsets of the 64 preambles. The UE picks Group B only when its Msg3 would be large and it has enough power headroom (per messageSizeGroupA and messagePowerOffsetGroupB); otherwise Group A. The choice is a hint that lets the eNB size the Msg2 UL grant before decoding anything.
Q. Where in the four-step flow is contention actually resolved, and how?
A. At Msg3/Msg4. Colliding UEs pick the same preamble, get the same RAR, Temporary C-RNTI and grant, and both send Msg3 with their own identity. In Msg4 the eNB echoes the decoded identity via the UE Contention Resolution Identity MAC CE (first 48 bits of the CCCH SDU); only the matching UE succeeds and promotes Temporary C-RNTI to C-RNTI. The others restart with power ramping.
Q. Why does the network use contention-free RACH for handover?
A. Because a dedicated preamble carried in the handover command eliminates collisions entirely, so access to the target cell completes at Msg2 with minimal, deterministic latency — critical for keeping the handover interruption short.
Q. What happens when preambleTransMax is reached?
A. The MAC declares a random access problem to RRC. Depending on why RACH was running, this typically leads to RRC connection re-establishment or, from idle, to a cell-reselection / connection-failure indication — the UE does not silently keep hammering the cell.
Summary
The fastest way to root-cause an LTE random-access failure is to walk the messages in order and find the first one that broke. Msg1→Msg2→Msg3→Msg4: if the preamble never gets a RAR, suspect UE Tx power, RF/SINR, power ramping, or a PRACH config mismatch against SIB2. If the RAR is missing despite a detected preamble, look at RAR generation, PDCCH CCE allocation, RA-RNTI, and ra-ResponseWindowSize. If Msg3 fails, check CRC, the applied Timing Advance, and the HARQ retry budget. If Msg4 fails, check the UE Contention Resolution Identity match, mac-ContentionResolutionTimer, and downlink quality.
Keep the two flavours straight: contention-based access is "cold" (idle, re-establishment, UL data without SR) and needs the full four steps; contention-free access is network-initiated (handover, PDCCH order, positioning), uses a dedicated preamble, and finishes at Msg2. Isolating the broken step turns a vague "attach failure" into a specific, testable hypothesis — because each step points at a small, distinct set of causes.
Preparing for a 4G/5G technical interview?
Random Access is one of the first things a mock interviewer digs into — Msg1/Msg2/Msg3/Msg4, RA-RNTI, contention resolution, backoff. Get live feedback on how clearly you can walk through it.
Book a Mock Interview ₹199 →Where this fits
Random Access is the first uplink step after the UE has found a cell, and it feeds directly into connection setup, timing, and mobility. Follow these threads next.
Timing Advance in Msg2 and how uplink sync is maintained by the timeAlignmentTimer.RRC Procedures — what Msg3/Msg4 carry (RRCConnectionRequest, RRCConnectionReestablishmentRequest).MAC PDU & Control Elements — how the RAR and the UE Contention Resolution Identity MAC CE are structured.