>
Home5G NRRRC — Radio Resource ControlSystem Information
🗂️ RRC — Radio Resource ControlIntermediate

System Information (MIB / SIB1 / SIBs) in 5G NR

MIB and SIB acquisition, SI scheduling, and how the UE learns how to access a cell.

📚 3GPP-basedTS 38.331TS 38.304

Every other configuration mechanism in NR is dedicated: the network knows which UE it is talking to, sends an RRCReconfiguration on a signalling bearer, and gets an acknowledgement. System Information has none of that. It has to reach a UE that has just powered on, has no C-RNTI, no security context and no uplink timing, and it has to do so without knowing that the UE exists. That single constraint explains every design decision in this document:

Contents
  1. 01Why System Information Works the Way It Does
  2. 02The Acquisition Chain: PSS/SSS to Other SI
  3. 03The SIB Catalogue: What Each One Carries
  4. 04si-SchedulingInfo: How Other SI Is Advertised
  5. 05SI Windows: The Arithmetic
  6. 06Broadcasting, notBroadcasting and On-Demand SI
  7. 07Requesting SI: the MSG1 and MSG3 Paths
  8. 08SI Validity, valueTag and Area Scope
  9. 09SI Change Notification and the BCCH Modification Period
  10. 10Emergency SI: ETWS and CMAS
  11. 11Re-Acquisition Outside Initial Access
  12. 12Parameter Reference
  13. 13Failure Modes and What Each One Means
  14. 14ASN.1: si-SchedulingInfo and the Request Messages
  15. 15Illustrative Message Traces
  16. 16Release Deltas: Rel-15 to Rel-18
  17. 17Reading System Information in Logs: A Checklist
  18. 18Glossary
  19. 19References

1. Why System Information Works the Way It Does

Every other configuration mechanism in NR is dedicated: the network knows which UE it is talking to, sends an RRCReconfiguration on a signalling bearer, and gets an acknowledgement. System Information has none of that. It has to reach a UE that has just powered on, has no C-RNTI, no security context and no uplink timing, and it has to do so without knowing that the UE exists. That single constraint explains every design decision in this document:

  • It is broadcast, not signalled. There is no acknowledgement, so there is no retransmission and no HARQ. SI is sent on DL-SCH with no HARQ feedback loop at all; robustness comes from repetition inside a window and from conservative link adaptation, not from ARQ.
  • Its schedule is derived, not configured. The position of an SI message's window follows from its index in schedulingInfoList and from si-WindowLength -- there is no per-message offset field in Rel-15. Both sides compute the same answer from the same two numbers (§5).
  • It is split into a bootstrap and a body. The MIB is 24 bits, fits in a fixed-size transport block on PBCH, and exists purely to make SIB1 findable. Everything else waits for SIB1.
  • Changes are announced in advance and applied on a boundary. A UE acting on a parameter that changed underneath it would be worse than a UE acting on a parameter it knows to be one modification period stale (§9).
  • Rarely-needed parts are optional to transmit. Broadcasting SIB12 for sidelink in a cell where no UE uses sidelink is pure wasted capacity, so si-BroadcastStatus lets the network hold it back until asked (§6).

A UE reads System Information at power-on, but that is the least of the occasions. It also re-reads after every cell reselection into a cell whose stored SI it does not hold, on return from out-of-coverage, when the network signals a change, when a stored SIB passes its three-hour validity limit, and when an application needs a SIB the UE never bothered to acquire before. §11 covers all of them.

💡
Key Point

SI acquisition is the largest elastic term in the power-on latency budget. The companion 01 Registration Process document allows 150 to 200 ms for it in good conditions, but the worst case is a full si-Periodicity -- up to 5.12 seconds for one SI message, and the costs of separate messages add rather than overlap. If a device is slow to get service and RACH looks clean, this is the first place to look.

2. The Acquisition Chain: PSS/SSS to Other SI

System information acquisition chainThe System Information Acquisition ChainTS 38.300 cl. 6.1 / TS 38.331 cl. 5.2 -- BCCH is one logical channel carried over two different transport channelsPhysical signals / channelsPSS / SSSPCI, timingPBCH32-bit payloadPDCCHCORESET#0, SI-RNTIPDSCHSI payloadTransport channelsBCHfixed TBS 24 bitsDL-SCHHARQ-less, no feedbackschedulesLogical channelBCCHone logical channel, two transport pathsRRC messagesMIBBCCH-BCH-MessageSIB1BCCH-DL-SCH, SI-RNTISI messagesSIB2 .. SIB21, groupedtiming + PCIThe split at BCCH is the reason MIB and SIB1 behave so differently: MIB rides a fixed-size transport channel with noscheduling at all, while SIB1 and every other SIB ride DL-SCH and therefore need a PDCCH grant, a search space and a window.
Figure 1. BCCH is a single logical channel that maps onto two different transport channels. That is the structural reason MIB and SIB1 have almost nothing in common operationally, despite both being "system information".
StageCarried onAddressed byPeriodicityWhat it unlocks
PSS + SSSSSB, no channel codingNothing -- the UE correlates blindlyssb-periodicityServingCell; the UE assumes 20 ms for initial searchSymbol, slot and half-frame timing; PCI = 3 x N_ID1 + N_ID2
MIBPBCH -> BCH -> BCCHNothing -- decoded from the SSB itself80 ms; the same MIB content is repeated in every SSB of the burstpdcch-ConfigSIB1, and therefore CORESET#0 and searchSpaceZero
SIB1PDSCH -> DL-SCH -> BCCHPDCCH in the Type0-PDCCH common search space, CRC scrambled by SI-RNTI 0xFFFF160 ms, with a network-set repetition period inside it (20 ms is the default the UE assumes for initial cell selection)Cell access, cell selection thresholds, RACH configuration, si-SchedulingInfo, ue-TimersAndConstants, UAC
Other SI (SI messages)PDSCH -> DL-SCH -> BCCHPDCCH in the Type0A-PDCCH common search space, also SI-RNTIsi-Periodicity per SI message: rf8 to rf512, i.e. 80 ms to 5.12 sReselection parameters, neighbour lists, emergency warnings, positioning, sidelink, MBS, NTN

Table 1. The four stages. Note that SIB1 and Other SI use the same RNTI and differ only in search space and in how their occasions are computed TS 38.213 cl. 10.1.

🔍
What You See In Logs

SIB1 is sometimes called the "Remaining Minimum System Information" (RMSI), and Other SI the "Other System Information" (OSI). Those are TS 38.300 terms and they appear in vendor logs, spec discussions and product documentation more often than the TS 38.331 names. RMSI in a log means SIB1; OSI means everything scheduled by si-SchedulingInfo.

2.1 Why MIB gets no window and SIB1 does

MIB rides BCH, a transport channel with a fixed transport block size of 24 bits, a fixed coding chain, and no PDCCH. It is not scheduled -- it is simply part of the SSB, which means the UE that just found the SSB has already received it. There is nothing to search for and nothing to miss beyond the SSB itself.

SIB1 and every other SIB ride DL-SCH, which means a PDCCH grant, a modulation and coding scheme, a transport block size, and therefore a search space in which to look for the grant and a time window in which the grant may appear. That machinery is what §4, §5 and §9 are about, and the whole of it exists because SI content outgrew 24 bits.

3. The SIB Catalogue: What Each One Carries

SIBRelContentWhen a UE needs it
SIB115Cell access and selection info, si-SchedulingInfo, servingCellConfigCommon, ue-TimersAndConstants, uac-BarringInfo, connEstFailureControlAlways, before anything else. See the companion 18 MIB and SIB1 IEs document.
SIB215Cell reselection information common to intra-frequency, inter-frequency and inter-RAT: q-Hyst, speed-state scaling, s-IntraSearchP/Q, s-NonIntraSearchP/Q, threshServingLowP/QBefore performing any reselection. A camped UE without SIB2 cannot evaluate the R-criterion.
SIB315Intra-frequency neighbour information: intraFreqNeighCellList with per-cell offsets, and intraFreqExcludedCellListOnly to apply per-cell offsets or exclusions. Intra-frequency reselection works without it.
SIB415Inter-frequency NR neighbour information: interFreqCarrierFreqList with priorities, thresholds and per-carrier q-RxLevMinBefore considering any other NR carrier. Absence effectively pins the UE to its current frequency.
SIB515Inter-RAT E-UTRA neighbour information: carrierFreqListEUTRABefore reselecting to LTE. Relevant wherever 5G coverage is an island.
SIB615ETWS primary notification: message identifier, serial number, warning typeImmediately on etwsAndCmasIndication -- no modification period wait (§10).
SIB715ETWS secondary notification: the warning message itself, possibly segmentedAs SIB6.
SIB815CMAS warning notification, with warningMessageSegment and geographical scopeAs SIB6.
SIB915GPS and UTC time information (timeInfo), and from Rel-16 referenceTimeInfo for high-accuracy timeFor time-of-day and for time-sensitive networking. Never valueTagged -- its content is time.
SIB1016Human-readable network names (HRNN) for SNPNsOnly in non-public network deployments, for display purposes.
SIB1116Idle/inactive measurement configuration (measIdleConfigSIB)When the network wants idle-mode measurement logging for early measurement reporting.
SIB1216NR sidelink configuration (sl-ConfigCommonNR)Only for sidelink-capable UEs actually using NR sidelink.
SIB13 / SIB1416V2X sidelink configuration over E-UTRA, as defined in TS 36.331Only for UEs doing LTE-based V2X while camped on NR.
SIB1517Disaster roaming informationWhen the UE is looking for a PLMN that will accept it during a declared disaster condition.
SIB1617Slice-based cell reselection informationWhen reselection priorities differ per network slice.
SIB1717TRS (tracking reference signal) resource configuration for RRC_IDLE and RRC_INACTIVE UEsTo keep time/frequency tracking while idle, and so shorten resume.
SIB1817Group IDs for Network selection (GINs)SNPN selection using credentials from a separate credentials holder.
SIB1917NTN configuration: serving satellite ephemeris, ta-Common, k-Offset, epoch timeMandatory on any non-terrestrial cell; a UE cannot transmit uplink without it.
SIB2017MBS broadcast control channel (MCCH) configurationTo find the MCCH and, through it, the MBS broadcast services.
SIB2117MBS frequency selection area information (mbs-FSAI-List)To reselect towards a frequency that carries the wanted MBS service.

