NR SA HO(Handover)
This tutorial shows how to test NR SA to NR SA Handover in Inter Frequency. This tutorial also shows how to configure Measurement Report and how to trigger measurement report. Handover is a procedure of cell change during the connected mode and usually occurs as described below.
Step 1 : Network (gNB) configures measurement request to direct UE to perform the measurement of current cell and neighbouring cells
Step 2 : UE perform the measurement and send the report to the network if the measurement result matches the condition set by the measurement request configuration specified at step 1
Step 3 : Network sends RRC message to force UE to change cell (Handover) to the target cell. In this RRC message, network sends all the necessary low layer information about the target cell (e.g, cell frequency, rach info and other channel information)
In terms of frequencies of current cell and target/destination cell, the handover can be categorized into two types as below
- Intra Frequency Handover : Current Cell and Target Cell frequency is same
- Inter Frequency Handover : Current Cell and Target Cell frequency is different
Table of Contents
- NR SA HO(Handover)
- Test Setup
- Key Configuration Parameters
- Test 1 : SA Inter Frequency Handover - with Cell Power Change
- Test 2 : SA Inter Frequency Handover - PingPong Handover with UE Movement
- Test 3 : SA Inter Frequency Handover - Blind Handover
- Test 4 : SA Inter Frequency Handover - Blind Handover with Contention-Free RACH
- RRC / NAS Signaling
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
< Setup A >
< Setup B >
Key Configuration Parameters
Followings are important configuration parameters for this tutorial. You may click on the items for the descriptions from Amarisoft documents.
- ncell_list : In this link, you would get the descriptions for all the items listed below
- meas_config_desc : In this link, you would get the descriptions for all the items listed below
- a1_report_type
- a1_rsrp
- a1_hysteresis
- a1_time_to_trigger
- a2_report_type
- a2_hysteresis
- a2_time_to_trigger
- a3_report_type
- a3_offset
- hysteresis
- time_to_trigger
- meas_gap_config
- ho_from_meas
Test 1 : SA Inter Frequency Handover - with Cell Power Change
In this test, I will show on a very simple scenario to trigger an handover between two NR SA cells which is triggered by the direct power change of the cell and the corresponding measurement report from UE.
Configuration
I used the gnb-sa-ho.cfg which is copied and modified from gnb-sa.cfg
I also used mme-ims.cfg as it is.
I used the ue-nr-sa-ho.cfg which is copied and modified from ue-nr-sa.cfg
Configure enb-2cell-ho-inter.cfg as below.
You can configure this part in any way you like. In this test, I used TDD (NR_TDD 1), 2x2 MIMO(N_ANTENNA_DL 2) and bandwidth 40 Mhz (NR_BANDWIDTH 40).
Make it sure that you have enough number of sdr cards for this test in rf_driver. In this test, I am using only 2 cell with 2x2 MIMO, so dev0, dev1 would be good enough.
I added neighbour cell list(ncell_list) to the configuration of the first cell and add the second cell(n_id_cell:2) as the neighbour cell. As you see, the camping cell (the first cell in this case) and the target cell(the second cell in this case) has different frequency(different dl_earfcn) because this test is for Inter cell Handover.
I added neighbour cell list(ncell_list) to the configuration of the second cell and add the first cell(n_id_cell:1) as the neighbour cell. As you see, the camping cell (the second cell in this case) and the target cell(the first cell in this case) has different frequency(different dl_earfcn) because this test is for Inter cell Handover.
Then added measurement criterial before triggering Handover via the parameter meas_config_desc. Once this is configured, UE should report appropriate meausrement report for gNB to trigger handover. (
Now let's look into UEsim(DUT) configuration. (NOTE : If you are using commercial UE instead of UEsim (i.e <Setup A>), you can skip this part.
First, N_CELL is set to 2 because this test require 2 cells and N_ANTENNA_DL is set to 2 for 2x2 MIMO. TDD is set to 1 indicating this is TDD and CELL_BANDWIDTH is set to 40. Basically all of these configuration should match the configuration in gNB(Callbox).
And then the first cell(rf_port 0) is configured to match all the physical layer parameters to the first cell of gNB(Callbox) configuration.
Then the second cell(rf_port 1) is configured to match all the physical layer parameters to the second cell of gNB(Callbox) configuration.
UE configuration is same as default ue-nr-sa. As long as imsi, K matches any nr UE configuration would be OK.
Following is optional which is mainly for automating UEsim operation. What it does is that it automatically power on UE and start IP traffic to prevent early RRC release before Handover is triggered.
Perform the test
Start LTE service and check basic cell configuration. Any cell configuration is OK as long as they are all NR cell. (
Adjust cell power. I used cell_gain command here instead of tx_gain because tx_gain changes broadcasting reference cell power in SIB message and UE may behave unexpectedly due to the SIB changes.
You should see the change of cell ID in 't' output if Handover performs properly.
Log Analysis
During the initial attach, Callbox send Measurement Report configuration as below. Check out measObjectToAddModList, reportConfigToAddModList, measIdToAddModList and confirm that all of them are configured as intended.
Confirm ssbFrequency in measObjectNR is configured as you confirmed in 'cell phy' output.
Check out if reportConfigToAddModList items are properly set as you configured in meas_config_desc in the configuration file.
Check out which specific measurement is configured (i.e, ordered to report) in measIdToAddModList. In this specific measurement report configuration, Event A2 for cell 1 is configured and Measurement Gap is not enabled at this point. (
If you properly adjust the cell power to meet the criteria for Event A2, you will get the measurement report for Event A2.
And then gNB configures Event A3 with Cell 2 in measurement configuration.
If you properly adjust the cell power to meet the criteria for Event A2, you will get the measurement report for Event A2. gNB enables measurement GAP.
If the cell power is properly set to meet the criteria of event A3 report, you should see the report for the event A3 which is criteria for triggering Handover.
Now gNB triggers Handover to physicalCellId(501) which is cell 2.
Test 2 : SA Inter Frequency Handover - PingPong Handover with UE Movement
In this test, I will show on a very simple scenario to trigger an handover between two NR SA cells. In this scenario, UE is first connected to a cell and then moves away from the initial cell and gets closer to other cell which triggers measurement report and lead to handover. Once the UE gets closer to the other cell after the Handover, it changes the direction of the movement 180 degree moving towards the initial cell which lead to another handover. Repetition of this back-and-forth movement between the two cells triggers ping-pong handover.
Configuration
I used the gnb-sa-channel-sim-pingpong-ho.cfg which is copied and modified from gnb-sa.cfg
I also used mme-ims.cfg as it is.
I used the ue-nr-sa-chan-sim-pingpong-ho.cfg which is copied and modified from ue-nr-sa.cfg
Configure gnb-sa-channel-sim-pingpong-ho.cfg as below.
You can configure this part in any way you like. In this test, I used TDD (NR_TDD 1), 2x2 MIMO(N_ANTENNA_DL 2) and bandwidth 40 Mhz (NR_BANDWIDTH 40).
Make it sure that you have enough number of sdr cards for this test in rf_driver. In this test, I am using only 2 cell with 2x2 MIMO, so dev0, dev1 would be good enough.
I added neighbour cell list(ncell_list) to the configuration of the first cell and add the second cell(n_id_cell:2) as the neighbour cell. As you see, the camping cell (the first cell in this case) and the target cell(the second cell in this case) has different frequency(different dl_earfcn) because this test is for Inter cell Handover.
I added neighbour cell list(ncell_list) to the configuration of the second cell and add the first cell(n_id_cell:1) as the neighbour cell. As you see, the camping cell (the second cell in this case) and the target cell(the first cell in this case) has different frequency(different dl_earfcn) because this test is for Inter cell Handover.
Then added measurement criterial before triggering Handover via the parameter meas_config_desc. Once this is configured, UE should report appropriate meausrement report for gNB to trigger handover. (
Now let's look into UEsim(DUT) configuration. (NOTE : If you are using commercial UE instead of UEsim (i.e <Setup A>), you can skip this part.
First, N_CELL is set to 2 because this test require 2 cells and N_ANTENNA_DL is set to 2 for 2x2 MIMO. TDD is set to 1 indicating this is TDD and CELL_BANDWIDTH is set to 40. Basically all of these configuration should match the configuration in gNB(Callbox).
And then the first cell(rf_port 0) is configured to match all the physical layer parameters to the first cell of gNB(Callbox) configuration.
Then the second cell(rf_port 1) is configured to match all the physical layer parameters to the second cell of gNB(Callbox) configuration.
Then specify UE position (position) and channel model (
Following is optional which is mainly for automating UEsim operation. What it does is that it automatically power on UE and start IP traffic to prevent early RRC release before Handover is triggered.
Perform the test
Start LTE service and check basic cell configuration. Any cell configuration is OK as long as they are all NR cell. (
Now we will triggering measurement report from UE to let gNB initiate hanover by moving UE. The UE start moving farther away from one cell and getting closer to another cell. The UE movement is performed by a remoteAPI. In this test, UE is moving between one cell and another cell repeatedly. So you may write a simple shell script for this as shown below.
#!/bin/bash
num_iter=2
#set initial position ./ws.js ue '{"message" : "ue_move", "ue_id" : 1, "position" : [10,0], "speed" : 0}'
for ((i=0; i<$num_iter; i++)); do
# move to the right on x axis at a 2 m/s ./ws.js ue '{"message" : "ue_move", "ue_id" : 1, "speed" : 7.2, "direction" : 0}'
sleep 40
# move to the left on x axis at 2 m/s ./ws.js ue '{"message" : "ue_move", "ue_id" : 1, "speed" : 7.2, "direction" : -180}'
sleep 40
done
#stop it somewhere ./ws.js ue '{"message" : "ue_move", "ue_id" : 1, "position" : [10,0], "speed" : 0}' |
You should see the change of cell ID in 't' output if Handover performs properly.
Log Analysis
At the highest level, you can check on whether 'Cell' changes back and forth between the two cells (
Then you can check if the PHY schedule changes from one cell to another cell in RB map as another indicator of handover.
Another way to confirm the traffic change between two cells can be shown in Bitrate plot.
Test 3 : SA Inter Frequency Handover - Blind Handover
In this test, I will show on a very simple scenario to trigger an handover between two NR SA cells which is triggered by the direct power change of the cell and the corresponding measurement report from UE.
Configuration
I used the gnb-sa-ho-blind.cfg which is copied and modified from gnb-sa.cfg
I also used mme-ims.cfg as it is.
I used the ue-nr-sa-ho.cfg which is copied and modified from ue-nr-sa.cfg
Configure gnb-sa-ho-blind.cfg as below.
You can configure this part in any way you like. In this test, I used TDD (NR_TDD 1), 2x2 MIMO(N_ANTENNA_DL 2) and bandwidth 40 Mhz (NR_BANDWIDTH 40).
Make it sure that you have enough number of sdr cards for this test in rf_driver. In this test, I am using only 2 cell with 2x2 MIMO, so dev0, dev1 would be good enough.
I added neighbour cell list(ncell_list) to the configuration of the first cell and add the second cell(n_id_cell:2) as the neighbour cell. As you see, the camping cell (the first cell in this case) and the target cell(the second cell in this case) has different frequency(different dl_earfcn) because this test is for Inter cell Handover.
I added neighbour cell list(ncell_list) to the configuration of the second cell and add the first cell(n_id_cell:1) as the neighbour cell. As you see, the camping cell (the second cell in this case) and the target cell(the first cell in this case) has different frequency(different dl_earfcn) because this test is for Inter cell Handover.
Since this test case is for blind handover triggered by gNB without any Measurement Report from UE, I commented out meas_config_desc configuration. (
Now let's look into UEsim(DUT) configuration. (
First, N_CELL is set to 2 because this test require 2 cells and N_ANTENNA_DL is set to 2 for 2x2 MIMO. TDD is set to 1 indicating this is TDD and CELL_BANDWIDTH is set to 40. Basically all of these configuration should match the configuration in gNB(Callbox).
And then the first cell(rf_port 0) is configured to match all the physical layer parameters to the first cell of gNB(Callbox) configuration.
Then the second cell(rf_port 1) is configured to match all the physical layer parameters to the second cell of gNB(Callbox) configuration.
UE configuration is same as default ue-nr-sa. As long as imsi, K matches any nr UE configuration would be OK.
Perform the test
Start LTE service and check basic cell configuration. Any cell configuration is OK as long as they are all NR cell. (
The power on UE and wait until the initial attach is complete and the call is in connected status.
Then go to /root/end directory and send remote API command : ./ws.js enb
'{"message":"handover","ran_ue_id":1,"pci":501,"ssb_nr_arfcn":712608
}' (
[root@CBU-SOPHIA-TEST enb]# ./ws.js enb '{"message":"handover","ran_ue_id":1,"pci":501,"ssb_nr_arfcn":712608 }' WebSocket remote API tool version 2024-06-06, Copyright (C) 2012-2024 Amarisoft [0.003] ### Connected to 127.0.0.1:9001 [0.004] ### Ready: name=ENB, type=ENB, version=2024-03-15 [0.031] <== Send message handover id#1 [0.042] ==> Message received { "message": "handover", "message_id": "id#1", "time": 144.224, "utc": 1718117032.955 } |
You should see the change of cell ID in 't' output if Handover performs properly.
Log Analysis
First it would be good idea to check if UE capability first.
In this test case, gNB send UE capability inquiry for bandNR 78 and 79 as set in the configuration file.
An important thing you may need to check from UE capability Information is to confirm whether the UE support Inter Frequency Handover. You can check this out via handoverIterF of measAndMobParameters->measAndMobParametersFRX-Diff IE.
Since I commented out meas_config_desc in the configuration file, you would notice that none of the measurement related configuration is set in RRCReconfiguration messages.
Once the remote API command ./ws.js enb '{"message":"handover","ran_ue_id":1,"pci":501,"ssb_nr_arfcn":712608 }' is set and properly accepted, gNB send Handover command in RRCReconfiguration.
If the RRCReconfiguration with Handover command is received by UE and properly processed, UE performs RACH process with the target cell.
Test 4 : SA Inter Frequency Handover - Blind Handover with Contention-Free RACH
The purpose of this tutorial is to show how to configure and test contention free rach procedure in a simplest manner. In Amarisoft gNB, contention-free rach can be triggered mainly in two scenario. The first scenario is with NSA setup (i.e, RACH to add NR addition) and NR-to-NR handover (i.e, RACH to handover to the destination cell). In this tutorial, contention-free rach procedure in NR-to-NR handover scenario will be demonstrated.
Configuration
I used the gnb-sa-ho-blind-cfra.cfg which is copied and modified from gnb-sa-ho-blind.cfg . Ony this enb configuration file has been modified from previous test. mme, ims and uesim configuration remain unchanged.
Configure gnb-sa-ho-blind-cfra.cfg as below.
The only one configuration is added in this test comparing to the previous test. I just added reconfig_sync_cfra : true. I put this nr_cell_default in order to apply this configuration to all the cells.
Perform the test
Start LTE service and check basic cell configuration. Any cell configuration is OK as long as they are all NR cell. (
The power on UE and wait until the initial attach is complete and the call is in connected status.
Then go to /root/end directory and send remote API command : ./ws.js enb
'{"message":"handover","ran_ue_id":1,"pci":501,"ssb_nr_arfcn":712608
}' (
[root@CBU-SOPHIA-TEST enb]# ./ws.js enb '{"message":"handover","ran_ue_id":1,"pci":501,"ssb_nr_arfcn":712608 }' WebSocket remote API tool version 2024-06-06, Copyright (C) 2012-2024 Amarisoft [0.003] ### Connected to 127.0.0.1:9001 [0.004] ### Ready: name=ENB, type=ENB, version=2024-03-15 [0.031] <== Send message handover id#1 [0.042] ==> Message received { "message": "handover", "message_id": "id#1", "time": 144.224, "utc": 1718117032.955 } |
You should see the change of cell ID in 't' output if Handover performs properly.
Log Analysis
gNB send RRC reconfiguration that triggers Handover to a destination cell (PCI 501 in this case)
In this RRC reconfig message, you see cfra configuration in rach-ConfigDedicated uplink IE(information element) which indicates a specific ra-PreambleIndex that UE is supposed to use.
Then you can confirm that UE send PRACH with preamble index that is configured by cfra specified by gNB (preamble 8 in this specific test)
RRC / NAS Signaling
RrcReconfiguration
: This is the RrcReconfiguration message sent by eNB to configure Handover (
{
message c1: rrcReconfiguration: {
rrc-TransactionIdentifier 0,
criticalExtensions rrcReconfiguration: {
radioBearerConfig {
srb-ToAddModList {
{
srb-Identity 1,
reestablishPDCP true
},
{
srb-Identity 2,
reestablishPDCP true
}
},
drb-ToAddModList {
{
drb-Identity 1,
reestablishPDCP true
}
}
},
nonCriticalExtension {
masterCellGroup {
cellGroupId 0,
rlc-BearerToAddModList {
{
logicalChannelIdentity 4,
reestablishRLC true
},
{
logicalChannelIdentity 1,
reestablishRLC true
},
{
logicalChannelIdentity 2,
reestablishRLC true
}
},
mac-CellGroupConfig {
schedulingRequestConfig {
schedulingRequestToAddModList {
{
schedulingRequestId 0,
sr-TransMax n64
}
}
},
bsr-Config {
periodicBSR-Timer sf20,
retxBSR-Timer sf320
},
tag-Config {
tag-ToAddModList {
{
tag-Id 0,
timeAlignmentTimer infinity
}
}
},
phr-Config setup: {
phr-PeriodicTimer sf500,
phr-ProhibitTimer sf200,
phr-Tx-PowerFactorChange dB3,
multiplePHR FALSE,
dummy FALSE,
phr-Type2OtherCell FALSE,
phr-ModeOtherCG real
},
skipUplinkTxDynamic FALSE,
dataInactivityTimer release: NULL
},
physicalCellGroupConfig {
pdsch-HARQ-ACK-Codebook dynamic
},
spCellConfig {
reconfigurationWithSync {
spCellConfigCommon {
physCellId 501,
downlinkConfigCommon {
frequencyInfoDL {
absoluteFrequencySSB 712608,
frequencyBandList {
79
},
absoluteFrequencyPointA 712062,
scs-SpecificCarrierList {
{
offsetToCarrier 0,
subcarrierSpacing kHz30,
carrierBandwidth 106
}
}
},
initialDownlinkBWP {
genericParameters {
locationAndBandwidth 28875,
subcarrierSpacing kHz30
},
pdcch-ConfigCommon setup: {
controlResourceSetZero 4,
searchSpaceZero 0,
commonSearchSpaceList {
{
searchSpaceId 1,
controlResourceSetId 0,
monitoringSlotPeriodicityAndOffset sl1: NULL,
monitoringSymbolsWithinSlot '10000000000000'B,
nrofCandidates {
aggregationLevel1 n0,
aggregationLevel2 n0,
aggregationLevel4 n4,
aggregationLevel8 n0,
aggregationLevel16 n0
},
searchSpaceType common: {
dci-Format0-0-AndFormat1-0 {
}
}
}
},
searchSpaceSIB1 0,
searchSpaceOtherSystemInformation 1,
pagingSearchSpace 1,
ra-SearchSpace 1
},
pdsch-ConfigCommon setup: {
pdsch-TimeDomainAllocationList {
{
mappingType typeA,
startSymbolAndLength 40
},
{
mappingType typeA,
startSymbolAndLength 57
}
}
}
}
},
uplinkConfigCommon {
frequencyInfoUL {
scs-SpecificCarrierList {
{
offsetToCarrier 0,
subcarrierSpacing kHz30,
carrierBandwidth 106
}
}
},
initialUplinkBWP {
genericParameters {
locationAndBandwidth 28875,
subcarrierSpacing kHz30
},
rach-ConfigCommon setup: {
rach-ConfigGeneric {
prach-ConfigurationIndex 160,
msg1-FDM one,
msg1-FrequencyStart 7,
zeroCorrelationZoneConfig 15,
preambleReceivedTargetPower -110,
preambleTransMax n7,
powerRampingStep dB4,
ra-ResponseWindow sl20
},
ssb-perRACH-OccasionAndCB-PreamblesPerSSB one: n8,
ra-ContentionResolutionTimer sf64,
prach-RootSequenceIndex l139: 1,
msg1-SubcarrierSpacing kHz30,
restrictedSetConfig unrestrictedSet
},
pusch-ConfigCommon setup: {
pusch-TimeDomainAllocationList {
{
k2 7,
mappingType typeA,
startSymbolAndLength 27
},
{
k2 4,
mappingType typeA,
startSymbolAndLength 27
},
{
k2 2,
mappingType typeA,
startSymbolAndLength 27
}
},
p0-NominalWithGrant -84
},
pucch-ConfigCommon setup: {
pucch-ResourceCommon 11,
pucch-GroupHopping neither,
p0-nominal -90
}
},
dummy ms500
},
ssb-PositionsInBurst mediumBitmap: '80'H,
ssb-periodicityServingCell ms20,
dmrs-TypeA-Position pos2,
ssbSubcarrierSpacing kHz30,
tdd-UL-DL-ConfigurationCommon {
referenceSubcarrierSpacing kHz30,
pattern1 {
dl-UL-TransmissionPeriodicity ms5,
nrofDownlinkSlots 7,
nrofDownlinkSymbols 6,
nrofUplinkSlots 2,
nrofUplinkSymbols 4
}
},
ss-PBCH-BlockPower -60
},
newUE-Identity 17922,
t304 ms1000,
smtc {
periodicityAndOffset sf20: 0,
duration sf1
}
},
spCellConfigDedicated {
initialDownlinkBWP {
pdcch-Config setup: {
controlResourceSetToAddModList {
{
controlResourceSetId 2,
frequencyDomainResources '111111111111111110000000000000000000000000000'B,
duration 1,
cce-REG-MappingType nonInterleaved: NULL,
precoderGranularity sameAsREG-bundle
}
},
searchSpacesToAddModList {
{
searchSpaceId 2,
controlResourceSetId 2,
monitoringSlotPeriodicityAndOffset sl1: NULL,
monitoringSymbolsWithinSlot '10000000000000'B,
nrofCandidates {
aggregationLevel1 n0,
aggregationLevel2 n2,
aggregationLevel4 n1,
aggregationLevel8 n0,
aggregationLevel16 n0
},
searchSpaceType ue-Specific: {
dci-Formats formats0-1-And-1-1
}
}
}
},
pdsch-Config setup: {
dmrs-DownlinkForPDSCH-MappingTypeA setup: {
dmrs-AdditionalPosition pos1
},
tci-StatesToAddModList {
{
tci-StateId 0,
qcl-Type1 {
referenceSignal ssb: 0,
qcl-Type typeD
}
}
},
resourceAllocation resourceAllocationType1,
rbg-Size config1,
mcs-Table qam256,
prb-BundlingType staticBundling: {
bundleSize wideband
},
zp-CSI-RS-ResourceToAddModList {
{
zp-CSI-RS-ResourceId 0,
resourceMapping {
frequencyDomainAllocation row4: '001'B,
nrofPorts p4,
firstOFDMSymbolInTimeDomain 4,
cdm-Type fd-CDM2,
density one: NULL,
freqBand {
startingRB 0,
nrofRBs 108
}
},
periodicityAndOffset slots80: 1
}
},
p-ZP-CSI-RS-ResourceSet setup: {
zp-CSI-RS-ResourceSetId 0,
zp-CSI-RS-ResourceIdList {
0
}
}
}
},
firstActiveDownlinkBWP-Id 0,
uplinkConfig {
initialUplinkBWP {
pucch-Config setup: {
resourceSetToAddModList {
{
pucch-ResourceSetId 0,
resourceList {
0,
1,
2,
3,
4,
5,
6,
7
}
},
{
pucch-ResourceSetId 1,
resourceList {
8,
9,
10,
11
}
}
},
resourceToAddModList {
{
pucch-ResourceId 0,
startingPRB 105,
intraSlotFrequencyHopping enabled,
secondHopPRB 0,
format format1: {
initialCyclicShift 1,
nrofSymbols 14,
startingSymbolIndex 0,
timeDomainOCC 0
}
},
{
pucch-ResourceId 1,
startingPRB 105,
intraSlotFrequencyHopping enabled,
secondHopPRB 0,
format format1: {
initialCyclicShift 5,
nrofSymbols 14,
startingSymbolIndex 0,
timeDomainOCC 0
}
},
{
pucch-ResourceId 2,
startingPRB 105,
intraSlotFrequencyHopping enabled,
secondHopPRB 0,
format format1: {
initialCyclicShift 9,
nrofSymbols 14,
startingSymbolIndex 0,
timeDomainOCC 0
}
},
{
pucch-ResourceId 3,
startingPRB 105,
intraSlotFrequencyHopping enabled,
secondHopPRB 0,
format format1: {
initialCyclicShift 1,
nrofSymbols 14,
startingSymbolIndex 0,
timeDomainOCC 1
}
},
{
pucch-ResourceId 4,
startingPRB 105,
intraSlotFrequencyHopping enabled,
secondHopPRB 0,
format format1: {
initialCyclicShift 5,
nrofSymbols 14,
startingSymbolIndex 0,
timeDomainOCC 1
}
},
{
pucch-ResourceId 5,
startingPRB 105,
intraSlotFrequencyHopping enabled,
secondHopPRB 0,
format format1: {
initialCyclicShift 9,
nrofSymbols 14,
startingSymbolIndex 0,
timeDomainOCC 1
}
},
{
pucch-ResourceId 6,
startingPRB 105,
intraSlotFrequencyHopping enabled,
secondHopPRB 0,
format format1: {
initialCyclicShift 1,
nrofSymbols 14,
startingSymbolIndex 0,
timeDomainOCC 2
}
},
{
pucch-ResourceId 7,
startingPRB 105,
intraSlotFrequencyHopping enabled,
secondHopPRB 0,
format format1: {
initialCyclicShift 5,
nrofSymbols 14,
startingSymbolIndex 0,
timeDomainOCC 2
}
},
{
pucch-ResourceId 8,
startingPRB 1,
intraSlotFrequencyHopping enabled,
secondHopPRB 104,
format format2: {
nrofPRBs 1,
nrofSymbols 2,
startingSymbolIndex 0
}
},
{
pucch-ResourceId 9,
startingPRB 1,
intraSlotFrequencyHopping enabled,
secondHopPRB 104,
format format2: {
nrofPRBs 1,
nrofSymbols 2,
startingSymbolIndex 2
}
},
{
pucch-ResourceId 10,
startingPRB 1,
intraSlotFrequencyHopping enabled,
secondHopPRB 104,
format format2: {
nrofPRBs 1,
nrofSymbols 2,
startingSymbolIndex 4
}
},
{
pucch-ResourceId 11,
startingPRB 1,
intraSlotFrequencyHopping enabled,
secondHopPRB 104,
format format2: {
nrofPRBs 1,
nrofSymbols 2,
startingSymbolIndex 6
}
},
{
pucch-ResourceId 12,
startingPRB 105,
intraSlotFrequencyHopping enabled,
secondHopPRB 0,
format format1: {
initialCyclicShift 9,
nrofSymbols 14,
startingSymbolIndex 0,
timeDomainOCC 2
}
},
{
pucch-ResourceId 13,
startingPRB 1,
intraSlotFrequencyHopping enabled,
secondHopPRB 104,
format format2: {
nrofPRBs 1,
nrofSymbols 2,
startingSymbolIndex 8
}
}
},
format1 setup: {
},
format2 setup: {
maxCodeRate zeroDot25
},
schedulingRequestResourceToAddModList {
{
schedulingRequestResourceId 1,
schedulingRequestID 0,
periodicityAndOffset sl40: 8,
resource 12
}
},
dl-DataToUL-ACK {
8,
7,
6,
5,
4,
12,
11
}
},
pusch-Config setup: {
txConfig codebook,
dmrs-UplinkForPUSCH-MappingTypeA setup: {
dmrs-AdditionalPosition pos1,
transformPrecodingDisabled {
}
},
pusch-PowerControl {
msg3-Alpha alpha1,
p0-AlphaSets {
{
p0-PUSCH-AlphaSetId 0,
p0 0,
alpha alpha1
}
},
pathlossReferenceRSToAddModList {
{
pusch-PathlossReferenceRS-Id 0,
referenceSignal ssb-Index: 0
}
},
sri-PUSCH-MappingToAddModList {
{
sri-PUSCH-PowerControlId 0,
sri-PUSCH-PathlossReferenceRS-Id 0,
sri-P0-PUSCH-AlphaSetId 0,
sri-PUSCH-ClosedLoopIndex i0
}
}
},
resourceAllocation resourceAllocationType1,
mcs-Table qam256,
mcs-TableTransformPrecoder qam256,
codebookSubset nonCoherent,
maxRank 1,
uci-OnPUSCH setup: {
betaOffsets 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
},
scaling f1
}
},
srs-Config setup: {
srs-ResourceSetToAddModList {
{
srs-ResourceSetId 0,
srs-ResourceIdList {
0
},
resourceType aperiodic: {
aperiodicSRS-ResourceTrigger 1,
slotOffset 7
},
usage codebook,
p0 -84,
pathlossReferenceRS ssb-Index: 0
}
},
srs-ResourceToAddModList {
{
srs-ResourceId 0,
nrofSRS-Ports port1,
transmissionComb n2: {
combOffset-n2 0,
cyclicShift-n2 0
},
resourceMapping {
startPosition 0,
nrofSymbols n1,
repetitionFactor n1
},
freqDomainPosition 0,
freqDomainShift 9,
freqHopping {
c-SRS 22,
b-SRS 3,
b-hop 0
},
groupOrSequenceHopping neither,
resourceType aperiodic: {
},
sequenceId 501
}
}
}
},
firstActiveUplinkBWP-Id 0,
pusch-ServingCellConfig setup: {
}
},
pdcch-ServingCellConfig setup: {
},
pdsch-ServingCellConfig setup: {
nrofHARQ-ProcessesForPDSCH n16,
maxMIMO-Layers 2
},
csi-MeasConfig setup: {
nzp-CSI-RS-ResourceToAddModList {
{
nzp-CSI-RS-ResourceId 0,
resourceMapping {
frequencyDomainAllocation other: '000001'B,
nrofPorts p2,
firstOFDMSymbolInTimeDomain 3,
cdm-Type fd-CDM2,
density one: NULL,
freqBand {
startingRB 0,
nrofRBs 108
}
},
powerControlOffset 0,
scramblingID 501,
periodicityAndOffset slots80: 1,
qcl-InfoPeriodicCSI-RS 0
},
{
nzp-CSI-RS-ResourceId 1,
resourceMapping {
frequencyDomainAllocation row1: '1'H,
nrofPorts p1,
firstOFDMSymbolInTimeDomain 5,
cdm-Type noCDM,
density three: NULL,
freqBand {
startingRB 0,
nrofRBs 108
}
},
powerControlOffset 0,
scramblingID 501,
periodicityAndOffset slots80: 1,
qcl-InfoPeriodicCSI-RS 0
},
{
nzp-CSI-RS-ResourceId 2,
resourceMapping {
frequencyDomainAllocation row1: '1'H,
nrofPorts p1,
firstOFDMSymbolInTimeDomain 9,
cdm-Type noCDM,
density three: NULL,
freqBand {
startingRB 0,
nrofRBs 108
}
},
powerControlOffset 0,
scramblingID 501,
periodicityAndOffset slots80: 1,
qcl-InfoPeriodicCSI-RS 0
},
{
nzp-CSI-RS-ResourceId 3,
resourceMapping {
frequencyDomainAllocation row1: '1'H,
nrofPorts p1,
firstOFDMSymbolInTimeDomain 5,
cdm-Type noCDM,
density three: NULL,
freqBand {
startingRB 0,
nrofRBs 108
}
},
powerControlOffset 0,
scramblingID 501,
periodicityAndOffset slots80: 2,
qcl-InfoPeriodicCSI-RS 0
},
{
nzp-CSI-RS-ResourceId 4,
resourceMapping {
frequencyDomainAllocation row1: '1'H,
nrofPorts p1,
firstOFDMSymbolInTimeDomain 9,
cdm-Type noCDM,
density three: NULL,
freqBand {
startingRB 0,
nrofRBs 108
}
},
powerControlOffset 0,
scramblingID 501,
periodicityAndOffset slots80: 2,
qcl-InfoPeriodicCSI-RS 0
}
},
nzp-CSI-RS-ResourceSetToAddModList {
{
nzp-CSI-ResourceSetId 0,
nzp-CSI-RS-Resources {
0
}
},
{
nzp-CSI-ResourceSetId 1,
nzp-CSI-RS-Resources {
1,
2,
3,
4
},
trs-Info true
}
},
csi-IM-ResourceToAddModList {
{
csi-IM-ResourceId 0,
csi-IM-ResourceElementPattern pattern1: {
subcarrierLocation-p1 s0,
symbolLocation-p1 4
},
freqBand {
startingRB 0,
nrofRBs 108
},
periodicityAndOffset slots80: 1
}
},
csi-IM-ResourceSetToAddModList {
{
csi-IM-ResourceSetId 0,
csi-IM-Resources {
0
}
}
},
csi-ResourceConfigToAddModList {
{
csi-ResourceConfigId 0,
csi-RS-ResourceSetList nzp-CSI-RS-SSB: {
nzp-CSI-RS-ResourceSetList {
0
}
},
bwp-Id 0,
resourceType periodic
},
{
csi-ResourceConfigId 1,
csi-RS-ResourceSetList csi-IM-ResourceSetList: {
0
},
bwp-Id 0,
resourceType periodic
},
{
csi-ResourceConfigId 2,
csi-RS-ResourceSetList nzp-CSI-RS-SSB: {
nzp-CSI-RS-ResourceSetList {
1
}
},
bwp-Id 0,
resourceType periodic
}
},
csi-ReportConfigToAddModList {
{
reportConfigId 0,
resourcesForChannelMeasurement 0,
csi-IM-ResourcesForInterference 1,
reportConfigType periodic: {
reportSlotConfig slots80: 9,
pucch-CSI-ResourceList {
{
uplinkBandwidthPartId 0,
pucch-Resource 13
}
}
},
reportQuantity cri-RI-PMI-CQI: NULL,
reportFreqConfiguration {
cqi-FormatIndicator widebandCQI,
pmi-FormatIndicator widebandPMI
},
timeRestrictionForChannelMeasurements notConfigured,
timeRestrictionForInterferenceMeasurements notConfigured,
codebookConfig {
codebookType type1: {
subType typeI-SinglePanel: {
nrOfAntennaPorts two: {
twoTX-CodebookSubsetRestriction '111111'B
},
typeI-SinglePanel-ri-Restriction '03'H
},
codebookMode 1
}
},
groupBasedBeamReporting disabled: {
},
cqi-Table table2,
subbandSize value1
}
}
},
tag-Id 0,
servingCellMO 1,
lte-CRS-ToMatchAround release: NULL
}
}
},
masterKeyUpdate {
keySetChangeIndicator FALSE,
nextHopChainingCount 0
}
}
}
}
}