Amarisoft

NR CG (Configured Grant)

This tutorial is to show you how to configure Configured Grant. Configured Grant is a mechanism that enable UL scheduling via RRC message and schedule PUSCH without DCI.  Major user case and concept is very similar to SPS (Semi Persistent Scheduling) in LTE.  In LTE, we used the same concept both in downlink and uplink, and name it as SPS for both downlink and uplink. But in NR, we call this mechanism as Configured Grant for Uplink and SPS for Downlink.

There are two types of CG defined in 3GPP called Type 1 and Type 2 which can be summarized as follows.

NOTE : This feature is supported from Release 2022-10-27 (for type 1) and from 2023-03-17 (for type 2)

Table of Contents

Introduction

Configured Grant (CG) is an advanced uplink scheduling mechanism introduced in 5G NR (New Radio) to enhance uplink data transmission efficiency and reduce network signaling overhead. Unlike dynamic scheduling, where each uplink transmission requires explicit grant signaling via Downlink Control Information (DCI), Configured Grant enables the gNodeB (5G base station) to pre-configure the UE (User Equipment) with uplink transmission resources through RRC (Radio Resource Control) configuration. This allows the UE to transmit PUSCH (Physical Uplink Shared Channel) data autonomously at predetermined intervals, significantly lowering latency and improving support for services requiring predictable uplink resources, such as Ultra-Reliable Low-Latency Communication (URLLC) and massive Machine Type Communications (mMTC). Architecturally, Configured Grant leverages NR’s flexible slot-based structure and advanced scheduling policies, supporting two main types: Type 1, which allows immediate autonomous transmission after RRC configuration, and Type 2, which requires an additional DCI trigger before transmission. This approach builds upon and extends the Semi-Persistent Scheduling (SPS) concept from LTE, where SPS was used for both uplink and downlink, but in NR, Configured Grant is specific to uplink while SPS is dedicated to downlink. The introduction of Configured Grant addresses the need for scalable, low-latency data services in the evolving 5G ecosystem, playing a critical role in enabling new applications and use-cases that demand more deterministic and efficient uplink scheduling.

Summary of the Tutorial

This tutorial covers low-layer testing procedures for verifying Configured Grant (CG) Type 1 and Type 2 Immediate in NR SA (Standalone) mode, focusing on single BWP scenarios. The procedures utilize Amarisoft test equipment, and can be performed either with a commercial UE (Setup A) or the Amarisoft UEsim (Setup B). The summary below outlines the test methodologies, configuration steps, and execution flow for both test scenarios.

Overall Methodology:

Test Setup

Test setup for this tutorial is as shown below.  This is just for low layer testing, you may not need any complicated IP layer setup.

If you have a commercial UE that support UE assistance information with Release Preference, you can use the Setup A. If you don't have any commercial UE supporting this feature but have Amarisoft UEsim you can use Setup B. In this Test, Setup B is used.

Setup A

This is the setup where you use a commercial UE as DUT.

TestSetup Callbox UE 1sdr 01

Setup B

This is the setup where you use a commercial Amarisoft UEsim as DUT.

TestSetup Callbox UEsim 1sdr 01

Key Configuration Parameters

Followings are important configuration parameters for this tutorial. You may click on the items for the descriptions from Amarisoft documents.

Test 1 :  Configured Grant - Type 1 with Single BWP

This test is to show how to configure and verify the CG(Configured Grant) type 1. In CG Type 1, UE is expected to send PUSCH after RRCReconfiguration for CG without DCI Triggering.

Configuration

The configuration shown here is common configuration for all the subtests belonging to Test 1

I have used gnb-sa-cg.cfg which is copied and modified from gnb-sa.cfg on Callbox (gNB) and drb_nr_cg.cfg which is copied and modified from drb_nr.cfg

NR SA CG Test 1 Config 01

I am using the default mme-ims.cfg without any modification.

NR SA CG Test 1 Config 02

