>
Home5G NRRRC — Radio Resource ControlMIB & SIB1 IEs
🗂️ RRC — Radio Resource ControlAdvanced

MIB & SIB1 — Every IE Explained in 5G NR

A field-by-field reference for the two bootstrap messages — every MIB IE (on PBCH) and every SIB1 IE (cell access, selection, SI scheduling, servingCellConfigCommon), what each one does and why the UE needs it.

📚 3GPP-basedTS 38.331TS 38.213

The MIB is the smallest RRC message in NR by a wide margin -- 24 bits, including the CHOICE bit -- and SIB1 is one of the largest that a UE receives without any dedicated configuration. Between them they carry every decision a UE has to make before it is allowed to transmit: whether the cell is barred, whether it belongs to a PLMN the UE may use, whether its signal is strong enough, whether this particular access attempt is permitted, and where the PRACH is. Get any of it wrong and the failure is silent: the UE walks away and the gNB never learns it was there.

Contents
  1. 01Why MIB and SIB1 Get Their Own Document
  2. 02The 24-Bit MIB and the 32-Bit PBCH Payload
  3. 03MIB Fields, One at a Time
  4. 04pdcch-ConfigSIB1: Decomposing Eight Bits
  5. 05CORESET#0 and the Type0-PDCCH Monitoring Occasions
  6. 06SIB1: the Whole IE Tree
  7. 07cellAccessRelatedInfo: Who the Cell Belongs To
  8. 08cellSelectionInfo and the S-Criterion, Worked
  9. 09connEstFailureControl: How a Cell Earns a Penalty
  10. 10servingCellConfigCommon in SIB1
  11. 11ue-TimersAndConstants
  12. 12uac-BarringInfo and a Worked Barring Check
  13. 13Failure Modes and What Each One Means
  14. 14ASN.1: MIB and SIB1
  15. 15Illustrative Message Traces
  16. 16Release Deltas: Rel-15 to Rel-18
  17. 17Reading MIB and SIB1 in Logs: A Checklist
  18. 18Glossary
  19. 19References

1. Why MIB and SIB1 Get Their Own Document

The MIB is the smallest RRC message in NR by a wide margin -- 24 bits, including the CHOICE bit -- and SIB1 is one of the largest that a UE receives without any dedicated configuration. Between them they carry every decision a UE has to make before it is allowed to transmit: whether the cell is barred, whether it belongs to a PLMN the UE may use, whether its signal is strong enough, whether this particular access attempt is permitted, and where the PRACH is. Get any of it wrong and the failure is silent: the UE walks away and the gNB never learns it was there.

The two messages also differ in a way that matters constantly when debugging. The MIB is not scheduled -- it is part of the SSB, so a UE that found the SSB has it. SIB1 is scheduled on DL-SCH, which means it needs a control resource set, a search space, a monitoring occasion and a PDCCH grant, and every one of those is derived from eight bits inside the MIB. Section 4 and section 5 are about those eight bits, because they are where cells become undecodable.

This document is deliberately field-by-field. The companion 17 System Information document covers how SIB2 and beyond are scheduled, notified and re-acquired; the companion 01 Registration Process document covers what the UE does with SIB1 once it has it.

💡
Key Point

There is no acknowledgement anywhere in this document. Neither the MIB nor SIB1 is HARQ-protected, neither is retransmitted on demand, and neither produces a UE report on failure. Every fault described in §13 has to be found by reading the configuration and doing the arithmetic. If you are looking for a counter that goes up when SIB1 is broken, there is not one.

2. The 24-Bit MIB and the 32-Bit PBCH Payload

The RRC message on BCCH is BCCH-BCH-Message, and it is exactly 24 bits: one CHOICE bit selecting mib over messageClassExtension, then the 23 bits of the MIB SEQUENCE. MIB has no extension marker -- unusually for TS 38.331 -- which is precisely why it has a fixed length and why it ends in a single explicit spare bit.

BCCH-BCH-Message: All 24 Bits, in ASN.1 Encoding OrderBCCH-BCH-Message: All 24 Bits, in ASN.1 Encoding OrderTS 38.331 -- MIB (23 bits) plus the BCCH-BCH-MessageType CHOICE bit, unaligned PER, no extension marker anywherebit76543210Oct 1CHOICEmib=0systemFrameNumber -- the 6 MSBs of the 10-bit SFNSCSOct 2ssb-SubcarrierOffset (4 LSBs of k_SSB)DMRSCORESET#0 (3 MSBs)Oct 3C#0searchSpaceZero (0..15)BARIFRspSCS = subCarrierSpacingCommon (scs15or60 / scs30or120). DMRS = dmrs-TypeA-Position (pos2 / pos3).CORESET#0 = controlResourceSetZero, 4 bits straddling octets 2 and 3. BAR = cellBarred. IFR = intraFreqReselection.sp = spare. MIB has no extension marker, which is exactly why it is 23 bits and why the spare bit exists.
Figure 1. All 24 bits in encoding order. controlResourceSetZero straddles the boundary between octets 2 and 3, which is where hand-decoding a MIB hex dump usually goes wrong.
FieldBitsEncoded valueMeaning
BCCH-BCH-MessageType CHOICE10 = mib, 1 = messageClassExtensionA CHOICE with two alternatives and no extension marker, so one bit. No release has ever used the second alternative.
systemFrameNumber
6The 6 MSBs of the 10-bit SFNThe 4 LSBs are not in the ASN.1 at all -- see below
subCarrierSpacingCommon
1scs15or60 / scs30or120The SCS for SIB1, MSG2 and MSG4 of Random Access, and paging. Which of the two values in each pair applies is decided by the frequency range.
ssb-SubcarrierOffset
40..15The 4 LSBs of k_SSB. The 5th bit is in the PBCH payload for FR1.
dmrs-TypeA-Position
1pos2 / pos3Symbol of the first DM-RS for PDSCH mapping type A. Wrong value = SIB1, MSG2 and MSG4 all fail to demodulate.
pdcch-ConfigSIB1
8Two INTEGER (0..15) in sequencecontrolResourceSetZero then searchSpaceZero (§4)
cellBarred
1barred / notBarredAbsolute. A barred cell is excluded for 300 s.
intraFreqReselection
1allowed / notAllowedWhether the 300 s exclusion of a barred cell extends to other cells on the same frequency
spare
10Exists only because 23 bits of content had to fill a fixed 24-bit message

Table 1. BCCH-BCH-Message accounting: 1 + 6 + 1 + 4 + 1 + 8 + 1 + 1 + 1 = 24 bits exactly TS 38.331.

2.1 The eight bits the physical layer adds

The PBCH transmits a 32-bit payload, not 24 TS 38.212 cl. 7.1.1. The physical layer appends eight bits that do not exist anywhere in the ASN.1, and they carry information the MIB could not: they change from one SSB to the next inside the same MIB transmission period, which is exactly why they cannot be in a message whose content is fixed for 80 ms.

The 32-Bit PBCH Payload: 24 Bits of MIB Plus 8 Physical-Layer BitsThe 32-Bit PBCH Payload: 24 Bits of MIB Plus 8 Physical-Layer BitsTS 38.212 cl. 7.1.1 -- the physical layer appends eight bits the ASN.1 does not containbit76543210Oct 1BCCH-BCH-Message, octet 1 of 3 (a_0 .. a_7)Oct 2BCCH-BCH-Message, octet 2 of 3 (a_8 .. a_15)Oct 3BCCH-BCH-Message, octet 3 of 3 (a_16 .. a_23)Oct 4SFN LSBs 4,3,2,1HFk_SSB MSBor SSB idxHF = half-frame bit. The last three bits are conditional: for L_max = 4 or 8 (FR1) they carry the 5th bit of k_SSB plustwo reserved bits; for L_max = 64 (FR2) they carry the three MSBs of the SS/PBCH block index. The three LSBs of theSSB index are never in the payload at all -- the UE recovers them from which PBCH DMRS hypothesis correlates.
Figure 2. The 32-bit payload. The upper 24 bits are the RRC message and are identical across every SSB in the burst; the lower 8 change per SSB and per half-frame.
Added bitsCountContentWhy it cannot be in the MIB
SFN LSBs4The 4 least significant bits of the 10-bit SFNThe MIB is the same in every SSB across an 80 ms period, which spans eight radio frames -- so the low SFN bits change while the MIB does not
Half-frame bit1Which half of the radio frame this SSB is inSame reason: two SSB bursts can occur in one radio frame
Conditional field3For L_max = 4 or 8 (FR1): the MSB of k_SSB plus two reserved bits.

For L_max = 64 (FR2): the three MSBs of the SS/PBCH block index.

The SSB index differs per SSB by definition. k_SSB needs a 5th bit only on FR1, where its range is 0..23 in 15 kHz subcarriers -- so the same three bits do two different jobs depending on frequency range.

Table 2. The PBCH extra bits TS 38.212 cl. 7.1.1. 24 + 8 = 32 bits, which is then CRC-attached, polar-coded and rate-matched onto the PBCH resource elements.

2.2 Where the SSB index actually comes from

Even with the three conditional bits, the low bits of the SSB index are never transmitted in the payload. They are carried by the PBCH DMRS sequence, whose initialisation depends on the candidate SSB index TS 38.211 cl. 7.4.1.4.1:

PBCH DMRS sequence initialisation, TS 38.211 cl. 7.4.1.4.1
c_init = 2^11 x (i_SSB + 1) x (FLOOR(N_ID_cell / 4) + 1)
       + 2^6  x (i_SSB + 1)
       + (N_ID_cell mod 4)

  L_max = 4        i_SSB = (SSB index mod 4) + 4 x n_hf
  L_max = 8 or 64  i_SSB = SSB index mod 8

  n_hf = half-frame number, 0 or 1

The UE correlates against each i_SSB hypothesis; whichever one produces a
successful PBCH decode is the SSB index (and, for L_max = 4, also the
half frame). For L_max = 64 the three MSBs then come from the payload.
📘
Spec Detail

So the SSB index reaches the UE by three different mechanisms at once, depending on frequency range: the 3 LSBs via the DMRS scrambling hypothesis, the 3 MSBs via the PBCH payload on FR2, and -- for L_max = 4 only -- the half-frame folded into i_SSB as well. This is why an analyser that reports an SSB index for an FR2 cell has done more work than one that reports it for FR1, and why an SSB index shown alongside a hex dump of the MIB cannot have come from that dump.

