5G/NR - Beam Failure Recovery                                  Home : www.sharetechnote.com






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 >

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




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