On UEsim, I used ue-nr-sa-cg.cfg which has been copied and modified from ue-nr-sa.cfg (NOTE : If you are using the commercial UE as a DUT, you don't need this step. Just make it sure that your UE support UE-assistance-information for release-preference).

NR SA CG Test 1 Config 03

gnb-sa-cg.cfg  is configured as follows.

This conifiguration shows the gNB settings for Configured Grant uplink transmission.

The configured_grant section is the key part. configuration_type sets the CG type, and here it is type1. l_crb and l_crb_max define the PRB allocation range for the UE uplink transmission. mcs and mcs_table define the modulation and coding setup. periodicity defines how often the UE can transmit PUSCH without dynamic scheduling.

The pusch section defines the detailed uplink waveform settings. mapping_type sets the PUSCH mapping method. n_symb sets the number of PUSCH symbols. dmrs_add_pos, dmrs_type, and dmrs_max_len define the DMRS pattern used for decoding.

The optional srs section configures periodic uplink sounding. In this example, resource_type is periodic and period is 80 slots.

Overall, this configuration predefines the uplink resources, transmission interval, and PUSCH parameters needed for Configured Grant operation.

NR SA CG Test 1 Config 04

Followings are the highlighed configuration only.

  configured_grant: {

    ra_type: "type1",

    l_crb: 2,

    l_crb_max: 6,

    mcs: 10,

    periodicity: 20,

    configuration_type: "type1",

    mcs_table: "qam64"

  }

drb_nr_cg.cfg is configured as follows.

This configuration shows how Configured Grant is enabled for a specific DRB by setting the parameter need_sps to "ul" under the selected QCI. The QCI identifies the bearer type. In this example, qci 9 is used, which typically represents a best-effort internet bearer. By setting need_sps to "ul", the uplink traffic for this bearer is allowed to use configured grant transmission.

Overall, the key part for enabling configured grant is setting need_sps to "ul" under the chosen QCI. This links the DRB traffic to the configured grant uplink transmission configured earlier in the gNB configuration.

NR SA CG Test 1 Config 05

ue-nr-sa-cg.cfg  is configured as shown below. (NOTE : If you are using the commercial UE as a DUT, you don't need this step. Just make it sure that your UE support UE-assistance-information for release-preference).

This configuration shows the minimal UE capability setting required in UEsim to support Configured Grant operation.

The key parameter is as_release. This parameter specifies the 3GPP access stratum release supported by the UE. To use Configured Grant, the value must be set to 16 or higher. In this example, it is set to 17, which means the UE advertises support for Release 17 features.

Overall, the only required configuration for this tutorial is setting as_release to 16 or higher so that the UE capability signaling includes support for Configured Grant.

NR SA CG Test 1 Config 06

Perform the Test

This step verifies that the gNB configuration has been applied correctly on the Callbox.

After starting the LTE service, you run the cell command to check the logical cell configuration. The output shows the gNB identifier, PLMN, RAT type, operating band, and key radio parameters. In this example the cell operates in NR band n78. The dl_arfcn indicates the downlink carrier frequency. pci shows the Physical Cell ID. TAC identifies the tracking area code, and the PLMN confirms the network identity.

The cell_phy command shows the physical layer configuration of the same cell. It provides more detailed radio parameters including bandwidth, ARFCN, number of antennas, number of layers, subcarrier spacing, and modulation capability. The output also displays the uplink configuration and the SSB frequency information.

By checking these two commands you can confirm that the cell parameters such as band, ARFCN, PCI, antenna configuration, and SCS are configured as intended before proceeding with UE testing.

NR SA CG Test 1 Run 01

Power on UE.

The command power_on starts the UE simulation and begins the cell search procedure. After scanning the configured frequency, the UE detects the broadcast information from the gNB. The message Cell 0: SIB found confirms that the UE successfully detected the cell and decoded the broadcast system information, which indicates that the radio link between the UE and the gNB is working correctly.

NR SA CG Test 1 Run 02

Wait until the DUT complete the initial attach.  This step shows the gNB runtime trace after the UE completes the initial attach procedure.

After the UE is connected, the trace command displays real-time scheduling information for both downlink and uplink traffic. The table shows various radio statistics such as UE ID, C-RNTI, CQI, rank indicator, modulation and coding information, retransmissions, and data rate.

The UL section shows the uplink PUSCH activity. The snr_puc1 column indicates the uplink signal quality measured by the gNB. rxok and brate show the number of successfully received uplink transport blocks and the resulting uplink data rate.

The highlighted rows correspond to PUSCH transmissions scheduled through Configured Grant. In this case the uplink traffic is printed in the trace output, but the mcs field is not shown because the transmission is not dynamically scheduled through DCI. Instead, the modulation and coding configuration is predefined in the configured_grant configuration.

This output confirms that the UE is transmitting uplink data using the preconfigured resources defined by Configured Grant.

NR SA CG Test 1 Run 03

Log Analysis

Following is the log snapshot that are involved in Configured Grant

Sample Log

Sample Log (UEsim Log)

This step verifies that the UE supports Configured Grant through the UE Capability Information message.

In the Amarisoft WebGUI trace, you can observe the RRC signaling during the connection procedure. After the UE completes the initial access and security procedures, the UE sends the UE capability information message to the gNB. This message contains a detailed list of the radio features supported by the UE.

In the capability parameters, the UE should report configuredUL-GrantType1 supported. This capability indicates that the UE supports Type 1 Configured Grant for uplink PUSCH transmission.

The gNB checks this capability before applying the configured grant configuration. If this capability is not present, the gNB will not activate configured grant scheduling for that UE.

Therefore, confirming configuredUL-GrantType1 supported in the UE capability message ensures that the UE can transmit uplink data using the preconfigured resources defined by the configured grant settings.

NR SA CG Test 1 Log 01

After the UE reports that it supports Configured Grant in the UE Capability Information message, the gNB proceeds to configure the feature through RRC signaling.

This configuration appears in the RRC Reconfiguration message sent from the gNB to the UE. In the decoded message, the scheduling information for Configured Grant is provided through rrc-ConfiguredUplinkGrant. This section defines the uplink resources that the UE can use without waiting for dynamic scheduling.

The configuration also includes cg-DMRS-Configuration, which defines the DMRS parameters used for demodulation of the configured grant PUSCH transmission. These parameters control the reference signal structure used by the gNB receiver for channel estimation.

In addition, the setup includes uci-onPUSCH, which configures how uplink control information such as HARQ-ACK or CSI is multiplexed on the PUSCH transmission.

Together, these parameters provide all the necessary information for the UE to transmit uplink data using Configured Grant. Once this configuration is applied, the UE can start transmitting PUSCH periodically using the predefined resources without requiring PDCCH scheduling for each transmission.

NR SA CG Test 1 Log 02

After the RRC Reconfiguration that includes Configured Grant, the UE begins transmitting PUSCH using the preconfigured uplink resources.

In the trace you can see repeated PUSCH transmissions from the UE without any preceding DCI scheduling. Normally PUSCH transmission requires a DCI grant on PDCCH, but with Configured Grant the resources are already defined by the RRC configuration. Therefore the UE can transmit uplink data periodically without receiving DCI 0_1 scheduling messages.

The periodic transmission is controlled by the periodicity parameter in the rrc-ConfiguredUplinkGrant configuration. In this setup the periodicity is set to sym20x14, which corresponds to 20 slots. With 30 kHz subcarrier spacing, 20 slots correspond to approximately 10 ms. As a result, the UE sends PUSCH roughly every 10 ms.

The repeated PUSCH entries in the trace confirm that the UE is transmitting uplink data using Configured Grant rather than dynamic scheduling. This verifies that the Configured Grant configuration is working correctly.

NR SA CG Test 1 Log 03

Test 2 :  Configured Grant - Type 2 Immediate with Single BWP

This test is to show how to configure and verify the CG(Configured Grant) type 2 Immediate. In CG Type 2 Immediate, UE is expected to send PUSCH after RRCReconfiguration for CG and DCI Triggering.

Configuration

The configuration shown here is common configuration for all the subtests belonging to Test 2

I have used gnb-sa-cg-type2-immediate.cfg which is copied and modified from gnb-sa.cfg on Callbox (gNB) and drb_nr_cg.cfg which is copied and modified from drb_nr.cfg

NR SA CG Test 2 Config 01

I am using the default mme-ims.cfg without any modification.

NR SA CG Test 2 Config 02

On UEsim, I used ue-nr-sa-cg.cfg which has been copied and modified from ue-nr-sa.cfg (NOTE : If you are using the commercial UE as a DUT, you don't need this step. Just make it sure that your UE support UE-assistance-information for release-preference).

NR SA CG Test 2 Config 03

gnb-sa-cg-type2-immediate.cfg  is configured as follows.

This configuration shows how Configured Grant is defined in the gNB configuration.

The configured_grant section specifies the parameters used for Configured Grant uplink transmission. ra_type defines the random access type used for the configured grant procedure. l_crb and l_crb_max define the physical resource block range assigned for the UE PUSCH transmission. mcs and mcs_table define the modulation and coding configuration used for the uplink transmission.

periodicity defines how often the UE can transmit PUSCH using the configured grant resources. configuration_type specifies the configured grant mode. In this example it is set to type2_immediate, meaning the UE can start transmitting immediately after receiving the configuration.

The mac_config section contains general MAC parameters such as HARQ limits, BSR timer, PHR timers, and scheduling request settings. These parameters control general MAC behavior and are not specific to Configured Grant. The parameter enhance_skip_uplink_tx_configured_enabled is disabled here to prevent the UE from skipping configured grant transmission when there is no PUSCH data.

Finally, drb_config specifies the DRB configuration file used for the bearer setup. In this setup a modified drb configuration file is used so that the bearer can be associated with Configured Grant transmission..

NR SA CG Test 2 Config 04

drb_nr_cg.cfg is configured as follows.

This configuration shows how a DRB is associated with Configured Grant in the DRB configuration file.

The key parameter is need_sps. To enable Configured Grant for uplink transmission, need_sps must be set to "ul" under the selected QCI entry. This indicates that uplink traffic for this bearer can use Configured Grant resources instead of relying only on dynamically scheduled PUSCH.

In this example, qci is set to 9, which represents a best-effort internet bearer. The need_sps parameter is configured under this QCI so that the uplink traffic of this bearer uses Configured Grant. Any QCI in the configuration can be used for this purpose, but in this example QCI 9 is chosen because it carries the default data traffic.

Overall, enabling need_sps with the value "ul" under the selected QCI links the DRB traffic to the Configured Grant uplink configuration defined in the gNB configuration.

NR SA CG Test 2 Config 05

ue-nr-sa-cg.cfg  is configured as shown below. (NOTE : If you are using the commercial UE as a DUT, you don't need this step. Just make it sure that your UE support UE-assistance-information for release-preference).

This configuration shows the UEsim setup required for testing Configured Grant.

The ue_list section defines the simulated UE identity and security parameters. imsi specifies the subscriber identity and K specifies the authentication key used during the attach procedure.

The important parameter in this configuration is as_release. This parameter indicates the 3GPP access stratum release supported by the UE. For Configured Grant to work, this value must be set to 16 or higher. In this example it is set to 17, which allows the UE to advertise support for the necessary features during UE capability signaling.

NR SA CG Test 1 Config 06

Perform the Test

After starting the LTE service on the Callbox, you can verify the cell configuration using the cell and cell_phy commands.

The cell command shows the logical cell configuration. The output displays the gNB identifier, PLMN, RAT type, operating band, TAC, downlink ARFCN, and PCI. In this example the cell operates in NR band n78 with dl_arfcn 632628 and PCI 500.

The cell_phy command shows the physical layer configuration of the cell. It provides more detailed radio parameters including bandwidth, ARFCN, number of antennas, number of layers, subcarrier spacing, and modulation capability for both downlink and uplink. The output also shows the SSB ARFCN and SCS used for synchronization signals.

By checking these two commands you can confirm that the cell parameters such as band, ARFCN, PCI, antenna configuration, and SCS are configured correctly before proceeding with UE testing.

NR SA CG Test 1 Run 01

This step shows the UE startup process in UEsim.

The RF configuration line displays the radio parameters used by the simulated UE. sample_rate specifies the baseband sampling rate. dl_freq and ul_freq indicate the operating frequency of the cell. In this example the UE is tuned to band n78 at 3489.420 MHz. dl_ant and ul_ant indicate the number of receive and transmit antennas used by the UE.

The log configuration sets the log file location and rotation size.

The power_on command starts the UE simulation and begins the cell search procedure. The UE scans the configured frequency and attempts to detect synchronization signals from the gNB.

The message Cell 0: SIB found confirms that the UE successfully detected the cell and decoded the broadcast system information. This indicates that the UE is synchronized with the cell and the radio link with the gNB is working correctly.

NR SA CG Test 1 Run 02

After the UE completes the initial attach, you can monitor the uplink activity using the trace command on the Callbox.

The trace output displays real-time radio statistics for the connected UE. The table includes information such as UE ID, C-RNTI, CQI, rank indicator, retransmissions, signal quality, and data rate for both downlink and uplink.

In the UL section you can observe the PUSCH transmissions from the UE. The highlighted rows show the uplink traffic generated using Configured Grant. In this case the traffic information and data rate are displayed, but the mcs field is not printed. This happens because the PUSCH is not scheduled by a dynamic DCI grant.

With Configured Grant, the uplink transmission parameters are already predefined in the RRC configuration. Therefore the UE transmits PUSCH using the configured resources without receiving a scheduling grant on PDCCH. The repeated entries in the trace confirm that uplink data is being transmitted through Configured Grant.

NR SA CG Test 1 Run 03

Log Analysis

Following is the log snapshot that are involved in Configured Grant

Sample Log

Sample Log (UEsim Log)

This step verifies that the UE supports Configured Grant Type 2 through the UE Capability Information message.

In the Amarisoft WebGUI trace, you can observe the RRC signaling exchanged between the UE and the gNB during the connection procedure. After the UE completes the initial access and security setup, the UE sends the UE capability information message to the gNB.

This message contains a list of the radio features supported by the UE. For Configured Grant Type 2 operation, the UE capability must indicate configuredUL-GrantType2 supported. This informs the gNB that the UE can handle Type 2 Configured Grant uplink transmission.

The gNB checks this capability before applying the configured grant configuration. If this capability is not present, the gNB will not activate Configured Grant Type 2 for that UE.

Confirming configuredUL-GrantType2 supported in the UE capability information ensures that the UE is capable of transmitting uplink PUSCH using Configured Grant Type 2 resources configured by the gNB.

NR SA CG Test 2 Log 01

After the UE reports support for Configured Grant, the gNB configures the feature through an RRC Reconfiguration message.

In the decoded RRC configuration you can see the configuredGrantConfig section under uplinkConfig. This section contains the parameters required for Configured Grant transmission. The cg-DMRS-Configuration defines the DMRS parameters used for demodulation of the PUSCH transmitted through Configured Grant.

The configuration also includes uci-onPUSCH setup, which defines how uplink control information such as HARQ-ACK or CSI is multiplexed on the PUSCH transmission.

In this setup the grant information for PUSCH scheduling is not explicitly configured in the RRC message. Instead, the UE receives the scheduling trigger through a CG trigger carried in DCI. Once the trigger is received, the UE uses the configured parameters to transmit PUSCH according to the configured grant settings.

NR SA CG Test 2 Log 02

After the RRC Reconfiguration that includes Configured Grant, the first step is the trigger of the configured grant transmission.

In the trace you first see a DCI 0_1 message on PDCCH. This DCI acts as the trigger for Configured Grant operation. After this trigger, the UE begins transmitting PUSCH using the configured grant resources.

Following the trigger, repeated PUSCH transmissions appear in the trace without additional DCI 0_1 scheduling. This happens because the uplink resources and transmission parameters have already been configured by the RRC message.

The transmission interval is controlled by the periodicity parameter in the configured grant configuration. In this case the periodicity is set to sym20x14, which corresponds to 20 slots. With 30 kHz subcarrier spacing, 20 slots correspond to approximately 10 ms.

As a result, the UE transmits PUSCH roughly every 10 ms using the configured resources, and no additional dynamic uplink grants are required after the initial trigger.

NR SA CG Test 2 Log 03

RRC / NAS Signaling

RrcReconfiguration (SA)

: This is RrcReconfiguration containing CG configurations

{

  message c1: rrcReconfiguration: {

    rrc-TransactionIdentifier 0,

    criticalExtensions rrcReconfiguration: {

      radioBearerConfig {

        srb-ToAddModList {

          {

            srb-Identity 2

          }

        },

        drb-ToAddModList {

          {

            ...

          }

        }

      },

      nonCriticalExtension {

        masterCellGroup {

          ...

          },

          physicalCellGroupConfig {

            ...

          },

          spCellConfig {

            spCellConfigDedicated {

              uplinkConfig {

                initialUplinkBWP {

                  configuredGrantConfig setup: {

                    cg-DMRS-Configuration {

                      dmrs-AdditionalPosition pos1,

                      transformPrecodingDisabled {

                      }

                    },

                    uci-OnPUSCH setup: semiStatic: {

                      betaOffsetACK-Index1 9,

                      betaOffsetACK-Index2 9,

                      betaOffsetACK-Index3 9,

                      betaOffsetCSI-Part1-Index1 7,

                      betaOffsetCSI-Part1-Index2 7,

                      betaOffsetCSI-Part2-Index1 7,

                      betaOffsetCSI-Part2-Index2 7

                    },

                    resourceAllocation resourceAllocationType1,

                    powerControlLoopToUse n0,

                    p0-PUSCH-Alpha 0,

                    nrofHARQ-Processes 2,

                    repK n1,

                    periodicity sym20x14,

                    rrc-ConfiguredUplinkGrant {

                      timeDomainOffset 8,

                      timeDomainAllocation 0,

                      frequencyDomainAllocation '000000000001011101'B,

                      antennaPort 0,

                      dmrs-SeqInitialization 0,

                      precodingAndNumberOfLayers 0,

                      srs-ResourceIndicator 0,

                      mcsAndTBS 10,

                      pathlossReferenceIndex 0

                    }

                  }

                }

              },

              tag-Id 0

            }

          }

        },

        dedicatedNAS-MessageList {

          ...

        }

      }

    }

  }