The payload itself is scrambled with a sequence initialised from the cell ID, and the scrambling position depends on low SFN bits TS 38.212 cl. 7.1.2 -- so a UE that does not yet know the SFN tries several hypotheses across the 80 ms PBCH transmission period. A subset of the added bits is excluded from scrambling so that the UE can recover the timing information it needs to pick the right hypothesis.

3. MIB Fields, One at a Time

FieldRangeCommon valueEffect, and what a wrong value does
systemFrameNumber
BIT STRING (6) -- the SFN MSBscounts 0..1023 with the PBCH LSBsFrame timing for everything: paging occasions, SI windows, PRACH occasion periodicity. A wrong value puts the UE on a different frame boundary from the cell and nothing works.
subCarrierSpacingCommon
scs15or60, scs30or120scs30or120 on FR1 mid-band, scs15or60 on low bandThe SCS of the initial DL BWP, and so of SIB1, paging, MSG2 and MSG4. It is not necessarily the SCS of user-plane traffic later on.
ssb-SubcarrierOffset (k_SSB)INTEGER (0..15) in the MIB; 0..23 on FR1 with the PBCH bit, 0..11 on FR20 to 11The frequency offset from subcarrier 0 of common RB 0 of the SSB to subcarrier 0 of the SSB. Units are 15 kHz on FR1 regardless of the SSB SCS, and the SSB SCS on FR2. Wrong value = the UE looks for CORESET#0 in the wrong place.
k_SSB above range24..31 on FR1, 12..15 on FR2not usedIndicates that SIB1 is not transmitted with this SSB. pdcch-ConfigSIB1 is then reinterpreted as frequency-position information for an SSB that does carry SIB1, or as a range where none does TS 38.213 cl. 13.
dmrs-TypeA-Position
pos2, pos3
pos2
Symbol index of the first PDSCH DM-RS for mapping type A. A mis-signalled value makes the receiver look for reference symbols where there are none, so SIB1 fails with a clean CRC error rather than a coverage-like degradation.
pdcch-ConfigSIB1
INTEGER pair, each 0..15see §4The entire CORESET#0 and searchSpaceZero configuration (§4, §5)
cellBarred
barred, notBarred
notBarred
barred excludes the cell for 300 s. Used deliberately for maintenance, and set automatically by many gNBs when they lose their N2 connection -- which is a useful diagnostic: a barred cell that is otherwise healthy usually means the core is unreachable.
intraFreqReselection
allowed, notAllowed
allowed
notAllowed extends the 300 s exclusion of a barred cell to all intra-frequency cells, pushing the UE to a different frequency or RAT. Setting it in a single-carrier deployment strands the UE.
spare
BIT STRING (1)0Nothing. Its presence is what makes the message exactly 24 bits.

Table 3. MIB fields with ranges, typical values and consequences. Only two of the nine carry configuration the UE keeps after SIB1 arrives; the rest exist to get SIB1 decoded.

⚠️
Common Pitfall

subCarrierSpacingCommon values are pairs -- scs15or60 and scs30or120 -- because the same bit means different things in FR1 and FR2. On FR1 it selects 15 or 30 kHz; on FR2 it selects 60 or 120 kHz. A decoder that prints the enumerator name rather than the resolved value is not being unhelpful, it genuinely cannot resolve it without knowing the band. Resolve it yourself from the ARFCN before using it in any arithmetic.

4. pdcch-ConfigSIB1: Decomposing Eight Bits

PDCCH-ConfigSIB1 is a SEQUENCE of two INTEGER (0..15), so it encodes as four bits then four bits, controlResourceSetZero first. In a log it usually appears as a single decimal number -- and the first thing to do with that number is split it.

pdcch-ConfigSIB1 = 152 Decimal: One Octet, Two Table Indicespdcch-ConfigSIB1 = 152 Decimal: One Octet, Two Table IndicesPDCCH-ConfigSIB1 is a SEQUENCE of two INTEGER (0..15), so it encodes as 4 + 4 bits with controlResourceSetZero firstbit76543210Oct 1pdcch-ConfigSIB1 = 152 = 0x98 = 1001 1000Oct 21 0 0 1 = 9controlResourceSetZero1 0 0 0 = 8searchSpaceZeroOct 3-> TS 38.213 Table 13-1 row 9:48 RB, 2 symbols, offset 16 RB-> TS 38.213 Table 13-11 row 8:O = 0, M = 1, first symbol 1Which table row 9 refers to depends on the {SS/PBCH block, PDCCH} subcarrier-spacing pair and the band's minimumchannel bandwidth. The values shown are for {15, 15} kHz in FR1. Read the wrong table and every number downstreamis wrong.
Figure 3. pdcch-ConfigSIB1 = 152 in full. Neither nibble means anything on its own: each is a row index into a table selected by the subcarrier-spacing pair and the band's minimum channel bandwidth.
🧮
Worked Calculation

pdcch-ConfigSIB1 = 152

152 = 0x98 = 1001 1000 binary

controlResourceSetZero = 152 >> 4 = 1001b = 9

searchSpaceZero = 152 & 0x0F = 1000b = 8

And the value the original of this document used, for comparison:

pdcch-ConfigSIB1 = 24 = 0x18 = 0001 1000

controlResourceSetZero = 24 >> 4 = 0001b = 1

searchSpaceZero = 24 & 0x0F = 1000b = 8

Same searchSpaceZero, a completely different CORESET#0: index 9 gives a 48-RB, 2-symbol CORESET at offset 16, while index 1 gives a 24-RB, 2-symbol CORESET at offset 2 (Table 13-1). The two cells look nearly identical in a log and place their control channel in entirely different places.

4.1 The CORESET#0 table

controlResourceSetZero indexes one of Tables 13-1 to 13-10 of TS 38.213, selected by the {SS/PBCH block, PDCCH} subcarrier spacing pair and, for the FR1 tables, the band's minimum channel bandwidth. Every row gives four things: the SSB-to-CORESET multiplexing pattern, the number of resource blocks, the number of symbols, and an RB offset.

IndexPatternN_RBN_symbOffset (RB)Notes
012420Narrowest and cheapest; fits a 5 MHz channel
112422
212424
312430Three symbols buys coding gain for the SIB1 grant at the cost of PDSCH symbols
412432
512434
614811248 RB needs at least a 10 MHz channel
7148116
8148212
9148216The worked example in §4 and §5
10148312
11148316
1219613896 RB needs at least a 20 MHz channel
13196238
14196338
15--------Reserved

Table 4. TS 38.213 Table 13-1, for {SS/PBCH block, PDCCH} SCS = {15, 15} kHz in bands with a 5 MHz or 10 MHz minimum channel bandwidth. Other SCS pairs use different tables with different values -- always confirm which table applies before using a row.

The offset is measured in resource blocks, from the lowest RB of CORESET#0 up to the lowest RB of the SSB. Combined with k_SSB, which gives the sub-RB alignment, that fixes the CORESET's absolute position in the carrier.

4.2 The searchSpaceZero table

IndexOMFirst symbol indexEffect
0010One occasion per slot, starting at symbol 0
1020 and N_symb^CORESETTwo occasions per slot, back to back
2210Offset by 2 slots (scaled by 2^mu)
3220 and N_symb^CORESET
4510
5520 and N_symb^CORESETThe worked example in §5.2
6710
7720 and N_symb^CORESET
8011Leaves symbol 0 free; the worked example in §5.1
9511
10012Leaves symbols 0 and 1 free
11512
12211
13212
14711
15712

Table 5. TS 38.213 Table 13-11, for SSB-and-CORESET multiplexing pattern 1. O is a slot offset, M the number of monitoring occasions per slot. Patterns 2 and 3 (FR2 only) use Tables 13-12 and 13-13 and place occasions relative to the SSB instead.

5. CORESET#0 and the Type0-PDCCH Monitoring Occasions

With the two table rows in hand, the UE knows where in frequency to look and when in time. Frequency first:

CORESET#0 Relative to the SSB, from controlResourceSetZero = 9CORESET#0 Relative to the SSB, from controlResourceSetZero = 948 RB, 2 symbols, offset = 16 RB; first symbol index 1 from searchSpaceZero = 8SSB frequency extent, 20 RBCORESET#048 RBx 2 symCORESET#0 reaches 12 RB above the SSB's highest RBoffset = 16 RB, measured from the CORESET's lowest RBup to the lowest RB of the SSBC#0 highSSB highSSB lowC#0 low012345678910111213OFDM symbol within the Type0-PDCCH monitoring slotFrequency, in groups of 4 common resource blocksCORESET#0SSB frequency extent (a different slot)Rest of the initial DL BWPCORESET#0 is wider than the SSB on both sides, which is normal: the UE finds it from the offset alone, and theoffset is measured between their lowest resource blocks, not their centres.
Figure 4. CORESET#0 from index 9: 48 RB, 2 symbols, offset 16. It is wider than the SSB on both sides, which is normal -- the SSB is 20 RB and CORESET#0 is sized for a PDCCH grant, not for the SSB. CORESET#0 must fit entirely inside the carrier; an index whose N_RB or offset pushes it past either edge makes SIB1 undecodable and the cell effectively invisible.

5.1 Monitoring occasions, worked once

For SSB-and-CORESET multiplexing pattern 1 -- the only pattern used in FR1 -- the Type0-PDCCH common search space occasions are computed from O, M and the SSB index TS 38.213 cl. 13:

Type0-PDCCH monitoring occasions, pattern 1
n_0 = ( O x 2^mu + FLOOR( i x M ) )  mod  N_slot_frame

and the system frame parity:

  if  FLOOR( ( O x 2^mu + FLOOR(i x M) ) / N_slot_frame )  mod 2  = 0
         -> the occasion is in a radio frame with  SFN mod 2 = 0
  else   -> the occasion is in a radio frame with  SFN mod 2 = 1

The UE monitors two consecutive slots starting from n_0.

  i             SS/PBCH block index
  O, M          from searchSpaceZero (Table 13-11)
  mu            numerology of the PDCCH SCS
  N_slot_frame  slots per radio frame = 10 x 2^mu
🧮
Worked Calculation

searchSpaceZero = 8, so O = 0, M = 1, first symbol index 1. 15 kHz PDCCH SCS, so mu = 0 and N_slot_frame = 10. Four SSBs (L_max = 4, FR1 below 3 GHz):

i = 0: n_0 = (0 x 1 + 0) mod 10 = 0 FLOOR(0/10) = 0 -> even SFN

