The three RRC states
RRC_IDLE — camping state
This is where our UE has been since completing cell selection. In RRC_IDLE:
| Aspect | Detail |
|---|---|
| RRC context | None stored at network. UE unknown to gNB. |
| NAS state | 5GMM-REGISTERED or 5GMM-DEREGISTERED |
| PLMN/cell | UE selects and monitors one cell (camped) |
| Paging | UE wakes up at Paging Occasions (derived from IMSI and SFN) |
| Mobility | Cell reselection — UE-autonomous, no network involvement |
| Power | Minimum — only wakes for paging and SI acquisition |
| To leave | RACH procedure — see Random Access |
RRC_INACTIVE — the 5G innovation
RRC_INACTIVE is new in 5G NR (not present in LTE). It solves a key problem: maintaining a connection for IoT/latency-sensitive devices that send data infrequently. Going to IDLE and reconnecting every time wastes energy and time. RRC_INACTIVE keeps the RRC context alive at both the UE and the last serving gNB (the anchor gNB), while the UE behaves like IDLE for power purposes.
When data arrives, the UE can resume the connection in 1–2 round trips instead of the full 4-step RACH + RRC setup. The resume uses an I-RNTI (Inactive-RNTI) as a stored identity.
RRC_CONNECTED — active data transfer
This is the state our UE just entered after Msg4. In RRC_CONNECTED, the UE has a dedicated C-RNTI, configured bearers, and the network knows exactly which cell it is in. All scheduling is network-controlled.
| Aspect | Detail |
|---|---|
| C-RNTI | 0x3A7F — unique identity for all PDCCH addressing |
| RRC context | Full context at both UE and gNB (SRB1, bearers, config) |
| Mobility | Handover — network-controlled, transparent to upper layers |
| Scheduling | DCI on PDCCH every slot — gNB grants UL/DL resources |
| Measurements | UE reports RSRP/RSRQ of serving and neighbour cells |
| Power | Higher — but DRX (Discontinuous Reception) saves power |
| To leave | RRCRelease → IDLE or INACTIVE (network-initiated) |
Paging — finding UEs in IDLE/INACTIVE
When a call or data arrives for an IDLE UE, the network doesn't know which cell it is in. It pages the UE across all cells in the Tracking Area (for IDLE) or RAN Notification Area (for INACTIVE).
The UE wakes up at specific Paging Occasions (PO) derived from its IMSI and the SFN. The network sends a paging message on PDCCH using P-RNTI = 0xFFFE.
// Paging frame (PF) and Paging Occasion (PO) derived from IMSI: // Assume IMSI = 244051234567890 IMSI_mod_1024 = 244051234567890 mod 1024 = 722 // Default paging parameters (from SIB1 if not configured): T = 128 frames (default DRX cycle) N = min(T, nB) where nB = 1T → N = 128 // Paging Frame: SFN mod T = (T div N) × (IMSI_mod_1024 mod N) = (128/128) × (722 mod 128) = 1 × 82 PF occurs when: SFN mod 128 = 82 // Paging Occasion (i_s index): i_s = ⌊IMSI_mod_1024 / N⌋ mod Ns = 0 // → first PO within the paging frame