Table 2. The SIB catalogue TS 38.331 cl. 5.2.1 and 6.3.1. Positioning SIBs (posSibType1-1 onward) are scheduled separately through posSI-SchedulingInfo and are not part of this list. A decoder built against an earlier release reports an unknown SIB type rather than failing, so always check which release your analyser was built for before concluding a SIB is malformed.

⚠️
Common Pitfall

There is no requirement that a cell broadcast SIB2 through SIB5 -- and cells that do not, exist. A cell with si-SchedulingInfo absent altogether transmits SIB1 and nothing else, which is legal and means "there is no other SI here". A UE camped on such a cell has no reselection parameters, so it applies the defaults in TS 38.304 cl. 5.2.4 and effectively will not reselect away on priority grounds. That is occasionally intentional and much more often a template that was never filled in.

4. si-SchedulingInfo: How Other SI Is Advertised

si-SchedulingInfo sits inside SIB1 and is the whole schedule for Other SI. It has exactly four things in it that matter: an ordered list of SI messages, a single window length shared by all of them, an optional request configuration, and an optional area identifier.

FieldType / rangeScopeWhat it controls
schedulingInfoList
SEQUENCE (SIZE (1..maxSI-Message)) OF SchedulingInfo, maxSI-Message = 32The whole cellThe set of SI messages and, critically, their order -- which is what determines each one's window position (§5)
si-WindowLength
ENUMERATED {s5, s10, s20, s40, s80, s160, s320, s640, s1280}, in slotsAll SI messages in the cellHow long each window is. One value for every message, so a rarely-read SIB gets the same window as a frequently-read one.
si-RequestConfig
SI-RequestConfig, optionalAll notBroadcasting messagesPresent -> UEs request SI with a dedicated MSG1 preamble. Absent -> UEs request with MSG3 RRCSystemInfoRequest (§7).
si-RequestConfigSUL
As above, optionalSUL carrierThe same, for a supplementary uplink carrier
systemInformationAreaID
BIT STRING (SIZE (24)), optionalCells sharing an SI areaLets area-scoped SIBs be reused across cells without re-acquisition (§8)

Table 3. SI-SchedulingInfo fields TS 38.331. Note that si-WindowLength is a single cell-wide value in slots, not milliseconds -- its duration in time therefore halves each time the subcarrier spacing doubles.

4.1 Per-message fields

FieldType / rangeTypicalWhat it controls
si-BroadcastStatus
ENUMERATED {broadcasting, notBroadcasting}
broadcasting for SIB2-SIB5Whether the message is on air now. notBroadcasting means the UE must request it (§6).
si-Periodicity
ENUMERATED {rf8, rf16, rf32, rf64, rf128, rf256, rf512} = 80 ms to 5.12 srf16 or rf32How often this message's window recurs. Directly sets the worst-case acquisition delay.
sib-MappingInfo
SEQUENCE (SIZE (1..maxSIB)) OF SIB-TypeInfo, maxSIB = 32one to three SIBsWhich SIBs are bundled into this message. The bundle is transmitted as one transport block, so a UE that wants one SIB receives all of them.
SIB-TypeInfo.type
ENUMERATED {sibType2, sibType3, ...}
--Which SIB
SIB-TypeInfo.valueTag
INTEGER (0..31), optional0 initiallyChange counter for stored-SI validity. Absent for the SIBs whose content is inherently transient (SIB6, SIB7, SIB8, SIB9).
SIB-TypeInfo.areaScope
ENUMERATED {true}, optionalpresent for SIB3/SIB4 in many deploymentsPresent -> validity is scoped to systemInformationAreaID. Absent -> validity is per cell (§8).

Table 4. SchedulingInfo and SIB-TypeInfo fields. Bundling is the single most consequential design choice here: it trades BCCH capacity against acquisition latency for the SIBs in the bundle.

💡
Key Point

Bundling SIBs into one SI message is not free in either direction. Put SIB2, SIB3 and SIB4 in one message and a UE that only wants SIB2 pays for a transport block carrying all three -- but it pays once, in one window. Split them across three messages and the UE waits for up to three separate windows in sequence, which in the worst case is three times the latency. Bundle SIBs that are wanted together; separate SIBs that are wanted by different UE populations.

5. SI Windows: The Arithmetic

This is the part that is most often misdescribed, so here it is exactly. There is no configurable window offset in Rel-15. The SI-windows are consecutive, non-overlapping, all the same length, and allocated to the entries of schedulingInfoList in list order. A UE computes the position of the window for SI message n like this TS 38.331 cl. 5.2.2.3.2:

SI-window position, TS 38.331 cl. 5.2.2.3.2
x = (n - 1) x w

  the SI-window starts at slot #a of the radio frame satisfying

        a = x mod N
        SFN mod T = FLOOR( x / N )

  n   order of the entry in schedulingInfoList, counting from 1
  w   si-WindowLength, in slots
  N   number of slots in a radio frame  (10 x 2^mu)
  T   si-Periodicity of *this* SI message, in radio frames

  mu = 0 (15 kHz)  -> N = 10      mu = 2 ( 60 kHz) -> N = 40
  mu = 1 (30 kHz)  -> N = 20      mu = 3 (120 kHz) -> N = 80

Within the window the UE monitors the Type0A-PDCCH common search space for a DCI with CRC scrambled by the SI-RNTI, and it may assume the SI message is transmitted at least once somewhere inside the window. The network is free to place it anywhere in the window and to repeat it, which is how it gets robustness without HARQ. Slots used for SSB and for SIB1 transmission are not available for Other SI.

Where the Four SI Windows LandWhere the Four SI Windows Landsi-WindowLength = s10, 30 kHz SCS (N = 20 slots per radio frame), four entries in schedulingInfoListSI msg #1 slots 0-9SI msg #2 slots 10-19SI msg #3 slots 0-9SI msg #4 slots 10-19no SI window -- only SSB and SIB1 hereno SI window -- only SSB and SIB1 hereSFN mod T = 0SFN mod T = 1SFN mod T = 2SFN mod T = 3012345678910111213141516171819Slot index within the radio frameRadio frame, by SFN mod si-PeriodicitySI-window (monitor SI-RNTI here)No SI-window in this frameWindows never overlap: each SI message gets si-WindowLength consecutive slots, laid end to end inschedulingInfoList order and wrapping into the next frame when they run out. With four messages at s10 and20 slots per frame, two frames of every four carry nothing.
Figure 2. Four SI messages at si-WindowLength = s10, 30 kHz. The two lower rows carry no SI window at all, which is the normal case: window allocation consumes only as many frames as the list needs. The formula is x = (n-1) x w, a = x mod N, SFN mod T = FLOOR(x / N).

5.1 Worked example: locating one SI message

🧮
Worked Calculation

SI message #3 (third entry in schedulingInfoList) carries SIB4.

si-WindowLength = s40, subcarrier spacing 30 kHz, si-Periodicity = rf16.

n = 3, w = 40 slots, N = 20 slots/frame, T = 16 radio frames

x = (3 - 1) x 40 = 80

a = 80 mod 20 = 0 -> window starts at slot 0

FLOOR(80 / 20) = 4 -> in frames where SFN mod 16 = 4

So the window is slot 0 of SFN 4 through slot 19 of SFN 5 -- 40 slots at 30 kHz is 40 x 0.5 ms = 20 ms, i.e. exactly two radio frames.

In absolute time within each 160 ms cycle that is [40 ms, 60 ms), recurring at SFN 4, 20, 36, 52, ... The 40 ms offset is not configured anywhere; it falls out of n = 3 and w = 40.

That gives the worst case directly. A UE that decides it needs SIB4 at t = 95 ms into the cycle has missed this cycle's window, which closed at 60 ms, and must wait for the next one at 160 + 40 = 200 ms:

Worst-Case Wait: Waking Up Just After the Window ClosedWorst-Case Wait: Waking Up Just After the Window ClosedSI message #3, si-WindowLength = s40 at 30 kHz (= 20 ms), si-Periodicity = rf16 (160 ms)SFN02468101214161820SI msg #3windowSFN 4-5SFN 20-21UE105 ms of waiting -- nothing to monitor040608095120160200220Time within the si-Periodicity cycle (ms), SFN 0 at t = 0Red dashed: the UE needs SIB4 at 95 ms, five milliseconds after the window closed. Blue dashed: the nextsi-Periodicity cycle begins. The green block at the far right of the UE lane is the acquisition itself. Worst case issi-Periodicity minus si-WindowLength -- here 160 - 20 = 140 ms.
Figure 3. The same example in absolute time. The 105 ms wait here is not the worst case -- waking one slot after the window closes costs si-Periodicity minus si-WindowLength, which is 140 ms for this configuration.

5.2 Worked example: how many SI messages fit

Because the windows are consecutive and derived, there is a hard limit on how many SI messages a cell can schedule at a given window length and periodicity. It is not stated as a rule anywhere obvious -- it falls out of the arithmetic:

🧮
Worked Calculation

si-WindowLength = s20, subcarrier spacing 15 kHz (N = 10), and every SI message configured with si-Periodicity = rf8 (T = 8).

n = 1: x = 0 a = 0 FLOOR( 0/10) = 0 -> SFN mod 8 = 0 OK

n = 2: x = 20 a = 0 FLOOR( 20/10) = 2 -> SFN mod 8 = 2 OK

n = 3: x = 40 a = 0 FLOOR( 40/10) = 4 -> SFN mod 8 = 4 OK

n = 4: x = 60 a = 0 FLOOR( 60/10) = 6 -> SFN mod 8 = 6 OK

n = 5: x = 80 a = 0 FLOOR( 80/10) = 8 -> SFN mod 8 = 8

SFN mod 8 can only take the values 0 to 7. The condition SFN mod 8 = 8 is never satisfied, so SI message #5's window never occurs and SIB(s) mapped into it are never transmitted.

The general constraint: number of SI messages x si-WindowLength must not exceed the shortest si-Periodicity expressed in slots. Here 5 x 20 = 100 slots against rf8 = 8 x 10 = 80 slots. Raising si-Periodicity to rf16 (160 slots) fixes it; so does shortening si-WindowLength to s10.

⚠️
Common Pitfall

The failure mode above is silent on both sides. The gNB accepts the configuration, SIB1 advertises the SI message, si-BroadcastStatus says broadcasting, and every UE dutifully computes a window condition that can never be true -- so no UE ever requests the SIB either, because as far as it is concerned the SIB is being broadcast. The observable symptom is a SIB that no UE in the cell has ever received, with no error anywhere. Check the arithmetic against the shortest si-Periodicity in the list whenever you add an SI message.

🔄
Release Delta

Everything in §5 describes the Rel-15 rule, and it held unchanged for two releases. Rel-17 added `si-SchedulingInfo-v1700` with `schedulingInfoList2-r17`, whose entries carry an explicit `si-WindowPosition` -- the window is configured rather than derived. Both lists can be present, and a UE reading the Rel-17 list must not apply the arithmetic above. Before doing any window calculation from a capture, check which list the SIB1 actually used; the two produce different answers from the same si-WindowLength.

5.3 Filling the windows efficiently

One more consequence of derived windows: at 30 kHz with si-WindowLength = s10, two windows fit in every radio frame, so an eight-message list occupies four radio frames out of however many the periodicity spans. Everything else is free BCCH capacity. Reordering schedulingInfoList therefore changes when every message after the reordered entry is transmitted -- which is why a list reorder must be treated as an SI change and get a valueTag bump like any other (§9).

6. Broadcasting, notBroadcasting and On-Demand SI

si-BroadcastStatus is one bit per SI message with a large consequence. broadcasting means the message is on air in its window right now, and the UE should simply go and read it. notBroadcasting means the network has the message configured but is not transmitting it, and a UE that needs it must ask.

Does the UE Need to Acquire This SIB, and How?Does the UE Need to Acquire This SIB, and How?TS 38.331 cl. 5.2.2.1 to 5.2.2.3.3UE needs SIB xyesUse it.No air-interface activityStored copy still valid?(< 3 h, valueTag, area scope)nonoNot providedby this cellSIB x present in anysib-MappingInfo entry?yesyesCompute the window,monitor SI-RNTIsi-BroadcastStatus of thatSI message = broadcasting?notBroadcastingyesMSG1 path:dedicated preamblenoMSG3 path:RRCSystemInfoRequestsi-RequestConfig presentin SIB1?gNB starts broadcasting it; the UE monitors the samewindow it would have used all alongThe MSG1-or-MSG3 choice is not the UE's: it is decided entirely by whether SIB1 carries si-RequestConfig. A cell cantherefore change which path every UE uses by editing one optional IE.
Figure 4. The full decision, including the two gates most people forget: whether a valid stored copy already exists, and whether the SIB appears in any sib-MappingInfo at all. A SIB that is simply not listed cannot be requested.
SituationWhat the UE doesWhat appears in the gNB log
SIB listed, si-BroadcastStatus = broadcastingCompute the window, monitor SI-RNTI, decodeNothing. Broadcast reception is invisible to the network.
SIB listed, notBroadcasting, si-RequestConfig present in SIB1Send a dedicated preamble on a PRACH occasion from rach-ConfigSI; expect a RAR with only a RAPID subheaderA preamble at an index inside the SI-request range, answered with a payload-free RAR. It looks like a RACH that goes nowhere -- because it does.
SIB listed, notBroadcasting, si-RequestConfig absentRun ordinary CBRA and send RRCSystemInfoRequest on CCCH in MSG3A complete four-message RACH with an RRCSystemInfoRequest in MSG3 and no RRCSetup in MSG4
SIB not listed in any sib-MappingInfoConclude the cell does not provide it; do not requestNothing at all
SIB listed and notBroadcasting, but the UE is in RRC_CONNECTEDUse DedicatedSIBRequest on SRB1 (Rel-16), if supportedAn RRC message on SRB1, then delivery by dedicated signalling rather than broadcast

Table 5. Five situations, three of which produce no network-side evidence whatsoever. This is the single most important thing to internalise about debugging SI problems.

📘
Spec Detail

si-BroadcastStatus in a SIB1 you captured is only guaranteed to describe the state of affairs until the end of the current BCCH modification period. A change of si-BroadcastStatus is explicitly not treated as an SI change TS 38.331 cl. 5.2.2.2.2, so it can flip without a valueTag bump and without a systemInfoModification notification. A stored SIB1 whose si-BroadcastStatus you are trusting may therefore be wrong even though the SIB1 itself is still valid.

7. Requesting SI: the MSG1 and MSG3 Paths

On-Demand SI Acquisition: Both Request PathsOn-Demand SI Acquisition: Both Request PathsUEgNBSIB1 says SI message #2 (carrying SIB4) has si-BroadcastStatus = notBroadcastingpath A -- si-RequestConfig present in SIB1MSG1 with a dedicated SI-request preamblera-PreambleStartIndex 58, on a PRACH occasion from rach-ConfigSIA1RAR with a RAPID subheader onlyno MAC RAR payload: the RAPID echo *is* the acknowledgementA2gNB sets si-BroadcastStatus = broadcasting for SI message #2,effective at the next BCCH modification period boundarypath B -- si-RequestConfig absentMSG1 ordinary CBRA preambleB1MSG2 RAR with a full MAC RARTA command, UL grant, TC-RNTI 0x39C4B2MSG3 RRCSystemInfoRequest on CCCHrequested-SI-List = bit 2 set -- the 2nd notBroadcasting messageB3MSG4 Contention Resolution Identity CEacknowledges MSG3; no RRCSetup, the UE stays in RRC_IDLEB4both paths convergeSIB1 with si-BroadcastStatus = broadcastingsame schedulingInfoList index, so the window position is unchangedC1SI message #2 in its SI-window, PDCCH on SI-RNTI 0xFFFFthe UE was already computing this window before it askedC2Path A costs one PRACH occasion. Path B costs a full four-message RACH procedure and returns the UE to RRC_IDLEafterwards -- it never becomes an RRC connection.
Figure 5. Both request paths and their common ending. Which one a UE uses is decided solely by the presence of si-RequestConfig in SIB1 -- the UE has no choice and no preference.

7.1 The MSG1 path

si-RequestConfig carves out dedicated PRACH resources for SI requests. Each entry of si-RequestResources corresponds, in order, to one SI message with si-BroadcastStatus = notBroadcasting, and gives a ra-PreambleStartIndex. The gNB therefore learns which SI message is wanted from the preamble index alone -- no uplink data is needed at all, and the acknowledgement is a RAR containing a RAPID subheader with no MAC RAR payload behind it TS 38.321 cl. 6.1.5. The companion 03 Random Access document covers the payload-free RAR case.

FieldType / rangeWhat it does
rach-OccasionsSI.rach-ConfigSI
RACH-ConfigGeneric
A separate PRACH configuration for SI requests -- own prach-ConfigurationIndex, own msg1-FDM, own frequency start, own power and response window
rach-OccasionsSI.ssb-perRACH-Occasion
ENUMERATED {oneEighth ... sixteen}
SSB-to-RO association for SI-request occasions, independent of the value used for ordinary access
si-RequestPeriod
ENUMERATED {one, two, four, six, eight, ten, twelve, sixteen}, in SI request periodsSpreads SI requests over multiple periods so a burst of UEs does not collide in one occasion
si-RequestResources[i].ra-PreambleStartIndex
INTEGER (0..63)
The preamble index that means "send me SI message i"
si-RequestResources[i].ra-AssociationPeriodIndex
INTEGER (0..15), optionalWhich association period within the SI request period this resource lives in
si-RequestResources[i].ra-ssb-OccasionMaskIndex
INTEGER (0..15), optionalRestricts which SSB-associated occasions may be used

Table 6. SI-RequestConfig TS 38.331. The preamble indices here come out of the same 64-preamble space as everything else in the cell.

⚠️
Common Pitfall

SI-request preambles are drawn from the same 64 preambles as contention-based access and contention-free handover. totalNumberOfRA-Preambles bounds the CBRA portion; the SI-request indices must sit outside it, as must the CFRA indices. Overlap the ranges and a handover preamble gets answered with a payload-free RAR (so the handover stalls until T304 expires), or an SI request gets answered with a full RAR and an uplink grant the UE will not use. Both are silent misconfigurations that only appear under load.

7.2 The MSG3 path

With si-RequestConfig absent, the UE performs ordinary contention-based Random Access and puts RRCSystemInfoRequest on CCCH in MSG3. The message is a bitmap:

requested-SI-List indexing
RRCSystemInfoRequest-IEs ::= SEQUENCE {
    requested-SI-List   BIT STRING (SIZE (maxSI-Message)),   -- 32 bits
    spare               BIT STRING (SIZE (12))
}

  bit 1 (leftmost) -> the FIRST SI message in schedulingInfoList whose
                      si-BroadcastStatus is notBroadcasting
  bit 2            -> the SECOND such SI message
  ...

  Note: the bit index counts only notBroadcasting messages, NOT the raw
  schedulingInfoList index. A cell where messages #2 and #5 are
  notBroadcasting maps bit 1 -> message #2 and bit 2 -> message #5.
🧮
Worked Calculation

The whole RRCSystemInfoRequest has to fit the 48-bit CCCH SDU, exactly like RRCSetupRequest:

UL-CCCH-MessageType CHOICE (c1 / messageClassExtension) .... 1 bit

c1 CHOICE, 4 alternatives .................................. 2 bits

criticalExtensions CHOICE .................................. 1 bit

requested-SI-List, BIT STRING (SIZE (32)) .................. 32 bits

spare, BIT STRING (SIZE (12)) .............................. 12 bits

----------

48 bits

That is why maxSI-Message is 32 and why there are exactly 12 spare bits: the message is sized to the transport block, not the other way round.

MSG4 in this path carries a UE Contention Resolution Identity MAC CE and no RRCSetup. The UE stays in RRC_IDLE throughout -- it has used the Random Access procedure purely as a one-bit-per-SI-message uplink signalling channel, and returns to camping when it is done.

7.3 Dedicated SI delivery in RRC_CONNECTED

Neither path is available to a UE that is already in RRC_CONNECTED, which was a real gap in Rel-15: a connected UE that needed a notBroadcasting SIB had no way to ask. Rel-16 added DedicatedSIBRequest on SRB1, carrying requestedSIB-List and requestedPosSIB-List; the network then delivers the SIB inside a DLInformationTransfer as dedicated signalling rather than putting it on air. The delivered content is identical, but the stored-SI bookkeeping is not -- see §8.

8. SI Validity, valueTag and Area Scope

A UE stores acquired SIBs so it does not have to re-read them on every reselection. Three independent conditions decide whether a stored copy is still usable TS 38.331 cl. 5.2.2.2.1.

ConditionTestFails whenConsequence of failure
AgeLess than 3 hours since the SIB was last confirmed validThe UE has been camped or out of coverage for longerRe-acquire, even if nothing changed. Prevents indefinite trust in a value nobody re-checked.
Content versionThe valueTag in the current SIB1's sib-MappingInfo equals the valueTag stored with the SIBThe network incremented the tag because the content changedRe-acquire that SIB only. Other SIBs with unchanged tags stay valid.
ScopeFor an area-scoped SIB: the cell's systemInformationAreaID matches the one stored with the SIB. Otherwise: the cell identity and PLMN match.The UE moved to a cell in a different SI area, or a cell that does not advertise an area at allRe-acquire. Non-area-scoped SIBs must be re-acquired on every cell change.

Table 7. Stored-SI validity. All three must hold. The valueTag test is the one the network controls, and therefore the one that goes wrong.

8.1 Area scope, and what it buys

areaScope in SIB-TypeInfo says "this SIB's content is the same across a whole SI area". systemInformationAreaID in si-SchedulingInfo names the area. A UE that acquires an area-scoped SIB in one cell may reuse it in every other cell advertising the same area ID and the same valueTag, which for a UE moving through a dense cluster of cells eliminates almost all of its BCCH reading.

areaScopesystemInformationAreaID in the cellValidityTypical use
absentanyThis cell only -- PLMN + cellIdentityAnything genuinely cell-specific: SIB3's per-cell offsets in a cell with unusual neighbours
presentpresent, same value as storedThe whole SI areaSIB2, SIB4, SIB5 in a homogeneous cluster -- the intended case
presentpresent, different valueInvalid; re-acquireCrossing an SI area boundary
presentabsentInvalid; re-acquire in every cellA misconfiguration. The SIB is marked area-scoped and the area is unnamed, so the UE can never satisfy the scope test.

Table 8. Area scoping outcomes. The last row is the one to watch for: everything works, just with several times the BCCH load and several times the reselection latency it should have.

⚠️
Common Pitfall

Two cells with the same systemInformationAreaID and the same valueTag for a SIB must carry identical content for that SIB. Nothing enforces it. If a parameter push updates one cell's SIB4 and bumps its valueTag but a neighbour in the same SI area is not updated, UEs carry the neighbour's stale SIB4 into the updated cell -- or the reverse -- and behave according to a configuration that is not on air anywhere. Symptom: reselection decisions that cannot be explained from the SI you can capture in the cell where the UE is.

9. SI Change Notification and the BCCH Modification Period

System Information changes at modification period boundaries and nowhere else. The boundary is defined in SFN terms: the modification period is m radio frames long, where

BCCH modification period, TS 38.331 cl. 5.2.2.2.2
m = modificationPeriodCoeff x defaultPagingCycle      [radio frames]

  modificationPeriodCoeff   ENUMERATED {n2, n4, n8, n16}
                            in SIB1 -> servingCellConfigCommon
                                    -> downlinkConfigCommon
                                    -> bcch-Config
  defaultPagingCycle        ENUMERATED {rf32, rf64, rf128, rf256}
                            in SIB1 -> servingCellConfigCommon
                                    -> downlinkConfigCommon
                                    -> pcch-Config

  boundaries occur at every SFN for which   SFN mod m = 0
🧮
Worked Calculation

modificationPeriodCoeff = n4, defaultPagingCycle = rf128:

m = 4 x 128 = 512 radio frames = 512 x 10 ms = 5.12 s

Boundaries at SFN 0 and SFN 512. Since SFN wraps at 1024, that is exactly two boundaries per SFN cycle, 5.12 s apart.

Now the same cell with modificationPeriodCoeff = n16 and defaultPagingCycle = rf256:

m = 16 x 256 = 4096 radio frames

But the SFN only counts 0 to 1023. SFN mod 4096 = 0 is therefore satisfied only at SFN 0, which comes round once per SFN cycle -- every 1024 radio frames, or 10.24 s. The modification period saturates: any m of 1024 or more gives boundaries at SFN 0 and nowhere else, so 10.24 s is the longest modification period an NR cell can actually have. Raising the product past 1024 buys nothing and only makes the configured value misleading.

m = 512 -> boundaries at SFN 0 and 512 -> every 5.12 s

m = 1024 -> boundary at SFN 0 -> every 10.24 s

m = 2048 -> boundary at SFN 0 -> every 10.24 s

m = 4096 -> boundary at SFN 0 -> every 10.24 s

9.1 The notification itself

During the modification period preceding the change, the network includes a Short Message with the systemInfoModification bit set in DCI format 1_0 with CRC scrambled by the P-RNTI, at every paging occasion TS 38.331 cl. 6.5. There is no paging message and no PDSCH involved -- the notification is carried in the DCI itself, which is why it costs almost nothing and why an idle UE monitoring its paging occasions receives it without waking any further.

DCI Format 1_0 with P-RNTI: the Short Message CarrierDCI Format 1_0 with P-RNTI: the Short Message CarrierTS 38.212 cl. 7.3.1.2.1 -- field widths depend on the initial DL BWP size; the layout above is indicativebit76543210Oct 1Short MessagesIndicatorShort Messages, bits 1-6Oct 2SM 7-8Frequency domain resource assignment (start)Oct 3Frequency domain resource assignment (continued)Oct 4Time domain RAVRBMCS (part)Oct 5MCSTB scalingReservedShort Messages Indicator: 01 = scheduling information for paging only, 10 = short message only, 11 = both.Short Messages bit 1 = systemInfoModification, bit 2 = etwsAndCmasIndication, bit 3 = stopPagingMonitoring (Rel-17),bits 4-8 spare.
Figure 6. The Short Message lives in the paging DCI. stopPagingMonitoring was added in Rel-17 for extended-DRX UEs; in a Rel-15 decoder that bit reads as spare.
SI Change Notification and the BCCH Modification PeriodSI Change Notification and the BCCH Modification PeriodTS 38.331 cl. 5.2.2.2.2 -- the change takes effect at a boundary, never in the middle of a periodModificationperiodperiod n (SFN 0 .. 511)period n+1 (SFN 512 .. 1023)period n+2 (SFN 0 .. 511 again)Short Messageon P-RNTIsystemInfoModification = 1, repeated at every paging occasionSI contenton airold SI -- valueTag v = 3new SI -- valueTag v = 4Idle UEusing stored SInotified -- still uses stored SIre-acquire SI0.02.565.127.6810.2412.815.36Time (s), with modificationPeriodCoeff = n4 and defaultPagingCycle = rf128 -> m = 512 radio frames = 5.12 sOrange dashed: this UE's paging occasion, where it first sees the notification. Green dashed: the boundary at whichthe change applies. The notification is advance warning, not an instruction to act immediately. Every UE in the cellre-acquires at the same boundary, which is why a needless valueTag bump produces a synchronised burst of BCCH reads.
Figure 7. Notification in period n+1, change applied at the boundary into period n+2. A UE that misses every paging occasion in period n+1 discovers the change only through the valueTag in SIB1, which is why UEs re-read SIB1 periodically regardless.
Short Message bitNameMeaningUE reaction
1
systemInfoModification
BCCH content other than SIB6, SIB7 and SIB8 will change at the next modification period boundaryRe-acquire SIB1 at the boundary, then re-acquire any SIB whose valueTag moved. Keep using the stored SI until the boundary.
2
etwsAndCmasIndication
An ETWS primary or secondary notification, or a CMAS notification, is being broadcastAcquire SIB6, SIB7 and/or SIB8 immediately -- no boundary wait (§10)
3stopPagingMonitoring (Rel-17)The UE may stop monitoring paging for the rest of the current paging occasion sequenceA power-saving hint; nothing to do with SI
4-8spare--Ignored