i = 1: n_0 = (0 x 1 + 1) mod 10 = 1 FLOOR(1/10) = 0 -> even SFN

i = 2: n_0 = (0 x 1 + 2) mod 10 = 2 FLOOR(2/10) = 0 -> even SFN

i = 3: n_0 = (0 x 1 + 3) mod 10 = 3 FLOOR(3/10) = 0 -> even SFN

So a UE that selected SSB #2 monitors slots 2 and 3 of every even radio frame, at symbols 1 and 2 (first symbol index 1, N_symb = 2). Everything fits inside one radio frame, and every occasion is in an even frame.

5.2 The same arithmetic when it overflows the frame

Change the numerology and the beam count and the picture changes completely -- which is why the SFN-parity half of the formula exists:

🧮
Worked Calculation

searchSpaceZero = 5, so O = 5, M = 2, first symbols {0, N_symb}. 30 kHz PDCCH SCS, so mu = 1 and N_slot_frame = 20. Eight SSBs (L_max = 8):

O x 2^mu = 5 x 2 = 10

i = 0: 10 + 0 = 10 n_0 = 10 FLOOR(10/20) = 0 -> even SFN

i = 1: 10 + 2 = 12 n_0 = 12 FLOOR(12/20) = 0 -> even SFN

i = 2: 10 + 4 = 14 n_0 = 14 FLOOR(14/20) = 0 -> even SFN

i = 3: 10 + 6 = 16 n_0 = 16 FLOOR(16/20) = 0 -> even SFN

i = 4: 10 + 8 = 18 n_0 = 18 FLOOR(18/20) = 0 -> even SFN

i = 5: 10 + 10 = 20 n_0 = 0 FLOOR(20/20) = 1 -> odd SFN

i = 6: 10 + 12 = 22 n_0 = 2 FLOOR(22/20) = 1 -> odd SFN

i = 7: 10 + 14 = 24 n_0 = 4 FLOOR(24/20) = 1 -> odd SFN

The last three beams' occasions have wrapped into the following radio frame. A UE on SSB #6 monitors slots 2 and 3 of odd frames only -- and sees nothing at all in even frames.

Type0-PDCCH Monitoring Occasions, One per SSB IndexType0-PDCCH Monitoring Occasions, One per SSB IndexsearchSpaceZero = 5 -> O = 5, M = 2, first symbols {0, N_symb}; n_0 = (O x 2^mu + FLOOR(i x M)) mod N_slotSSB #010,11SSB #112,13SSB #214,15SSB #316,17SSB #418,19SSB #50,1SSB #62,3SSB #74,5SFN boundary: even frame -> odd frame0510152025303540Slot index across two consecutive radio frames (30 kHz SCS, 20 slots per frame)With eight SSBs and M = 2 the occasions spill past slot 19 and land in the following radio frame, which is whatthe SFN-parity half of the formula is for. A UE that has locked onto SSB #6 monitors slots 2 and 3 of odd framesonly -- so a TDD pattern that makes those slots uplink silently removes SIB1 for that beam.
Figure 5. The §5.2 example drawn out. Each beam gets its own two-slot occasion, and the SFN parity is what keeps eight beams from colliding in a twenty-slot frame.
⚠️
Common Pitfall

In TDD, those computed slots have to be downlink slots. A tdd-UL-DL-ConfigurationCommon pattern that makes slot 2 and slot 3 uplink removes SIB1 for beam #6 in the §5.2 example, and only for beam #6. The symptom is a cell that works from most directions and is completely dead from one -- with no RACH, no measurement report and nothing in the gNB log, because every UE on that beam fails SIB1 acquisition and treats the cell as barred. Cross-check the computed occasions against the TDD pattern for every SSB index, not just SSB #0.

6. SIB1: the Whole IE Tree

SIB1 IE treeSIB1: the Whole IE TreeTS 38.331 cl. 6.2.2 -- every branch except cellAccessRelatedInfo is OPTIONALcellAccessRelatedInfoplmn-IdentityInfoList { plmn-IdentityList,trackingAreaCode, ranac, cellIdentity,cellReservedForOperatorUse },cellReservedForOtherUsecellSelectionInfoq-RxLevMin, q-RxLevMinOffset,q-RxLevMinSUL, q-QualMin, q-QualMinOffsetconnEstFailureControlconnEstFailCount, connEstFailOffset,connEstFailOffsetValiditysi-SchedulingInfoschedulingInfoList, si-WindowLength,si-RequestConfig, systemInformationAreaIDservingCellConfigCommondownlinkConfigCommon { frequencyInfoDL,initialDownlinkBWP, bcch-Config, pcch-Config },uplinkConfigCommon { frequencyInfoUL,initialUplinkBWP, timeAlignmentTimerCommon },ssb-PositionsInBurst, ssb-PeriodicityServingCell,tdd-UL-DL-ConfigurationCommon, ss-PBCH-BlockPowerue-TimersAndConstantst300, t301, t310, n310, t311, n311, t319uac-BarringInfouac-BarringForCommon, uac-BarringPerPLMN-List,uac-BarringInfoSetList, uac-AccessCategory1-SelectionAssistanceInfoSIB1Only cellAccessRelatedInfo is mandatory. A legal SIB1 can therefore omit cellSelectionInfo (no S-criterion thresholds),si-SchedulingInfo (no other SI), servingCellConfigCommon (no RACH configuration, so the cell cannot be accessed) andue-TimersAndConstants (UE defaults apply).
Figure 6. SIB1's top-level structure. Everything except cellAccessRelatedInfo is OPTIONAL, and each omission has a specific consequence rather than a generic one -- see the note below.
Top-level IEPresencePurposeWhat its absence means
cellSelectionInfo
OThe S-criterion thresholds: q-RxLevMin, q-QualMin and their offsetsNo level or quality threshold is signalled, so the UE applies the defaults in TS 38.304. q-QualMin absent means Q_qualmin is treated as negative infinity, so the Squal test always passes.
cellAccessRelatedInfo
MPLMN list, TAC, RAN area code, cell identity, operator-reservation flagsCannot be absent. This is the only mandatory IE in SIB1.
connEstFailureControl
OHow many failed establishment attempts earn a cell a penalty, how large the penalty is, and how long it lastsNo penalty is ever applied, so a cell that consistently fails establishment keeps being reselected to (§9)
si-SchedulingInfo
OThe schedule for every other SIBThe cell provides no Other SI at all. See the companion 17 System Information document.
servingCellConfigCommon
ODownlink and uplink common configuration, SSB positions and periodicity, TDD pattern, SSB transmit powerThe cell cannot be accessed -- there is no rach-ConfigCommon, so there is no PRACH configuration. Legal, and used for cells that exist only as SCells.
ims-EmergencySupport
OIMS emergency call support over this cellThe UE assumes emergency calls over IMS are not supported here
eCallOverIMS-Support
OeCall over IMS supportSame, for eCall
ue-TimersAndConstants
OT300, T301, T310, N310, T311, N311, T319The UE applies its own default values (§11)
uac-BarringInfo
OUnified access control: barring factors, times and per-category mappingsNo access barring at all in this cell (§12)
useFullResumeID
OWhether RRCResumeRequest1 with a full 40-bit I-RNTI is used instead of the short formThe short I-RNTI form applies. See the companion 14 RRC States document.

Table 6. SIB1 top-level IEs TS 38.331 cl. 6.2.2. M = mandatory, O = optional. The absence of servingCellConfigCommon is the one worth remembering: it turns a visible cell into an unusable one.

7. cellAccessRelatedInfo: Who the Cell Belongs To

This is the only mandatory IE, and its structure has one subtlety that trips people up: the PLMN list is a list of lists. plmn-IdentityInfoList holds up to twelve PLMN-IdentityInfo entries, and each of those holds up to twelve PLMN identities that all share the same TAC, RAN area code, cell identity and reservation flags.

FieldType / rangeScopeMeaning and consequence
plmn-IdentityList
1..12 PLMN-Identity, each MCC (3 digits, optional) + MNC (2 or 3 digits)Per PLMN-IdentityInfo entryThe PLMNs this entry describes. RRCSetupComplete's selectedPLMN-Identity is a 1-based index into the flattened list across all entries, which is why resolving it needs the SIB1 from the same cell.
trackingAreaCode
BIT STRING (SIZE (24)), optionalPer entryThe TAC these PLMNs use for this cell. Absence means the cell supports only PSCell and SCell functionality -- it cannot be camped on for normal service.
ranac
INTEGER (0..255), optionalPer entryRAN Area Code, used for RAN-based notification of RRC_INACTIVE UEs. Absence means the cell is not part of a RAN notification area.
cellIdentity
BIT STRING (SIZE (36))Per entryThe NR Cell Identity. Combined with the PLMN it forms the NCGI. The split between gNB ID and cell ID within the 36 bits is an operator choice (gNB-ID-Length is 22 to 32 bits), so the same 36-bit value means different things in different networks.
cellReservedForOperatorUse
reserved, notReservedPer entryreserved means only UEs with Access Identity 11 or 15 may treat the cell as a candidate; every other UE behaves as if it were barred TS 38.304 cl. 5.3.1. Per-PLMN, so a shared cell can be reserved for one operator's staff and open to another's subscribers.
cellReservedForOtherUse
true, optionalThe whole celltrue means the UE behaves as if the cell is barred, for every PLMN. Unlike cellBarred in the MIB this is not time-limited to 300 s -- it holds as long as the SIB1 says so.

Table 7. CellAccessRelatedInfo and PLMN-IdentityInfo TS 38.331. The three reservation and barring mechanisms -- cellBarred, cellReservedForOtherUse and cellReservedForOperatorUse -- are independent and applied in that order.

The Access Decision, Field by FieldThe Access Decision, Field by FieldMIB and SIB1 fields in the order TS 38.304 cl. 5.2 and 5.3.1 apply themMIB decodednoBarred 300 s.intraFreqReselectiondecides the scopecellBarred = notBarred?yesnoTreated as barredfor 300 s -- silentlySIB1 decoded?yespresentBehave as ifbarredcellReservedForOtherUse absent?absentnoNot a candidatefor this PLMNSelected PLMN inplmn-IdentityInfoList?yesnoBehave as ifbarredcellReservedForOperatorUse= notReserved, or UE hasAccess Identity 11 / 15?yesnoSCell / PSCelluse onlytrackingAreaCode presentfor that PLMN?yesnoNot asuitable cellSrxlev > 0 and Squal > 0 ?yesSuitable: camp, then apply uac-BarringInfo per attemptSeven gates, five of them decided by a single field each. Every left-hand and right-hand outcome is invisible to the gNB,because the UE reaches it before transmitting anything.
Figure 7. All seven gates in the order TS 38.304 applies them. Five are decided by a single field. Every outcome except the last is reached before the UE transmits anything, so none of them appears in a gNB log.
⚠️
Common Pitfall

