RACH¶
Summary
- RACH (Random Access Channel) is the procedure a UE uses to establish uplink synchronization and request access to a cell.
- It allows a UE to:
- Move from "I can hear the cell" (after SSB detection) to "the cell can hear me"
- Obtain uplink timing alignment (Timing Advance)
- Request and be assigned a C-RNTI
- Resolve contention if multiple UEs attempt access at the same time
Think of RACH as:
"Hello gNB, I'd like to talk. Here's my timing — please tell me how to adjust it and give me an identity."
RACH Procedure Overview¶
Figure 1. 4-Step Random Access Message Sequence1
RACH is triggered in several scenarios, not just initial access:3
- Initial access from
RRC_IDLE - RRC re-establishment after radio link failure
- Handover to a new cell
- DL or UL data arrival while uplink is not synchronized
- Beam failure recovery
- Scheduling request when no PUCCH resource is configured
- Transition from
RRC_INACTIVE - Timing advance re-acquisition for an SCell (e.g., in carrier aggregation)
If you are confused...
RACH sits right after SSB in the access flow. The UE has already detected a cell and read the MIB/SIB1 — RACH is the next step, where the UE actually announces itself and gets synchronized for uplink transmission. The rest of this page walks through the 4-step procedure first, since it's the foundation, then the 2-step variant introduced later.
Contention Based vs. Contention Free¶
Figure 2. Contention Based vs. Contention Free2
Random access always runs in one of two modes, chosen based on why the procedure was triggered:
- Contention-Based Random Access (CBRA) — used for initial access, RRC re-establishment, or any scenario where the network hasn't already dedicated resources to this specific UE. The UE picks a preamble at random from a shared pool, so more than one UE may select the same preamble in the same PRACH occasion — which is exactly why a contention-resolution step exists later in the procedure.
- Contention-Free Random Access (CFRA) — used when the network already knows which specific UE needs access, most commonly during handover or beam failure recovery. The gNB assigns a dedicated preamble (and, in 2-step RA, a dedicated PUSCH resource too) directly to that UE, so collision is structurally impossible — no other UE can pick the same resource — and the later contention-resolution step can be skipped entirely.
Rule of thumb
- If the network already knows exactly which UE is about to show up (handover, beam recovery) → CFRA.
- If the UE is showing up "cold" (initial access, re-establishment) → CBRA.
4-Step Random Access (Type 1)¶
Msg1 – Random Access Preamble¶
The UE transmits a preamble sequence on the PRACH, selected either randomly from a shared pool (contention-based) or assigned by the network (contention-free). See PRACH Preamble Structure below for how the preamble sequence itself is generated and how a preamble index is selected from the pool.
Purpose
"gNB, I'm here — can you hear me and tell me how far off my timing is?"
Quick reminder
See Contention Based vs. Contention Free above for how preamble selection differs between CBRA and CFRA — that choice is made right here, at Msg1.
Msg2 – Random Access Response (RAR)¶
The gNB detects the preamble and responds with an RAR carrying the Timing Advance command, an uplink grant for Msg3, and a Temporary C-RNTI. Because the UE has no identity of its own yet, the PDCCH scheduling this RAR is addressed to an RA-RNTI instead — see RA-RNTI Derivation for how the UE knows which RA-RNTI to monitor.
Purpose
"I heard you — here's your timing correction, an uplink grant, and a temporary identity to use next."
Msg3 – Scheduled Uplink Transmission¶
Using the uplink grant from Msg2, the UE transmits its identity (e.g., an RRC Setup Request or C-RNTI, depending on the trigger) on the PUSCH.
Purpose
"Here's who I am and what I'm asking for."
Msg4 – Contention Resolution¶
The gNB echoes back the UE identity received in Msg3. Only the UE that recognizes its own identity considers contention resolved and promotes its Temporary C-RNTI to a full C-RNTI; other UEs that collided restart the procedure.
Purpose
"Confirmed — you're the one I heard. You're now connected."
What happens on collision?
If two UEs pick the same preamble in the same PRACH occasion, the gNB may fail to decode either one (no RAR received, both UEs retry), or successfully decode one and not the other (only the successful UE recognizes its identity in Msg4; the other silently retries from Msg1).
2-Step Random Access (Type 2)¶
Figure 3: 4-Step vs. 2-Step Random Access Message Sequence (Contention Based)4
2-step RA collapses the four messages into two, at the cost of needing more resources up front:
| Message | Combines | Direction |
|---|---|---|
| MsgA | Preamble (like Msg1) + payload (like Msg3) | UE → gNB |
| MsgB | Random Access Response + Contention Resolution (like Msg2 + Msg4) | gNB → UE |
Table 1. 2-step RA summary
Purpose
"Let's skip the round trip — here's my preamble and my request together. Just confirm both at once."
Both CBRA and CFRA exist in 2-step RA too, but the mechanics shift slightly since Msg1 and Msg3 are no longer separate events.
Contention Based¶
In 2-step CBRA, the UE selects both a preamble (PRACH) and a payload resource (PUSCH) from shared, contention-based pools, and transmits them together as MsgA — the payload is typically a CCCH SDU (for a UE with no existing identity) or a C-RNTI (for a UE that already has one).5
The gNB responds with MsgB, which folds together the roles of Msg2 and Msg4. If a CCCH SDU was sent in the MsgA payload, contention is resolved by checking whether the identity echoed back in MsgB matches what the UE sent; if a C-RNTI was used, resolution is simply confirmed by receiving a PDCCH addressed to that C-RNTI.
If the gNB detects the preamble but can't decode the payload, it can still respond with a fallback RAR — the procedure then continues as ordinary 4-step RA from Msg3 onward, rather than failing outright.
Contention Free¶
In 2-step CFRA, the gNB assigns the UE a dedicated preamble and a dedicated PUSCH resource (and, where relevant, a specific RACH Occasion) for the MsgA transmission — removing collision risk on both the preamble and the payload, not just the preamble.5
Because there's nothing to contend over, the procedure completes as soon as the UE receives a PDCCH addressed to its C-RNTI, or receives fallback information tied to the preamble it transmitted. This makes 2-step CFRA a natural fit for the same triggers as 4-step CFRA — handover and beam failure recovery — but with the latency savings of the 2-step flow.4
PRACH Preamble Structure¶
Before a UE can transmit anything meaningful, it needs a preamble the gNB can reliably detect — even when several UEs might transmit at the same time, and even before the network knows anything about who's transmitting.
The preamble sequence transmitted in Msg1/MsgA is generated from a Zadoff-Chu (ZC) sequence, a family of complex-valued sequences with constant amplitude and, for prime lengths, ideal periodic autocorrelation — first described by Chu in 1972,6 long before cellular RACH existed, and later adopted for LTE and NR because those correlation properties are exactly what preamble detection and timing estimation need.
where \(u\) is the root sequence index and \(N_{ZC}\) is the sequence length.
Different cyclic shifts of the same root sequence produce additional, quasi-orthogonal preambles — this is what allows a single root to generate a full set of usable preambles (up to 64 per cell) without needing a unique root for each one.
Preamble Formats¶
| Family | Sequence length \(L_{RA}\) | Subcarrier spacing | Typical use case |
|---|---|---|---|
| Long (Format 0–3) | 839 | 1.25 kHz or 5 kHz | Large cells, FR1 — inherited conceptually from LTE |
| Short (Format A1–A3, B1–B4, C0, C2) | 139 | 15 / 30 kHz (FR1), 60 / 120 kHz (FR2) | Small cells, dense deployments, both FR1 and FR2 |
Table 2. Preamble Formats7
Ncs and restricted sets
\(N_{cs}\) (zero-correlation zone) defines the cyclic-shift spacing between preambles derived from the same root sequence, and is configured via zeroCorrelationZoneConfig. A larger \(N_{cs}\) supports a larger cell radius (more room for round-trip delay) at the cost of fewer available preambles per root sequence — this is the same fundamental trade-off LTE PRACH planning uses.7
RACH Occasions & PRACH Configuration¶
RACH preambles aren't transmitted just anywhere — they occupy specific, periodically recurring time-frequency resources called RACH Occasions (ROs), defined by the RRC parameter prach-ConfigurationIndex (broadcast in SIB1 via rach-ConfigCommon) together with msg1-FDM (frequency-domain occasions per slot) and msg1-FrequencyStart.
How does the UE know which RO and preamble to use?
Just like SSB beam sweeping determines which SSB index gives the UE the best signal, that same SSB index maps to a specific set of ROs and preambles, configured via ssb-perRACH-OccasionAndCB-PreamblesPerSSB. This closes the loop opened in the SSB page:
- UE measures all SSBs, picks the one with best RSRP
- That SSB's index determines the RO/preamble the UE must use for Msg1
- The gNB then knows which beam to use for Msg2/RAR, since it already knows which SSB (and therefore which beam) the UE selected
This is why the RACH procedure doesn't need a separate beam-discovery step — beam correspondence was already established during SSB detection.
RA-RNTI Derivation¶
Msg2 (or MsgB, for 2-step RA) can't be addressed to the UE's own identity, because at this point in the procedure the UE doesn't have one yet. Instead, the gNB schedules it on PDCCH using a temporary identity — the RA-RNTI — computed purely from the time/frequency location of the PRACH occasion the UE transmitted on. Since the UE already knows exactly when and where it sent its preamble, it can independently compute the same RA-RNTI value and monitor PDCCH for a match, without ever having been told the value explicitly.
Per TS 38.321, RA-RNTI is derived as:
Where:
- \(s_{id}\): index of the first OFDM symbol of the PRACH occasion (\(0 \leq s_{id} < 14\))
- \(t_{id}\): index of the first slot of the PRACH occasion within a system frame (\(0 \leq t_{id} < 80\))
- \(f_{id}\): index of the PRACH occasion in the frequency domain (\(0 \leq f_{id} < 8\))
- \(ul\_carrier\_id\): 0 for the normal uplink (NUL) carrier, 1 for the supplementary uplink (SUL) carrier
Why this matters
RA-RNTI is what makes it possible for the gNB to schedule Msg2/MsgB before the UE has any assigned identity at all — the "identity" being used is really just a fingerprint of when and where the UE showed up, not who it is. Contention resolution (Msg4/MsgB payload matching) is the step that later confirms who actually showed up.
In 2-step RA, MsgB is addressed similarly, using an RA-RNTI-derived identity computed from the MsgA PRACH occasion in the same way.
RACH Information Elements¶
Unlike LTE, which signals PRACH parameters through a separate PRACH-Config IE alongside RACH-ConfigCommon, NR folds everything — preamble pool, power ramping, response window, and the PRACH time/frequency resource itself — into a single nested pair of IEs: RACH-ConfigCommon (cell-wide, broadcast in SIB1) wrapping RACH-ConfigGeneric (the physical-layer PRACH resource and timing/power parameters). There's no standalone PRACH-Config IE in NR the way there is in TS 38.331.8
QXDM Tip
In QXDM/QCAT, the decoded RACH-ConfigCommon values (preamble pool size, prach-ConfigurationIndex, power ramping step, RAR window) show up inside the decoded SIB1 RRC OTA message. On the MAC/PHY side, look for the RACH attempt/trigger log packets to see the actual preamble index, RA-RNTI, and RAR outcome for each attempt — cross-referencing the two lets you confirm the UE is using the resource the cell actually broadcast.
RACH Message Catalog¶
IE |
Purpose |
|---|---|
RACH-ConfigCommon |
The IE RACH-ConfigCommon is used to specify the cell specific random-access parameters. |
RACH-ConfigCommonTwoStepRA |
The IE RACH-ConfigCommonTwoStepRA is used to specify cell specific 2-step random-access type parameters. |
RACH-ConfigDedicated |
The IE RACH-ConfigDedicated is used to specify the dedicated random access parameters. |
RACH-ConfigGenericTwoStepRA |
The IE RACH-ConfigGenericTwoStepRA is used to specify the 2-step random access type parameters. |
RACH-ConfigGeneric |
The IE RACH-ConfigGeneric is used to specify the random-access parameters both for regular random access as well as for beam failure recovery. |
Table 3. RACH Message Catalog
RACH Message ASN.1 Examples¶
RACH-ConfigCommon
RACH-ConfigCommon ::= SEQUENCE {
rach-ConfigGeneric RACH-ConfigGeneric,
totalNumberOfRA-Preambles INTEGER (1..63) OPTIONAL, -- Need S
ssb-perRACH-OccasionAndCB-PreamblesPerSSB CHOICE {
oneEighth ENUMERATED {n4,n8,n12,n16,n20,n24,n28,n32,n36,n40,n44,n48,n52,n56,n60,n64},
oneFourth ENUMERATED {n4,n8,n12,n16,n20,n24,n28,n32,n36,n40,n44,n48,n52,n56,n60,n64},
oneHalf ENUMERATED {n4,n8,n12,n16,n20,n24,n28,n32,n36,n40,n44,n48,n52,n56,n60,n64},
one ENUMERATED {n4,n8,n12,n16,n20,n24,n28,n32,n36,n40,n44,n48,n52,n56,n60,n64},
two ENUMERATED {n4,n8,n12,n16,n20,n24,n28,n32},
four INTEGER (1..16),
eight INTEGER (1..8),
sixteen INTEGER (1..4)
} OPTIONAL, -- Need M
groupBconfigured SEQUENCE {
ra-Msg3SizeGroupA ENUMERATED {b56, b144, b208, b256, b282, b480, b640,
b800, b1000, b72, spare6, spare5,spare4, spare3, spare2, spare1},
messagePowerOffsetGroupB ENUMERATED { minusinfinity, dB0, dB5, dB8, dB10, dB12, dB15, dB18},
numberOfRA-PreamblesGroupA INTEGER (1..64)
} OPTIONAL, -- Need R
ra-ContentionResolutionTimer ENUMERATED { sf8, sf16, sf24, sf32, sf40, sf48, sf56, sf64},
rsrp-ThresholdSSB RSRP-Range OPTIONAL, -- Need R
rsrp-ThresholdSSB-SUL RSRP-Range OPTIONAL, -- Cond SUL
prach-RootSequenceIndex CHOICE {
l839 INTEGER (0..837),
l139 INTEGER (0..137)
},
msg1-SubcarrierSpacing SubcarrierSpacing OPTIONAL, -- Cond L139
restrictedSetConfig ENUMERATED {unrestrictedSet, restrictedSetTypeA, restrictedSetTypeB},
msg3-transformPrecoder ENUMERATED {enabled} OPTIONAL, -- Need R
...,
[[
ra-PrioritizationForAccessIdentity-r16 SEQUENCE {
ra-Prioritization-r16 RA-Prioritization,
ra-PrioritizationForAI-r16 BIT STRING (SIZE (2))
} OPTIONAL, -- Cond InitialBWP-Only
prach-RootSequenceIndex-r16 CHOICE {
l571 INTEGER (0..569),
l1151 INTEGER (0..1149)
} OPTIONAL -- Need R
]],
[[
ra-PrioritizationForSlicing-r17 RA-PrioritizationForSlicing-r17 OPTIONAL, -- Cond InitialBWP-Only
featureCombinationPreamblesList-r17 SEQUENCE (SIZE(1..maxFeatureCombPreamblesPerRACHResource-r17)) OF FeatureCombinationPreambles-r17 OPTIONAL -- Cond AdditionalRACH
]]
}
RACH-ConfigCommonTwoStepRA
RACH-ConfigCommonTwoStepRA-r16 ::= SEQUENCE {
rach-ConfigGenericTwoStepRA-r16 RACH-ConfigGenericTwoStepRA-r16,
msgA-TotalNumberOfRA-Preambles-r16 INTEGER (1..63) OPTIONAL, -- Need S
msgA-SSB-PerRACH-OccasionAndCB-PreamblesPerSSB-r16 CHOICE {
oneEighth ENUMERATED {n4,n8,n12,n16,n20,n24,n28,n32,n36,n40,n44,n48,n52,n56,n60,n64},
oneFourth ENUMERATED {n4,n8,n12,n16,n20,n24,n28,n32,n36,n40,n44,n48,n52,n56,n60,n64},
oneHalf ENUMERATED {n4,n8,n12,n16,n20,n24,n28,n32,n36,n40,n44,n48,n52,n56,n60,n64},
one ENUMERATED {n4,n8,n12,n16,n20,n24,n28,n32,n36,n40,n44,n48,n52,n56,n60,n64},
two ENUMERATED {n4,n8,n12,n16,n20,n24,n28,n32},
four INTEGER (1..16),
eight INTEGER (1..8),
sixteen INTEGER (1..4)
} OPTIONAL, -- Cond 2StepOnly
msgA-CB-PreamblesPerSSB-PerSharedRO-r16 INTEGER (1..60) OPTIONAL, -- Cond SharedRO
msgA-SSB-SharedRO-MaskIndex-r16 INTEGER (1..15) OPTIONAL, -- Need S
groupB-ConfiguredTwoStepRA-r16 GroupB-ConfiguredTwoStepRA-r16 OPTIONAL, -- Need S
msgA-PRACH-RootSequenceIndex-r16 CHOICE {
l839 INTEGER (0..837),
l139 INTEGER (0..137),
l571 INTEGER (0..569),
l1151 INTEGER (0..1149)
} OPTIONAL, -- Cond 2StepOnly
msgA-TransMax-r16 ENUMERATED {n1, n2, n4, n6, n8, n10, n20, n50, n100, n200} OPTIONAL, -- Need R
msgA-RSRP-Threshold-r16 RSRP-Range OPTIONAL, -- Cond 2Step4Step
msgA-RSRP-ThresholdSSB-r16 RSRP-Range OPTIONAL, -- Need R
msgA-SubcarrierSpacing-r16 SubcarrierSpacing OPTIONAL, -- Cond 2StepOnlyL139
msgA-RestrictedSetConfig-r16 ENUMERATED {unrestrictedSet, restrictedSetTypeA,
restrictedSetTypeB} OPTIONAL, -- Cond 2StepOnly
ra-PrioritizationForAccessIdentityTwoStep-r16 SEQUENCE {
ra-Prioritization-r16 RA-Prioritization,
ra-PrioritizationForAI-r16 BIT STRING (SIZE (2))
} OPTIONAL, -- Cond InitialBWP-Only
ra-ContentionResolutionTimer-r16 ENUMERATED {sf8, sf16, sf24, sf32, sf40, sf48, sf56, sf64} OPTIONAL, -- Cond 2StepOnly
...,
[[
ra-PrioritizationForSlicingTwoStep-r17 RA-PrioritizationForSlicing-r17 OPTIONAL, -- Cond InitialBWP-Only
featureCombinationPreamblesList-r17 SEQUENCE (SIZE(1..maxFeatureCombPreamblesPerRACHResource-r17)) OF FeatureCombinationPreambles-r17 OPTIONAL -- Cond AdditionalRACH
]]
}
GroupB-ConfiguredTwoStepRA-r16 ::= SEQUENCE {
ra-MsgA-SizeGroupA-r16 ENUMERATED {b56, b144, b208, b256, b282, b480, b640, b800,
b1000, b72, spare6, spare5, spare4, spare3, spare2, spare1},
messagePowerOffsetGroupB-r16 ENUMERATED {minusinfinity, dB0, dB5, dB8, dB10, dB12, dB15, dB18},
numberOfRA-PreamblesGroupA-r16 INTEGER (1..64)
}
RACH-ConfigDedicated
RACH-ConfigDedicated ::= SEQUENCE {
cfra CFRA OPTIONAL, -- Need S
ra-Prioritization RA-Prioritization OPTIONAL, -- Need N
...,
[[
ra-PrioritizationTwoStep-r16 RA-Prioritization OPTIONAL, -- Need N
cfra-TwoStep-r16 CFRA-TwoStep-r16 OPTIONAL -- Need S
]]
}
CFRA ::= SEQUENCE {
occasions SEQUENCE {
rach-ConfigGeneric RACH-ConfigGeneric,
ssb-perRACH-Occasion ENUMERATED {oneEighth, oneFourth, oneHalf, one, two, four, eight, sixteen}
OPTIONAL -- Cond Mandatory
} OPTIONAL, -- Need S
resources CHOICE {
ssb SEQUENCE {
ssb-ResourceList SEQUENCE (SIZE(1..maxRA-SSB-Resources)) OF CFRA-SSB-Resource,
ra-ssb-OccasionMaskIndex INTEGER (0..15)
},
csirs SEQUENCE {
csirs-ResourceList SEQUENCE (SIZE(1..maxRA-CSIRS-Resources)) OF CFRA-CSIRS-Resource,
rsrp-ThresholdCSI-RS RSRP-Range
}
},
...,
[[
totalNumberOfRA-Preambles INTEGER (1..63) OPTIONAL -- Cond Occasions
]]
}
CFRA-TwoStep-r16 ::= SEQUENCE {
occasionsTwoStepRA-r16 SEQUENCE {
rach-ConfigGenericTwoStepRA-r16 RACH-ConfigGenericTwoStepRA-r16,
ssb-PerRACH-OccasionTwoStepRA-r16 ENUMERATED {oneEighth, oneFourth, oneHalf, one,
two, four, eight, sixteen}
} OPTIONAL, -- Need S
msgA-CFRA-PUSCH-r16 MsgA-PUSCH-Resource-r16,
msgA-TransMax-r16 ENUMERATED {n1, n2, n4, n6, n8, n10, n20, n50, n100, n200} OPTIONAL, -- Need S
resourcesTwoStep-r16 SEQUENCE {
ssb-ResourceList SEQUENCE (SIZE(1..maxRA-SSB-Resources)) OF CFRA-SSB-Resource,
ra-ssb-OccasionMaskIndex INTEGER (0..15)
},
...
}
CFRA-SSB-Resource ::= SEQUENCE {
ssb SSB-Index,
ra-PreambleIndex INTEGER (0..63),
...,
[[
msgA-PUSCH-Resource-Index-r16 INTEGER (0..3071) OPTIONAL -- Cond 2StepCFRA
]]
}
CFRA-CSIRS-Resource ::= SEQUENCE {
csi-RS CSI-RS-Index,
ra-OccasionList SEQUENCE (SIZE(1..maxRA-OccasionsPerCSIRS)) OF INTEGER (0..maxRA-Occasions-1),
ra-PreambleIndex INTEGER (0..63),
...
}
RACH-ConfigGeneric
RACH-ConfigGeneric ::= SEQUENCE {
prach-ConfigurationIndex INTEGER (0..255),
msg1-FDM ENUMERATED {one, two, four, eight},
msg1-FrequencyStart INTEGER (0..maxNrofPhysicalResourceBlocks-1),
zeroCorrelationZoneConfig INTEGER(0..15),
preambleReceivedTargetPower INTEGER (-202..-60),
preambleTransMax ENUMERATED {n3, n4, n5, n6, n7, n8, n10, n20, n50, n100, n200},
powerRampingStep ENUMERATED {dB0, dB2, dB4, dB6},
ra-ResponseWindow ENUMERATED {sl1, sl2, sl4, sl8, sl10, sl20, sl40, sl80},
...,
[[
prach-ConfigurationPeriodScaling-IAB-r16 ENUMERATED {scf1,scf2,scf4,scf8,scf16,scf32,scf64} OPTIONAL, -- Need R
prach-ConfigurationFrameOffset-IAB-r16 INTEGER (0..63) OPTIONAL, -- Need R
prach-ConfigurationSOffset-IAB-r16 INTEGER (0..39) OPTIONAL, -- Need R
ra-ResponseWindow-v1610 ENUMERATED { sl60, sl160} OPTIONAL, -- Need R
prach-ConfigurationIndex-v1610 INTEGER (256..262) OPTIONAL -- Need R
]],
[[
ra-ResponseWindow-v1700 ENUMERATED {sl240, sl320, sl640, sl960, sl1280, sl1920, sl2560} OPTIONAL -- Need R
]]
}
RACH-ConfigGenericTwoStepRA
RACH-ConfigGenericTwoStepRA-r16 ::= SEQUENCE {
msgA-PRACH-ConfigurationIndex-r16 INTEGER (0..262) OPTIONAL, -- Cond 2StepOnly
msgA-RO-FDM-r16 ENUMERATED {one, two, four, eight} OPTIONAL, -- Cond 2StepOnly
msgA-RO-FrequencyStart-r16 INTEGER (0..maxNrofPhysicalResourceBlocks-1) OPTIONAL, -- Cond 2StepOnly
msgA-ZeroCorrelationZoneConfig-r16 INTEGER (0..15) OPTIONAL, -- Cond 2StepOnly
msgA-PreamblePowerRampingStep-r16 ENUMERATED {dB0, dB2, dB4, dB6} OPTIONAL, -- Cond 2StepOnlyNoCFRA
msgA-PreambleReceivedTargetPower-r16 INTEGER (-202..-60) OPTIONAL, -- Cond 2StepOnlyNoCFRA
msgB-ResponseWindow-r16 ENUMERATED {sl1, sl2, sl4, sl8, sl10, sl20, sl40, sl80, sl160, sl320}
OPTIONAL, -- Cond NoCFRA
preambleTransMax-r16 ENUMERATED {n3, n4, n5, n6, n7, n8, n10, n20, n50, n100, n200} OPTIONAL, -- Cond 2StepOnlyNoCFRA
...,
[[
msgB-ResponseWindow-v1700 ENUMERATED {sl240, sl640, sl960, sl1280, sl1920, sl2560} OPTIONAL -- Cond NoCFRA2
]]
}
Useful Resources¶
- 3GPP TS 38.321, Clause 5.1 — MAC Random Access procedure, RA-RNTI derivation
- 3GPP TS 38.211, Clause 5.3.2 / 6.3.3 — PRACH preamble generation, formats, \(N_{cs}\) tables
- 3GPP TS 38.213, Clause 8 — Random Access Response reception, PDCCH monitoring
- 3GPP TS 38.331 — RRC:
RACH-ConfigCommon,RACH-ConfigGeneric,RACH-ConfigDedicated,RACH-ConfigCommonTwoStepRA,RACH-ConfigGenericTwoStepRA - ShareTechnote — 5G/NR: RACH
- ShareTechnote — FAQ: PRACH Preamble Format
-
Ryu, J. (n.d.). 5G/NR – RACH. ShareTechnote. https://www.sharetechnote.com/html/5G/5G_RACH.html ↩
-
Mohiuddin, S. (n.d.). NR RACH process [LinkedIn post]. LinkedIn. https://www.linkedin.com/pulse/nr-rach-process-syed-mohiuddin ↩
-
KP. (2019, September). 5G NR: Random access procedure (Blog post). How LTE Stuff Works. http://howltestuffworks.blogspot.com/2019/09/5g-nr-random-access-procedure.html ↩
-
Singh, A. K. (2024, February). 4-step RA and 2-step RA in 5G-NR (LinkedIn post). LinkedIn. https://www.linkedin.com/pulse/4-step-ra-2-step-5g-nr-ajay-kumar-singh ↩↩
-
KP. (2020, April). 5G NR: 2-step random access procedure (Release-16) (Blog post). How LTE Stuff Works. http://howltestuffworks.blogspot.com/2020/04/5g-nr-2-step-random-access-procedure.html ↩↩
-
Chu, D. C. (1972). Polyphase codes with good periodic correlation properties. IEEE Transactions on Information Theory, 18(4), 531–532. https://doi.org/10.1109/TIT.1972.1054840 ↩
-
3GPP. (n.d.). NR; Physical channels and modulation (Technical Specification TS 38.211). 3rd Generation Partnership Project. https://portal.3gpp.org/desktopmodules/Specifications/SpecificationDetails.aspx?specificationId=3213 ↩↩
-
3GPP. (n.d.). NR; Radio Resource Control (RRC) protocol specification (Technical Specification TS 38.331). 3rd Generation Partnership Project. https://portal.3gpp.org/desktopmodules/Specifications/SpecificationDetails.aspx?specificationId=3197 ↩