Table 9. Short Message bits TS 38.331 cl. 6.5. Bits 1 and 2 differ fundamentally: bit 1 is advance notice of a scheduled change, bit 2 is an instruction to act now.

🔍
What You See In Logs

A UE in RRC_CONNECTED does not monitor paging occasions, so it does not see the Short Message. It is notified of SI change by a dedicated RRC message instead -- and if the network does not send one, a connected UE can run for a long time on SI acquired before the change. This matters for parameters a connected UE actually uses, ue-TimersAndConstants and uac-BarringInfo among them.

10. Emergency SI: ETWS and CMAS

SIB6, SIB7 and SIB8 are exempt from almost everything in §8 and §9, and for an obvious reason: an earthquake warning that arrives at the next 5.12-second boundary is a warning that arrives too late.

PropertyOrdinary SIBsSIB6 / SIB7 / SIB8
Change signallingsystemInfoModification bit, effective at the next modification period boundaryetwsAndCmasIndication bit, effective immediately
valueTag
Present; stored SI reused while the tag matchesAbsent -- there is no stored-SI concept, every notification is new
Stored across cellsYes, subject to area scopeNo; the notification is acquired where it is received
Typical si-Periodicityrf16 to rf64Short (rf8 is common) while a warning is active, and the SI message is usually removed from air afterwards
SegmentationNot applicableSIB7 and SIB8 carry warningMessageSegment with a segment number and type, so a long warning text spans several transmissions
Duplicate suppression
valueTag
messageIdentifier + serialNumber; a UE that has already displayed that pair ignores the repeat

Table 10. Emergency SI versus ordinary SI. The messageIdentifier / serialNumber pair is the ETWS/CMAS equivalent of a valueTag, and it lives in the SIB rather than in SIB1's mapping info.

⚠️
Common Pitfall

etwsAndCmasIndication set with no SIB6, SIB7 or SIB8 actually on air is a genuinely disruptive misconfiguration: every idle UE in the cell wakes at its paging occasion, immediately starts monitoring SI windows for a warning SIB that never appears, and repeats on every subsequent notification. The observable effect is a cell-wide increase in UE power consumption with no corresponding traffic. It happens most often when an emergency-warning test is cancelled at the CBC without clearing the indication at the gNB.

11. Re-Acquisition Outside Initial Access

Power-on is the least interesting SI acquisition. These are the others, roughly in order of how often they happen:

OccasionWhat is acquiredWhyCost
Cell reselection into a new cellMIB + SIB1 always; other SIBs only where the stored copies fail the scope test (§8)SIB1 is per-cell by definition -- cellIdentity, TAC and RACH configuration all differOne SIB1 read; more if the SI area changed. This is what area scoping exists to minimise.
Return from out of coverageSIB1, plus anything whose stored copy aged outThe UE cannot know what changed while it was awayOne SIB1 read, plus re-acquisition of any SIB older than 3 hours
systemInfoModification notificationSIB1, then every SIB whose valueTag movedExplicit network instruction (§9)One SIB1 read plus the changed SIBs -- and every UE in the cell does it at the same boundary
etwsAndCmasIndication
SIB6 / SIB7 / SIB8Emergency (§10)Immediate, no boundary wait
Periodic re-check while campedSIB1Insurance against a missed notification. The UE re-reads SIB1 to compare valueTag values.Low -- SIB1 recurs every 160 ms and often more frequently
Stored SIB reaches 3 hoursThat SIBHard validity limit TS 38.331 cl. 5.2.2.2.1One window wait for the affected SI message
A new function needs a SIB the UE never acquiredThe SI message containing it, requested on demand if necessaryFor example a sidelink application starting on a UE that has been camped for an hourOne window, or a request plus a window (§7)
Transition out of RRC_INACTIVE by resumeSIB1 if the UE resumed in a different cellThe resumed configuration is validated against the new cell's SIOne SIB1 read; see the companion 14 RRC States document

Table 11. Eight re-acquisition occasions. Only the third and fourth are network-driven; the rest are the UE deciding on its own, which is why BCCH load does not correlate with anything the gNB does.

12. Parameter Reference

Almost every parameter here trades broadcast capacity against acquisition latency, and si-Periodicity trades it most directly:

Acquisition Latency Cost of Each si-PeriodicityAcquisition Latency Cost of Each si-Periodicitysi-WindowLength = s40 at 30 kHz (20 ms); worst case = si-Periodicity - si-WindowLength010002000300040005000Worst-case wait before the window opens (ms)60rf880 ms140rf16160 ms300rf32320 ms620rf64640 ms1260rf1281.28 s2540rf2562.56 s5100rf5125.12 sWorst-case wait before the window opens (ms)The relationship is linear and unforgiving: every doubling of si-Periodicity halves the BCCH capacity spent onthat message and doubles the worst-case wait for a UE that needs it.
Figure 8. Worst-case wait per SI message against si-Periodicity, at si-WindowLength = s40 and 30 kHz. The relationship is linear and unavoidable: the window is the only time the message can appear, so a UE that misses it waits out the rest of the period.
ASN.1 nameValuesTypicalEffect if raised
si-WindowLength
s5, s10, s20, s40, s80, s160, s320, s640, s1280 (slots)s20 or s40More scheduling freedom and more repetition opportunity per message, but fewer SI messages fit inside the shortest periodicity (§5.2) and the UE monitors PDCCH for longer
si-Periodicity
rf8, rf16, rf32, rf64, rf128, rf256, rf512rf16 or rf32Less BCCH capacity consumed, proportionally longer worst-case acquisition delay
si-BroadcastStatus
broadcasting, notBroadcastingbroadcasting for SIB2-SIB5n/a -- but setting notBroadcasting moves the cost from BCCH capacity to per-UE RACH signalling
systemInformationAreaID
BIT STRING (24), optionalconfigured per SI area in dense deploymentsn/a -- but omitting it disables area scoping entirely, multiplying BCCH reads on every reselection
valueTag
INTEGER (0..31)incremented on every content changen/a -- wraps at 31, so a UE with a very old stored copy could in principle see a matching tag for changed content. The 3-hour limit is what bounds that.
areaScope
true, absentpresent for SIB2/SIB4/SIB5n/a -- must be paired with systemInformationAreaID
modificationPeriodCoeff
n2, n4, n8, n16n4 or n8Longer time before an SI change reaches camped UEs; fewer synchronised re-acquisition bursts
defaultPagingCycle
rf32, rf64, rf128, rf256rf128Longer paging cycle and a proportionally longer modification period, since the two are multiplied -- up to the 10.24 s ceiling the SFN range imposes (§9)
si-RequestPeriod
one, two, four, six, eight, ten, twelve, sixteenone or twoSI requests are spread over more periods, reducing collision on the SI-request occasions at the cost of request latency
ssb-periodicityServingCell
ms5, ms10, ms20, ms40, ms80, ms160ms20Less SSB overhead, slower cell search. A UE assumes 20 ms during initial search, so anything longer costs blind-decode attempts.

Table 12. SI-related parameters and the direction each one trades in. Almost every row trades BCCH capacity against acquisition latency; there is no setting that improves both.

13. Failure Modes and What Each One Means

