To make it sure that Network triggers adding the second cell only when UE can detect the second cell with a certain signal condition, Network usually perform measurement for the second cell. One of the example of this measurement process is as follows. The example is one reconfiguration and the report it produced, both taken from a decoder. Reading them together shows where the threshold is set, which carrier each measurement identity points at, and how the raw integers in the report turn back into dBm.
- The threshold the network sets
- The measurement configuration sent to the UE
- The measurement report the UE sends back
- What 36.331 v19.3.0 says now
- Reference
The threshold the network sets
A threshold in an RRC message is never written in dBm. It is an integer, and the specification supplies the arithmetic that turns that integer back into a power. Two of the three lines below give that arithmetic, and the third says the quantity has to be consistent across an event.
According to 36.331,
ThresholdEUTRA
- For RSRP: RSRP based threshold for event evaluation. The actual value is IE value - 140 dBm.
- For RSRQ: RSRQ based threshold for event evaluation. The actual value is (IE value - 40)/2 dB.
- EUTRAN configures the same threshold quantity for all the thresholds of an event.
The arithmetic matters because nothing in the message carries the unit. The field threshold-RSRP is typed as RSRP-Range, which 36.331 defines as INTEGER(0..97), and each of those 98 steps is one dB. Subtracting 140 turns the index into dBm, so 0 sits at the bottom of the range and 97 at the top.
RSRQ is not indexed the same way. RSRQ-Range is INTEGER(0..34) and the rule halves the difference, so one step is half a dB rather than a whole one. Apply the RSRP rule to an RSRQ value, then, and the answer comes out wrong by a factor of two as well as by an offset.
The measurement configuration sent to the UE
The decode below is the whole reconfiguration. Only the measConfig branch is present, and every other branch of the message is omitted. Read it in three parts: two measurement objects, one report configuration, and the two measurement identities that bind the first to the second.
The block below is decoder output, not specification text. It records one message as one network sent it, and no value in it has been corrected against a later release.
+-rrcConnectionReconfiguration ::= SEQUENCE
+-rrc-TransactionIdentifier ::= INTEGER (0..3) [0]
+-criticalExtensions ::= CHOICE [c1]
+-c1 ::= CHOICE [rrcConnectionReconfiguration-r8]
+-rrcConnectionReconfiguration-r8 ::= SEQUENCE [100000]
+-measConfig ::= SEQUENCE [01010111000] OPTIONAL:Exist
| +-measObjectToRemoveList ::= SEQUENCE OF OPTIONAL:Omit
| +-measObjectToAddModList ::= SEQUENCE OF SIZE(1..maxObjectId[32]) [2] OPTIONAL:Exist
| | +-MeasObjectToAddMod ::= SEQUENCE
| | | +-measObjectId ::= INTEGER (1..maxObjectId[32]) [1]
| | | +-measObject ::= CHOICE [measObjectEUTRA]
| | | +-measObjectEUTRA ::= SEQUENCE [100000]
| | | +-carrierFreq ::= INTEGER (0..maxEARFCN[65535]) [1575]
| | | +-allowedMeasBandwidth ::= ENUMERATED [mbw50]
| | | +-presenceAntennaPort1 ::= BOOLEAN [FALSE]
| | | +-neighCellConfig ::= BIT STRING SIZE(2) [01]
| | | +-offsetFreq ::= ENUMERATED [dB0] OPTIONAL:Exist
| | | +-cellsToRemoveList ::= SEQUENCE OF OPTIONAL:Omit
| | | +-cellsToAddModList ::= SEQUENCE OF OPTIONAL:Omit
| | | +-blackCellsToRemoveList ::= SEQUENCE OF OPTIONAL:Omit
| | | +-blackCellsToAddModList ::= SEQUENCE OF OPTIONAL:Omit
| | | +-cellForWhichToReportCGI ::= INTEGER OPTIONAL:Omit
| | | +-EXTENSION ::= SEQUENCE [0]
| | | +-VERSION-BRACKETS1 ::= SEQUENCE OPTIONAL:Omit
| | +-MeasObjectToAddMod ::= SEQUENCE
| | +-measObjectId ::= INTEGER (1..maxObjectId[32]) [2]
| | +-measObject ::= CHOICE [measObjectEUTRA]
| | +-measObjectEUTRA ::= SEQUENCE [100000]
| | +-carrierFreq ::= INTEGER (0..maxEARFCN[65535]) [2525]
| | +-allowedMeasBandwidth ::= ENUMERATED [mbw50]
| | +-presenceAntennaPort1 ::= BOOLEAN [FALSE]
| | +-neighCellConfig ::= BIT STRING SIZE(2) [01]
| | +-offsetFreq ::= ENUMERATED [dB0] OPTIONAL:Exist
| | +-cellsToRemoveList ::= SEQUENCE OF OPTIONAL:Omit
| | +-cellsToAddModList ::= SEQUENCE OF OPTIONAL:Omit
| | +-blackCellsToRemoveList ::= SEQUENCE OF OPTIONAL:Omit
| | +-blackCellsToAddModList ::= SEQUENCE OF OPTIONAL:Omit
| | +-cellForWhichToReportCGI ::= INTEGER OPTIONAL:Omit
| | +-EXTENSION ::= SEQUENCE [0]
| | +-VERSION-BRACKETS1 ::= SEQUENCE OPTIONAL:Omit
| +-reportConfigToRemoveList ::= SEQUENCE OF OPTIONAL:Omit
| +-reportConfigToAddModList ::= SEQUENCE OF SIZE(1..maxReportConfigId[32]) [1]
| | +-ReportConfigToAddMod ::= SEQUENCE
| | +-reportConfigId ::= INTEGER (1..maxReportConfigId[32]) [1]
| | +-reportConfig ::= CHOICE [reportConfigEUTRA]
| | +-reportConfigEUTRA ::= SEQUENCE
| | +-triggerType ::= CHOICE [event]
| | | +-event ::= SEQUENCE
| | | +-eventId ::= CHOICE [eventA4]
| | | | +-eventA4 ::= SEQUENCE
| | | | +-a4-Threshold ::= CHOICE [threshold-RSRP]
| | | | +-threshold-RSRP ::= INTEGER (0..97) [50]
| | | +-hysteresis ::= INTEGER (0..30) [0]
| | | +-timeToTrigger ::= ENUMERATED [ms256]
| | +-triggerQuantity ::= ENUMERATED [rsrp]
| | +-reportQuantity ::= ENUMERATED [both]
| | +-maxReportCells ::= INTEGER (1..maxCellReport[8]) [1]
| | +-reportInterval ::= ENUMERATED [ms1024]
| | +-reportAmount ::= ENUMERATED [r1]
| | +-EXTENSION ::= SEQUENCE [00]
| | +-VERSION-BRACKETS1 ::= SEQUENCE OPTIONAL:Omit
| | +-VERSION-BRACKETS2 ::= SEQUENCE OPTIONAL:Omit
| +-measIdToRemoveList ::= SEQUENCE OF OPTIONAL:Omit
| +-measIdToAddModList ::= SEQUENCE OF SIZE(1..maxMeasId[32]) [2] OPTIONAL:Exist
| | +-MeasIdToAddMod ::= SEQUENCE
| | | +-measId ::= INTEGER (1..maxMeasId[32]) [1]
| | | +-measObjectId ::= INTEGER (1..maxObjectId[32]) [1]
| | | +-reportConfigId ::= INTEGER (1..maxReportConfigId[32]) [1]
| | +-MeasIdToAddMod ::= SEQUENCE
| | +-measId ::= INTEGER (1..maxMeasId[32]) [2]
| | +-measObjectId ::= INTEGER (1..maxObjectId[32]) [2]
| | +-reportConfigId ::= INTEGER (1..maxReportConfigId[32]) [1]
| +-quantityConfig ::= SEQUENCE [1000] OPTIONAL:Exist
| | +-quantityConfigEUTRA ::= SEQUENCE [00] OPTIONAL:Exist
| | | +-filterCoefficientRSRP ::= ENUMERATED OPTIONAL:Omit
| | | +-filterCoefficientRSRQ ::= ENUMERATED OPTIONAL:Omit
| | +-quantityConfigUTRA ::= SEQUENCE OPTIONAL:Omit
| | +-quantityConfigGERAN ::= SEQUENCE OPTIONAL:Omit
| | +-quantityConfigCDMA2000 ::= SEQUENCE OPTIONAL:Omit
| | +-EXTENSION ::= SEQUENCE [0]
| | +-VERSION-BRACKETS1 ::= SEQUENCE OPTIONAL:Omit
| +-measGapConfig ::= CHOICE [setup] OPTIONAL:Exist
| | +-setup ::= SEQUENCE
| | +-gapOffset ::= CHOICE [gp0]
| | +-gp0 ::= INTEGER (0..39) [30]
| +-s-Measure ::= INTEGER OPTIONAL:Omit
| +-preRegistrationInfoHRPD ::= SEQUENCE OPTIONAL:Omit
| +-speedStatePars ::= CHOICE OPTIONAL:Omit
| +-EXTENSION ::= SEQUENCE [0]
| +-VERSION-BRACKETS1 ::= SEQUENCE OPTIONAL:Omit
+-mobilityControlInfo ::= SEQUENCE OPTIONAL:Omit
+-dedicatedInfoNASList ::= SEQUENCE OF OPTIONAL:Omit
+-radioResourceConfigDedicated ::= SEQUENCE OPTIONAL:Omit
+-securityConfigHO ::= SEQUENCE OPTIONAL:Omit
+-nonCriticalExtension ::= SEQUENCE OPTIONAL:Omit
The measurement report the UE sends back
The report is short, because it carries only what the event asked for. The measurement identity at the top says which of the two configured carriers triggered it, and the integers under each cell are the values the threshold was compared against.
A second capture, again left exactly as it was recorded.
+-measurementReport ::= SEQUENCE
+-criticalExtensions ::= CHOICE [c1]
+-c1 ::= CHOICE [measurementReport-r8]
+-measurementReport-r8 ::= SEQUENCE [0]
+-measResults ::= SEQUENCE [1]
| +-measId ::= INTEGER (1..maxMeasId[32]) [2]
| +-measResultPCell ::= SEQUENCE
| | +-rsrpResult ::= INTEGER (0..97) [73]
| | +-rsrqResult ::= INTEGER (0..34) [20]
| +-measResultNeighCells ::= CHOICE [measResultListEUTRA] OPTIONAL:Exist
| | +-measResultListEUTRA ::= SEQUENCE OF SIZE(1..maxCellReport[8]) [1]
| | +-MeasResultEUTRA ::= SEQUENCE [0]
| | +-physCellId ::= INTEGER (0..503) [0]
| | +-cgi-Info ::= SEQUENCE OPTIONAL:Omit
| | +-measResult ::= SEQUENCE [11]
| | +-rsrpResult ::= INTEGER (0..97) [73] OPTIONAL:Exist
| | +-rsrqResult ::= INTEGER (0..34) [29] OPTIONAL:Exist
| | +-EXTENSION ::= SEQUENCE [0]
| | +-VERSION-BRACKETS1 ::= SEQUENCE OPTIONAL:Omit
| +-EXTENSION ::= SEQUENCE [00]
| +-VERSION-BRACKETS1 ::= SEQUENCE OPTIONAL:Omit
| +-VERSION-BRACKETS2 ::= SEQUENCE OPTIONAL:Omit
+-nonCriticalExtension ::= SEQUENCE OPTIONAL:Omit
What 36.331 v19.3.0 says now
The decode above was taken under an earlier release, and two of the names in it have since changed. The field description quoted at the top of this page has changed as well, and 36.331 has added an event that suits carrier aggregation better than the one used here.
Reference
Two specifications carry what this page quotes. 36.331 was resolved at v19.3.0, which is the latest published version at the time of writing.
- 3GPP TS 36.331 v19.3.0, E-UTRA Radio Resource Control protocol specification. ThresholdEUTRA, MeasObjectEUTRA, ReportConfigEUTRA and the RSRP-Range and RSRQ-Range value ranges.
- 3GPP TS 36.133, E-UTRA Requirements for support of radio resource management. The mapping table that 36.331 defers to for RSRP and RSRQ measurement values.