An entry in plmn-IdentityInfoList with no `trackingAreaCode` is not a broken entry. It means the cell offers that PLMN for SCell or PSCell use only -- carrier aggregation and dual connectivity -- and cannot be camped on. A UE will therefore measure the cell, report it, and be added to it as a secondary cell, while never once selecting it. If a cell shows plenty of measurement activity and zero RACH, check for a missing TAC before checking anything else.

8. cellSelectionInfo and the S-Criterion, Worked

cellSelectionInfo carries five values, and four of the five are optional. Their units are the single most common source of misreading in the whole of SIB1.

FieldASN.1 rangeUnitDefault if absentFeeds into
q-RxLevMin
INTEGER (-70..-22)2 dBm -- actual dBm = 2 x the field valueMandatory within cellSelectionInfoQ_rxlevmin in Srxlev
q-RxLevMinOffset
INTEGER (1..8)2 dB0 dBAdded to Q_rxlevmin, and applied only when the UE is searching for a higher-priority PLMN while camped in a VPLMN
q-RxLevMinSUL
INTEGER (-70..-22)2 dBmNot applicableThe SUL-carrier variant of Q_rxlevmin, used when the UE selects the supplementary uplink
q-QualMin
INTEGER (-43..-20)1 dBnegative infinity, so the Squal test always passesQ_qualmin in Squal
q-QualMinOffset
INTEGER (1..8)1 dB0 dBAdded to Q_qualmin, same VPLMN condition as q-RxLevMinOffset

Table 8. CellSelectionInfo fields TS 38.331. Note that q-RxLevMin and q-RxLevMinOffset are in 2 dB units while q-QualMin and q-QualMinOffset are in 1 dB units -- the two halves of the same IE use different scalings.

Cell suitability, TS 38.304 cl. 5.2.3.2
Srxlev = Q_rxlevmeas - (q-RxLevMin x 2 + q-RxLevMinOffset x 2)
                     - Pcompensation - Qoffset_temp          > 0

Squal  = Q_qualmeas  - (q-QualMin + q-QualMinOffset)
                     - Qoffset_temp                          > 0

  Q_rxlevmeas   measured SS-RSRP                                  [dBm]
  Q_qualmeas    measured SS-RSRQ                                  [dB]
  Pcompensation max(P_EMAX - P_PowerClass, 0)                     [dB]
                P_EMAX from p-Max in frequencyInfoUL, or the band default
                P_PowerClass from the UE's power class (23 dBm for cl. 3)
  Qoffset_temp  0, or connEstFailOffset while its validity timer runs (S9)

A cell is *suitable* only if BOTH are strictly greater than zero.
🧮
Worked Calculation

q-RxLevMin = -60, q-QualMin = -18, no offsets, UE power class 3, p-Max = 23 dBm.

Measured: SS-RSRP = -102 dBm, SS-RSRQ = -11 dB.

Q_rxlevmin = 2 x (-60) = -120 dBm

Pcompensation = max(23 - 23, 0) = 0 dB

Qoffset_temp = 0 dB

Srxlev = -102 - (-120) - 0 - 0 = +18 dB > 0 OK

Squal = -11 - ( -18) - 0 = +7 dB > 0 OK

Now raise p-Max to 26 dBm, as a cell configured for high-power UEs might:

Pcompensation = max(26 - 23, 0) = 3 dB

Srxlev = -102 + 120 - 3 - 0 = +15 dB > 0 still OK

Squal = unchanged at +7 dB

Pcompensation is the cell telling a power-class-3 UE "you cannot reach me at the power I am assuming", so it raises the bar by exactly the shortfall.

🧮
Worked Calculation

Same cell, but the UE has just had two connection establishment failures here and connEstFailOffset = 10 dB is in force (§9):

Qoffset_temp = 10 dB, applied to both criteria

Srxlev = -102 + 120 - 0 - 10 = +8 dB > 0 OK

Squal = -11 + 18 - 10 = -3 dB < 0 FAILS

The cell is no longer suitable, and it failed on quality while its level margin still looked comfortable. Because q-QualMin has a much narrower usable range than q-RxLevMin, Qoffset_temp almost always bites Squal first. Setting connEstFailOffset from the level margin alone is how a cell gets excluded harder than intended.

Srxlev and Squal Under Four ConditionsSrxlev and Squal Under Four Conditionsq-RxLevMin = -60 (= -120 dBm), q-QualMin = -18 dB, UE power class 3-505101520Margin above the criterion (dB); below zero = not suitable187Good coverage157p-Max 26 dBm8-3After 2 failures22Cell edgeSrxlev (dB)Squal (dB)Qoffset_temp is subtracted from both criteria, so a cell can fail on quality while its level margin still lookscomfortable -- the third group is exactly that case, and it is why both inequalities have to be checked.
Figure 8. The three worked cases plus a cell-edge case (SS-RSRP -118 dBm, SS-RSRQ -16 dB). Qoffset_temp is subtracted from both criteria, so the third column fails on quality with 8 dB of level margin still in hand.
⚠️
Common Pitfall

A logged q-RxLevMin of -70 does not mean -70 dBm. It means 2 x (-70) = -140 dBm, which is below the thermal noise floor of any bandwidth a UE will measure in -- so the level half of the S-criterion is effectively disabled and every cell the UE can hear at all is suitable. That is occasionally intentional in a lab, and in a live network it is almost always a default nobody filled in. Reading the raw integer as dBm produces exactly the opposite conclusion, which is why this one field generates so many wrong answers.

9. connEstFailureControl: How a Cell Earns a Penalty

A cell can pass the S-criterion comfortably and still be unable to admit anyone -- because its PRACH is misconfigured, because it has no N2 connection, or because it is simply overloaded. connEstFailureControl is the mechanism that lets a UE stop trying without waiting for the cell to bar itself.

FieldASN.1 valuesTypicalWhat it does
connEstFailCount
n1, n2, n3, n4n2Consecutive connection establishment failures in the same cell before the offset is applied
connEstFailOffset
INTEGER (0..15), in dB, optional10The value of Qoffset_temp applied to that cell. If absent, the UE applies 15 dB -- so omitting the field is the harshest setting, not the mildest.
connEstFailOffsetValidity
s30, s60, s120, s240, s300, s420, s600, s900s120 or s300How long the offset stays in force after the failure count is reached

Table 9. ConnEstFailureControl TS 38.331. Qoffset_temp feeds straight into both halves of the S-criterion, which is what makes the interaction in §8 possible.

The counter is per cell and per UE, and it resets on a successful establishment. The offset makes the cell less attractive for reselection as well as potentially unsuitable altogether, so a UE that keeps failing on one cell drifts to a neighbour without any network involvement.

🔍
What You See In Logs

The UE also stores a connEstFailReport -- the measured RSRP and RSRQ of the failed cell and its neighbours, the number of preambles sent, and whether contention was detected -- and hands it to the next cell it successfully connects to, on request. That report is the intended way to diagnose exactly this situation, and it is the only UE-side evidence you will get for a cell that fails establishment silently. See the companion 03 Random Access document.

10. servingCellConfigCommon in SIB1

ServingCellConfigCommonSIB is the largest branch of SIB1 and the one the UE actually needs in order to transmit. It is a reduced form of the dedicated ServingCellConfigCommon -- everything a UE can be told without a dedicated connection.

FieldContentsRange / valuesWhy it matters here
downlinkConfigCommon

-> frequencyInfoDL

offsetToPointA, SCS-specific carrier list, frequency band listoffsetToPointA INTEGER (0..2199)Anchors the common resource block grid, which is what the CORESET#0 offset of §5 is measured against
downlinkConfigCommon

-> initialDownlinkBWP

genericParameters (location and bandwidth, SCS, cyclic prefix), pdcch-ConfigCommon, pdsch-ConfigCommonlocationAndBandwidth INTEGER (0..37949)The BWP in which SIB1, paging, MSG2 and MSG4 live. CORESET#0 must fit inside it.
downlinkConfigCommon

-> bcch-Config

modificationPeriodCoeff
n2, n4, n8, n16One of the two factors in the BCCH modification period -- see the companion 17 System Information document
downlinkConfigCommon

-> pcch-Config

defaultPagingCycle, nAndPagingFrameOffset, ns, firstPDCCH-MonitoringOccasionOfPOdefaultPagingCycle rf32, rf64, rf128, rf256Paging occasions, and the other factor in the modification period. See the companion 19 Paging document.
uplinkConfigCommon

-> frequencyInfoUL

SCS-specific carrier list, p-Max, frequencyShift7p5khzp-Max INTEGER (-30..33) dBmp-Max is P_EMAX in the Pcompensation term of §8, and the ceiling on PRACH and PUSCH power
uplinkConfigCommon

-> initialUplinkBWP

rach-ConfigCommon, pusch-ConfigCommon, pucch-ConfigCommonsee the companion 03 Random Access documentThis is the PRACH configuration. Without it the cell cannot be accessed at all.
uplinkConfigCommon

-> timeAlignmentTimerCommon

Cell-wide default time alignment timerms500, ms750, ms1280, ms1920, ms2560, ms5120, ms10240, infinityHow long uplink timing stays valid without a TA update. See the companion 04 Timing Advance document.
ssb-PositionsInBurst
inOneGroup BIT STRING (8), optional groupPresence BIT STRING (8)8 or 64 positionsWhich SSB candidate positions are actually transmitted. A UE will not measure a position this bitmap says is absent.
ssb-PeriodicityServingCell
SSB burst periodicityms5, ms10, ms20, ms40, ms80, ms160A UE performing initial cell selection assumes 20 ms, so a longer value costs extra blind decode attempts before the cell is found
tdd-UL-DL-ConfigurationCommon
referenceSubcarrierSpacing, pattern1, optional pattern2periodicity ms0p5 to ms10, plus slot and symbol countsWhich slots are downlink. Cross-check against the computed Type0-PDCCH occasions (§5.2).
ss-PBCH-BlockPower
SSB EPRE as transmittedINTEGER (-60..50) dBmThe UE's only reference for downlink pathloss, and therefore the anchor of its open-loop PRACH power calculation
n-TimingAdvanceOffset
Fixed N_TA offset applied on top of the timing advancen0, n25600, n39936 (in T_c units)Absence implies the FR-dependent default. Wrong value = a constant uplink timing error across every UE in the cell.