What failsWho detects itWhat the UE doesWhat it points at
MIB decodes but SIB1 never doesUE RRCTreats the cell as barred for 300 s and looks elsewhere -- silently TS 38.331 cl. 5.2.2.1pdcch-ConfigSIB1: a CORESET#0 that does not fit the carrier, or searchSpaceZero monitoring occasions that fall in uplink slots of the TDD pattern
SI message advertised but its window condition is unsatisfiableNobodyMonitors a window that never occurs; never requests, because si-BroadcastStatus says broadcastingNumber of SI messages x si-WindowLength exceeds the shortest si-Periodicity (§5.2). Check the arithmetic, not the radio.
si-BroadcastStatus = broadcasting but the gNB never transmits the messageNobodyWaits out every window, then gives up and retries at the next periodicity, indefinitelyScheduler starvation on BCCH, or an SI message configured with no SIB content behind it
si-WindowLength longer than si-PeriodicityConfig validation, if it is implementedUndefined -- successive windows of the same message would overlapThe network must not configure this. A gNB that accepts it will produce SI that some UEs decode and others do not.
valueTag not incremented after a content changeNobodyKeeps using stored SI until the 3-hour limit or the next reselectionThe provisioning path. This is the most common SI fault in live networks and it produces UEs behaving on parameters that are no longer on air.
valueTag incremented with no content changeNobodyEvery camped UE re-acquires the SIB at the next boundaryA provisioning system that bumps tags on every touch. Harmless per event, but it turns every no-op push into a cell-wide BCCH burst.
systemInfoModification signalled, nothing changesNobodyRe-acquires SIB1 at the boundary, finds identical valueTag values, does nothing moreAs above -- wasted, not harmful
SI changed without any notificationNobodyContinues on stored SI until the 3-hour limitA change applied outside a modification period boundary. Symptom: a population split between old and new behaviour with no pattern.
areaScope present, systemInformationAreaID absentNobodyFails the scope test in every cell; re-acquires everywhereSIB1 template error. Symptom: BCCH read rate several times higher than the reselection rate would suggest.
Same systemInformationAreaID and valueTag, different content across cellsNobodyUses whichever version it happened to acquire firstA partial parameter push across an SI area. The hardest SI fault to diagnose, because the SI you capture in the cell is correct.
SI-request preamble range overlapping the CBRA rangeNobodyGets the wrong kind of RAR: a payload-free RAR for an access attempt, or a grant for an SI requesttotalNumberOfRA-Preambles versus ra-PreambleStartIndex. Only shows under load. See the companion 03 Random Access document.
etwsAndCmasIndication set with no warning SIB on airNobodyWakes and searches SI windows on every notificationA cancelled emergency-warning test that was not cleared at the gNB (§10)
si-RequestConfig present but no PRACH resources actually reservedUE MAC (no RAR)Retries the SI request up to the configured attempt limit, then gives up on that SIBrach-ConfigSI pointing at occasions that do not exist in the uplink configuration
Connected-mode UE running on pre-change SINobodyNothing -- it does not monitor paging and was never toldThe network did not send a dedicated SI change indication. Matters most for uac-BarringInfo and ue-TimersAndConstants.

Table 13. Fourteen SI failure modes. Note the second column: in eleven of the fourteen, nobody detects the fault. System Information has no acknowledgement, so it has no error reporting either.

💡
Key Point

The pattern in that table is the single most useful thing to remember about System Information: it is a fire-and-forget broadcast with no feedback path. There is no counter that goes up when SI is wrong, no failure indication, and no UE report. Every SI fault has to be found by reading the configuration and doing the arithmetic, or by capturing the air interface with a UE-side tool. If you are waiting for a gNB counter to tell you SI is broken, you will wait forever.

14. ASN.1: si-SchedulingInfo and the Request Messages

-- TS 38.331, abridged; ... marks omitted members and extension markers

SI-SchedulingInfo ::= SEQUENCE {
    schedulingInfoList        SEQUENCE (SIZE (1..maxSI-Message)) OF
                                  SchedulingInfo,
    si-WindowLength           ENUMERATED {s5, s10, s20, s40, s80, s160,
                                          s320, s640, s1280},
    si-RequestConfig          SI-RequestConfig      OPTIONAL, -- Cond MSG-1
    si-RequestConfigSUL       SI-RequestConfig      OPTIONAL, -- Cond SUL-MSG-1
    systemInformationAreaID   BIT STRING (SIZE (24)) OPTIONAL,
    ...
}

SchedulingInfo ::= SEQUENCE {
    si-BroadcastStatus        ENUMERATED {broadcasting, notBroadcasting},
    si-Periodicity            ENUMERATED {rf8, rf16, rf32, rf64, rf128,
                                          rf256, rf512},
    sib-MappingInfo           SIB-Mapping
}

SIB-Mapping ::= SEQUENCE (SIZE (1..maxSIB)) OF SIB-TypeInfo

SIB-TypeInfo ::= SEQUENCE {
    type                      ENUMERATED {sibType2, sibType3, sibType4,
                                          sibType5, sibType6, sibType7,
                                          sibType8, sibType9, ...,
                                          sibType10-v1610, sibType11-v1610,
                                          sibType12-v1610, sibType13-v1610,
                                          sibType14-v1610, ...},
    valueTag                  INTEGER (0..31)        OPTIONAL, -- Cond SIB-Type
    areaScope                 ENUMERATED {true}      OPTIONAL
}

SI-RequestConfig ::= SEQUENCE {
    rach-OccasionsSI SEQUENCE {
        rach-ConfigSI         RACH-ConfigGeneric,
        ssb-perRACH-Occasion  ENUMERATED {oneEighth, oneFourth, oneHalf,
                                          one, two, four, eight, sixteen}
    }                                                OPTIONAL,
    si-RequestPeriod          ENUMERATED {one, two, four, six, eight,
                                          ten, twelve, sixteen} OPTIONAL,
    si-RequestResources       SEQUENCE (SIZE (1..maxSI-Message)) OF
                                  SI-RequestResources
}

SI-RequestResources ::= SEQUENCE {
    ra-PreambleStartIndex     INTEGER (0..63),
    ra-AssociationPeriodIndex INTEGER (0..15)         OPTIONAL,
    ra-ssb-OccasionMaskIndex  INTEGER (0..15)         OPTIONAL
}

Listing 1. SI-SchedulingInfo and its children. maxSI-Message = 32 and maxSIB = 32; the 32 in maxSI-Message is what sizes requested-SI-List (§7.2).

-- the two SI-related messages, TS 38.331

UL-CCCH-MessageType ::= CHOICE {
    c1 CHOICE {
        rrcSetupRequest             RRCSetupRequest,
        rrcResumeRequest            RRCResumeRequest,
        rrcReestablishmentRequest   RRCReestablishmentRequest,
        rrcSystemInfoRequest        RRCSystemInfoRequest
    },
    messageClassExtension SEQUENCE {}
}

RRCSystemInfoRequest ::= SEQUENCE {
    criticalExtensions CHOICE {
        rrcSystemInfoRequest        RRCSystemInfoRequest-IEs,
        criticalExtensionsFuture-r16 CHOICE {
            rrcPosSystemInfoRequest-r16 RRCPosSystemInfoRequest-r16-IEs,
            criticalExtensionsFuture    SEQUENCE {}
        }
    }
}

RRCSystemInfoRequest-IEs ::= SEQUENCE {
    requested-SI-List           BIT STRING (SIZE (maxSI-Message)),
    spare                       BIT STRING (SIZE (12))
}

-- Rel-16, for a UE already in RRC_CONNECTED (UL-DCCH, SRB1)
DedicatedSIBRequest-r16-IEs ::= SEQUENCE {
    requestedSIB-List-r16       SEQUENCE (SIZE (1..maxOtherSIB-r16)) OF
                                    SIB-ReqInfo-r16   OPTIONAL,
    requestedPosSIB-List-r16    SEQUENCE (SIZE (1..maxAssistDataSIB-Element-r16))
                                    OF PosSIB-ReqInfo-r16 OPTIONAL,
    lateNonCriticalExtension    OCTET STRING            OPTIONAL,
    nonCriticalExtension        SEQUENCE {}             OPTIONAL
}

-- and the SI container itself, on BCCH-DL-SCH
SystemInformation-IEs ::= SEQUENCE {
    sib-TypeAndInfo SEQUENCE (SIZE (1..maxSIB)) OF CHOICE {
        sib2  SIB2,   sib3  SIB3,   sib4  SIB4,   sib5  SIB5,
        sib6  SIB6,   sib7  SIB7,   sib8  SIB8,   sib9  SIB9,
        ...
    },
    lateNonCriticalExtension    OCTET STRING            OPTIONAL,
    nonCriticalExtension        SystemInformation-v1700-IEs OPTIONAL
}

Listing 2. The request messages and the SI container. Note that SystemInformation-IEs carries a list of SIBs -- this is the bundling of §4.1 made concrete.

15. Illustrative Message Traces

🔍
About These Traces

Illustrative trace. Field names and encodings follow 3GPP; the values are constructed for this document and are not a capture from any deployed or lab network.

One cell runs through all five traces: PCI 217, PLMN 310-410, 30 kHz subcarrier spacing, si-WindowLength = s40, four SI messages, SI area 0x0A1B2C.

15.1 The schedule, as broadcast in SIB1

[RRC-DL-BCCH] SIB1 -- si-SchedulingInfo
SIB1
 si-SchedulingInfo
  si-WindowLength .................. s40         -- 40 slots = 20 ms @30 kHz
  systemInformationAreaID .......... 0x0A1B2C
  si-RequestConfig ................. (absent)    -- so MSG3 path (S7.2)
  schedulingInfoList
   [1] si-BroadcastStatus .......... broadcasting
       si-Periodicity .............. rf16        -- 160 ms
       sib-MappingInfo
        {type sibType2, valueTag 3, areaScope true}
        {type sibType3, valueTag 1, areaScope true}
   [2] si-BroadcastStatus .......... broadcasting
       si-Periodicity .............. rf32        -- 320 ms
       sib-MappingInfo
        {type sibType4, valueTag 7, areaScope true}
        {type sibType5, valueTag 2, areaScope true}
   [3] si-BroadcastStatus .......... notBroadcasting
       si-Periodicity .............. rf16
       sib-MappingInfo
        {type sibType12-v1610}                   -- NR sidelink, on demand
   [4] si-BroadcastStatus .......... broadcasting
       si-Periodicity .............. rf64        -- 640 ms
       sib-MappingInfo
        {type sibType9, areaScope (absent)}      -- no valueTag: time info

 servingCellConfigCommon
  downlinkConfigCommon
   bcch-Config
    modificationPeriodCoeff ........ n4
   pcch-Config
    defaultPagingCycle ............. rf128
                                                 -- m = 4 x 128 = 512 rf
                                                 --   = 5.12 s

  -- Derived window positions, N = 20 slots per frame, w = 40:
  --   n=1  x=  0  a= 0  FLOOR(  0/20)=0  -> slot  0, SFN mod 16 = 0
  --   n=2  x= 40  a= 0  FLOOR( 40/20)=2  -> slot  0, SFN mod 32 = 2
  --   n=3  x= 80  a= 0  FLOOR( 80/20)=4  -> slot  0, SFN mod 16 = 4
  --   n=4  x=120  a= 0  FLOOR(120/20)=6  -> slot  0, SFN mod 64 = 6
  -- Total window span 4 x 40 = 160 slots = 8 frames, comfortably inside
  -- the shortest periodicity (rf16 = 320 slots). Configuration is sound.

