System Information (MIB / SIB1 / SIBs) in 5G NR
MIB and SIB acquisition, SI scheduling, and how the UE learns how to access a cell.
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
- 01Why System Information Works the Way It Does
- 02The Acquisition Chain: PSS/SSS to Other SI
- 03The SIB Catalogue: What Each One Carries
- 04si-SchedulingInfo: How Other SI Is Advertised
- 05SI Windows: The Arithmetic
- 06Broadcasting, notBroadcasting and On-Demand SI
- 07Requesting SI: the MSG1 and MSG3 Paths
- 08SI Validity, valueTag and Area Scope
- 09SI Change Notification and the BCCH Modification Period
- 10Emergency SI: ETWS and CMAS
- 11Re-Acquisition Outside Initial Access
- 12Parameter Reference
- 13Failure Modes and What Each One Means
- 14ASN.1: si-SchedulingInfo and the Request Messages
- 15Illustrative Message Traces
- 16Release Deltas: Rel-15 to Rel-18
- 17Reading System Information in Logs: A Checklist
- 18Glossary
- 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
schedulingInfoListand fromsi-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-BroadcastStatuslets 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.
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
| Stage | Carried on | Addressed by | Periodicity | What it unlocks |
|---|---|---|---|---|
| PSS + SSS | SSB, no channel coding | Nothing -- the UE correlates blindly | ssb-periodicityServingCell; the UE assumes 20 ms for initial search | Symbol, slot and half-frame timing; PCI = 3 x N_ID1 + N_ID2 |
| MIB | PBCH -> BCH -> BCCH | Nothing -- decoded from the SSB itself | 80 ms; the same MIB content is repeated in every SSB of the burst | pdcch-ConfigSIB1, and therefore CORESET#0 and searchSpaceZero |
| SIB1 | PDSCH -> DL-SCH -> BCCH | PDCCH in the Type0-PDCCH common search space, CRC scrambled by SI-RNTI 0xFFFF | 160 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 -> BCCH | PDCCH in the Type0A-PDCCH common search space, also SI-RNTI | si-Periodicity per SI message: rf8 to rf512, i.e. 80 ms to 5.12 s | Reselection 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.
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
| SIB | Rel | Content | When a UE needs it |
|---|---|---|---|
| SIB1 | 15 | Cell access and selection info, si-SchedulingInfo, servingCellConfigCommon, ue-TimersAndConstants, uac-BarringInfo, connEstFailureControl | Always, before anything else. See the companion 18 MIB and SIB1 IEs document. |
| SIB2 | 15 | Cell reselection information common to intra-frequency, inter-frequency and inter-RAT: q-Hyst, speed-state scaling, s-IntraSearchP/Q, s-NonIntraSearchP/Q, threshServingLowP/Q | Before performing any reselection. A camped UE without SIB2 cannot evaluate the R-criterion. |
| SIB3 | 15 | Intra-frequency neighbour information: intraFreqNeighCellList with per-cell offsets, and intraFreqExcludedCellList | Only to apply per-cell offsets or exclusions. Intra-frequency reselection works without it. |
| SIB4 | 15 | Inter-frequency NR neighbour information: interFreqCarrierFreqList with priorities, thresholds and per-carrier q-RxLevMin | Before considering any other NR carrier. Absence effectively pins the UE to its current frequency. |
| SIB5 | 15 | Inter-RAT E-UTRA neighbour information: carrierFreqListEUTRA | Before reselecting to LTE. Relevant wherever 5G coverage is an island. |
| SIB6 | 15 | ETWS primary notification: message identifier, serial number, warning type | Immediately on etwsAndCmasIndication -- no modification period wait (§10). |
| SIB7 | 15 | ETWS secondary notification: the warning message itself, possibly segmented | As SIB6. |
| SIB8 | 15 | CMAS warning notification, with warningMessageSegment and geographical scope | As SIB6. |
| SIB9 | 15 | GPS and UTC time information (timeInfo), and from Rel-16 referenceTimeInfo for high-accuracy time | For time-of-day and for time-sensitive networking. Never valueTagged -- its content is time. |
| SIB10 | 16 | Human-readable network names (HRNN) for SNPNs | Only in non-public network deployments, for display purposes. |
| SIB11 | 16 | Idle/inactive measurement configuration (measIdleConfigSIB) | When the network wants idle-mode measurement logging for early measurement reporting. |
| SIB12 | 16 | NR sidelink configuration (sl-ConfigCommonNR) | Only for sidelink-capable UEs actually using NR sidelink. |
| SIB13 / SIB14 | 16 | V2X sidelink configuration over E-UTRA, as defined in TS 36.331 | Only for UEs doing LTE-based V2X while camped on NR. |
| SIB15 | 17 | Disaster roaming information | When the UE is looking for a PLMN that will accept it during a declared disaster condition. |
| SIB16 | 17 | Slice-based cell reselection information | When reselection priorities differ per network slice. |
| SIB17 | 17 | TRS (tracking reference signal) resource configuration for RRC_IDLE and RRC_INACTIVE UEs | To keep time/frequency tracking while idle, and so shorten resume. |
| SIB18 | 17 | Group IDs for Network selection (GINs) | SNPN selection using credentials from a separate credentials holder. |
| SIB19 | 17 | NTN configuration: serving satellite ephemeris, ta-Common, k-Offset, epoch time | Mandatory on any non-terrestrial cell; a UE cannot transmit uplink without it. |
| SIB20 | 17 | MBS broadcast control channel (MCCH) configuration | To find the MCCH and, through it, the MBS broadcast services. |
| SIB21 | 17 | MBS 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.
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.
| Field | Type / range | Scope | What it controls |
|---|---|---|---|
schedulingInfoList | SEQUENCE (SIZE (1..maxSI-Message)) OF SchedulingInfo, maxSI-Message = 32 | The whole cell | The 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 slots | All SI messages in the cell | How 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, optional | All notBroadcasting messages | Present -> UEs request SI with a dedicated MSG1 preamble. Absent -> UEs request with MSG3 RRCSystemInfoRequest (§7). |
si-RequestConfigSUL | As above, optional | SUL carrier | The same, for a supplementary uplink carrier |
systemInformationAreaID | BIT STRING (SIZE (24)), optional | Cells sharing an SI area | Lets 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
| Field | Type / range | Typical | What it controls |
|---|---|---|---|
si-BroadcastStatus | ENUMERATED {broadcasting, notBroadcasting} | broadcasting for SIB2-SIB5 | Whether 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 s | rf16 or rf32 | How often this message's window recurs. Directly sets the worst-case acquisition delay. |
sib-MappingInfo | SEQUENCE (SIZE (1..maxSIB)) OF SIB-TypeInfo, maxSIB = 32 | one to three SIBs | Which 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), optional | 0 initially | Change counter for stored-SI validity. Absent for the SIBs whose content is inherently transient (SIB6, SIB7, SIB8, SIB9). |
SIB-TypeInfo.areaScope | ENUMERATED {true}, optional | present for SIB3/SIB4 in many deployments | Present -> 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.
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:
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 = 80Within 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.
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
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:
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:
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.
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.
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.
sib-MappingInfo at all. A SIB that is simply not listed cannot be requested.| Situation | What the UE does | What appears in the gNB log |
|---|---|---|
SIB listed, si-BroadcastStatus = broadcasting | Compute the window, monitor SI-RNTI, decode | Nothing. Broadcast reception is invisible to the network. |
SIB listed, notBroadcasting, si-RequestConfig present in SIB1 | Send a dedicated preamble on a PRACH occasion from rach-ConfigSI; expect a RAR with only a RAPID subheader | A 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 absent | Run ordinary CBRA and send RRCSystemInfoRequest on CCCH in MSG3 | A complete four-message RACH with an RRCSystemInfoRequest in MSG3 and no RRCSetup in MSG4 |
SIB not listed in any sib-MappingInfo | Conclude the cell does not provide it; do not request | Nothing at all |
SIB listed and notBroadcasting, but the UE is in RRC_CONNECTED | Use DedicatedSIBRequest on SRB1 (Rel-16), if supported | An 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.
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
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.
| Field | Type / range | What 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 periods | Spreads 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), optional | Which association period within the SI request period this resource lives in |
si-RequestResources[i].ra-ssb-OccasionMaskIndex | INTEGER (0..15), optional | Restricts 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.
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:
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.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.
| Condition | Test | Fails when | Consequence of failure |
|---|---|---|---|
| Age | Less than 3 hours since the SIB was last confirmed valid | The UE has been camped or out of coverage for longer | Re-acquire, even if nothing changed. Prevents indefinite trust in a value nobody re-checked. |
| Content version | The valueTag in the current SIB1's sib-MappingInfo equals the valueTag stored with the SIB | The network incremented the tag because the content changed | Re-acquire that SIB only. Other SIBs with unchanged tags stay valid. |
| Scope | For 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 all | Re-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.
| areaScope | systemInformationAreaID in the cell | Validity | Typical use |
|---|---|---|---|
| absent | any | This cell only -- PLMN + cellIdentity | Anything genuinely cell-specific: SIB3's per-cell offsets in a cell with unusual neighbours |
| present | present, same value as stored | The whole SI area | SIB2, SIB4, SIB5 in a homogeneous cluster -- the intended case |
| present | present, different value | Invalid; re-acquire | Crossing an SI area boundary |
| present | absent | Invalid; re-acquire in every cell | A 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.
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
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 = 0modificationPeriodCoeff = 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.
stopPagingMonitoring was added in Rel-17 for extended-DRX UEs; in a Rel-15 decoder that bit reads as spare.valueTag in SIB1, which is why UEs re-read SIB1 periodically regardless.| Short Message bit | Name | Meaning | UE reaction |
|---|---|---|---|
| 1 | systemInfoModification | BCCH content other than SIB6, SIB7 and SIB8 will change at the next modification period boundary | Re-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 broadcast | Acquire SIB6, SIB7 and/or SIB8 immediately -- no boundary wait (§10) |
| 3 | stopPagingMonitoring (Rel-17) | The UE may stop monitoring paging for the rest of the current paging occasion sequence | A power-saving hint; nothing to do with SI |
| 4-8 | spare | -- | 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.
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.
| Property | Ordinary SIBs | SIB6 / SIB7 / SIB8 |
|---|---|---|
| Change signalling | systemInfoModification bit, effective at the next modification period boundary | etwsAndCmasIndication bit, effective immediately |
valueTag | Present; stored SI reused while the tag matches | Absent -- there is no stored-SI concept, every notification is new |
| Stored across cells | Yes, subject to area scope | No; the notification is acquired where it is received |
Typical si-Periodicity | rf16 to rf64 | Short (rf8 is common) while a warning is active, and the SI message is usually removed from air afterwards |
| Segmentation | Not applicable | SIB7 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.
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:
| Occasion | What is acquired | Why | Cost |
|---|---|---|---|
| Cell reselection into a new cell | MIB + 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 differ | One SIB1 read; more if the SI area changed. This is what area scoping exists to minimise. |
| Return from out of coverage | SIB1, plus anything whose stored copy aged out | The UE cannot know what changed while it was away | One SIB1 read, plus re-acquisition of any SIB older than 3 hours |
systemInfoModification notification | SIB1, then every SIB whose valueTag moved | Explicit 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 / SIB8 | Emergency (§10) | Immediate, no boundary wait |
| Periodic re-check while camped | SIB1 | Insurance 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 hours | That SIB | Hard validity limit TS 38.331 cl. 5.2.2.2.1 | One window wait for the affected SI message |
| A new function needs a SIB the UE never acquired | The SI message containing it, requested on demand if necessary | For example a sidelink application starting on a UE that has been camped for an hour | One window, or a request plus a window (§7) |
| Transition out of RRC_INACTIVE by resume | SIB1 if the UE resumed in a different cell | The resumed configuration is validated against the new cell's SI | One 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:
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 name | Values | Typical | Effect if raised |
|---|---|---|---|
si-WindowLength | s5, s10, s20, s40, s80, s160, s320, s640, s1280 (slots) | s20 or s40 | More 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, rf512 | rf16 or rf32 | Less BCCH capacity consumed, proportionally longer worst-case acquisition delay |
si-BroadcastStatus | broadcasting, notBroadcasting | broadcasting for SIB2-SIB5 | n/a -- but setting notBroadcasting moves the cost from BCCH capacity to per-UE RACH signalling |
systemInformationAreaID | BIT STRING (24), optional | configured per SI area in dense deployments | n/a -- but omitting it disables area scoping entirely, multiplying BCCH reads on every reselection |
valueTag | INTEGER (0..31) | incremented on every content change | n/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, absent | present for SIB2/SIB4/SIB5 | n/a -- must be paired with systemInformationAreaID |
modificationPeriodCoeff | n2, n4, n8, n16 | n4 or n8 | Longer time before an SI change reaches camped UEs; fewer synchronised re-acquisition bursts |
defaultPagingCycle | rf32, rf64, rf128, rf256 | rf128 | Longer 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, sixteen | one or two | SI 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, ms160 | ms20 | Less 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 fails | Who detects it | What the UE does | What it points at |
|---|---|---|---|
| MIB decodes but SIB1 never does | UE RRC | Treats the cell as barred for 300 s and looks elsewhere -- silently TS 38.331 cl. 5.2.2.1 | pdcch-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 unsatisfiable | Nobody | Monitors a window that never occurs; never requests, because si-BroadcastStatus says broadcasting | Number 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 message | Nobody | Waits out every window, then gives up and retries at the next periodicity, indefinitely | Scheduler starvation on BCCH, or an SI message configured with no SIB content behind it |
si-WindowLength longer than si-Periodicity | Config validation, if it is implemented | Undefined -- successive windows of the same message would overlap | The 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 change | Nobody | Keeps using stored SI until the 3-hour limit or the next reselection | The 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 change | Nobody | Every camped UE re-acquires the SIB at the next boundary | A 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 changes | Nobody | Re-acquires SIB1 at the boundary, finds identical valueTag values, does nothing more | As above -- wasted, not harmful |
| SI changed without any notification | Nobody | Continues on stored SI until the 3-hour limit | A change applied outside a modification period boundary. Symptom: a population split between old and new behaviour with no pattern. |
areaScope present, systemInformationAreaID absent | Nobody | Fails the scope test in every cell; re-acquires everywhere | SIB1 template error. Symptom: BCCH read rate several times higher than the reselection rate would suggest. |
Same systemInformationAreaID and valueTag, different content across cells | Nobody | Uses whichever version it happened to acquire first | A 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 range | Nobody | Gets the wrong kind of RAR: a payload-free RAR for an access attempt, or a grant for an SI request | totalNumberOfRA-Preambles versus ra-PreambleStartIndex. Only shows under load. See the companion 03 Random Access document. |
etwsAndCmasIndication set with no warning SIB on air | Nobody | Wakes and searches SI windows on every notification | A cancelled emergency-warning test that was not cleared at the gNB (§10) |
si-RequestConfig present but no PRACH resources actually reserved | UE MAC (no RAR) | Retries the SI request up to the configured attempt limit, then gives up on that SIB | rach-ConfigSI pointing at occasions that do not exist in the uplink configuration |
| Connected-mode UE running on pre-change SI | Nobody | Nothing -- it does not monitor paging and was never told | The 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.
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
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
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
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
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
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
-- 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
| Release | Change | Why it matters when reading SI |
|---|---|---|
| Rel-15 | MIB / SIB1 / Other SI split; si-SchedulingInfo with derived windows; si-BroadcastStatus; both on-demand request paths; valueTag; areaScope; SIB2-SIB9 | The baseline. Everything in §4 to §10 is Rel-15. |
| Rel-16 | DedicatedSIBRequest on SRB1 for RRC_CONNECTED UEs | A connected UE can finally obtain a notBroadcasting SIB. Delivery is by dedicated signalling, so it never appears on BCCH (§7.3). |
| Rel-16 | posSI-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-16 | SIB10 (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-16 | referenceTimeInfo added to SIB9 | SIB9 now carries high-accuracy reference time for TSN, not only time-of-day |
| Rel-17 | si-SchedulingInfo-v1700 with schedulingInfoList2-r17 and an explicit si-WindowPosition | The 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-17 | SIB15 (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-17 | Extended DRX in RRC_IDLE, and stopPagingMonitoring in the Short Message | A 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-18 | Further SIB types and continued extension of SIB-TypeInfo.type | Confirm 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
| Term | Expansion | Meaning in this document |
|---|---|---|
| SI | System Information | Collectively the MIB, SIB1 and all Other SI. Broadcast, unacknowledged, and the only configuration available to a UE with no identity. |
| SIB | System Information Block | One 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 / OSI | Remaining Minimum SI / Other SI | TS 38.300 names for SIB1 and for everything scheduled by si-SchedulingInfo. Common in vendor logs. |
| BCCH | Broadcast Control Channel | The logical channel carrying all SI. Mapped onto BCH for the MIB and DL-SCH for everything else. |
| SI-RNTI | System Information RNTI | Fixed at 0xFFFF. Scrambles the PDCCH CRC for both SIB1 and Other SI. |
| P-RNTI | Paging RNTI | Fixed 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 CSS | Common Search Space | The search spaces in which SIB1 and Other SI grants respectively appear TS 38.213 cl. 10.1. |
| ETWS / CMAS | Earthquake and Tsunami Warning System / Commercial Mobile Alert System | The 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-WindowLengthin 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,
defaultPagingCycleand 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.