Table 10. ServingCellConfigCommonSIB, abridged TS 38.331. Two rows carry consequences far beyond their apparent scope: initialUplinkBWP because it holds the PRACH configuration, and ss-PBCH-BlockPower because every UE's uplink power derives from it.

⚠️
Common Pitfall

ss-PBCH-BlockPower wrong by 6 dB puts every UE's PRACH transmission in the cell wrong by 6 dB in the opposite direction -- too low, and preambles are not detected until the power ramping catches up; too high, and every UE in the cell interferes with every other UE's PRACH. Neither symptom looks like a broadcast-information problem. It looks like a coverage problem or a PRACH capacity problem, and both diagnoses lead away from the actual cause. See the companion 03 Random Access document for the open-loop power formula this value feeds.

11. ue-TimersAndConstants

Seven values that govern how long the UE persists before giving up. They are cell-wide defaults; a dedicated RRCReconfiguration can override some of them per UE once a connection exists.

FieldASN.1 valuesTypicalStarted onOn expiry / reaching
t300
ms100, ms200, ms300, ms400, ms600, ms1000, ms1500, ms2000ms1000RRCSetupRequest transmittedConnection establishment failure: go to RRC_IDLE, store a connEstFailReport, increment the connEstFailureControl counter
t301
Same enumeration as t300ms1000RRCReestablishmentRequest transmittedGo to RRC_IDLE with release cause RRC connection failure
t310
ms0, ms50, ms100, ms200, ms500, ms1000, ms2000ms1000N310 consecutive out-of-sync indications from lower layersRadio link failure. See the companion 16 RLM and RLF document.
n310
n1, n2, n3, n4, n6, n8, n10, n20n10Counting out-of-sync indicationsStart t310
t311
ms1000, ms3000, ms5000, ms10000, ms15000, ms20000, ms30000ms10000RRC re-establishment initiated, cell selection under wayGo to RRC_IDLE -- re-establishment has failed to find a cell
n311
n1, n2, n3, n4, n5, n6, n8, n10n1Counting in-sync indications while t310 runsStop t310
t319
Same enumeration as t300ms1000RRCResumeRequest transmittedGo to RRC_IDLE; the stored RRC_INACTIVE context is discarded

Table 11. UE-TimersAndConstants TS 38.331. If the whole IE is absent from SIB1 the UE applies its own defaults, which are not specified to be any particular value -- so a cell that omits it gets whatever the chipset vendor chose.

⚠️
Common Pitfall

t310 includes the value ms0, and it does what it says: an out-of-sync condition becomes a radio link failure immediately, with no recovery window at all. It exists for deployments that would rather re-establish fast than ride out a fade. If you see unexplained RLF rates in a cell, read t310 before reading anything else -- ms0 and ms50 both produce RLF from conditions a normal cell absorbs silently.

12. uac-BarringInfo and a Worked Barring Check

Unified Access Control is the last gate before the UE transmits, and it is the only one that is re-evaluated on every access attempt rather than once at camp time. It works on two independent axes: access identity, which is about who the subscriber is and can exempt them outright, and access category, which is about what the attempt is for and is subject to a probabilistic barring factor.

FieldType / rangeWhat it does
uac-BarringForCommon
UAC-BarringPerCatList, optionalPer-access-category barring that applies to every PLMN in the cell
uac-BarringPerPLMN-List
1..12 UAC-BarringPerPLMN, optionalPer-PLMN overrides, indexed by the same PLMN index as selectedPLMN-Identity. Where present for the selected PLMN it replaces uac-BarringForCommon entirely.
uac-BarringInfoSetList
1..8 UAC-BarringInfoSetThe actual barring parameters. The per-category lists hold indices into this list, so several categories can share one setting.
uac-AccessCategory1-SelectionAssistanceInfo
ENUMERATED {a, b, c}, either common or per PLMN, optionalTells the UE which of the three TS 22.261 conditions decides whether an attempt belongs to Access Category 1
UAC-BarringPerCat.accessCategory
INTEGER (1..63)The category this entry applies to. Category 0 cannot appear -- it is never barred, which is what keeps paging responses working.
UAC-BarringPerCat.uac-barringInfoSetIndex
INTEGER (1..8)Which UAC-BarringInfoSet applies
UAC-BarringInfoSet.uac-BarringFactor
ENUMERATED {p00, p05, p10, ..., p95}
The probability the attempt is allowed. p00 bars everything, p95 bars one attempt in twenty.
UAC-BarringInfoSet.uac-BarringTime
ENUMERATED {s4, s8, s16, s32, s64, s128, s256, s512}
The base of the T390 back-off, which is randomised around it
UAC-BarringInfoSet.uac-BarringForAccessIdentity
BIT STRING (SIZE (7))One bit per access identity, in the order 1, 2, 11, 12, 13, 14, 15. A 0 means that identity is not barred and skips the draw entirely.

Table 12. UAC-BarringInfo and its children TS 38.331. The access-identity bitmap is checked first and is absolute; the barring factor is only reached by UEs that no bit exempts.

12.1 The barring check, worked

🧮
Worked Calculation

A UE with Access Identity 0 only (an ordinary subscriber) makes an MO-data attempt, which maps to Access Category 7.

uac-BarringPerCatList: { accessCategory 7, uac-barringInfoSetIndex 2 }

uac-BarringInfoSetList[2]:

uac-BarringFactor ............... p40 -> 0.40

uac-BarringTime ................. s32 -> 32 s

uac-BarringForAccessIdentity .... 0111111

Step 1 -- access identity. The bitmap covers identities 1, 2, 11, 12, 13, 14, 15. This UE holds none of them, so no bit exempts it and it must draw. (Had it held Access Identity 1, the leftmost bit is 0, meaning not barred, and the check would end here with access allowed.)

Step 2 -- the factor. Draw rand1 uniform in [0,1):

rand1 = 0.28 0.28 < 0.40 -> access allowed

Later, the same UE, same configuration, different draw:

rand1 = 0.55 0.55 >= 0.40 -> access barred

Step 3 -- the back-off. Draw rand2 = 0.62:

T390 = (0.7 + 0.6 x rand2) x uac-BarringTime

= (0.7 + 0.372) x 32

= 1.072 x 32 = 34.3 s

Note that T390 can exceed uac-BarringTime: the multiplier ranges from 0.7 to 1.3. T390 runs per access category, so this UE can still answer a page (Access Category 0, never barred) during those 34 seconds.

Access identityWho holds itBitmap position
0Any UE -- the ordinary caseNot in the bitmap at all. A UE with only identity 0 always reaches the barring-factor draw.
1Multimedia Priority Service (MPS)1st (leftmost) bit
2Mission Critical Service (MCS)2nd bit
11PLMN use (former Access Class 11)3rd bit
12Security services (AC 12)4th bit
13Public utilities (AC 13)5th bit
14Emergency services (AC 14)6th bit
15PLMN staff (AC 15)7th bit

Table 13. Access identities and their bitmap positions TS 22.261 / TS 24.501 cl. 4.5.2. Value 0 in a bit position means not barred, which is the opposite of the intuitive reading and worth checking twice.

🔍
What You See In Logs

Access Category 0 -- mobile-originated signalling resulting from paging -- is never barred, by specification. This is what makes a heavily barred cell still show paging responses in the gNB log: the network can page a UE and the UE will answer, while the same UE cannot originate anything. A cell with normal paging response counts and near-zero MO access is behaving exactly as configured, not failing.

13. Failure Modes and What Each One Means

What failsWho detects itWhat the UE doesWhat it points at
cellBarred = barredUE RRCExclude the cell for 300 s; intraFreqReselection sets the scopeDeliberate barring, or a gNB that barred itself after losing its N2 connection. A healthy-looking barred cell usually means the core is unreachable.
k_SSB above range (>23 FR1, >11 FR2)UE RRCConclude SIB1 is not carried by this SSB; reinterpret pdcch-ConfigSIB1 as frequency-position informationNormal for an SSB placed only for measurement. Unexpected on a cell meant to be camped on.
CORESET#0 does not fit the carrierNobodyCannot decode SIB1; treats the cell as barred for 300 s, silentlycontrolResourceSetZero whose N_RB exceeds the carrier, or whose offset pushes the low edge below the carrier's first RB. Check the index against the actual channel bandwidth (§4.1).
Wrong CORESET#0 table used at configuration timeNobodyAs above -- SIB1 never decodesThe table is chosen by the {SSB, PDCCH} SCS pair and the minimum channel bandwidth. A 30 kHz cell configured from the 15 kHz table gives plausible-looking numbers that are wrong.
Type0-PDCCH occasions land in uplink slotsNobodyCannot decode SIB1 on the affected beams onlysearchSpaceZero versus tdd-UL-DL-ConfigurationCommon. Symptom: a cell that is dead from one direction (§5.2).
dmrs-TypeA-Position wrongUE PHYPDSCH demodulation fails cleanly with CRC errorsA configuration error, not a coverage one. It also breaks MSG2 and MSG4, so RACH fails at step 2 for every UE.
subCarrierSpacingCommon inconsistent with the actual initial BWPUE PHYSIB1 grant decodes, PDSCH does notConfiguration inconsistency between MIB and initialDownlinkBWP.genericParameters.subcarrierSpacing
servingCellConfigCommon absentUE RRCCamp is possible; access is not -- there is no PRACH configurationLegal for an SCell-only cell. On a cell meant to be accessed, it is a template that was never completed.
trackingAreaCode absent for the selected PLMNUE RRCUse the cell for SCell / PSCell only; never select itSymptom: plenty of measurement reports naming the cell, zero RACH (§7)
cellReservedForOperatorUse = reservedUE RRCBehave as if barred unless the UE holds Access Identity 11 or 15Per-PLMN, so on a shared cell one operator's subscribers are excluded and another's are not
q-RxLevMin misread as dBm at configuration timeNobodyEither every audible cell is suitable, or none isThe 2 dBm unit. -70 means -140 dBm (S-criterion effectively off); -22 means -44 dBm (nothing is ever suitable).
q-QualMin absentNobodyThe Squal test always passesQ_qualmin defaults to negative infinity. A cell with terrible SINR and adequate RSRP becomes suitable, and UEs camp on it and then fail establishment.
connEstFailOffset absentNobodyApplies the 15 dB default -- the harshest available valueOmitting the field is not the neutral choice. A cell with two transient failures becomes 15 dB less attractive for up to 900 s.
ss-PBCH-BlockPower wrongNobodyEvery UE's open-loop PRACH power is wrong by the same amountLooks like a coverage or PRACH-capacity problem in every metric you have (§10)
ssb-PositionsInBurst inconsistent with what is transmittedNobodyMeasures positions that carry nothing, or ignores beams that existBeam management degrades with no error anywhere. See the companion 12 Beam Failure Recovery document.
t310 = ms0 or ms50NobodyAny out-of-sync condition becomes an immediate radio link failureAn aggressive ue-TimersAndConstants. Symptom: RLF rates far above what the radio conditions justify (§11).

Table 14. Sixteen MIB and SIB1 failure modes. In eleven of them nobody detects the fault: the UE draws a correct conclusion from wrong information and leaves, and the gNB never knows a UE was there.

💡
Key Point

Group the sixteen rows by symptom and there are only three: a cell that nobody accesses (rows 1-8), a cell that everybody accesses and nobody succeeds on (rows 11-13), and a cell that works unevenly across beams or power levels (rows 5, 14, 15). Matching the symptom to the group before reading fields is much faster than reading fields in order.

14. ASN.1: MIB and SIB1

-- TS 38.331, verbatim in structure; ... marks omitted members

BCCH-BCH-Message ::= SEQUENCE {
    message   BCCH-BCH-MessageType
}

BCCH-BCH-MessageType ::= CHOICE {
    mib                     MIB,
    messageClassExtension   SEQUENCE {}
}

MIB ::= SEQUENCE {
    systemFrameNumber       BIT STRING (SIZE (6)),
    subCarrierSpacingCommon ENUMERATED {scs15or60, scs30or120},
    ssb-SubcarrierOffset    INTEGER (0..15),
    dmrs-TypeA-Position     ENUMERATED {pos2, pos3},
    pdcch-ConfigSIB1        PDCCH-ConfigSIB1,
    cellBarred              ENUMERATED {barred, notBarred},
    intraFreqReselection    ENUMERATED {allowed, notAllowed},
    spare                   BIT STRING (SIZE (1))
}                                   -- note: no extension marker

PDCCH-ConfigSIB1 ::= SEQUENCE {
    controlResourceSetZero  ControlResourceSetZero,   -- INTEGER (0..15)
    searchSpaceZero         SearchSpaceZero           -- INTEGER (0..15)
}

Listing 1. MIB in full -- it is short enough to quote without abridging. The absence of an extension marker is what fixes the length at 23 bits and forces the spare bit.

SIB1 ::= SEQUENCE {
    cellSelectionInfo SEQUENCE {
        q-RxLevMin              Q-RxLevMin,          -- INTEGER (-70..-22)
        q-RxLevMinOffset        INTEGER (1..8)        OPTIONAL,
        q-RxLevMinSUL           Q-RxLevMin            OPTIONAL,
        q-QualMin               Q-QualMin             OPTIONAL,
        q-QualMinOffset         INTEGER (1..8)        OPTIONAL
    }                                                 OPTIONAL,
    cellAccessRelatedInfo       CellAccessRelatedInfo,
    connEstFailureControl       ConnEstFailureControl OPTIONAL,
    si-SchedulingInfo           SI-SchedulingInfo     OPTIONAL,
    servingCellConfigCommon     ServingCellConfigCommonSIB OPTIONAL,
    ims-EmergencySupport        ENUMERATED {true}     OPTIONAL,
    eCallOverIMS-Support        ENUMERATED {true}     OPTIONAL,
    ue-TimersAndConstants       UE-TimersAndConstants OPTIONAL,
    uac-BarringInfo SEQUENCE {
        uac-BarringForCommon    UAC-BarringPerCatList OPTIONAL,
        uac-BarringPerPLMN-List UAC-BarringPerPLMN-List OPTIONAL,
        uac-BarringInfoSetList  UAC-BarringInfoSetList,
        uac-AccessCategory1-SelectionAssistanceInfo CHOICE {
            plmnCommon          UAC-AccessCategory1-SelectionAssistanceInfo,
            individualPLMNList  SEQUENCE (SIZE (2..maxPLMN)) OF
                                    UAC-AccessCategory1-SelectionAssistanceInfo
        }                                             OPTIONAL
    }                                                 OPTIONAL,
    useFullResumeID             ENUMERATED {true}     OPTIONAL,
    lateNonCriticalExtension    OCTET STRING          OPTIONAL,
    nonCriticalExtension        SIB1-v1610-IEs        OPTIONAL
}

CellAccessRelatedInfo ::= SEQUENCE {
    plmn-IdentityInfoList       PLMN-IdentityInfoList,
    cellReservedForOtherUse     ENUMERATED {true}     OPTIONAL,
    ...
}

PLMN-IdentityInfo ::= SEQUENCE {
    plmn-IdentityList           SEQUENCE (SIZE (1..maxPLMN)) OF PLMN-Identity,
    trackingAreaCode            TrackingAreaCode      OPTIONAL,
                                              -- BIT STRING (SIZE (24))
    ranac                       RAN-AreaCode          OPTIONAL,
                                              -- INTEGER (0..255)
    cellIdentity                CellIdentity,
                                              -- BIT STRING (SIZE (36))
    cellReservedForOperatorUse  ENUMERATED {reserved, notReserved},
    ...
}

ConnEstFailureControl ::= SEQUENCE {
    connEstFailCount            ENUMERATED {n1, n2, n3, n4},
    connEstFailOffsetValidity   ENUMERATED {s30, s60, s120, s240, s300,
                                            s420, s600, s900},
    connEstFailOffset           INTEGER (0..15)       OPTIONAL
}

UE-TimersAndConstants ::= SEQUENCE {
    t300  ENUMERATED {ms100, ms200, ms300, ms400, ms600, ms1000,
                      ms1500, ms2000},
    t301  ENUMERATED {ms100, ms200, ms300, ms400, ms600, ms1000,
                      ms1500, ms2000},
    t310  ENUMERATED {ms0, ms50, ms100, ms200, ms500, ms1000, ms2000},
    n310  ENUMERATED {n1, n2, n3, n4, n6, n8, n10, n20},
    t311  ENUMERATED {ms1000, ms3000, ms5000, ms10000, ms15000,
                      ms20000, ms30000},
    n311  ENUMERATED {n1, n2, n3, n4, n5, n6, n8, n10},
    t319  ENUMERATED {ms100, ms200, ms300, ms400, ms600, ms1000,
                      ms1500, ms2000},
    ...
}

UAC-BarringInfoSet ::= SEQUENCE {
    uac-BarringFactor           ENUMERATED {p00, p05, p10, p15, p20, p25,
                                            p30, p40, p50, p60, p70, p75,
                                            p80, p85, p90, p95},
    uac-BarringTime             ENUMERATED {s4, s8, s16, s32, s64, s128,
                                            s256, s512},
    uac-BarringForAccessIdentity BIT STRING (SIZE (7))
}

Listing 2. SIB1 and the four IEs this document works through in detail, abridged from TS 38.331. ServingCellConfigCommonSIB and SI-SchedulingInfo are left as type references -- see §10 and the companion 17 System Information document respectively.

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 throughout: PCI 217, PLMN 310-410, band n8 (FR1 low), 15 kHz SSB and PDCCH subcarrier spacing, 20 MHz channel, four SSBs, cellIdentity 0x01A2B3C40, TAC 0x4A2F1.

15.1 The MIB, decoded from the PBCH payload

[PHY/RRC] PBCH payload and MIB
08:15:02.104  [PHY] SSB detected  PCI 217  SS-RSRP -102.0 dBm
                    SS-RSRQ -11.0 dB  SS-SINR 14.2 dB
              PBCH DMRS hypothesis i_SSB = 2 correlated -> SSB index 2,
                    half frame 0   (L_max = 4, so i_SSB folds in n_hf)

08:15:02.104  [PHY] PBCH payload, 32 bits, descrambled
              0000 0110 0110 0100 1100 0100 0100 0000
              |-- BCCH-BCH-Message, 24b --| |8 PHY b|

08:15:02.104  [RRC-DL-BCCH] BCCH-BCH-Message
               message: mib                             -- CHOICE bit = 0
                systemFrameNumber ........... 000011      -- 6 MSBs = 3
                subCarrierSpacingCommon ..... scs15or60   -> 15 kHz (FR1)
                ssb-SubcarrierOffset ........ 6           -- 4 LSBs of k_SSB
                dmrs-TypeA-Position ......... pos2
                pdcch-ConfigSIB1 ............ 152
                  controlResourceSetZero .... 9
                  searchSpaceZero ........... 8
                cellBarred .................. notBarred
                intraFreqReselection ........ allowed
                spare ....................... 0

08:15:02.104  [PHY] the eight appended bits
                SFN LSBs 4,3,2,1 ............ 0100        -- = 4
                half frame .................. 0
                k_SSB MSB ................... 0           -- FR1, L_max=4
                reserved .................... 00

08:15:02.104  [RRC] assembled values
                SFN  = (000011 << 4) | 0100 = 0000110100b = 52
                k_SSB = (0 << 4) | 6 = 6      -- 6 x 15 kHz subcarriers

  -- Two things in this trace are NOT in the MIB: the SSB index (from the
  -- DMRS hypothesis) and the 4 SFN LSBs plus the k_SSB MSB (from the
  -- appended bits). An analyser that prints them alongside the MIB is
  -- combining three sources.

Listing 3. A MIB decode with the physical-layer contributions kept separate. The SFN assembly is the step most often skipped, and it is what makes every subsequent timing calculation possible.

15.2 From pdcch-ConfigSIB1 to a monitoring occasion

[RRC] CORESET#0 and searchSpaceZero derivation
08:15:02.105  [RRC] pdcch-ConfigSIB1 = 152 -> (9, 8)

              {SS/PBCH block, PDCCH} SCS = {15, 15} kHz
              band n8, minimum channel bandwidth 5 MHz
              -> TS 38.213 Table 13-1

              controlResourceSetZero = 9
                multiplexing pattern ...... 1
                N_RB_CORESET .............. 48
                N_symb_CORESET ............ 2
                offset .................... 16 RB

              searchSpaceZero = 8   -> TS 38.213 Table 13-11
                O ......................... 0
                M ......................... 1
                first symbol index ........ 1