Listing 3. si-SchedulingInfo with the window arithmetic done alongside. Doing this calculation once per cell configuration catches the §5.2 failure mode before any UE ever sees it.

15.2 Acquiring an always-broadcast SI message

[RRC] SI message #2 acquisition
14:22:08.140  [RRC] SIB1 acquired, PCI 217, SFN 3
              -> need SIB4 (inter-frequency neighbours) for reselection
              -> SIB4 is in SI message #2
              -> window: slot 0, frames where SFN mod 32 = 2
              -> next such frame: SFN 34

14:22:08.450  [PHY] SFN 34 slot 0 -- SI-window for message #2 opens
              monitoring Type0A-PDCCH CSS, SI-RNTI 0xFFFF
14:22:08.452  [PHY] SFN 34 slot 4  PDCCH DCI 1_0, CRC = SI-RNTI
              -> PDSCH  24 PRB, MCS 5, TBS 704 bits
14:22:08.453  [RRC-DL-BCCH] SystemInformation
               sib-TypeAndInfo
                [1] sib4
                     interFreqCarrierFreqList
                      [1] dl-CarrierFreq ......... 632628
                          subcarrierSpacing ...... kHz30
                          q-RxLevMin ............. -62      -- = -124 dBm
                          cellReselectionPriority  5
                          threshX-HighP .......... 10       -- = 20 dB
                          threshX-LowP ........... 4        -- = 8 dB
                [2] sib5
                     carrierFreqListEUTRA
                      [1] carrierFreq ............ 1850
                          cellReselectionPriority  3
14:22:08.453  [RRC] stored: SIB4 valueTag 7 areaScope 0x0A1B2C
                            SIB5 valueTag 2 areaScope 0x0A1B2C
              -> SI-window closed early: message received, stop monitoring

  -- Elapsed from 'need SIB4' to 'have SIB4': 313 ms, almost all of it
  -- waiting for SFN 34. Nothing was retransmitted and nothing failed.
  -- SIB5 arrived free, because it is bundled in the same SI message.

Listing 4. A completely normal acquisition. The 313 ms is window wait, not decode time -- which is why tuning MCS or bandwidth does nothing for SI latency.

15.3 On-demand acquisition via MSG3

[RRC/MAC] on-demand SIB12 via RRCSystemInfoRequest
14:31:02.006  [APP] sidelink service started -> RRC needs SIB12
14:31:02.006  [RRC] SIB12 is in SI message #3
              si-BroadcastStatus = notBroadcasting
              si-RequestConfig absent  -> use the MSG3 request path
              SI messages with notBroadcasting, in list order:
                 message #3   -> requested-SI-List bit 1
              -> set bit 1

14:31:02.010  [MAC-UL] MSG1  ra-PreambleIndex 19 (ordinary CBRA pool)
                       PRACH SFN 84 slot 19 sym 0, RA-RNTI 1121
14:31:02.017  [MAC-DL] MSG2  RAR: RAPID 19, TA cmd 118, TC-RNTI 0x39C4
14:31:02.022  [MAC-UL] MSG3  CCCH, 6 octets, TC-RNTI 0x39C4
              UL-CCCH-Message
               c1: rrcSystemInfoRequest
                criticalExtensions: rrcSystemInfoRequest
                 requested-SI-List .... 1000 0000 0000 0000
                                        0000 0000 0000 0000
                 spare ................ 0000 0000 0000
14:31:02.031  [MAC-DL] MSG4  PDSCH to TC-RNTI 0x39C4
              LCID 62  UE Contention Resolution Identity, 48 bits
              -- no RRCSetup: the UE is not being connected
14:31:02.031  [RRC] SI request acknowledged; remain in RRC_IDLE
                    discard TC-RNTI 0x39C4

14:31:05.120  [RRC] SIB1 re-read at the modification period boundary
              schedulingInfoList[3] si-BroadcastStatus .. broadcasting
14:31:05.760  [RRC-DL-BCCH] SystemInformation  sib12-v1610  (SFN 4 slot 0)

  -- 3.1 s from request to delivery, of which 3.09 s is the wait for the
  -- next BCCH modification period boundary. The RACH exchange cost 25 ms.
  -- On-demand SI trades a long, quantised delay for BCCH capacity.

Listing 5. The MSG3 request path end to end. Note that the dominant cost is not the request but the modification period boundary at which the network is allowed to start broadcasting.

15.4 SI change notification and re-acquisition

[PHY/RRC] systemInfoModification and selective re-acquisition
15:04:41.200  [PHY] paging occasion, SFN 620 -- DCI 1_0, CRC = P-RNTI 0xFFFE
              Short Messages Indicator ....... 10   -- short message only
              Short Messages ................. 1000 0000
                bit 1 systemInfoModification . 1
                bit 2 etwsAndCmasIndication .. 0
                bits 3-8 ..................... 0
15:04:41.200  [RRC] SI change notified. Current modification period is
                    SFN 512..1023 (m = 512). Change applies at SFN 0.
              -> continue using stored SI until the boundary
              -> do NOT re-acquire now

15:04:45.240  [PHY] SFN 0 -- modification period boundary
15:04:45.243  [RRC] SIB1 re-acquired
              schedulingInfoList[1] sib-MappingInfo
                {type sibType2, valueTag 4, areaScope true}  -- was 3
                {type sibType3, valueTag 1, areaScope true}  -- unchanged
              schedulingInfoList[2] sib-MappingInfo
                {type sibType4, valueTag 7, areaScope true}  -- unchanged
                {type sibType5, valueTag 2, areaScope true}  -- unchanged
15:04:45.243  [RRC] SIB2 valueTag 3 -> 4 : stored copy invalid
                    SIB3, SIB4, SIB5      : stored copies still valid
              -> acquire SI message #1 only
15:04:45.250  [RRC-DL-BCCH] SystemInformation  sib2 + sib3  (SFN 0 slot 0)
              -- SIB3 arrives again anyway: it is bundled with SIB2
              sib2  cellReselectionServingFreqInfo
                     q-Hyst ................. dB4     -- was dB2

  -- Only one of four SIBs actually changed, and only one of four SI
  -- messages was re-read. That selectivity is the entire purpose of
  -- per-SIB valueTags.

Listing 6. A well-behaved change: one valueTag moves, one SI message is re-read. Compare the failure modes in §13 where the tag does not move, or moves for everything.

15.5 Failure path: a window that can never occur

[RRC] unsatisfiable SI-window condition
-- Configuration pushed to the cell:
   si-WindowLength ................. s20
   subcarrierSpacing ............... kHz15    -> N = 10 slots per frame
   schedulingInfoList: 5 entries, all si-Periodicity = rf8  -> T = 8

-- gNB configuration validation: PASSED (no rule checks this)
-- SIB1 on air advertises all five SI messages as 'broadcasting'

16:12:33.010  [RRC] need SIB12, mapped in SI message #5
              x = (5 - 1) x 20 = 80
              a = 80 mod 10 = 0
              FLOOR(80 / 10) = 8
              -> window condition: slot 0 of frames where SFN mod 8 = 8
              -> SFN mod 8 is in {0..7}; the condition is unsatisfiable
16:12:33.010  [RRC] no SI-window computed for SI message #5
              -- and si-BroadcastStatus = broadcasting, so no request is
              -- sent either: the UE believes the SIB is already on air

-- Observable evidence, network side:
     SI-request preambles for message #5 ......... 0
     RRCSystemInfoRequest with that bit set ...... 0
     BCCH transport blocks for message #5 ........ 0
     error counters, alarms, KPIs ................ none

-- The only trace of the fault anywhere is the arithmetic above, done
-- by hand from SIB1. 5 x 20 = 100 slots of window span against a
-- periodicity of 8 x 10 = 80 slots.

Listing 7. The §5.2 failure mode as it actually presents: a SIB that no UE ever receives, with nothing anywhere reporting a problem. Compare the sound configuration in §15.1, where the span is 160 slots against 320.

16. Release Deltas: Rel-15 to Rel-18

