What a TCI state is
When the gNB transmits PDSCH or PDCCH, it uses a specific beam. The UE must know which beam so it can apply the corresponding receive beamforming. A TCI state links a reference signal (SSB or CSI-RS) to a channel — effectively saying "this channel uses the same spatial filter as this reference signal."
The UE measures the reference signal, learns the spatial channel for that beam direction, and applies it when receiving the associated channel. This is quasi co-location (QCL): the UE assumes the channel and reference signal share certain propagation properties.
QCL types — four flavours
| QCL type | Shared property | Impact |
|---|---|---|
| QCL-TypeA | Doppler shift, Doppler spread, average delay, delay spread | Channel estimation accuracy |
| QCL-TypeB | Doppler shift, Doppler spread | Frequency offset tracking |
| QCL-TypeC | Doppler shift, average delay | Timing and frequency reference |
| QCL-TypeD | Spatial Rx parameter (beam direction) | Receive beamforming ← most important for 5G |
TCI state configuration
TCI states are configured by RRC in tci-StatesToAddModList. Each TCI state has an ID and one or two reference signals. The gNB can configure up to 128 TCI states. Only a subset are active at any time.
// RRC configures 4 TCI states (simplified): TCI-State ID=0: referenceSignal: SSB 0 qcl-Type: TypeD ← UE uses SSB beam 0's spatial filter for PDSCH TCI-State ID=1: referenceSignal: SSB 1 qcl-Type: TypeD TCI-State ID=2: referenceSignal: SSB 2 qcl-Type: TypeD TCI-State ID=3: referenceSignal: SSB 3 ← our best beam qcl-Type: TypeD ← UE points receive beam toward SSB 3 direction // Additional for channel estimation quality: TCI-State ID=3 also includes: referenceSignal2: CSI-RS resource 0 qcl-Type: TypeA ← for delay/Doppler estimation
TCI state activation via MAC CE
After RRC configures a set of TCI states, the gNB activates specific ones using a MAC CE. The TCI State Indication MAC CE is a 1-byte message containing two 3-bit TCI state IDs — one for each codeword (or for CORESET-0 and other CORESETs).
// TCI State Indication MAC CE (1 byte): Bits [7:4]: Serving Cell ID = 0 Bits [3:0]: TCI state ID = 3 ← activate TCI state 3 (SSB beam 3) // Activation timing: MAC CE received in slot n TCI state becomes active: slot n + 3 ms = slot n + 6 slots (30 kHz) // Effect: // From slot n+6 onwards, UE uses SSB beam 3's receive spatial filter // for all PDSCH on the configured CORESET // The beam pointing matches the gNB's transmit beam for that TCI state
The complete beamforming loop — from SSB to data
We can now trace the complete beam management journey from initial cell search to steady-state data reception: