LTE PUCCH
The purpose of this tutorial is to show you how to configure various parameters related to PUCCH. Main purpose is to help you understand the relationship between Amarisoft eNB configuration parameters and LTE RRC configuration for PUCCH. It is important to understand the details of these parameters since PUCCH configuration may affect the UL max throughput and the number of UE that can be supported by eNB.
In LTE, PUCCH is located around the either ends of the spectrum as shown below to utilize the property of frequency diversity. The exact location of PUCCH location and how many RBs are occupied by PUCCH is determined by a few RRC parameters and format of PUCCH.
Image Source : Sharetechnote
Table of Contents
- LTE PUCCH
- Test Setup
- Key Configuration Parameters
- Test 1 : SISO, CSI Disabled
- Test 2 : SISO, CSI Disabled : n1PUCCH-AN
- Test 3 : SISO, CSI Enabled
- Test 4 : SISO, CSI Enabled : nRB-CQI
- Test 5 : MIMO, CSI Enabled
- Test 6 : Simulteneous CSI and Ack/Nack
- Test 7 : SIB2 ASN.1 Modification : nCS-AN change
- 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
Key Configuration Parameters
Followings are important configuration parameters for this tutorial. You may click on the items for the descriptions from Amarisoft documents.
- pucch_dedicated : In this link, you would get the descriptions for all the items linked below
- n1_pucch_sr_count
- cqi_pucch_n_rb
- n1_pucch_an_cs_count
- ack_nack_feedback_mode_ca
- n3_pucch_an_n_rb
- simultaneousAckNackAndCQI
- simultaneousAckNackAndCQI_format3
- sr_period
- cqi_period
- m_ri
- forced_cqi
- forced_ri
Test 1 : SISO, CSI Disabled
This test is to show a case of the PUCCH configuration with minium resource allocation : SISO, CSI Disabled.
Configuration
I used the eNB configuration enb-pucch1-dl-siso.cfg which is copied from enb.default.cfg and modified for this tutorial.
I used the mme configuration mme-ims.cfg and ims configuration ims.default.cfg
In enb-pucch1-dl-siso.cfg , PUCCH related configurations are set as follows.
Set N_ANTENNA_DL 1 to configure the cell to SISO and set DISABLE_CSI 1 to disable CSI Report.
Configure n1_pucch_sr_count and cqi_pucch_n_rb in pucch_dedicated configuration to fit with the test configuration. In terms of efficient utilization of the physical resources, it is recommended not to set these unnecessarily large values.
This is just to show how cqi_period, forced_cqi, force_ri, m_ri parameters are set depending on DISABLE_CSI value. This is only for informational purpose. you don't need to modify anything here.
Run and Check
Check the cell phy configuration and see if it is configured as intended.
run 't' command and power on UE and make it sure that UE complete the attach.
(This is not mandatory but) perform some high throughput test for both DL and UL. I ran a speedtest app on internet for this tutorial.
Log Analysis
For the analysis of PUCCH log, it would be helpful to check first the meta data in the log file and check the overall information about PUCCH resource allocation. If you open up the enb log in text editor, you will find these information at the beginning of the log.
Check out pucch-ConfigCommon in SIB2 and see if the configuration parameter is properly reflected in the message. cqi_pucch_n_rb in configuration file is mapped to nRB-CQI IE in SIB2 and n1_pucch_sr_count in configuration file is mapped to n1PUCCH-AN IE in SIB2.
You can confirm that CQI is disabled from cqi-ReportConfig IE in RRC Connection Setup.
In additon, you can also confirm that CQI is disabled from phsicalConfigDedicated IE in RRC Connection Reconfiguration.
You can confirm with PHY log on which PUCCH formats are used for the test
If you check the time period while PDSCH is flowing in RB map, you can easily check out the Uplink physical resources that are really used by PUCCH. The small green rectangles in the lower track indicates the physical resources that are used by PUCCH.
If you look into the period while PUSCH is fully allocated, you can visually confirm the physical resources reserved for PUCCH. The blank space outside of the red block(PUSCH) in lower track is the area reserved for PUCCH. This shows that Amarisoft does not allocate the reserved area for PUSCH even if it is not really used and this way of scheduling would give me a little bit lower maximum throughput than you may expected. If you want to schedule PUSCH even at the reserved area for maximum throughput, check out this tutorial.
Test 2 : SISO, CSI Disabled : n1PUCCH-AN
This test is to show a case of the PUCCH configuration for SISO, CSI Disabled. In this test, I will show you how to change the RRC parameter n1PUCCH-AN in configuration file.
Configuration
I used the eNB configuration enb-pucch1-dl-siso-sr-count.cfg which is copied from enb.default.cfg and modified for this tutorial.
I used the mme configuration mme-ims.cfg and ims configuration ims.default.cfg
In enb-pucch1-dl-siso-sr-count.cfg , PUCCH related configurations are set as follows.
Set N_ANTENNA_DL 1 to configure the cell to SISO and set DISABLE_CSI 1 to disable CSI Report.
Configure n1_pucch_sr_count and cqi_pucch_n_rb in pucch_dedicated configuration to fit with the test configuration. In terms of efficient utilization of the physical resources, it is recommended not to set these unnecessarily large values. In this test, I increased the value of n1_pucch_sr_count. I may not need to change the value for the operation, but I changed it just to show how the change is reflected to RRC parameter and physical resource allocation.
This is just to show how cqi_period, forced_cqi, force_ri, m_ri parameters are set depending on DISABLE_CSI value. This is only for informational purpose. you don't need to modify anything here.
Run and Check
Check the cell phy configuration and see if it is configured as intended.
run 't' command and power on UE and make it sure that UE complete the attach.
(This is not mandatory but) perform some high throughput test for both DL and UL. I ran a speedtest app on internet for this tutorial.
Log Analysis
For the analysis of PUCCH log, it would be helpful to check first the meta data in the log file and check the overall information about PUCCH resource allocation. If you open up the enb log in text editor, you will find these information at the beginning of the log.
Compare the configuration value shown here with the value in previous test to see how the parameters set in the configuration file is reflected into actual pucch physical resources.
Check out pucch-ConfigCommon in SIB2 and see if the configuration parameter is properly reflected in the message. cqi_pucch_n_rb in configuration file is mapped to nRB-CQI IE in SIB2 and n1_pucch_sr_count in configuration file is mapped to n1PUCCH-AN IE in SIB2.
You can confirm that CQI is disabled from cqi-ReportConfig IE in RRC Connection Setup.
In additon, you can also confirm that CQI is enabled from phsicalConfigDedicated IE in RRC Connection Reconfiguration.
You can confirm with PHY log on which PUCCH formats are used for the test
If you check the time period while PDSCH is flowing in RB map, you can easily check out the Uplink physical resources that are really used by PUCCH. The small green rectangles in the lower track indicates the physical resources that are used by PUCCH.
If you look into the period while PUSCH is fully allocated, you can visually confirm the physical resources reserved for PUCCH. The blank space outside of the red block(PUSCH) in lower track is the area reserved for PUCCH. This shows that Amarisoft does not allocate the reserved area for PUSCH even if it is not really used and this way of scheduling would give me a little bit lower maximum throughput than you may expected. If you want to schedule PUSCH even at the reserved area for maximum throughput, check out this tutorial.
Test 3 : SISO, CSI Enabled
This test is to show a case of the PUCCH configuration for SISO, CSI Enabled.
Configuration
I used the eNB configuration enb-pucch-dl-siso-csi.cfg which is copied from enb.default.cfg and modified for this tutorial.
I used the mme configuration mme-ims.cfg and ims configuration ims.default.cfg
In enb-pucch-dl-siso-csi.cfg , PUCCH related configurations are set as follows.
Set N_ANTENNA_DL 1 to configure the cell to SISO and set DISABLE_CSI 0 to enable CSI Report.
Configure n1_pucch_sr_count and cqi_pucch_n_rb in pucch_dedicated configuration to fit with the test configuration. In terms of efficient utilization of the physical resources, it is recommended not to set these unnecessarily large values.
This is just to show how cqi_period, forced_cqi, force_ri, m_ri parameters are set depending on DISABLE_CSI value. This is only for informational purpose. you don't need to modify anything here.
Run and Check
Check the cell phy configuration and see if it is configured as intended.
run 't' command and power on UE and make it sure that UE complete the attach.
(This is not mandatory but) perform some high throughput test for both DL and UL. I ran a speedtest app on internet for this tutorial.
Log Analysis
For the analysis of PUCCH log, it would be helpful to check first the meta data in the log file and check the overall information about PUCCH resource allocation. If you open up the enb log in text editor, you will find these information at the beginning of the log.
Compare the configuration value shown here with the value in previous test to see how the parameters set in the configuration file is reflected into actual pucch physical resources.
Check out pucch-ConfigCommon in SIB2 and see if the configuration parameter is properly reflected in the message. cqi_pucch_n_rb in configuration file is mapped to nRB-CQI IE in SIB2 and n1_pucch_sr_count in configuration file is mapped to n1PUCCH-AN IE in SIB2.
You can confirm that CQI is enabled from cqi-ReportConfig IE in RRC Connection Setup.
In additon, you can also confirm that CQI is enabled from phsicalConfigDedicated IE in RRC Connection Reconfiguration.
You can confirm with PHY log on which PUCCH formats are used for the test
If you check the time period while PDSCH is flowing in RB map, you can easily check out the Uplink physical resources that are really used by PUCCH. The small green rectangles in the lower track indicates the physical resources that are used by PUCCH.
If you look into the period while PUSCH is fully allocated, you can visually confirm the physical resources reserved for PUCCH. The blank space outside of the red block(PUSCH) in lower track is the area reserved for PUCCH. This shows that Amarisoft does not allocate the reserved area for PUSCH even if it is not really used and this way of scheduling would give me a little bit lower maximum throughput than you may expected. If you want to schedule PUSCH even at the reserved area for maximum throughput, check out this tutorial.
Test 4 : SISO, CSI Enabled : nRB-CQI
This test is to show a case of the PUCCH configuration for SISO, CSI Enabled. In this test, I will show you how to change the RRC parameter nRB-CQI in configuration file.
Configuration
I used the eNB configuration enb-pucch-dl-siso-csi-nrbCQI.cfg which is copied from enb.default.cfg and modified for this tutorial.
I used the mme configuration mme-ims.cfg and ims configuration ims.default.cfg
In enb-pucch-dl-siso-csi-nrbCQI.cfg , PUCCH related configurations are set as follows.
Set N_ANTENNA_DL 1 to configure the cell to SISO and set DISABLE_CSI 0 to enable CSI Report.
Configure n1_pucch_sr_count and cqi_pucch_n_rb in pucch_dedicated configuration to fit with the test configuration. In terms of efficient utilization of the physical resources, it is recommended not to set these unnecessarily large values.
This is just to show how cqi_period, forced_cqi, force_ri, m_ri parameters are set depending on DISABLE_CSI value. This is only for informational purpose. you don't need to modify anything here.
Run and Check
Check the cell phy configuration and see if it is configured as intended.
run 't' command and power on UE and make it sure that UE complete the attach.
(This is not mandatory but) perform some high throughput test for both DL and UL. I ran a speedtest app on internet for this tutorial.
Log Analysis
For the analysis of PUCCH log, it would be helpful to check first the meta data in the log file and check the overall information about PUCCH resource allocation. If you open up the enb log in text editor, you will find these information at the beginning of the log.
Compare the configuration value shown here with the value in previous test to see how the parameters set in the configuration file is reflected into actual pucch physical resources.
Check out pucch-ConfigCommon in SIB2 and see if the configuration parameter is properly reflected in the message. cqi_pucch_n_rb in configuration file is mapped to nRB-CQI IE in SIB2 and n1_pucch_sr_count in configuration file is mapped to n1PUCCH-AN IE in SIB2.
You can confirm that CQI is enabled from cqi-ReportConfig IE in RRC Connection Setup.
In additon, you can also confirm that CQI is enabled from phsicalConfigDedicated IE in RRC Connection Reconfiguration.
You can confirm with PHY log on which PUCCH formats are used for the test
If you check the time period while PDSCH is flowing in RB map, you can easily check out the Uplink physical resources that are really used by PUCCH. The small green rectangles in the lower track indicates the physical resources that are used by PUCCH.
If you look into the period while PUSCH is fully allocated, you can visually confirm the physical resources reserved for PUCCH. The blank space outside of the red block(PUSCH) in lower track is the area reserved for PUCCH. This shows that Amarisoft does not allocate the reserved area for PUSCH even if it is not really used and this way of scheduling would give me a little bit lower maximum throughput than you may expected. If you want to schedule PUSCH even at the reserved area for maximum throughput, check out this tutorial.
Test 5 : MIMO, CSI Enabled
This test is to show a case of the PUCCH configuration for MIMO, CSI enabled.
Configuration
I used the eNB configuration enb-pucch-dl-mimo-csi.cfg which is copied from enb.default.cfg and modified for this tutorial.
I used the mme configuration mme-ims.cfg and ims configuration ims.default.cfg
In enb-pucch-dl-mimo-csi.cfg , PUCCH related configurations are set as follows.
Set N_ANTENNA_DL 1 to configure the cell to SISO and set DISABLE_CSI 0 to enable CSI Report.
Configure n1_pucch_sr_count and cqi_pucch_n_rb in pucch_dedicated configuration to fit with the test configuration. In terms of efficient utilization of the physical resources, it is recommended not to set these unnecessarily large values.
This is just to show how cqi_period, forced_cqi, force_ri, m_ri parameters are set depending on DISABLE_CSI value. This is only for informational purpose. you don't need to modify anything here.
Run and Check
Check the cell phy configuration and see if it is configured as intended.
run 't' command and power on UE and make it sure that UE complete the attach.
(This is not mandatory but) perform some high throughput test for both DL and UL. I ran a speedtest app on internet for this tutorial.
Log Analysis
For the analysis of PUCCH log, it would be helpful to check first the meta data in the log file and check the overall information about PUCCH resource allocation. If you open up the enb log in text editor, you will find these information at the beginning of the log.
Compare the configuration value shown here with the value in previous test to see how the parameters set in the configuration file is reflected into actual pucch physical resources.
Check out pucch-ConfigCommon in SIB2 and see if the configuration parameter is properly reflected in the message. cqi_pucch_n_rb in configuration file is mapped to nRB-CQI IE in SIB2 and n1_pucch_sr_count in configuration file is mapped to n1PUCCH-AN IE in SIB2.
You can confirm that CQI is enabled from cqi-ReportConfig IE in RRC Connection Setup.
In additon, you can also confirm that CQI is enabled from phsicalConfigDedicated IE in RRC Connection Reconfiguration.
You can confirm with PHY log on which PUCCH formats are used for the test
If you check the time period while PDSCH is flowing in RB map, you can easily check out the Uplink physical resources that are really used by PUCCH. The small green rectangles in the lower track indicates the physical resources that are used by PUCCH.
If you look into the period while PUSCH is fully allocated, you can visually confirm the physical resources reserved for PUCCH. The blank space outside of the red block(PUSCH) in lower track is the area reserved for PUCCH. This shows that Amarisoft does not allocate the reserved area for PUSCH even if it is not really used and this way of scheduling would give me a little bit lower maximum throughput than you may expected. If you want to schedule PUSCH even at the reserved area for maximum throughput, check out this tutorial.
Test 6 : Simulteneous CSI and Ack/Nack
This test is to show a case of the PUCCH configuration for SISO with Simultaneous CSI and Ack/Nack.
Configuration
I used the eNB configuration enb-pucch-dl-siso-csi-an-mux.cfg which is copied from enb.default.cfg and modified for this tutorial.
I used the mme configuration mme-ims.cfg and ims configuration ims.default.cfg
In enb-pucch-dl-siso-csi-an-mux.cfg , PUCCH related configurations are set as follows.
Set N_ANTENNA_DL 1 to configure the cell to SISO and set DISABLE_CSI 0 to enable CSI Report.
Just for testing purpose, I set force_dl_schedule: true. This is to schedule PDSCH at every subframe so that UE send Ack/Nack on every subframe to create a situation where both cqi and csi is reported in the same subframe.
Set simultaneousAckNackAndCQI: true and simultaneousAckNackAndCQI_format3:true. In this case, you don't need to care about the parameters in pucch_dedicated configuration since they would not affect on multiplexing.
This is just to show how cqi_period, forced_cqi, force_ri, m_ri parameters are set depending on DISABLE_CSI value. This is only for informational purpose. you don't need to modify anything here.
Run and Check
Check the cell phy configuration and see if it is configured as intended.
run 't' command and power on UE and make it sure that UE complete the attach.
(This is not mandatory but) perform some high throughput test for both DL and UL. I ran a speedtest app on internet for this tutorial.
Log Analysis
For the analysis of PUCCH log, it would be helpful to check first the meta data in the log file and check the overall information about PUCCH resource allocation. If you open up the enb log in text editor, you will find these information at the beginning of the log.
Compare the configuration value shown here with the value in previous test to see how the parameters set in the configuration file is reflected into actual pucch physical resources.
Confirm that UE support the PUCCH type that can report CSI and Ack/Nack simultaneously from featureGroupIndicators (FGI) in UE capability Information message
You can confirm that simultaneousAckNackAndCQI is enabled by checking out physicalConfigDedicated IE in RRC Connection reconfiguration message
You can confirm with PHY log on which PUCCH formats are used for the test
If you check the time period while PDSCH is flowing in RB map, you can easily check out the Uplink physical resources that are really used by PUCCH. The small green rectangles in the lower track indicates the physical resources that are used by PUCCH.
Test 7 : SIB2 ASN.1 Modification : nCS-AN change
This test is to show how to change a PUCCH configuration not cofigurable in configuration file by modifying SIB2 message.
Configuration
I used the eNB configuration enb-pucch-dl-siso-csi-nCS-AN.cfg which is copied from enb.default.cfg and modified for this tutorial. And in this tutorial, the modified SIB ASN.1 is used. sib2_3_nCS-AN.asn is copied and modified from sib2_3.asn.
I used the mme configuration mme-ims.cfg and ims configuration ims.default.cfg
In enb-pucch-dl-siso-csi-nCS-AN.cfg , PUCCH related configurations are set as follows.
Set N_ANTENNA_DL 1 to configure the cell to SISO and set DISABLE_CSI 0 to enable CSI Report.
Just for testing purpose, I set force_dl_schedule: true. This is to schedule PDSCH at every subframe so that UE send Ack/Nack on every subframe to create a situation where both cqi and csi is reported in the same subframe.
Specify the file name of the modified sib messages to filename in sib_sched_list configuration.
Set simultaneousAckNackAndCQI: true and simultaneousAckNackAndCQI_format3:true. In this case, you don't need to care about the parameters in pucch_dedicated configuration since they would not affect on multiplexing.
In this case, you don't need to care about the parameters in cqi_period, m_ri since they would not affect on multiplexing.
In sib2_3_nCS-AN.asn , nCS-AN value of pucch-ConfigCommon IE of SIB2 is changed in this test.
Run and Check
Check the cell phy configuration and see if it is configured as intended.
run 't' command and power on UE and make it sure that UE complete the attach.
(This is not mandatory but) perform some high throughput test for both DL and UL. I ran a speedtest app on internet for this tutorial.
Log Analysis
For the analysis of PUCCH log, it would be helpful to check first the meta data in the log file and check the overall information about PUCCH resource allocation. If you open up the enb log in text editor, you will find these information at the beginning of the log.
Compare the configuration value shown here with the value in previous test to see how the parameters set in the configuration file is reflected into actual pucch physical resources.
Check out pucch-ConfigCommon in SIB2 and see if the configuration parameter is properly reflected in the message. Check nCS-AN IE is set as you configured in sib2 asn file.
You can confirm with PHY log on which PUCCH formats are used for the test
If you check the time period while PDSCH is flowing in RB map, you can easily check out the Uplink physical resources that are really used by PUCCH. The small green rectangles in the lower track indicates the physical resources that are used by PUCCH.
RRC / NAS Signaling
SIB 2
: This is the SIB 2 message sent by eNB to configure LTE PUCCH. (
{
message c1: systemInformation: {
criticalExtensions systemInformation-r8: {
sib-TypeAndInfo {
sib2: {
radioResourceConfigCommon {
rach-ConfigCommon {
...
},
bcch-Config {
...
},
pcch-Config {
...
},
prach-Config {
...
},
pdsch-ConfigCommon {
...
},
pusch-ConfigCommon {
...
},
pucch-ConfigCommon {
deltaPUCCH-Shift ds2,
nRB-CQI 1,
nCS-AN 0,
n1PUCCH-AN 11
},
soundingRS-UL-ConfigCommon setup: {
...
},
uplinkPowerControlCommon {
...
},
ul-CyclicPrefixLength len1,
pusch-ConfigCommon-v1270 {
...
}
},
ue-TimersAndConstants {
...
},
...
},