5G/NR - SR                                           Home : www.sharetechnote.com





SR (Scheduling Request)


Basic funcationality and mechanism for NR SR is almost same as LTE SR.


SR is a special Physical Layer message for UE to ask Network to send UL Grant (DCI Format 0_0 /0_1) so that UE can transmit PUSCH. Putting it other way, SR is an Uplink Physical Layer message from UE to Network, saying "I have some data to send to you. Would you send me some Grant for me to send the data ?".



How UE send SR message ? UE send it on a PUCCH (or on UCI part on PUSCH). Not all PUCCH format can carry the SR. Some PUCCH format can carry SR and some other don't. UE is using a certain PUCCH format depending on situations to send SR. (For the detailed PUCCH format that can carry SR, refer to PUCCH format page).


Another implication of SR being a physical layer message imply that you would not be able to decode this with RRC/NAS ASN decoder. Many of eNB or test equipment would let you convert its log into wireshark file, but it is highly likely that you would not see the SR message in the wireshark unless the equipment vendor provide specific wireshark delimiter. Usually those equipment vendor provide their own log viewer that enables this kind of lower layer message.


Who is controlling this SR process ?

Even though SR message itself is a kind of physical layer message, it is controlled by MAC layer process (it is similar to many other physical layer channel are controlled by MAC layer)

Overall SR process (when to send SR) is controlled by MAC layer as illustrated below. (See 38.321 5.4.4 for details)





RRC Parameters


SchedulingRequestConfig ::= SEQUENCE {

    schedulingRequestToAddModList       SEQUENCE (SIZE (1..maxNrofSR-ConfigPerCellGroup)) OF

                                               SchedulingRequestToAddMod  OPTIONAL,

    schedulingRequestToReleaseList      SEQUENCE (SIZE (1..maxNrofSR-ConfigPerCellGroup)) OF

                                               SchedulingRequestId  OPTIONAL -- Need N



SchedulingRequestToAddMod ::= SEQUENCE {

    schedulingRequestId                 SchedulingRequestId,

    sr-ProhibitTimer                    ENUMERATED {ms1, ms2, ms4, ms8, ms16,

                                                    ms32, ms64, ms128}

    sr-TransMax                         ENUMERATED {n4, n8, n16, n32, n64,

                                                    spare3, spare2, spare1}




schedulingRequestId : Used to modify a SR configuration and to indicate, in LogicalChannelConfig, the SR configuration to which a logical channel is mapped and to indicate, in SchedulingRequestresourceConfig, the SR configuration for which a scheduling request resource is used.


sr-ProhibitTimer : Timer for SR transmission in ms on PUCCH


sr-TransMax : Maximum number of SR transmissions



LogicalChannelConfig ::= SEQUENCE {

    ul-SpecificParameters      SEQUENCE {

        priority INTEGER (1..16),

        prioritisedBitRate                      ENUMERATED {kBps0, kBps8, kBps16, kBps32,

                                                            kBps64, kBps128, kBps256, kBps512,

                                                            kBps1024, kBps2048, kBps4096,

                                                            kBps8192, kBps16384, kBps32768,

                                                            kBps65536, infinity},

        bucketSizeDuration                      ENUMERATED {ms5, ms10, ms20, ms50, ms100, ms150,

                                                            ms300, ms500, ms1000,

                                                            spare7, spare6, spare5, spare4,

                                                            spare3,spare2, spare1},

        allowedServingCells                     SEQUENCE (SIZE (1..maxNrofServingCells-1)) OF

                                                            ServCellIndex  OPTIONAL,

        allowedSCS-List                         SEQUENCE (SIZE (1..maxSCSs)) OF SubcarrierSpacing

        maxPUSCH-Duration                       ENUMERATED {ms0p02, ms0p04, ms0p0625, ms0p125,

                                                            ms0p25, ms0p5, spare2, spare1}

        configuredGrantType1Allowed             ENUMERATED {true} OPTIONAL,

        logicalChannelGroup                     INTEGER (0..maxLCG-ID) OPTIONAL, -- Need R

        schedulingRequestID                     SchedulingRequestId OPTIONAL, -- Need R

        logicalChannelSR-Mask                   BOOLEAN,

        logicalChannelSR-DelayTimerApplied      BOOLEAN,


        bitRateQueryProhibitTimer               ENUMERATED { s0, s0dot4, s0dot8, s1dot6,

                                                             s3, s6, s12,s30} OPTIONAL -- Need R

} OPTIONAL, -- Cond UL




logicalChannelSR-Mask : Controls SR triggering when a configured uplink grant of type1 or type2 is configured. true indicates that SR masking is configured for this logical channel


logicalChannelSR-DelayTimerApplied : Indicates whether to apply the delay timer for SR transmission for this logical channel. Set to false if logicalChannelSR-DelayTimer is not included in BSR-Config.