Remote API - PHY/MAC
This tutorial shows you how to change configurations for PHY/MAC with Remote API while the lte service is running. (
You can do set these configurations in configuration file, but if you use the configuration file you need to stop the lte service and change the value and run again when you want to change those parameter values. But if you are using Remote API, you can change those parameter values without stopping lte service.
I personally use this kind of tricks to figure out the root cause of BLER (low throughput) and troubleshoot the high BLER issue. Whenever I have the case where I am getting high BLER, I usually do as follows:
Step 1 : set full schedulinging force_dl_schedule and force_full_bsr and set very low mcs
Step 2 : check if you still see high bler even at the very low MCS, if you don't see high BLER at low MCS, increase MCS step by step during run time using the Remote API and find the first MCS that is causing high BLER.
Step 3 : Adjust radio link (e.g, cabling, distance between UE and Callbox Antenna etc) and repeat step 2 until you see any improvement.
Table of Contents
- Remote API - PHY/MAC
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.
- 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.
- force_dl_scheduler
- force_full_bsr
- pdsch_mcs
- pdsch_fixed_rb_alloc
- pdsch_fixed_rb_start
- pdsch_fixed_l_crb
- pusch_fixed_rb_alloc
- pusch_fixed_rb_start
- pusch_fixed_l_crb
Configuration
In this tutorial, the default configuration (the default configuration for LTE) is used without any change. We don't need to change anything in the configuration file since we will change configuration using Remote API while the lte service is running
Test 1 : Changing DL PHY Configurations
In this test, I will change some parameters to change resource allocation and scheduling for LTE DL. This is just an example of changing DL PHY/MAC configuration. You don't need to do exactly as shown here. Once you get familiar with this basic operation, you may use any other parameters in any order as you like.
Perform the Test
Before power on UE, I extended the inactivity_timer as shown below to maitain the call connection during the whole test period. Since I am not generating any higher layer traffic (e.g, IP traffic), if you don't extend inactivity_timer, RRC will be released soon (10 seconds by default) after the initial attach.
./ws.js enb '{"message":"config_set","cells":{"1":{"inactivity_timer":6000}}}'
Try changing pdsch mcs using the following command. (
./ws.js enb '{"message":"config_set","cells":{"1":{"pdsch_mcs":2}}}'
Check if the command is properly applied using 't' command as shown below. (
Now I am trying to let eNB to schedule pdsch at every possible subframe using the command as shown below. (
./ws.js enb '{"message":"config_set","cells":{"1":{"force_dl_schedule":true}}}'
Then change RB ranges for every pdsch using the command as shown below. (
./ws.js enb '{"message":"config_set","cells":{"1":{"pdsch_fixed_rb_alloc":true,"pdsch_fixed_rb_start":0,"pdsch_fixed_rb_l_crb":20}}}'
Check if the command is properly applied using 't' command as shown below
Test 2 : Changing UL PHY Configurations
In this test, I will change some parameters to change resource allocation and scheduling for LTE UL. This is just an example of changing UL PHY/MAC configuration. You don't need to do exactly as shown here. Once you get familiar with this basic operation, you may use any other parameters in any order as you like.
Perform the Test
Before power on UE, I extended the inactivity_timer as shown below to maitain the call connection during the whole test period.
./ws.js enb '{"message":"config_set","cells":{"1":{"inactivity_timer":6000}}}' (
Try changing pusch mcs using the following command.
./ws.js enb '{"message":"config_set","cells":{"1":{"pusch_mcs":2}}}' (
Check if the command is properly applied using 't' command as shown below.
Now I am trying to let eNB to schedule pdsch at every possible subframe using the command as shown below.
./ws.js enb '{"message":"config_set","cells":{"1":{"force_full_bsr":true}}}' (
Check if the command is properly applied using 't' command as shown below.