>
Home5G NRPHY โ€” Physical LayerPUCCH & UCI
๐Ÿ“ถ PHY โ€” Physical LayerIntermediate

PUCCH Formats & UCI in 5G NR

Uplink Control Information (HARQ-ACK, SR, CSI) and the five PUCCH formats that carry it.

📚 3GPP-basedTS 38.211TS 38.213

The uplink is not only for data. Your phone constantly has small but critical things to say back to the network: "I got that packet" (or did not), "I have data waiting, please schedule me," "here is what the channel looks like right now," and occasionally "my beam just broke, help." Bundle those messages together and you have Uplink Control Information (UCI). When there is no uplink data channel to ride on, UCI travels on the Physical Uplink Control Channel (PUCCH).

Introduction

PUCCH is the dedicated physical channel that carries Uplink Control Information whenever the UE has no PUSCH to piggyback on. Its content is defined in TS 38.212, its physical structure and sequences in TS 38.211, and the resource-selection and timing procedures in TS 38.213. It is small in payload but enormous in importance: without it, HARQ cannot close its loop, the scheduler cannot know a UE wants resources, and link adaptation is blind.

PUCCH is active from almost the first moment of connected life. During initial access the UE uses a common PUCCH resource (from a table indexed by pucch-ResourceCommon in SIB1) to acknowledge Msg4 before any dedicated resources exist; from then on, dedicated resources configured in PUCCH-Config carry HARQ-ACK, scheduling requests, periodic/semi-persistent CSI, and beam-failure recovery requests throughout the connection.

This page covers what UCI contains, the five PUCCH formats and how one is chosen, short versus long PUCCH, PUCCH resource sets, the two HARQ-ACK codebook types and the Downlink Assignment Index, scheduling requests, when UCI piggybacks on PUSCH, and how PUCCH can live on a secondary cell.

Why UCI and PUCCH are needed

๐Ÿ’ก

In plain words: imagine a lecturer (the gNB) sending material to a room of students (UEs). The lecture only works if students can quietly signal back — a nod that they understood ("ACK"), a raised hand to ask for the floor ("scheduling request"), a note about how clearly they can hear ("CSI"), and a wave if their view is suddenly blocked ("beam-failure recovery"). PUCCH is the narrow, reserved side-channel through which those signals flow when the student is not already speaking. Without it the lecturer is talking into a void, unable to tell who understood or who needs help.

Concretely, four jobs make PUCCH indispensable. HARQ needs acknowledgements to decide whether to retransmit; the scheduler needs a scheduling request to learn a UE has data but no grant; link adaptation needs CSI to choose modulation, coding and precoding; and a UE whose serving beam has failed needs a link-recovery request to point the network at a usable beam. All four are tiny compared to data, so they get a purpose-built channel optimised for low overhead, multiplexing many UEs, and reaching the cell edge — rather than borrowing the heavyweight PUSCH machinery.

What UCI carries

UCI is the umbrella term for the control feedback a UE sends uplink. Any PUCCH transmission carries one of these information types, or a combination that has been multiplexed together into a single payload.

What

Uplink Control Information: HARQ-ACK (acknowledgements), SR (Scheduling Request), CSI (Channel State Information — CQI, PMI, RI, LI, CRI), and the Link Recovery Request (beam-failure recovery). UCI content is defined in TS 38.212; its physical carriage in TS 38.211 and its procedures in TS 38.213.

Why

HARQ needs acknowledgements to work, the scheduler needs to know a UE wants resources, link adaptation needs channel feedback, and a UE whose serving beam has failed needs a way to point the network at a good beam. Without UCI the downlink would be flying blind.

How

UCI rides on the PUCCH when the UE has no PUSCH in that slot. If a PUSCH is present and overlaps in time, the UCI is instead multiplexed onto the PUSCH — "UCI on PUSCH."

UCI componentCarriesTypical sizePurpose
HARQ-ACKACK / NACK bits, one per transport block (or per code-block group)1 bit → tens of bitsConfirm whether downlink transport blocks decoded correctly
SR (Scheduling Request)Positive / negative request, per SR resource1 bitAsk the gNB for an uplink grant when the UE has data to send
CSICQI, PMI, RI, LI, CRIa few → many bitsReport channel quality, preferred precoder, rank, layer indicator, best CSI-RS resource
Link Recovery RequestBeam-failure indication + new candidate beam1 bit (dedicated PUCCH)Trigger beam-failure recovery and point the gNB at a usable beam

