NR SA Bandwidth Change
The purpose of this tutorial is to show you how to change CBW(Channel Bandwidth, System BW) in Amari Callbox. The changing configuration in configuration file is very simple, but figuring out the proper bandwidth that can be applicable for the DUT can be tricky. It is assumed that you don't have any previous experience with Amari callbox.
Up to 100 Mhz per component carrier, Amarisoft support any bandwidth specified in 3gpp for both FR1 and FR2 as of now.
Changing Band and Bandwidth change in NR is not as simple/straightforward as in LTE since it requires to change several different information elements in RRC message and figuring out those value is not so simple. But this process is simplified greatly in Amaricall box since RRC configuration is automatically set by Callbox. What you have to do is to set a few key configuration parameters set to be valid as per 3GPP specification.
Table of Contents
Introduction
The Amari Callbox is a sophisticated network testing and simulation platform widely used for cellular technology validation, device verification, and protocol analysis in both research and commercial environments. By emulating base station behavior, the Amari Callbox supports a wide range of 3GPP-compliant features across multiple radio access technologies, including LTE and 5G NR (New Radio). One of the critical aspects of cellular network configuration is the selection and management of Channel Bandwidth (CBW), also known as System Bandwidth, which determines the radio frequency spectrum allocated to a carrier. The configuration of CBW directly impacts network throughput, device interoperability, and compliance with 3GPP standards. Unlike LTE, where changing the operating band and bandwidth is relatively straightforward, NR (New Radio) introduces increased complexity due to its flexible numerology, broader supported bandwidths, and intricate RRC (Radio Resource Control) requirements. Amari Callbox streamlines this process by automating much of the underlying RRC configuration, allowing engineers and testers to focus on key parameters without delving into the low-level protocol intricacies. This tutorial provides a structured approach to modifying the CBW in Amari Callbox, offering both architectural context and practical guidance to help users achieve successful test setups tailored to their DUT (Device Under Test) capabilities.
-
Context and Background
- Amari Callbox acts as a virtualized base station, supporting a diverse set of 3GPP features for LTE and 5G NR.
- Channel Bandwidth (CBW) defines the spectrum width used by the cell and is a crucial parameter for network performance and standards compliance.
- For 5G NR, Amarisoft supports up to 100 MHz per component carrier in both FR1 (sub-6 GHz) and FR2 (mmWave), accommodating any bandwidth specified by 3GPP.
- Modifying CBW in NR is inherently more complex than LTE due to additional information elements, flexible numerology, and increased configuration options mandated by the NR standard.
-
Relevance and Importance of the Tutorial
- Enables users to adapt Amari Callbox configurations for a variety of test scenarios, ensuring compatibility with diverse DUTs.
- Simplifies the process of aligning test conditions with 3GPP specifications, reducing risk of misconfiguration.
- Facilitates robust device validation, interoperability testing, and rapid prototyping in both FR1 and FR2 bands.
-
What You Will Learn
- How to identify and modify the correct configuration parameters for CBW in the Amari Callbox environment.
- Understanding the implications of bandwidth selection on device testing and network emulation.
- Techniques for verifying successful configuration changes and troubleshooting common issues related to CBW.
- Best practices for ensuring 3GPP compliance during test setup.
-
Prerequisite Knowledge and Skills
- Basic understanding of cellular network concepts, including frequency bands and channel bandwidth.
- Familiarity with 3GPP standards, particularly for LTE and 5G NR, is helpful but not mandatory.
- No prior experience with Amari Callbox is required, as the tutorial is designed for beginners.
- General proficiency with configuration files and network device setup will be beneficial.
Summary of the Tutorial
This tutorial outlines procedures for performing NR standalone (SA) bandwidth change testing, specifically focusing on modifying the channel bandwidth from 20MHz to 40MHz on band n78 with 30kHz subcarrier spacing, as well as providing best practices for related configuration scenarios and troubleshooting common errors.
-
Test Setup:
- The SIM card provided with the system is used without modification.
- For custom configuration, refer to the Configuration Guide.
- Test setup includes a callbox and a UE, as shown in the referenced diagram.
-
Pre-Checks Before Testing:
- Verify band and bandwidth validity using 3GPP references: 38.101-1 Table 5.2-1/5.3.5-1 and 38.104 Table 5.4.3.3-1.
- Check that the DUT supports the intended band and bandwidth either by reviewing internal UE specifications or the UE Capability Information message.
-
Key Configuration Parameters:
- Important parameters include: band, bandwidth, dl_nr_arfcn, and subcarrier_spacing.
-
Test 1: NR/SA-N78-SCS30Khz-40Mhz
-
Feasibility Check:
- Confirm target bandwidth is allowed per 3GPP and UE capability.
- Ensure the UE supports 30kHz SCS and desired bandwidths (20, 40, 50, 60, 80, 100 MHz).
-
Configuration Procedure:
- Copy the default configuration file (gnb-sa.cfg) to a new file (gnb-sa-n78-40Mhz.cfg).
- Modify NR_BANDWIDTH parameter to change channel bandwidth to 40MHz.
- Keep band, dl_nr_arfcn, and subcarrier_spacing same as default unless otherwise required.
-
Test Execution:
- Start LTE service and verify cell configuration using the (enb) screen.
- Check that the bandwidth is set as intended (BW value in cell phy output).
- Note that SSB ARFCN will auto-update based on bandwidth.
- Power on UE and allow the attach procedure to complete.
-
Log Analysis:
- Review the /tmp/gnb0.log file for cell and bandwidth configuration details (e.g., ssb_arfcn, ssb_prb, k_ssb, coreset0_prb).
- Bandwidth and frequency configuration parameters can be visually confirmed in the WebGUI logs under frequencyInfoDL, initialDownlinkBWP, frequencyInfoUL, and initialUplinkBWP.
-
Feasibility Check:
-
Tips & Advanced Configuration:
-
Changing Bandwidth to 5MHz:
- For BW=5MHz, ensure SCS is set to 15kHz for both SSB and other channels.
- Amari callbox restricts ra_window_size to a max of 10ms for 5MHz BW.
-
Setting Different Bandwidths per Cell:
- Comment out the bandwidth parameter in cell_default or nr_cell_default sections.
- Add individual bandwidth parameters within each cell defined in cell_list or nr_cell_list.
-
Example:
nr_cell_default: {
subcarrier_spacing: 30, /* kHz */
//bandwidth: NR_BANDWIDTH, /* MHz */ <== Comment out}
nr_cell_list: [
{ ...
bandwidth: NR_BANDWIDTH_1, },{ ...
bandwidth: NR_BANDWIDTH_2, },]
-
Changing Bandwidth to 5MHz:
-
Troubleshooting Frequent Errors:
-
DL frequency must be a multiple of XXX kHz:
- Occurs if ARFCN is not aligned to the 3GPP-specified raster frequency for the band.
-
Cell bandwidth does not fit in band definition:
- Occurs if ARFCN is too low/high, pushing bandwidth outside the band’s defined edge.
-
Could not find a SSB frequency compatible with the channel bandwidth and the CoReSet 0 parameters:
- Happens when CoReSet 0 is wider than the channel bandwidth or extends beyond channel limits.
-
DL frequency must be a multiple of XXX kHz:
The tutorial emphasizes careful alignment of configuration parameters with both 3GPP requirements and UE capabilities, and provides procedural steps and configuration practices for successful NR SA bandwidth change testing.
Test Setup
Test setup for this tutorial is as shown below.
- SIM Card used in this tutorial is the one delivered with the system as it is.
- If you want to change the configuration, The tutorial Configuration Guide would help

Check before Trying
1. Check following 3GPP tables and make it sure that the band/bandwidth you are trying to test is valid in terms of 3GPP
- 38.101-1 Table 5.2-1, Table 5.3.5-1
- 38.104 - Table 5.4.3.3-1
2. Check UE capability Information and make it sure that your DUT support the band and bandwidth you want to try
NOTE : you may confirm on this with your internal UE specification or UE capability Information message.
NOTE : Be aware that sometimes some DUT claim that it support a certain feature in UE Capability Information message but it fail to support in reality. Take this into account especially when you are testing a DUT at development phase
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 : NR/SA-N78-SCS30Khz-40Mhz
This is to show how to modify the default configuration tile from 20Mhz channel bandwidth to 40Mhz.
Feasibility Check
Check if the bandwidth you want to try is allowed in terms of 3GPP spec as shown below

Check if the bandwidth you want to try is allowed in terms of UE capability. The UE that I am using support scs30 only and support 20,40,50,60,80,100 Mhz

Configuration
I used the configuration file gnb-sa-n78-40Mhz.cfg which is copied from gnb-sa.cfg and modified.

Configured in gnb-sa-n78-40Mhz.cfg is as shown below. In this configuration, I changed the channel bandwidth using NR_BANDWIDTH and keep band, dl_nr_arfcn, subcarrier spacing as it is with the default configuration (gnb-sa.cfg)

Perform the Test
Run LTE service and check cell configuration in (enb) screen as shown below. Confirm that the Bandwidth are configured as you intended. You can check the channel bandwidth with BW value in cell phy output. Note that SSB ARFCN would automatically change according to BW change.

Power on UE and let it complete the attach

Log Analysis
In this section, I would not go through the full log. I would show you just the parts that are related to the test in this tutorial.
If you open /tmp/gnb0.log file (WebGUI does not show this information), you will see the following information at the beginning. Blue and red lined part is automatically configured by AmariCall box. Red lined part is MIB configuration and it is very tricky to set proper values for these parameters manually and error prone, but these are configured automatically in Amari Callbox. (
- ssb_arfcn indicates the center frequency in arfcn. If you want to convert this to Mhz or to GSCN, you can convert in https://www.sqimway.com/nr_band.php and https://www.sqimway.com/nr_raster.php
- ssb_prb indicates the position of ssb in PRB
- k_ssb indicates the k_ssb position (i.e, offset in subcarrier unit from the lowest PRB of ssb_prb)
- coreset0_prb indicates the position of CORESET0 in PRB unit

In the WebGUI log, you can easily check the bandwidth related configurations as shown below. The downlink band, bandwidth, subcarrier spacing can be confirmed from frequencyInfoDL and initialDownlinkBWP IE. These IEs are automatically set by gNB software based on the configuration file.

The uplink band, bandwidth, subcarrier spacing can be confirmed from frequencyInfoUL and initialUplinkBWP IE. These IEs are automatically set by gNB software based on the configuration file.

RRC / NAS Signaling
SIB1 (SA)
: This is the SIB1 message sent by gNB to configure NR SA. (
{
message c1: systemInformationBlockType1: {
...
servingCellConfigCommon {
downlinkConfigCommon {
frequencyInfoDL {
frequencyBandList {
{
freqBandIndicatorNR 78
}
},
...
},
initialDownlinkBWP {
genericParameters {
locationAndBandwidth 13750,
subcarrierSpacing kHz30
},
},
uplinkConfigCommon {
frequencyInfoUL {
scs-SpecificCarrierList {
{
offsetToCarrier 0,
subcarrierSpacing kHz30,
carrierBandwidth 51
}
},
p-Max 10
},
initialUplinkBWP {
genericParameters {
locationAndBandwidth 13750,
subcarrierSpacing kHz30
},
}
rrcConnectionReconfiguration for NR Addition (NSA)
: This is the RRC message sent by eNB (LTE) to add NR. (
message c1: rrcConnectionReconfiguration: {
rrc-TransactionIdentifier 0,
criticalExtensions c1: rrcConnectionReconfiguration-r8: {
....
nonCriticalExtension {
nonCriticalExtension {
nonCriticalExtension {
nonCriticalExtension {
nonCriticalExtension {
nonCriticalExtension {
nonCriticalExtension {
nonCriticalExtension {
nr-Config-r15 setup: {
endc-ReleaseAndAdd-r15 FALSE,
nr-SecondaryCellGroupConfig-r15 {
rrc-TransactionIdentifier 0,
criticalExtensions rrcReconfiguration: {
secondaryCellGroup {
...
spCellConfig {
servCellIndex 1,
reconfigurationWithSync {
spCellConfigCommon {
physCellId 500,
downlinkConfigCommon {
frequencyInfoDL {
absoluteFrequencySSB 632256,
frequencyBandList {
78
},
absoluteFrequencyPointA 632016,
scs-SpecificCarrierList {
{
offsetToCarrier 0,
subcarrierSpacing kHz30,
carrierBandwidth 51
}
}
},
initialDownlinkBWP {
genericParameters {
locationAndBandwidth 13750,
subcarrierSpacing kHz30
},
...
},
uplinkConfigCommon {
frequencyInfoUL {
scs-SpecificCarrierList {
{
offsetToCarrier 0,
subcarrierSpacing kHz30,
carrierBandwidth 51
}
}
},
initialUplinkBWP {
genericParameters {
locationAndBandwidth 13750,
subcarrierSpacing kHz30
},
Tips
Changing BW to 5 Mhz
In many cases, BW change would work just by changing Bandwidth parameters and selecting TDD/FDD according to 3GPP table and UE capability. But you may need extra cautions when you try to change BW to 5Mhz since it support only 15Khz not only for SSB but also other physical channels. Also there is another restriction on Amari callbox limiting ra_window_size to 10ms max. You may refer to this example configuration that I verified working with Amari Callbox and Amari UEsim : gnb-sa-5Mhz.cfg and ue-nr-sa-5Mhz.cfg .
Setting different BW to each cell
In most of the default configuration samples provided by the installation package, bandwidth parameter is set in cell_default : { } or in nr_cell_default: {} meaning that the same bandwidth is used for all cells. But there would be some cases where you want to configure different bandwidth for each cell. In this case, you can change the configuration as follows.
- Step 1 : comment out bandwidth parameter in cell_default : { } or in nr_cell_default: {}
- Step 2 : add bandwidth parameter in each cell configured by cell_list: [ ] or nr_cell_list: [ ]
Follwing is an example ;
Step 1 :
|
nr_cell_default: { #if NR_TDD == 1 subcarrier_spacing: 30, /* kHz */ #else subcarrier_spacing: 15, /* kHz */ #endif n_antenna_dl: N_ANTENNA_DL, n_antenna_ul: N_ANTENNA_UL, |
Step 2 :
|
nr_cell_list: [ { rf_port: 0, cell_id: 0x01, n_id_cell: 500, ncell_list : [ {cell_id: 2}, ],
#if NR_TDD == 1 band: 78, dl_nr_arfcn: 632628, #else band: 7, dl_nr_arfcn: 526000, #endif }, { rf_port: 1, cell_id: 0x02, n_id_cell: 501, ncell_list : [ {cell_id: 1}, ],
#if NR_TDD == 1 band: 41, dl_nr_arfcn: 510006, #else band: 7, dl_nr_arfcn: 532000, #endif }, ], /* nr_cell_list */ |
Frequent Errors
Followings are some of the frequent errors (common errors) you may encounter when you try to set your own band, frequency (arfcn) and bandwidth
the DL frequency must be a multiple of XXX kHz
You would get this error when you set arfcn which is not divisible by the raster frequency specified for each band in 3GPP as shown below.

cell bandwidth does not fit in band definition
You would get this error when you set arfcn too low or too high so that the configured bandwidth gets out of lower or upper boundary of the band as illustrated below.

Could not find a SSB frequency compatible with the channel bandwidth and the CoReSet 0 parameters
This error occurs mostly when you configured the coreset 0 to be wider than the channel bandwidth you configured or a part of Coreset 0 gets out of the channel band. Check out this tutorial for further details.