08:15:02.105  [RRC] CORESET#0 frequency position
                offsetToPointA ............ 42
                SSB lowest RB (CRB) ....... 42
                CORESET#0 lowest RB ....... 42 - 16 = 26
                CORESET#0 span ............ CRB 26 .. 73  (48 RB)
                carrier span .............. CRB 0 .. 105
                                            (106 PRB, 20 MHz @15 kHz)
                -> 26 >= 0 and 73 <= 105: CORESET#0 fits   OK

  -- Two comparisons. S15.6 is the same cell after the carrier was
  -- narrowed and this check was not repeated.

08:15:02.105  [RRC] Type0-PDCCH monitoring occasions, mu = 0, N_slot = 10
                n_0 = (O x 2^mu + FLOOR(i x M)) mod N_slot
                i = 0 -> n_0 = 0, even SFN, slots 0 and 1
                i = 1 -> n_0 = 1, even SFN, slots 1 and 2
                i = 2 -> n_0 = 2, even SFN, slots 2 and 3   <- our SSB
                i = 3 -> n_0 = 3, even SFN, slots 3 and 4
              -> monitor slots 2 and 3 of even radio frames,
                 symbols 1 and 2, SI-RNTI 0xFFFF

Listing 4. The full derivation, including the carrier-fit check that §13 row 3 is about. It costs one subtraction and one addition, and it prevents a cell that no UE can use.

15.3 SIB1, decoded

[RRC-DL-BCCH] SIB1
08:15:02.148  [PHY] SFN 54 slot 2 sym 1  PDCCH DCI 1_0, CRC = SI-RNTI
                    -> PDSCH 28 PRB, MCS 4, TBS 1288 bits
08:15:02.149  [RRC-DL-BCCH] SIB1

 cellSelectionInfo
  q-RxLevMin ......................... -60      -- = -120 dBm
  q-RxLevMinOffset ................... (absent) -- = 0 dB
  q-QualMin .......................... -18      -- dB
  q-QualMinOffset .................... (absent) -- = 0 dB

 cellAccessRelatedInfo
  plmn-IdentityInfoList
   [1] plmn-IdentityList
        [1] mcc 310  mnc 410
       trackingAreaCode ............... 0x4A2F1
       ranac ......................... 12
       cellIdentity .................. 0x01A2B3C40   -- 36 bits
       cellReservedForOperatorUse .... notReserved
  cellReservedForOtherUse ............ (absent)

 connEstFailureControl
  connEstFailCount ................... n2
  connEstFailOffsetValidity .......... s300
  connEstFailOffset .................. 10        -- dB

 si-SchedulingInfo .................... (see companion doc 17)

 servingCellConfigCommon
  downlinkConfigCommon
   frequencyInfoDL
    offsetToPointA ................... 42
   initialDownlinkBWP
    genericParameters
     locationAndBandwidth ............ 28875     -- 106 PRB from PRB 0
     subcarrierSpacing ............... kHz15
   bcch-Config
    modificationPeriodCoeff .......... n4
   pcch-Config
    defaultPagingCycle ............... rf128
  uplinkConfigCommon
   frequencyInfoUL
    p-Max ........................... 23        -- dBm
   initialUplinkBWP
    rach-ConfigCommon ............... (see companion doc 03)
   timeAlignmentTimerCommon ......... ms1920
  ssb-PositionsInBurst
   inOneGroup ...................... 11110000   -- SSB 0..3 transmitted
  ssb-PeriodicityServingCell ........ ms20
  ss-PBCH-BlockPower ................ 18        -- dBm EPRE
  n-TimingAdvanceOffset ............. (absent)

 ims-EmergencySupport ................ true

 ue-TimersAndConstants
  t300 ms1000  t301 ms1000  t310 ms1000  n310 n10
  t311 ms10000 n311 n1      t319 ms1000

 uac-BarringInfo
  uac-BarringForCommon
   [1] accessCategory 7  uac-barringInfoSetIndex 2
  uac-BarringInfoSetList
   [1] uac-BarringFactor p95  uac-BarringTime s4
       uac-BarringForAccessIdentity 0000000
   [2] uac-BarringFactor p40  uac-BarringTime s32
       uac-BarringForAccessIdentity 0111111

Listing 5. A complete, realistic SIB1. Every value in it is used somewhere in §7 to §12, and the uac-BarringInfoSetList here is the one the worked barring check in §12.1 uses.

15.4 The cell selection decision

[RRC] cell suitability evaluation
08:15:02.150  [RRC] cell suitability evaluation, PCI 217
              MIB cellBarred .................. notBarred        PASS
              SIB1 acquired ................... yes              PASS
              cellReservedForOtherUse ......... absent           PASS
              selected PLMN 310-410 in list ... yes, index 1     PASS
              cellReservedForOperatorUse ...... notReserved      PASS
              trackingAreaCode ................ 0x4A2F1 present  PASS
              TAI 310-410-4A2F1 in forbidden lists .. no         PASS

              S-criterion
                Q_rxlevmeas ................... -102.0 dBm
                q-RxLevMin x 2 ................ -120.0 dBm
                q-RxLevMinOffset x 2 .......... 0.0 dB
                p-Max ......................... 23 dBm
                P_PowerClass .................. 23 dBm (class 3)
                Pcompensation = max(23-23,0) .. 0.0 dB
                Qoffset_temp .................. 0.0 dB
                Srxlev = -102 - (-120) - 0 - 0 = +18.0 dB         PASS

                Q_qualmeas .................... -11.0 dB
                q-QualMin ..................... -18 dB
                Squal  =  -11 - (-18) - 0     = +7.0 dB           PASS

08:15:02.150  [RRC] cell 217 is SUITABLE -> camp on it
08:15:02.151  [RRC] adopt ue-TimersAndConstants from SIB1
              t300 1000 ms, t310 1000 ms, n310 10, t311 10000 ms

Listing 6. Every gate in figure 7, evaluated in order, with the arithmetic of §8 shown. A log in this shape answers the "why did the UE not camp here" question in one screen.

15.5 The access barring check

[RRC] unified access control
08:17:44.902  [NAS] MO data attempt -> Access Category 7,
                    Access Identities held: { 0 }
08:17:44.902  [RRC] UAC check, PCI 217, selected PLMN index 1
              uac-BarringPerPLMN-List ......... absent
              -> use uac-BarringForCommon
              accessCategory 7 -> uac-barringInfoSetIndex 2
              set[2] uac-BarringFactor ........ p40   (0.40)
                     uac-BarringTime .......... s32   (32 s)
                     uac-BarringForAccessIdentity 0111111

              access identity check
                bitmap covers identities 1,2,11,12,13,14,15
                UE holds none of them -> no exemption, must draw

              rand1 = 0.5473   >= 0.40  -> BARRED
              rand2 = 0.6200
              T390(cat 7) = (0.7 + 0.6 x 0.6200) x 32 = 34.30 s
08:17:44.902  [RRC] access barred for Access Category 7, T390 started
              -- Access Category 0 is unaffected: a page can still be
              -- answered during these 34.3 s

08:17:52.310  [RRC] paging received -> Access Category 0, never barred
08:17:52.310  [RRC] RRCSetupRequest, establishmentCause mt-Access

08:18:19.204  [RRC] T390(cat 7) expired -> Access Category 7 allowed again

Listing 7. The barring check and its selective effect. A cell in this state shows healthy paging response counts and almost no MO access, which is correct behaviour and not a fault.

15.6 Failure path: CORESET#0 outside the carrier

[PHY/RRC] SIB1 undecodable, cell self-bars
-- Same MIB and same SSB position as S15.1, but the DL carrier was
-- narrowed from 106 PRB to 52 PRB (20 MHz -> 10 MHz) while
-- pdcch-ConfigSIB1 was left at 152 and offsetToPointA at 42.

09:02:11.070  [PHY] SSB detected  PCI 217  SS-RSRP -98.0 dBm
09:02:11.070  [RRC] MIB decoded, cellBarred = notBarred
09:02:11.070  [RRC] pdcch-ConfigSIB1 152 -> CORESET#0 index 9
                    N_RB_CORESET 48, offset 16
              SSB lowest CRB .................. 42
              CORESET#0 span .................. CRB 26 .. 73
              carrier .......................... CRB 0 .. 51
                                                 (52 PRB, 10 MHz @15 kHz)
              -> CORESET#0 requires CRB up to 73; the carrier ends at 51

09:02:11.070  [PHY] monitoring slots 2,3 of even SFN, symbols 1-2
09:02:11.230  [PHY] no PDCCH candidate decoded with SI-RNTI
09:02:11.550  [PHY] no PDCCH candidate decoded with SI-RNTI
09:02:12.190  [PHY] no PDCCH candidate decoded with SI-RNTI
09:02:12.190  [RRC] SIB1 acquisition failed
              -> TS 38.331 cl. 5.2.2.1: consider the cell as barred
              -> bar for 300 s; intraFreqReselection = allowed, so other
                 cells on this frequency remain candidates
09:02:12.191  [RRC] no other suitable cell on this frequency
              -> search other frequencies / RATs

-- gNB-side evidence over the same interval:
     PRACH preambles received ................. 0
     RRC connection establishment attempts .... 0
     SIB1 transmissions ....................... normal
     alarms, error counters, KPI degradation ... none

-- The cell is transmitting SSB and SIB1 perfectly. It is simply
-- unreachable, and the only place that shows is the subtraction
-- 42 - 16 = 26, 26 + 48 = 74 > 52.

Listing 8. The most consequential failure in this document, in full. A bandwidth change that left pdcch-ConfigSIB1 alone produces a cell that looks perfect from the network side and is invisible from the UE side.

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