CSI itself splits into two parts. CSI part 1 has a fixed size the gNB can always decode (it includes RI/CRI and a wideband CQI), and it tells the receiver how big CSI part 2 is. That two-part structure matters later, because when UCI is squeezed for space, part 2 is the first thing to be dropped.

🎯

One-line intuition: UCI is the phone's "back-channel" — acknowledgements, requests for resources, a channel report, and a beam-recovery flare — and PUCCH is the lane it uses when there is no data channel to share.

The five PUCCH formats

NR defines exactly five PUCCH formats, spanning tiny 1-bit acknowledgements up to large multi-bit CSI reports. Two axes separate them: payload size (up to 2 bits, or more than 2 bits) and duration (short = 1–2 symbols, long = 4–14 symbols). A third axis — whether several UEs can share one time/frequency resource — distinguishes formats that support multiplexing (0, 1, 4) from those that do not (2, 3).

FormatSymbolsPayloadWaveform / structureUE multiplexingKey trait
Format 01–2 (short)≤ 2 bitsSequence selection; no DMRSYes — cyclic shiftsThe chosen base sequence is the information; nothing is "decoded"
Format 14–14 (long)≤ 2 bitsBPSK/QPSK data + DMRS on alternate symbolsYes — OCC + cyclic shiftMany UEs share one resource via orthogonal cover codes
Format 21–2 (short)> 2 bitsCP-OFDM, QPSK, DMRS on 1-in-3 REsNoShort, moderate payload; fast feedback
Format 34–14 (long)> 2 bits (largest)DFT-s-OFDM (single carrier), QPSK/π-2-BPSKNoBiggest payload and best coverage for large UCI
Format 44–14 (long)> 2 bits (medium)DFT-s-OFDM with pre-DFT OCCYes — pre-DFT OCCLike F3 but trades payload for UE multiplexing over 1 RB

Format 0 is unusual: it does not send coded bits at all. The UE picks a cyclic shift of a length-12 base sequence (a low-PAPR Zadoff–Chu-like sequence occupying one RB), and which shift it transmits encodes the 1 or 2 UCI bits — the gNB detects energy on the expected sequence. Because there is nothing to demodulate, Format 0 needs no DMRS and can occupy just a single symbol, making it the fastest way to return an ACK.

Format 1 spreads a 1–2 bit payload over 4–14 symbols, alternating data and DMRS symbols, and applies an orthogonal cover code (OCC) across the data symbols. Combined with cyclic shifts, this lets a large group of UEs occupy the very same physical resource block, which is why Format 1 is the workhorse for periodic ACK/SR from many users.

