UE Assistance Information is a special RRC message (mechanism) by which UE can inform various internal status to the network so that Network can assign / control resources better fit for the specific moment of each connected UE.
- Overall Procedure
- Types of UE Assistance Information
- What is gNB supposed to do ?
- UE Capability
- RRC Parameters
- Get the Test Procedure and Log / Amarisoft TechAcademy
Overall Procedure
As shown below (38.331-Figure 5.7.4.1-1: UE Assistance Information), UE may send UEAssistanceInformation after RRCReconfiguration.

In some aspect, you may consider the purpose of this message is similar to UE capability Information. Then, why we need this kind of new/additional signaling message. I think (in my personal opinion) there are some differences between UEassistanceInformation and UEcapabilityInformation).
- UE capability Information can be sent only in response to the request from gNB whereas UEassistanceInformation can be sent whenever UE wants to send
- UE capability Information is usually being sent before RRCReconfiguration to help gNB not to configure anything that is out of capability of the UE whereas UEassistanceInformation is sent after RRCReconfigure to help gNB to configure parameters best fit for the UE for the specific moment/duration.
- UE capabilityInformation usually informs on its max capabilities whereas UE assistanceInformation informs the capabilities at a specific moments (UE capability Information is more of a set of static information whereas UEassistanceInformation is more of dynamic nature)
Types of UE Assistance Information
The information that can be informed by UEassistanceMessage can be categorized as follows (this table is based on 38.331-5.7.4.1). I think one of the strongest motivation for this message is for Power Saving and Heat Mitigation and I think those would be implemented with higher priority.
|
Application Purpose |
Parameters |
|
Power Saving |
DRX parameters maximum aggregated bandwidth maximum number of secondary component carriers maximum number of MIMO layers minimum scheduling offset for cross-slot scheduling |
|
Overheating Mitigation |
overheating assistance information |
|
Measurement |
relaxation state for RLM measurements relaxation state for BFD measurements change of its fulfilment status for RRM measurement relaxation criterion |
|
Others |
delay budget report carrying desired increment/decrement in the connected mode DRX cycle length overheating assistance information IDC assistance information preference on the RRC state configured grant assistance information for NR sidelink communication preference in being provisioned with reference time information preference for FR2 UL gap preference to transition out of RRC_CONNECTED state for MUSIM operation preference on the MUSIM gaps availability of data mapped to radio bearers which are not configured for SDT preference for the SCG to be deactivated, or; indicate that the UE has uplink data to transmit for a DRB for which there is no MCG RLC bearer while the SCG is deactivated |
What is gNB supposed to do ?
I think the end effect of the UE assisstant information was often done by some UE implementation even when we didn't have the feature like UE assisstant information. The tricks that some UE (modem) employed for heat mitigation (i.e, avoiding overheat). Simply put, the trick was to cheat gNB in such a way that gNB reduces physical resources (reduce throughput) for a UE. Some example of these trick was as follows.
- UE report low RI even when the channel condition is good enough for higher value. It is expected for eNB/gNB to reduce the number of antenna for transmission and reduce heat generation / power consumption on UE
- (If above does not work enough), UE report low CQI even when the channel condition is good enough for higher value. It is expected for eNB/gNB to reduce MCS value and reduce heat generation / power consumption on UE
- When UE is in Carrier Aggregation, UE send scg-Failure and it is expected for gNB to remove the SCC.
I think major purpose of UE-Assisstance Information in NR is to make this kind of 'cheating process' an offical/formal processes. 3GPP specifies what kind of information a UE send / report by standard, but it doesn't seem (if I didn't miss anything) that there is clear statement about what gNB is supposed to do when it gets some message from UE. However I think the expectation from UE side would be similar to what they used to get when they were trying to cheat the gNB. Some of examples of expectation would be as follows :
MaxMIMO-LayerPreference-r16 : Usually UE would report the MIMO config than what it has reported in UE capability information and it is expected for gNB to send RRCReconfig to downgrade the MIMO as UE report.reducedMaxCCs : Usually UE would report the less number of CCs than the number of CC in the current setup and it is expected for gNB to reduce the number of CCs.reducedMaxCCs : Usually UE would report the less number of CCs than the number of CC in the current setup and it is expected for gNB to reduce the number of CCs.MinSchedulingOffsetPreference-r16 : Usually UE would report the larger values for k0 and k2 to have enough time to prepare PDSCH / PUSCH in response to DCI. In this case gNB may do two things. It just can put the requested value (any value greater than the requested value) in DCI without doing RRCReconfiguration. This can relax the required PDSCH/PUSCH preparation time, but it would not impact much on power saving on UE side. If gNB explicitely change k0, k2 value in RRCReconfiguration, then UE can switch off some of the PHY process between DCI and PDSCH/PUSCH if k0 and k2 are explicitely specified long enough.
UE Capability
UE-NR-Capability-v1610 ::= SEQUENCE {
inDeviceCoexInd-r16 ENUMERATED {supported} OPTIONAL,
dl-DedicatedMessageSegmentation-r16 ENUMERATED {supported} OPTIONAL,
nrdc-Parameters-v1610 NRDC-Parameters-v1610 OPTIONAL,
fr1-Add-UE-NR-Capabilities-v1610 UE-NR-CapabilityAddFRX-Mode-v1610 OPTIONAL,
fr2-Add-UE-NR-Capabilities-v1610 UE-NR-CapabilityAddFRX-Mode-v1610 OPTIONAL,
bh-RLF-Indication-r16 ENUMERATED {supported} OPTIONAL,
directSN-AdditionFirstRRC-IAB-r16 ENUMERATED {supported} OPTIONAL,
bap-Parameters-r16 BAP-Parameters-r16 OPTIONAL,
referenceTimeProvision-r16 ENUMERATED {supported} OPTIONAL,
sidelinkParameters-r16 SidelinkParameters-r16 OPTIONAL,
highSpeedParameters-r16 HighSpeedParameters-r16 OPTIONAL,
mac-Parameters-v1610 MAC-Parameters-v1610 OPTIONAL,
mcgRLF-RecoveryViaSCG-r16 ENUMERATED {supported} OPTIONAL,
resumeWithStoredMCG-SCells-r16 ENUMERATED {supported} OPTIONAL,
resumeWithStoredSCG-r16 ENUMERATED {supported} OPTIONAL,
resumeWithSCG-Config-r16 ENUMERATED {supported} OPTIONAL,
ue-BasedPerfMeas-Parameters-r16 UE-BasedPerfMeas-Parameters-r16 OPTIONAL,
son-Parameters-r16 SON-Parameters-r16 OPTIONAL,
onDemandSIB-Connected-r16 ENUMERATED {supported} OPTIONAL,
nonCriticalExtension UE-NR-Capability-v1640 OPTIONAL
}
PowSav-Parameters-r16 ::= SEQUENCE {
powSav-ParametersCommon-r16 PowSav-ParametersCommon-r16 OPTIONAL,
powSav-ParametersFRX-Diff-r16 PowSav-ParametersFRX-Diff-r16 OPTIONAL,
...
}
PowSav-Parameters-v1700 ::= SEQUENCE {
powSav-ParametersFR2-2-r17 PowSav-ParametersFR2-2-r17 OPTIONAL,
...
}
PowSav-ParametersCommon-r16 ::= SEQUENCE {
...
}
PowSav-ParametersFRX-Diff-r16 ::= SEQUENCE {
...
}
PowSav-ParametersFR2-2-r17 ::= SEQUENCE {
...
}
RRC Parameters
UEAssistanceInformation-v1540-IEs ::= SEQUENCE {
overheatingAssistance OverheatingAssistance OPTIONAL,
nonCriticalExtension UEAssistanceInformation-v1610-IEs OPTIONAL
}
OverheatingAssistance ::= SEQUENCE {
reducedMaxCCs ReducedMaxCCs-r16 OPTIONAL,
reducedMaxBW-FR1 ReducedMaxBW-FRx-r16 OPTIONAL,
reducedMaxBW-FR2 ReducedMaxBW-FRx-r16 OPTIONAL,
reducedMaxMIMO-LayersFR1 SEQUENCE {
reducedMIMO-LayersFR1-DL MIMO-LayersDL,
reducedMIMO-LayersFR1-UL MIMO-LayersUL
} OPTIONAL,
reducedMaxMIMO-LayersFR2 SEQUENCE {
reducedMIMO-LayersFR2-DL MIMO-LayersDL,
reducedMIMO-LayersFR2-UL MIMO-LayersUL
} OPTIONAL
}
ReducedAggregatedBandwidth ::= ENUMERATED {mhz0, mhz10, mhz20, mhz30, mhz40, mhz50, mhz60,
mhz80, mhz100, mhz200, mhz300, mhz400}
UEAssistanceInformation-v1610-IEs ::= SEQUENCE {
idc-Assistance-r16 IDC-Assistance-r16 OPTIONAL,
drx-Preference-r16 DRX-Preference-r16 OPTIONAL,
maxBW-Preference-r16 MaxBW-Preference-r16 OPTIONAL,
maxCC-Preference-r16 MaxCC-Preference-r16 OPTIONAL,
maxMIMO-LayerPreference-r16 MaxMIMO-LayerPreference-r16 OPTIONAL,
minSchedulingOffsetPreference-r16 MinSchedulingOffsetPreference-r16 OPTIONAL,
releasePreference-r16 ReleasePreference-r16 OPTIONAL,
sl-UE-AssistanceInformationNR-r16 SL-UE-AssistanceInformationNR-r16 OPTIONAL,
referenceTimeInfoPreference-r16 BOOLEAN OPTIONAL,
nonCriticalExtension SEQUENCE {} OPTIONAL
}
IDC-Assistance-r16 ::= SEQUENCE {
affectedCarrierFreqList-r16 AffectedCarrierFreqList-r16 OPTIONAL,
affectedCarrierFreqCombList-r16 AffectedCarrierFreqCombList-r16 OPTIONAL,
...
}
AffectedCarrierFreqList-r16 ::= SEQUENCE (SIZE (1.. maxFreqIDC-r16)) OF AffectedCarrierFreq-r16
AffectedCarrierFreq-r16 ::= SEQUENCE {
carrierFreq-r16 ARFCN-ValueNR,
interferenceDirection-r16 ENUMERATED {nr, other, both, spare}
}
AffectedCarrierFreqCombList-r16 ::= SEQUENCE (SIZE (1..maxCombIDC-r16))
OF AffectedCarrierFreqComb-r16
AffectedCarrierFreqComb-r16 ::= SEQUENCE {
affectedCarrierFreqComb-r16 SEQUENCE (SIZE (2..maxNrofServingCells)) OF ARFCN-ValueNR OPTIONAL,
victimSystemType-r16 VictimSystemType-r16
}
VictimSystemType-r16 ::= SEQUENCE {
gps-r16 ENUMERATED {true} OPTIONAL,
glonass-r16 ENUMERATED {true} OPTIONAL,
bds-r16 ENUMERATED {true} OPTIONAL,
galileo-r16 ENUMERATED {true} OPTIONAL,
navIC-r16 ENUMERATED {true} OPTIONAL,
wlan-r16 ENUMERATED {true} OPTIONAL,
bluetooth-r16 ENUMERATED {true} OPTIONAL,
...
}
DRX-Preference-r16 ::= SEQUENCE {
preferredDRX-InactivityTimer-r16 ENUMERATED {
ms0, ms1, ms2, ms3, ms4, ms5, ms6, ms8, ms10, ms20, ms30, ms40, ms50, ms60, ms80,
ms100, ms200, ms300, ms500, ms750, ms1280, ms1920, ms2560, spare9, spare8,
spare7, spare6, spare5, spare4, spare3, spare2, spare1} OPTIONAL,
preferredDRX-LongCycle-r16 ENUMERATED {
ms10, ms20, ms32, ms40, ms60, ms64, ms70, ms80, ms128, ms160, ms256, ms320, ms512,
ms640, ms1024, ms1280, ms2048, ms2560, ms5120, ms10240, spare12, spare11, spare10,
spare9, spare8, spare7, spare6, spare5, spare4, spare3, spare2, spare1 } OPTIONAL,
preferredDRX-ShortCycle-r16 ENUMERATED {
ms2, ms3, ms4, ms5, ms6, ms7, ms8, ms10, ms14, ms16, ms20, ms30, ms32,
ms35, ms40, ms64, ms80, ms128, ms160, ms256, ms320, ms512, ms640, spare9,
spare8, spare7, spare6, spare5, spare4, spare3, spare2, spare1 } OPTIONAL,
preferredDRX-ShortCycleTimer-r16 INTEGER (1..16) OPTIONAL
}
MaxBW-Preference-r16 ::= SEQUENCE {
reducedMaxBW-FR1-r16 ReducedMaxBW-FRx-r16 OPTIONAL,
reducedMaxBW-FR2-r16 ReducedMaxBW-FRx-r16 OPTIONAL
}
MaxCC-Preference-r16 ::= SEQUENCE {
reducedMaxCCs-r16 ReducedMaxCCs-r16 OPTIONAL
}
MaxMIMO-LayerPreference-r16 ::= SEQUENCE {
reducedMaxMIMO-LayersFR1-r16 SEQUENCE {
reducedMIMO-LayersFR1-DL-r16 INTEGER (1..8),
reducedMIMO-LayersFR1-UL-r16 INTEGER (1..4)
} OPTIONAL,
reducedMaxMIMO-LayersFR2-r16 SEQUENCE {
reducedMIMO-LayersFR2-DL-r16 INTEGER (1..8),
reducedMIMO-LayersFR2-UL-r16 INTEGER (1..4)
} OPTIONAL
}
MinSchedulingOffsetPreference-r16 ::= SEQUENCE {
preferredK0-r16 SEQUENCE {
preferredK0-SCS-15kHz-r16 ENUMERATED {sl1, sl2, sl4, sl6} OPTIONAL,
preferredK0-SCS-30kHz-r16 ENUMERATED {sl1, sl2, sl4, sl6} OPTIONAL,
preferredK0-SCS-60kHz-r16 ENUMERATED {sl2, sl4, sl8, sl12} OPTIONAL,
preferredK0-SCS-120kHz-r16 ENUMERATED {sl2, sl4, sl8, sl12} OPTIONAL
} OPTIONAL,
preferredK2-r16 SEQUENCE {
preferredK2-SCS-15kHz-r16 ENUMERATED {sl1, sl2, sl4, sl6} OPTIONAL,
preferredK2-SCS-30kHz-r16 ENUMERATED {sl1, sl2, sl4, sl6} OPTIONAL,
preferredK2-SCS-60kHz-r16 ENUMERATED {sl2, sl4, sl8, sl12} OPTIONAL,
preferredK2-SCS-120kHz-r16 ENUMERATED {sl2, sl4, sl8, sl12} OPTIONAL
} OPTIONAL
}
ReleasePreference-r16 ::= SEQUENCE {
preferredRRC-State-r16 ENUMERATED {idle, inactive, connected, outOfConnected}
}
ReducedMaxBW-FRx-r16 ::= SEQUENCE {
reducedBW-DL-r16 ReducedAggregatedBandwidth,
reducedBW-UL-r16 ReducedAggregatedBandwidth
}
ReducedMaxCCs-r16 ::= SEQUENCE {
reducedCCsDL-r16 INTEGER (0..31),
reducedCCsUL-r16 INTEGER (0..31)
}
PhysicalCellGroupConfig ::= SEQUENCE {
..
dcp-Config-r16 SetupRelease { DCP-Config-r16 } OPTIONAL, -- Need M
...
}
DCP-Config-r16 ::= SEQUENCE {
ps-RNTI-r16 RNTI-Value,
ps-Offset-r16 INTEGER (1..120),
sizeDCI-2-6-r16 INTEGER (1..maxDCI-2-6-Size-r16),
ps-PositionDCI-2-6-r16 INTEGER (0..maxDCI-2-6-Size-1-r16),
ps-WakeUp-r16 ENUMERATED {true} OPTIONAL, -- Need S
ps-TransmitPeriodicL1-RSRP-r16 ENUMERATED {true} OPTIONAL, -- Need S
ps-TransmitOtherPeriodicCSI-r16 ENUMERATED {true} OPTIONAL -- Need S
}
ServingCellConfig ::= SEQUENCE {
dormantBWP-Config-r16 SetupRelease { DormantBWP-Config-r16 }
}
DormantBWP-Config-r16::= SEQUENCE {
dormantBWP-Id-r16 BWP-Id OPTIONAL, -- Need M
withinActiveTimeConfig-r16 SetupRelease { WithinActiveTimeConfig-r16 } OPTIONAL,-- Need M
outsideActiveTimeConfig-r16 SetupRelease { OutsideActiveTimeConfig-r16 } OPTIONAL-- Need M
}
WithinActiveTimeConfig-r16 ::= SEQUENCE {
firstWithinActiveTimeBWP-Id-r16 BWP-Id OPTIONAL, -- Need M
dormancyGroupWithinActiveTime-r16 DormancyGroupID-r16 OPTIONAL -- Need R
}
OutsideActiveTimeConfig-r16 ::= SEQUENCE {
firstOutsideActiveTimeBWP-Id-r16 BWP-Id OPTIONAL, -- Need M
dormancyGroupOutsideActiveTime-r16 DormancyGroupID-r16 OPTIONAL -- Need R
}
DormancyGroupID-r16 ::= INTEGER (0..4)
ULInformationTransferMRDC ::= SEQUENCE {
criticalExtensions CHOICE {
c1 CHOICE {
ulInformationTransferMRDC ULInformationTransferMRDC-IEs,
spare3 NULL, spare2 NULL, spare1 NULL
},
criticalExtensionsFuture SEQUENCE {}
}
}
ULInformationTransferMRDC-IEs::= SEQUENCE {
ul-DCCH-MessageNR OCTET STRING OPTIONAL,
ul-DCCH-MessageEUTRA OCTET STRING OPTIONAL,
lateNonCriticalExtension OCTET STRING OPTIONAL,
nonCriticalExtension SEQUENCE {} OPTIONAL
}
CG-ConfigInfo ::= SEQUENCE {
criticalExtensions CHOICE {
c1 CHOICE{
cg-ConfigInfo CG-ConfigInfo-IEs,
spare3 NULL, spare2 NULL, spare1 NULL
},
criticalExtensionsFuture SEQUENCE {}
}
}
CG-ConfigInfo-IEs ::= SEQUENCE {
ue-CapabilityInfo OCTET STRING (CONTAINING UE-CapabilityRAT-ContainerList)
OPTIONAL,-- Cond SN-AddMod
candidateCellInfoListMN MeasResultList2NR OPTIONAL,
candidateCellInfoListSN OCTET STRING (CONTAINING MeasResultList2NR) OPTIONAL,
measResultCellListSFTD-NR MeasResultCellListSFTD-NR OPTIONAL,
scgFailureInfo SEQUENCE {
failureType ENUMERATED {
t310-Expiry,
randomAccessProblem,
rlc-MaxNumRetx,
synchReconfigFailure-SCG,
scg-reconfigFailure,
srb3-IntegrityFailure
},
measResultSCG OCTET STRING (CONTAINING MeasResultSCG-Failure)
} OPTIONAL,
configRestrictInfo ConfigRestrictInfoSCG OPTIONAL,
drx-InfoMCG DRX-Info OPTIONAL,
measConfigMN MeasConfigMN OPTIONAL,
sourceConfigSCG OCTET STRING (CONTAINING RRCReconfiguration) OPTIONAL,
scg-RB-Config OCTET STRING (CONTAINING RadioBearerConfig) OPTIONAL,
mcg-RB-Config OCTET STRING (CONTAINING RadioBearerConfig) OPTIONAL,
mrdc-AssistanceInfo MRDC-AssistanceInfo OPTIONAL,
nonCriticalExtension CG-ConfigInfo-v1540-IEs OPTIONAL
}
MRDC-AssistanceInfo ::= SEQUENCE {
affectedCarrierFreqCombInfoListMRDC SEQUENCE (SIZE (1..maxNrofCombIDC)) OF
AffectedCarrierFreqCombInfoMRDC,
...,
[[
overheatingAssistanceSCG-r16 OCTET STRING (CONTAINING OverheatingAssistance) OPTIONAL
]],
[[
overheatingAssistanceSCG-FR2-2-r17 OCTET STRING (CONTAINING OverheatingAssistance-r17)
OPTIONAL
]]
}
Reference :
[1] The 5G Evolution:3GPP Releases 16-17 (5G Americas)
[2] RP-200494 - UE Power Saving in NR (Work Item Description)
[3] TR 38.840 - Study on User Equipment (UE) power saving in NR
[4] Study on User Equipment (UE) power saving in NR (Release 16)
YouTube
- 5G Mobile mmWave Technology Evolution (Mar 2020)