5G/NR - Beam Failure Recovery         





Beam Failure Recovery


Beam Failure detection and recovery procedure is specified in 38.321-5.17 and can be summarized as below.






< UE >

Detects Beam Failure (L1-RSRP for the connected beam goes below a certain limit). UE uses a specific Reference Signal to detect the beam failure.


< UE >

Search Another Canadidate Beam with good quality


UE -> NW

If a predefined number of Beam Failure is detected, Trigger Beam Failure Recovery Process with the candidate beam (PRACH). The predefined number of beamfailure to trigger this process is defined by beamFailureInstanceMaxCount in RRC. // UE send PRACH with the ID specified in BFR-SSB-Resource.ra-PreambleIndex


UE <- NW

Reply to Beam Failure Recovery Request (RACH Response). NW send DCI for msg2 via the search space specified by recoverySearchSpaceId


This process is illustrated as below from this paper([3])



NOTE : It would worth note following comments from this paper([3])

    To accelerate the procedure of beam recovery and ensure the robustness of this message delivery, non-contention based channel based on physical random access channel (PRACH) (instead of contention-based) can be used for carrying beam failure recovery request for primary cell in Release 15. In Release 16, uplink control channel is additionally supported for carrying beam failure recovery request for secondary cells in the case of carrier aggregation. After this beam failure recovery process, the TRP and UE can use the newly identified beam(s) for subsequent communication




RRC Parameters for Beam Failure Detection


RadioLinkMonitoringConfig ::= SEQUENCE {

   failureDetectionResourcesToAddModList     SEQUENCE (SIZE(1..maxNrofFailureDetectionResources))

                                                   OF RadioLinkMonitoringRS

   failureDetectionResourcesToReleaseList    SEQUENCE (SIZE(1..maxNrofFailureDetectionResources))

                                                   OF RadioLinkMonitoringRS-Id

   beamFailureInstanceMaxCount               ENUMERATED {n1, n2, n3, n4, n5, n6, n8, n10}

   beamFailureDetectionTimer                 ENUMERATED {pbfd1, pbfd2, pbfd3, pbfd4, pbfd5,

                                                         pbfd6, pbfd8, pbfd10}





RadioLinkMonitoringRS ::= SEQUENCE {

   radioLinkMonitoringRS-Id                  RadioLinkMonitoringRS-Id,

   purpose                                   ENUMERATED {beamFailure, rlf, both},

   detectionResource                         CHOICE {

                                                   ssb-Index SSB-Index,

                                                   csi-RS-Index NZP-CSI-RS-ResourceId






RRC Parameters for Beam Failure Recovery Configuration


BeamFailureRecoveryConfig ::= SEQUENCE {

   rootSequenceIndex-BFR              INTEGER (0..137) OPTIONAL, -- Need M

   rach-ConfigBFR                     RACH-ConfigGeneric OPTIONAL, -- Need M

   rsrp-ThresholdSSB                  RSRP-Range OPTIONAL, -- Need M

   candidateBeamRSList                SEQUENCE (SIZE(1..maxNrofCandidateBeams))

                                         OF PRACH-ResourceDedicatedBFR OPTIONAL, -- Need M

   ssb-perRACH-Occasion               ENUMERATED {oneEighth, oneFourth, oneHalf, one, two,

                                                  four, eight, sixteen} OPTIONAL, -- Need M

   ra-ssb-OccasionMaskIndex           INTEGER (0..15) OPTIONAL, -- Need M

   recoverySearchSpaceId              SearchSpaceId OPTIONAL, -- Need R

   ra-Prioritization                  RA-Prioritization OPTIONAL, -- Need R

   beamFailureRecoveryTimer           ENUMERATED {ms10, ms20, ms40, ms60, ms80,

                                                  ms100, ms150, ms200} OPTIONAL, -- Need M



      msg1-SubcarrierSpacing-v1530 SubcarrierSpacing OPTIONAL -- Need M




PRACH-ResourceDedicatedBFR ::= CHOICE {

   ssb                               BFR-SSB-Resource,

   csi-RS                            BFR-CSIRS-Resource



BFR-SSB-Resource ::= SEQUENCE {

   ssb                               SSB-Index,

   ra-PreambleIndex                  INTEGER (0..63),





   csi-RS                            NZP-CSI-RS-ResourceId,

   ra-OccasionList                   SEQUENCE (SIZE(1..maxRA-OccasionsPerCSIRS))

                                        OF INTEGER (0..maxRA-Occasions-1) OPTIONAL, -- Need R

   ra-PreambleIndex                  INTEGER (0..63) OPTIONAL, -- Need R





RACH-ConfigGeneric ::= SEQUENCE {

   prach-ConfigurationIndex          INTEGER (0..255),

   msg1-FDM                          ENUMERATED {one, two, four, eight},

   msg1-FrequencyStart               INTEGER (0..maxNrofPhysicalResourceBlocks-1),

   zeroCorrelationZoneConfig         INTEGER(0..15),

   preambleReceivedTargetPower       INTEGER (-202..-60),

   preambleTransMax                  ENUMERATED {n3,n4,n5,n6,n7,n8,n10,n20,n50,n100,n200},

   powerRampingStep                  ENUMERATED {dB0, dB2, dB4, dB6},

   ra-ResponseWindow                 ENUMERATED {sl1, sl2, sl4, sl8, sl10, sl20, sl40, sl80},





RA-Prioritization ::= SEQUENCE {

   powerRampingStepHighPriority      ENUMERATED {dB0, dB2, dB4, dB6},

   scalingFactorBI                   ENUMERATED {zero, dot25, dot5, dot75} OPTIONAL, -- Need R








[1] 3GPP TS 38.214 - 5G;NR; Physical layer procedures for data

[2] 3GPP TS 38.331 - 5G;NR;Radio Resource Control (RRC); Protocol specification

[3] Beam Management in Millimeter-Wave Communications for 5G and Beyond