ReleaseChangeWhy it matters when reading SI
Rel-15MIB / SIB1 / Other SI split; si-SchedulingInfo with derived windows; si-BroadcastStatus; both on-demand request paths; valueTag; areaScope; SIB2-SIB9The baseline. Everything in §4 to §10 is Rel-15.
Rel-16DedicatedSIBRequest on SRB1 for RRC_CONNECTED UEsA connected UE can finally obtain a notBroadcasting SIB. Delivery is by dedicated signalling, so it never appears on BCCH (§7.3).
Rel-16posSI-SchedulingInfo and positioning SIBs (posSibType1-1 onward)A second, parallel SI schedule with its own window arithmetic. A decoder that only knows si-SchedulingInfo sees nothing of it.
Rel-16SIB10 (HRNN), SIB11 (idle measurements), SIB12 (NR sidelink), SIB13 / SIB14 (E-UTRA V2X sidelink)Five new SIB types; SIB-TypeInfo.type gains sibType10-v1610 onward, which is why the ASN.1 in §14 has the extension marker where it does
Rel-16referenceTimeInfo added to SIB9SIB9 now carries high-accuracy reference time for TSN, not only time-of-day
Rel-17si-SchedulingInfo-v1700 with schedulingInfoList2-r17 and an explicit si-WindowPositionThe derived-window rule of §5 is no longer the only rule. With the Rel-17 list the network places windows explicitly, so a UE and a decoder must know which list they are reading before doing any arithmetic.
Rel-17SIB15 (disaster roaming), SIB16 (slice-based reselection), SIB17 (idle-mode TRS), SIB18 (GINs), SIB19 (NTN), SIB20 (MCCH config), SIB21 (MBS FSAI)Seven more SIB types, several of them mandatory for their feature. SIB19 in particular is not optional on an NTN cell.
Rel-17Extended DRX in RRC_IDLE, and stopPagingMonitoring in the Short MessageA UE with a very long eDRX cycle can miss several modification periods, so the 3-hour validity limit becomes the operative check rather than the notification
Rel-18Further SIB types and continued extension of SIB-TypeInfo.typeConfirm which release your decoder was built against before treating an unknown SIB type as corruption

Table 14. SI-related changes by release. The Rel-17 si-WindowPosition addition is the one that changes how you read a trace, because it invalidates an assumption that held for two releases.

17. Reading System Information in Logs: A Checklist

1. Do the window arithmetic before anything else. For every entry in schedulingInfoList, compute x, a and FLOOR(x/N), and check that FLOOR(x/N) is strictly less than that message's si-Periodicity in radio frames. One unsatisfiable condition means one SIB that no UE will ever receive, with no error reported (§5.2).

2. Check the total window span against the shortest periodicity. Number of SI messages x si-WindowLength must fit inside the shortest si-Periodicity expressed in slots. This is the same check as step 1, expressed as one multiplication.

3. Confirm the subcarrier spacing before converting anything to milliseconds. si-WindowLength is in slots. s40 is 20 ms at 30 kHz and 40 ms at 15 kHz. Half the arithmetic errors in SI analysis are this.

4. Match every `areaScope` to a `systemInformationAreaID`. An area-scoped SIB in a cell with no area ID is re-acquired in every cell, which is the opposite of what was intended.

5. Compare `valueTag` values across the cells of an SI area. Same area ID and same tag must mean identical content. A partial parameter push is invisible in any single cell's capture (§8.1).

6. Read `si-BroadcastStatus` for every message, and then ask whether the matching request path exists. notBroadcasting with si-RequestConfig present means MSG1 requests; absent means MSG3. If si-RequestConfig is present, verify its preamble indices sit outside totalNumberOfRA-Preambles and outside the CFRA range.

7. Look for RACH procedures that end at MSG4 with no `RRCSetup`. Those are RRCSystemInfoRequest procedures, not failed connection attempts, and counting them as access failures will distort every accessibility KPI you have.

8. Look for preambles answered with a payload-free RAR. Those are MSG1 SI requests. A payload-free RAR answering a handover preamble is a preamble range overlap (§7.1).

9. Compute the modification period and compare it to your change window. m = modificationPeriodCoeff x defaultPagingCycle radio frames. A parameter push cannot reach camped UEs faster than that. If m reaches or exceeds 1024 the boundary occurs only at SFN 0, so the effective period saturates at 10.24 s no matter what the product says (§9).

10. Distinguish `systemInfoModification` from `etwsAndCmasIndication` in any captured Short Message. Bit 1 is advance notice; bit 2 is act now. Bit 2 set with no SIB6/7/8 on air is a live power-drain fault (§10).

11. For a connected UE behaving on old parameters, check whether a dedicated SI change indication was ever sent. Connected UEs do not monitor paging and therefore never see the Short Message.

12. When nothing explains the behaviour, capture from the UE side. SI has no acknowledgement and therefore no failure reporting; eleven of the fourteen failure modes in §13 are detected by nobody at all.

18. Glossary

TermExpansionMeaning in this document
SISystem InformationCollectively the MIB, SIB1 and all Other SI. Broadcast, unacknowledged, and the only configuration available to a UE with no identity.
SIBSystem Information BlockOne topic-scoped block of SI. Numbered SIB1 to SIB21 and rising; positioning SIBs are numbered separately.
SI message--A bundle of one or more SIBs transmitted as a single transport block in a single SI-window. The unit of scheduling, not the unit of content.
SI-window--The recurring time window in which one SI message may be transmitted. Position derived from the list index in Rel-15/16, configurable from Rel-17 (§5, §16).
si-WindowLength
--The window duration, in slots, shared by every SI message in the cell.
si-Periodicity
--How often one SI message's window recurs, in radio frames. Sets the worst-case acquisition delay.
valueTag
--A 5-bit change counter per SIB, carried in SIB1's sib-MappingInfo. The mechanism that lets a UE reuse stored SI.
areaScope / systemInformationAreaID--The pair that lets one acquired SIB stay valid across many cells (§8).
RMSI / OSIRemaining Minimum SI / Other SITS 38.300 names for SIB1 and for everything scheduled by si-SchedulingInfo. Common in vendor logs.
BCCHBroadcast Control ChannelThe logical channel carrying all SI. Mapped onto BCH for the MIB and DL-SCH for everything else.
SI-RNTISystem Information RNTIFixed at 0xFFFF. Scrambles the PDCCH CRC for both SIB1 and Other SI.
P-RNTIPaging RNTIFixed at 0xFFFE. Carries the Short Message that notifies SI change.
BCCH modification period--m = modificationPeriodCoeff x defaultPagingCycle radio frames. SI content changes only at its boundaries.
Type0 / Type0A-PDCCH CSSCommon Search SpaceThe search spaces in which SIB1 and Other SI grants respectively appear TS 38.213 cl. 10.1.
ETWS / CMASEarthquake and Tsunami Warning System / Commercial Mobile Alert SystemThe two public warning systems whose SIBs bypass the modification period entirely (§10).

19. References

  • 3GPP TS 38.331 -- RRC protocol specification. Clause 5.2.1 (introduction and SIB catalogue), 5.2.2.1 (SI acquisition and the cell-barred-on-SIB1-failure rule), 5.2.2.2.1 (SI validity), 5.2.2.2.2 (SI modification and the BCCH modification period), 5.2.2.3.1 (SIB1 acquisition), 5.2.2.3.2 (SI message acquisition and the window formula), 5.2.2.3.3 (SI request), 5.2.2.3.5 (actions on receiving SI), 6.2.2 (message definitions: SystemInformation, RRCSystemInfoRequest, DedicatedSIBRequest), 6.3.1 (SIB definitions), 6.4 (SI-SchedulingInfo, SchedulingInfo, SIB-TypeInfo, SI-RequestConfig), 6.5 (Short Message).
  • 3GPP TS 38.300 -- NR overall description. Clause 7.3 (system information delivery, RMSI and OSI terminology), 9.2.1 (cell selection and the SI a UE needs first).
  • 3GPP TS 38.213 -- Physical layer procedures for control. Clause 10.1 (search space sets, including Type0-PDCCH and Type0A-PDCCH common search spaces and the SI-RNTI), clause 13 (CORESET#0 and searchSpaceZero for SIB1).
  • 3GPP TS 38.212 -- Multiplexing and channel coding. Clause 7.1 (PBCH payload generation), 7.3.1.2.1 (DCI format 1_0 including the Short Messages Indicator and Short Messages fields).
  • 3GPP TS 38.321 -- NR MAC protocol specification. Clause 5.1 (random access, including the SI-request case), 6.1.5 (RAR MAC PDU and the payload-free RAPID subheader).
  • 3GPP TS 38.304 -- UE procedures in idle mode and RRC inactive state. Clause 5.2.4 (reselection, and the defaults applied when SIB2 to SIB5 are absent).
  • 3GPP TS 23.041 -- Technical realization of Cell Broadcast Service, for the ETWS and CMAS message structures that SIB6, SIB7 and SIB8 carry.

Companion documents in this set

  • 18 MIB and SIB1 IEs -- field-by-field on the two messages this document treats as a starting point, including the CORESET#0 and searchSpaceZero lookups behind §2.
  • 02 Radio Frame Structure -- SFN, radio frames, slots per frame, and the numerology that turns si-WindowLength in slots into a duration.
  • 03 Random Access -- the RACH procedure both SI request paths use, including the preamble partitioning of §7.1 and the payload-free RAR.
  • 06 Channel Mapping -- BCCH, BCH and DL-SCH, the mapping §2 depends on.
  • 19 Paging -- paging occasions, defaultPagingCycle and the DCI that carries the Short Message of §9.
  • 20 Measurements and Events -- the reselection parameters SIB2 to SIB5 actually carry.
  • 01 Registration Process -- where SI acquisition sits in the power-on latency budget, and what the UE does with SIB1 once it has it.
  • 13 RRC Overview / 14 RRC States -- the state model that decides which SI request path is even available.