Scheduling & Data

HARQ —
The error correction safety net

Wireless channels are imperfect. Packets can be corrupted. HARQ — Hybrid Automatic Repeat reQuest — is 5G NR's retransmission mechanism. It combines ARQ (resend failed packets) with incremental redundancy (each retransmission sends different parity bits that the receiver combines to improve decoding probability). This section covers the full HARQ process with timing, RV selection, and chase combining.

TS 38.321 §5.3 TS 38.212 §5.4 TS 38.213 §9.1

Why HARQ exists

Without HARQ, a corrupted packet would require a full round trip to the application layer (TCP/IP retransmission) — potentially hundreds of milliseconds. HARQ operates at the MAC layer with a turnaround of 4–8 ms, orders of magnitude faster.

5G NR uses HARQ with Incremental Redundancy (IR): the transport block is encoded at a very low rate, producing far more coded bits than can be sent in one transmission. Each retransmission sends a different selection of these coded bits using a different Redundancy Version (RV). The receiver combines all received versions to improve decoding — this is called soft combining.

For each HARQ process, the UE shall maintain a HARQ buffer to store the soft channel bits received for the HARQ process. When a new transmission is received (NDI toggled), the UE shall flush the HARQ buffer. For a retransmission (NDI unchanged), the UE shall combine the soft bits with those in the HARQ buffer.
3GPP TS 38.321, Section 5.3.2
16
DL HARQ processes
Allows pipelining — multiple TBs in flight simultaneously
4
Redundancy versions
RV 0, 1, 2, 3 — each selects different coded bits
4 ms
Min HARQ RTT
DCI → PDSCH → ACK/NACK → retransmit
NDI
New Data Indicator
Toggled for new TB, unchanged for retransmission

HARQ timing — the round trip

After the UE receives PDSCH in slot n, it must send an ACK or NACK on PUCCH. The DCI field PDSCH-to-HARQ timing (k1) tells the UE how many slots to wait. For our example k1=2: ACK/NACK sent 2 slots after PDSCH.

HARQ timing — DL HARQ round trip TS 38.213 §9.1.2

Redundancy versions and soft combining

The LDPC-encoded bits are arranged in a circular buffer. Each transmission starts reading from a different offset, selected by the RV. The standard transmission order is RV0 → RV2 → RV3 → RV1, cycling until either ACK is received or max retransmissions reached.

Circular buffer — RV positions and incremental redundancy TS 38.212 §5.4.2
HARQ retransmission example — decode failure on first attemptTS 38.321 §5.3
// Slot n: gNB sends PDSCH with HARQ process 3, RV=0, NDI=1
UE receives, CRC check → FAIL  (BLER ~10% at MCS 20)
UE stores soft bits in HARQ buffer[3]
UE sends: NACK on PUCCH, k1=2 slots after → slot n+2

// Slot n+4: gNB retransmits same TB, HARQ process 3, RV=2, NDI=1 (same)
// (NDI unchanged → UE knows this is retransmission)
UE receives RV2 → soft combines with stored RV0 bits
Combined LLR values: each bit's reliability improves
CRC check → PASS  (combining gain ≈ 3 dB effective SNR boost)
UE sends: ACK on PUCCH → slot n+6

// If still failing after 4 retransmissions:
→ RLC layer requests retransmission (RLC-AM ARQ)
→ Upper layer eventually times out → TCP retransmit

HARQ process pipelining

With 16 HARQ processes, the gNB can have 16 transport blocks in flight simultaneously — each in a different stage (first transmission, awaiting ACK, retransmitting). This keeps the channel fully utilised even when individual TBs are waiting for ACK feedback.

HARQ process pipelining — 16 processes in flight TS 38.321 §5.3

ACK/NACK — PUCCH formats

The HARQ feedback is sent on the PUCCH (Physical Uplink Control Channel). For a single HARQ bit (one codeword), PUCCH Format 0 is used — it's a 2-symbol sequence that the gNB detects by correlating against known sequences. No bits are modulated — the presence and position of the sequence encodes the ACK (1) or NACK (0).

For PUCCH format 0, the UE transmits a sequence r(m) defined as r(m) = e^(jαm) for the first OFDM symbol, where α = 2π·m_0/12 for ACK and α = 2π·(m_0+6)/12 for NACK, and m_0 is determined by the PUCCH resource.
3GPP TS 38.211, Section 6.3.2.3
HARQ — the complete feedback loop
Process 3          → first TX (RV=0) → NACK → retransmit (RV=2) → ACK
Soft combining     → ~3 dB effective SNR gain per retransmission
Pipelining         → 16 processes keep channel fully utilised
Feedback channel   → PUCCH Format 0 (1-bit ACK/NACK)
HARQ RTT          → minimum 4 ms (DCI → PDSCH → PUCCH → retransmit)