ReleaseChangeWhy it matters when reading MIB or SIB1
Rel-15MIB as defined in §2, with no extension marker; pdcch-ConfigSIB1; SIB1 with cellAccessRelatedInfo, cellSelectionInfo, connEstFailureControl, si-SchedulingInfo, servingCellConfigCommon, ue-TimersAndConstants, uac-BarringInfoThe baseline. The MIB has not changed since Rel-15 and cannot -- there is no extension marker and no spare capacity beyond one bit.
Rel-16SIB1-v1610-IEs: idleModeMeasurementsEUTRA and idleModeMeasurementsNR, posSI-SchedulingInfo, hsdn-Cell, uac-BarringInfo extensions for NPNSIB1 grew a non-critical extension chain. A Rel-15 decoder reads the Rel-15 part correctly and silently ignores the rest.
Rel-16NPN support: npn-IdentityInfoList with CAG and SNPN identities alongside plmn-IdentityInfoListA cell can offer network identities that are not PLMNs. A decoder that only shows plmn-IdentityInfoList will report a cell as offering fewer networks than it does.
Rel-16useFullResumeID and the 40-bit I-RNTIChanges which RRCResumeRequest variant the UE sends. See the companion 14 RRC States document.
Rel-17RedCap: intraFreqReselectionRedCap, cellBarredRedCap (separate barring for RedCap UEs), separate initial BWPsA cell can be barred for RedCap UEs and open for everyone else. The MIB's cellBarred is no longer the whole answer, and it is the field everybody looks at first.
Rel-17NTN: SIB19 with ephemeris and ta-Common; ntn-Config references in the common configurationOn an NTN cell, SIB1 alone is not enough to transmit uplink -- SIB19 is required as well
Rel-17Slice-based cell reselection (SIB16) and sliceInfoList support in the common configurationReselection priorities can differ per slice, so two UEs reading the same SIB1 can rank the same neighbours differently
Rel-17eDRX in RRC_IDLE, with extended defaultPagingCycle handling in pcch-ConfigA longer paging cycle also lengthens the BCCH modification period, because the two are multiplied
Rel-18Further non-critical extensions to SIB1 and further SIB types in SIB-TypeInfoConfirm which release your decoder was built against before treating an unrecognised extension as corruption

Table 15. MIB and SIB1 changes by release. The asymmetry is the point: the MIB is frozen by its own encoding, while SIB1 has grown a long non-critical extension chain that a decoder must be built for.

🔄
Release Delta

Rel-17 introduced separate barring for RedCap UEs. A cell can set cellBarredRedCap while the MIB's cellBarred reads notBarred, and a RedCap device will then refuse a cell that every other device uses happily. If a RedCap UE will not attach where a normal UE does, this is the first field to check, and it is in SIB1 rather than in the MIB where instinct sends you.

17. Reading MIB and SIB1 in Logs: A Checklist

1. Split `pdcch-ConfigSIB1` immediately. Integer-divide by 16 for controlResourceSetZero, take the remainder for searchSpaceZero. A single decimal number in a log tells you nothing until you do (§4).

2. Confirm which CORESET#0 table applies before using a row. It is chosen by the {SS/PBCH block, PDCCH} subcarrier-spacing pair and the band's minimum channel bandwidth. Using the wrong table produces plausible numbers and a cell nobody can decode.

3. Check that CORESET#0 fits the carrier. Compute the SSB's lowest common RB, subtract the offset, add N_RB, and compare both ends against the carrier. This is one subtraction and one addition and it catches the single worst failure in this document (§15.6).

4. Compute the Type0-PDCCH occasions for every SSB index, not just #0, and cross-check them against tdd-UL-DL-ConfigurationCommon. Beam-specific SIB1 failure is invisible in aggregate statistics (§5.2).

5. Multiply `q-RxLevMin` by two before doing anything with it. Same for q-RxLevMinOffset. q-QualMin and q-QualMinOffset are plain dB. Two different scalings inside one IE (§8).

6. Check whether `q-QualMin` is present at all. Absent means Q_qualmin is negative infinity and the quality criterion is disabled, which lets UEs camp on cells they cannot use.

7. Read `connEstFailOffset` as 15 dB when it is absent, not as zero. Absence is the harshest setting available.

8. Check `trackingAreaCode` for the selected PLMN entry. Its absence means the cell is SCell/PSCell-only, which explains measurement activity with no access attempts (§7).

9. Read all three barring mechanisms, not just `cellBarred`. cellReservedForOtherUse bars the whole cell; cellReservedForOperatorUse bars it per PLMN for UEs without Access Identity 11 or 15; and from Rel-17 cellBarredRedCap bars it for one UE class only.

10. Resolve `selectedPLMN-Identity` against the SIB1 from the same cell. It is a 1-based index into the flattened PLMN list, not a PLMN value, and a different cell's SIB1 will resolve it to the wrong operator.

11. Sanity-check `ss-PBCH-BlockPower` against the cell's actual EIRP. Every UE's open-loop PRACH power derives from it, so an error here looks exactly like a coverage problem (§10).

12. Read `t310` and `n310` before investigating an RLF rate. ms0 and ms50 produce radio link failures from conditions a normal cell absorbs (§11).

13. For UAC, read the access-identity bitmap first and remember that 0 means not barred. Then check whether Access Category 0 traffic is present -- if paging responses are healthy and MO access is near zero, the cell is barred as configured, not broken (§12).

18. Glossary

TermExpansionMeaning in this document
MIBMaster Information BlockThe 23-bit RRC message inside the 24-bit BCCH-BCH-Message. Fixed since Rel-15 and unable to grow.
SIB1System Information Block 1Also called RMSI. Everything the UE needs to decide about the cell and to access it.
PBCHPhysical Broadcast ChannelCarries the 32-bit payload: the 24-bit RRC message plus eight physical-layer bits (§2.1).
k_SSB
ssb-SubcarrierOffset
Frequency offset from subcarrier 0 of common RB 0 to subcarrier 0 of the SSB. 5 bits on FR1, 4 on FR2.
CORESET#0Control Resource Set 0The control resource set in which the SIB1 grant appears. Configured entirely by controlResourceSetZero plus k_SSB.
searchSpaceZero--The Type0-PDCCH common search space configuration: a slot offset O, a count M of occasions per slot, and a first symbol index.
Type0-PDCCH CSSCommon Search SpaceWhere the SIB1 grant is monitored. Type0A is for Other SI, Type1 for the RAR, Type2 for paging TS 38.213 cl. 10.1.
L_max--The maximum number of SSB candidate positions in a burst: 4 or 8 on FR1, 64 on FR2. It decides what the three conditional PBCH bits carry.
Srxlev / Squal--The level and quality margins of the cell suitability criterion. Both must exceed zero (§8).
Q_rxlevmin / Q_qualmin--The thresholds those margins are measured against, from q-RxLevMin (x2 dBm) and q-QualMin (dB).
Pcompensation--max(P_EMAX - P_PowerClass, 0). The cell raising its own bar for a UE that cannot transmit at the power the cell assumes.
Qoffset_temp--A temporary penalty applied to a cell's Srxlev and Squal after repeated establishment failures (§9).
NCGINR Cell Global IdentityPLMN identity plus the 36-bit cellIdentity. Globally unique.
UACUnified Access ControlThe SIB1 barring mechanism: access identity for who you are, access category for what you are doing (§12).
T390--The per-access-category UAC back-off timer, (0.7 + 0.6 x rand) x uac-BarringTime.
RMSIRemaining Minimum System InformationThe TS 38.300 name for SIB1. Common in vendor logs.

19. References

  • 3GPP TS 38.331 -- RRC protocol specification. Clause 5.2.2.1 (SI acquisition, including the requirement to treat the cell as barred on SIB1 failure), 5.3.14 (unified access control), 6.2.2 (message definitions: BCCH-BCH-Message, MIB, SIB1), 6.3.2 (IE definitions: CellAccessRelatedInfo, PLMN-IdentityInfo, ConnEstFailureControl, PDCCH-ConfigSIB1, ServingCellConfigCommonSIB, UAC-BarringInfoSet, UE-TimersAndConstants), 7.1 (UE timers and constants defaults).
  • 3GPP TS 38.212 -- Multiplexing and channel coding. Clause 7.1.1 (PBCH payload generation and the eight appended bits), 7.1.2 (PBCH scrambling), 7.1.3-7.1.5 (CRC, polar coding, rate matching).
  • 3GPP TS 38.211 -- Physical channels and modulation. Clause 7.4.1.4 (PBCH DM-RS, including the sequence initialisation that carries the SSB index), 7.4.3 (SS/PBCH block structure and candidate positions).
  • 3GPP TS 38.213 -- Physical layer procedures for control. Clause 10.1 (search space sets and the common search space types), clause 13 (CORESET#0 and searchSpaceZero, Tables 13-1 to 13-10 for the control resource set and Tables 13-11 to 13-13 for the monitoring occasions).
  • 3GPP TS 38.304 -- UE procedures in idle mode and RRC inactive state. Clause 5.2.3.2 (cell selection criterion S), 5.2.4 (cell reselection), 5.3.1 (cell status and barring, including cellReservedForOperatorUse handling).
  • 3GPP TS 38.101-1 / 38.101-2 -- UE radio transmission and reception, for the power classes that P_PowerClass in the Pcompensation term refers to, and for the per-band minimum channel bandwidths that select the CORESET#0 table.
  • 3GPP TS 24.501 -- NAS protocol for 5GS. Clause 4.5.2 (access categories and access identities, the NAS half of unified access control).
  • 3GPP TS 22.261 -- Service requirements for the 5G system, for the definitions of the access identities in §12.
  • 3GPP TS 23.003 -- Numbering, addressing and identification. Clause 19.6 (NR Cell Global Identity and the gNB ID / cell ID split within the 36-bit cellIdentity).

Companion documents in this set

  • 17 System Information -- how SIB2 and beyond are scheduled, notified and re-acquired; the si-SchedulingInfo branch this document leaves as a type reference.
  • 02 Radio Frame Structure -- SFN, half-frames, slots per frame, and the SSB candidate positions the L_max discussion of §2.1 depends on.
  • 03 Random Access -- the rach-ConfigCommon inside initialUplinkBWP, the open-loop power formula that consumes ss-PBCH-BlockPower, and the connEstFailReport of §9.
  • 01 Registration Process -- what the UE does with SIB1 once it has it, and the cell-selection and barring gates of figure 7 in their procedural context.
  • 16 RLM and RLF -- what t310, n310, t311 and n311 from §11 actually govern.
  • 19 Paging -- pcch-Config and defaultPagingCycle from §10, and the paging occasion arithmetic they drive.
  • 14 RRC States -- useFullResumeID and the RRC_INACTIVE resume identity of §6.
  • 12 Beam Failure Recovery -- what ssb-PositionsInBurst from §10 means for beam management.
  • 20 Measurements and Events -- the reselection thresholds and offsets SIB2 to SIB5 carry, which build on the S-criterion of §8.