Format 2 is the short, higher-payload format: CP-OFDM with QPSK modulation and DMRS on one of every three subcarriers (REs #1, 4, 7, 10 in each RB). It is the only long-payload format that is also short, so it is chosen when you need > 2 bits back quickly. It cannot multiplex UEs.

Format 3 uses DFT-s-OFDM — the same single-carrier waveform as PUSCH — giving low peak-to-average power ratio and therefore the best uplink coverage. It scales in both frequency (multiple RBs) and time (up to 14 symbols), so it carries the largest UCI payloads. It does not multiplex UEs.

Format 4 also uses DFT-s-OFDM but confines itself to a single RB and applies a pre-DFT OCC (spreading factor 2 or 4), so a handful of UEs can share that one RB. You give up peak payload compared with Format 3 in exchange for that multiplexing capacity.

๐Ÿ”€

LTE ↔ NR: LTE PUCCH was tied to fixed slot-long formats (1/1a/1b for ACK/SR, 2/2a/2b for CQI, 3/4/5 added later) that always occupied a whole subframe at the band edges. NR's five formats add the short (1–2 symbol) formats 0 and 2 for same-slot HARQ, make placement flexible anywhere in the slot, and let RRC size long formats from 4 to 14 symbols — trading latency against coverage instead of fixing it.

📄

Spec anchor: the PUCCH formats, sequences and DMRS are defined in TS 38.211; UCI coding in TS 38.212; format/resource selection and procedures in TS 38.213.

Short vs long PUCCH

Grouping the formats by duration gives the two families the specifications constantly refer to. Short PUCCH (Formats 0 and 2) occupies 1 or 2 OFDM symbols and is typically placed at the end of a slot, so a UE can acknowledge a downlink transmission within the same slot — the foundation of low-latency HARQ. Long PUCCH (Formats 1, 3 and 4) spans 4 to 14 symbols; spreading the same information over more time buys energy and coverage, which is what a cell-edge UE needs.

PropertyShort PUCCH (F0, F2)Long PUCCH (F1, F3, F4)
Duration1–2 symbols4–14 symbols
LatencyLowest — same-slot ACK possibleHigher — fills much of a slot
CoverageLimited (few symbols of energy)Best (energy accumulated over many symbols)
≤ 2 bit formatFormat 0Format 1
> 2 bit formatFormat 2Format 3 / Format 4
Frequency hoppingIntra-slot (2-symbol case)Intra-slot or inter-slot

Long PUCCH can apply frequency hopping — transmitting the first half of the symbols in one part of the band and the second half in another — to grab frequency diversity on top of the time-domain energy gain. Short 2-symbol PUCCH can also hop within the slot. This is a large part of why long formats reach the cell edge that short formats cannot.

The exact slot in which the HARQ-ACK PUCCH lands is not free-floating: the downlink DCI (DCI format 1_0/1_1) carries a PDSCH-to-HARQ feedback timing field K1 that names how many slots after the PDSCH the ACK is due, drawn from the RRC list dl-DataToUL-ACK. That is how the gNB and UE agree on when to listen for the acknowledgement.

PUCCH resource sets and format selection

A UE does not pick a format from thin air; it picks a PUCCH resource, and the resource embeds a format. Resources are grouped into up to four PUCCH resource sets, and the set is chosen purely by the size of the UCI payload the UE has to send. Within the chosen set, a field in the scheduling DCI (the PUCCH resource indicator, PRI — a 3-bit field, so up to 8 resources) selects one of the resources; for the ACK case, the exact resource also depends on the CCE index of the PDCCH that scheduled the PDSCH, which spreads different UEs onto different resources automatically.

UCI payload size? (number of bits) Set 0 ≤ 2 bits F0 or F1 Set 1 3 − N2 bits F2 / F3 / F4 Set 2 up to N3 bits F2 / F3 / F4 Set 3 largest payload F2 / F3 / F4 PUCCH resource indicator (PRI) in DCI picks one resource within the chosen set
Figure 1. The UCI payload size selects one of up to four PUCCH resource sets; the PRI field in DCI then selects a specific resource (and its format) inside that set.

The first set (set 0) always holds ≤ 2-bit resources and therefore only Format 0 or Format 1. The remaining sets hold the higher-payload formats, and RRC configures the bit-count boundaries (maxPayloadMinus1) that decide where one set ends and the next begins. The UE computes the total number of UCI bits it must send in the slot, walks the sets from smallest to largest, and uses the first set whose maximum payload covers it. That is precisely how "how many bits" turns into "which format."

UCI to sendWhere it is carried
Only HARQ-ACK, ≤ 2 bits, no PUSCHPUCCH resource set 0 → Format 0 or 1
Only SR (positive), no PUSCHDedicated SR PUCCH resource (Format 0 or 1)
HARQ-ACK > 2 bits, or ACK + CSI, no PUSCHPUCCH resource set 1/2/3 → Format 2, 3 or 4
Periodic / semi-persistent CSI, no PUSCHPUCCH Format 2, 3 or 4 on a configured resource
Any UCI overlapping a scheduled PUSCHMultiplexed onto PUSCH (UCI on PUSCH)
Beam-failure recovery requestDedicated PUCCH resource for link recovery

Before the UE has a dedicated configuration — during initial access — it uses a common PUCCH resource chosen from a standardised 16-row table via the pucch-ResourceCommon index (0…15) broadcast in SIB1PUCCH-ConfigCommon. Each row fixes a Format (0 or 1), a starting symbol, a number of symbols and a PRB offset. That gives the UE a way to send the Msg4 HARQ-ACK before any dedicated PUCCH resources exist.

HARQ-ACK codebooks and the DAI

When a UE must acknowledge several downlink transmissions in one PUCCH, the ACK bits are packed into a HARQ-ACK codebook. The codebook is simply the ordered set of ACK/NACK bits and the agreed rule for how many there are and in what order — the gNB must build the identical structure to interpret the report. NR defines two ways to construct it, chosen by pdsch-HARQ-ACK-Codebook = semiStatic or dynamic.

Type-1 — semi-staticType-2 — dynamic
SizeFixed by RRC configuration (all possible occasions)Varies with what was actually scheduled
Driven byConfigured set of candidate PDSCH occasions across the bundling windowThe Downlink Assignment Index (DAI) in the DCI
OverheadHigher — reports a bit for every candidate occasion, scheduled or notLower — reports only for what was scheduled
RobustnessVery robust — a missed DCI just costs one NACK, size never shiftsRelies on correct DAI tracking to detect and size around missed DCIs
Best forPredictable traffic, TDD with a fixed DL/UL patternBursty scheduling, carrier aggregation with variable activity

The semi-static (Type-1) codebook is built from the RRC-configured possibilities: for every PDSCH occasion that could map to this PUCCH (the candidate set spanned by the dl-DataToUL-ACK K1 values and the TDRA table), the UE reserves an ACK bit, whether or not a PDSCH was actually sent. The size never changes slot to slot, so the gNB and UE can never disagree about how many bits are in the report. The price is wasted bits on occasions that carried nothing (reported as NACK).

The dynamic (Type-2) codebook sizes itself to the actual scheduling using the DAI carried in DL DCI (formats 1_0/1_1). The counter DAI (C-DAI) — a 2-bit field — numbers each scheduled assignment in order across cells and monitoring occasions, and the total DAI (T-DAI), present with carrier aggregation, tells the UE the running total of assignments up to that point. By reading these, a UE that misses one DCI can still tell that a gap exists and keep the rest of the codebook aligned — it will not silently shift every subsequent ACK bit into the wrong position.

🎯

Why the DAI exists: without a counter, one missed DL grant would desynchronise the whole codebook — the UE would report N bits while the gNB expects N+1, and every acknowledgement after the gap would be misread. The counter/total DAI let the UE reconstruct the intended size and detect the miss.

Scheduling Request, PUSCH multiplexing, and PUCCH on an SCell

The Scheduling Request (SR) is the UE's way of asking for an uplink grant when it has data to send but no PUSCH resource. An SR is essentially a 1-bit "please schedule me," sent on a dedicated PUCCH resource (Format 0 or 1). Its resources are set up by schedulingRequestResourceConfig, which binds an SR configuration to a PUCCH resource and gives it a periodicity and offset — the recurring occasions on which the UE may transmit an SR. Different logical channels can be tied to different SR configurations (via schedulingRequestID), so a latency-sensitive bearer can have far more frequent SR occasions than a background one. If the UE has data and no grant, it sends SR on the next configured occasion; if it has no valid SR resource, it falls back to the random-access procedure.

Note: SR occasions are periodic. A shorter SR period means faster access at the cost of more uplink control overhead, and it counts against the UE's SR prohibit/counter limits (sr-ProhibitTimer, sr-TransMax) before it must resort to RACH.

PUCCH-to-PUSCH multiplexing. The default carrier for UCI is PUCCH, but an uplink slot may also contain a PUSCH. If a scheduled PUSCH and a would-be PUCCH overlap in time (and satisfy the timeline conditions), the UE does not transmit both. Instead the UCI is multiplexed onto the PUSCH — "UCI on PUSCH," commonly called piggybacking. HARQ-ACK is mapped to resource elements right around the PUSCH DMRS (so it is well protected), and CSI is mapped to the remaining data REs. The single-carrier property and the power budget are preserved. A key detail: when there is not enough room, the UE drops in a defined order — CSI part 2 is sacrificed first, then CSI part 1, while HARQ-ACK is protected. The number of REs each UCI type consumes is scaled by the RRC betaOffset values, which trade UCI reliability against how much data the PUSCH loses.

🧭

Rule of thumb: no PUSCH overlapping in the slot → UCI on PUCCH. PUSCH present and overlapping → UCI piggybacks on PUSCH, HARQ-ACK protected first, CSI part 2 dropped first if space is short.

PUCCH on a PUCCH-SCell. In carrier aggregation, all PUCCH normally lives on the primary cell (PCell), which can become a bottleneck when many secondary cells generate large HARQ-ACK feedback. NR therefore allows a PUCCH secondary cell (PUCCH-SCell): one designated SCell is configured with its own PUCCH resources, and the cells of the carrier-aggregation set are split into two PUCCH groups. The primary PUCCH group reports its feedback on the PCell; the secondary PUCCH group reports on the PUCCH-SCell. This spreads the uplink control load across two carriers and keeps the PCell from saturating when a UE aggregates many downlink cells.

Summary

PUCCH is the reserved uplink lane for control when there is no PUSCH to share. It carries four kinds of UCI — HARQ-ACK, SR, CSI and the link-recovery request — across five formats selected on two axes: payload (≤2 bits vs >2 bits) and duration (short 1–2 symbols vs long 4–14). Format 0 is sequence-selection with no DMRS for the fastest ACK; Format 1 multiplexes many low-payload UEs with OCC; Format 2 is short and higher-payload; Formats 3 and 4 use DFT-s-OFDM for coverage, with 4 trading payload for multiplexing. The UE turns "how many bits" into "which format" by walking up to four resource sets by payload size and letting the DCI PRI pick a resource. Multi-transmission acknowledgements are packed into a Type-1 semi-static or Type-2 dynamic HARQ-ACK codebook, the latter kept aligned by the counter/total DAI. When PUSCH overlaps, UCI piggybacks on it (HARQ-ACK protected, CSI part 2 dropped first); and under carrier aggregation a PUCCH-SCell can offload control from the PCell.

Quick Q&A

Q&A Quick Q&A

Q. Which PUCCH format carries a 1-bit ACK in a single symbol, and how?

A. Format 0 — short (1–2 symbols), ≤ 2 bits. It carries no DMRS and no coded bits; the UE selects a cyclic shift of a base sequence, and which shift it sends is the information.

Q&A Quick Q&A

Q. You need to send more than 2 UCI bits over many symbols, with the best coverage. Which format, and why?

A. Format 3 — long (4–14 symbols), largest payload, and it uses DFT-s-OFDM for low PAPR and strong cell-edge coverage. Use Format 4 instead if several UEs must share a single RB via pre-DFT OCC.

Q&A Quick Q&A

Q. How does the UE decide which PUCCH format to use?

A. By UCI payload size. The total number of UCI bits selects one of up to four PUCCH resource sets; set 0 holds the ≤ 2-bit resources (Format 0/1) and the higher sets hold Format 2/3/4. The DCI PRI field then picks a specific resource within the set.

Q&A Quick Q&A

Q. Type-1 vs Type-2 HARQ-ACK codebook, and where does the DAI fit?

A. Type-1 is semi-static — a fixed size set by RRC over all candidate occasions, needing no DAI. Type-2 is dynamic — its size follows what was actually scheduled, tracked by the counter and total DAI in the DCI so a missed grant can be detected instead of desynchronising the codebook.

Q&A Quick Q&A

Q. When UCI is multiplexed onto PUSCH and there is not enough room, what gets dropped first?

A. CSI part 2 is dropped first, then CSI part 1; HARQ-ACK is protected and mapped near the PUSCH DMRS. The betaOffset values scale how many REs each UCI type uses.

Q&A Quick Q&A

Q. Why would a UE send PUCCH on an SCell rather than the PCell?

A. To balance uplink control load. In carrier aggregation the cells are split into two PUCCH groups; the secondary group reports HARQ-ACK on a configured PUCCH-SCell, so the PCell does not saturate when many downlink cells are aggregated.

Where this leads

The PUCCH is where the uplink control loop closes. The HARQ-ACK it carries answers a grant from PDCCH & DCI and feeds the retransmission logic in HARQ; the CSI it reports drives Link Adaptation and is detailed in CSI Feedback. Follow those links to see how the network turns this back-channel into faster, more reliable data.

PDCCH & DCIHARQCSI Feedback