2020-03-30 11:51:21 +00:00
|
|
|
/* lteenb configuration file version 2018-10-18
|
|
|
|
* Copyright (C) 2015-2018 Amarisoft
|
|
|
|
*/
|
|
|
|
{
|
|
|
|
|
2020-04-01 11:55:51 +00:00
|
|
|
%if enb.license_server_addr != '0.0.0.0':
|
2020-03-30 11:51:21 +00:00
|
|
|
license_server: {
|
|
|
|
server_addr: "${enb.license_server_addr}",
|
|
|
|
name: "amarisoft",
|
|
|
|
},
|
2020-04-01 11:55:51 +00:00
|
|
|
%endif
|
2020-03-30 11:51:21 +00:00
|
|
|
|
2020-04-02 15:21:47 +00:00
|
|
|
% if enb.rf_dev_type == 'zmq':
|
|
|
|
/* Force sampling rate (if uncommented) */
|
|
|
|
sample_rate: ${enb.sample_rate},
|
|
|
|
%endif
|
|
|
|
|
2020-03-30 11:51:21 +00:00
|
|
|
/* Log filter: syntax: layer.field=value[,...]
|
|
|
|
|
|
|
|
Possible layers are phy, mac, rlc, pdcp, rrc, nas, s1ap, x2ap, gtpu and
|
|
|
|
all. The 'all' layer is used to address all the layers at the
|
|
|
|
same time.
|
|
|
|
|
|
|
|
field values:
|
|
|
|
|
|
|
|
- 'level': the log level of each layer can be set to 'none',
|
|
|
|
'error', 'info' or 'debug'. Use 'debug' to log all the messages.
|
|
|
|
|
|
|
|
- 'max_size': set the maximum size of the hex dump. 0 means no
|
|
|
|
hex dump. -1 means no limit.
|
|
|
|
*/
|
2020-06-16 12:42:28 +00:00
|
|
|
log_options: "${enb.log_options}",
|
2020-03-30 11:51:21 +00:00
|
|
|
log_filename: "${enb.log_filename}",
|
|
|
|
|
2020-07-15 12:43:51 +00:00
|
|
|
% if enb.enable_pcap == 'true':
|
|
|
|
pcap: {filename:"${enb.pcap_filename}"},
|
|
|
|
%endif
|
|
|
|
|
2020-03-30 11:51:21 +00:00
|
|
|
/* Enable remote API and Web interface */
|
|
|
|
com_addr: "${enb.addr}:9001",
|
|
|
|
|
|
|
|
/* RF driver configuration */
|
|
|
|
include "amarisoft_rf_driver.cfg",
|
|
|
|
|
2020-07-01 13:44:09 +00:00
|
|
|
% if enb.enable_dl_awgn:
|
|
|
|
channel_dl: {
|
|
|
|
type: "awgn",
|
|
|
|
snr: ${enb.dl_awgn_snr}
|
|
|
|
},
|
|
|
|
% endif
|
|
|
|
|
2020-03-30 11:51:21 +00:00
|
|
|
mme_list: [
|
|
|
|
{
|
2020-06-11 11:15:53 +00:00
|
|
|
s1ap_bind_addr: "${enb.addr}",
|
2020-03-30 11:51:21 +00:00
|
|
|
/* address of MME for S1AP connection. Must be modified if the MME
|
|
|
|
runs on a different host. */
|
|
|
|
mme_addr: "${enb.mme_addr}",
|
|
|
|
},
|
|
|
|
],
|
|
|
|
/* GTP bind address (=address of the ethernet interface connected to
|
|
|
|
the MME). Must be modified if the MME runs on a different host. */
|
2020-04-14 20:24:00 +00:00
|
|
|
gtp_addr: "${enb.gtp_bind_addr}",
|
2020-03-30 11:51:21 +00:00
|
|
|
|
|
|
|
/* high 20 bits of SIB1.cellIdentifier */
|
2020-04-20 12:20:43 +00:00
|
|
|
enb_id: ${enb.id},
|
2020-03-30 11:51:21 +00:00
|
|
|
|
|
|
|
/* list of cells */
|
|
|
|
cell_list: [
|
2020-04-06 12:51:31 +00:00
|
|
|
|
2020-04-17 14:23:54 +00:00
|
|
|
%for cell in enb.cell_list:
|
2020-04-06 12:51:31 +00:00
|
|
|
{
|
2020-04-17 14:23:54 +00:00
|
|
|
dl_earfcn: ${cell.dl_earfcn},
|
2020-04-21 19:14:30 +00:00
|
|
|
rf_port: ${cell.rf_port},
|
2020-04-17 14:23:54 +00:00
|
|
|
cell_id: ${cell.cell_id},
|
2020-04-20 15:02:08 +00:00
|
|
|
n_id_cell: ${cell.pci},
|
2020-09-23 15:03:21 +00:00
|
|
|
tac: 0x0007,
|
2020-09-30 12:46:27 +00:00
|
|
|
root_sequence_index: ${loop.index * 10 + 204}, /* PRACH root sequence index */
|
2020-04-06 12:51:31 +00:00
|
|
|
|
2020-04-20 10:15:06 +00:00
|
|
|
ncell_list: [
|
|
|
|
%for ncell in enb.cell_list:
|
|
|
|
%if ncell.cell_id in cell.ncell_list:
|
|
|
|
{ n_id_cell: ${ncell.pci}, dl_earfcn: ${ncell.dl_earfcn}, cell_id: ${ncell.cell_id}, tac: 1 },
|
|
|
|
%endif
|
|
|
|
%endfor
|
|
|
|
],
|
|
|
|
|
2020-04-06 12:51:31 +00:00
|
|
|
scell_list: [
|
2020-04-17 14:23:54 +00:00
|
|
|
%for scell_id in cell.scell_list:
|
|
|
|
{ cell_id: ${scell_id}, cross_carrier_scheduling: false, scheduling_cell_id: ${cell.cell_id}, ul_allowed: true},
|
|
|
|
%endfor
|
2020-04-06 12:51:31 +00:00
|
|
|
],
|
2020-03-30 11:51:21 +00:00
|
|
|
},
|
2020-04-17 14:23:54 +00:00
|
|
|
%endfor
|
2020-03-30 11:51:21 +00:00
|
|
|
], /* cell_list */
|
|
|
|
|
|
|
|
/* default cell parameters */
|
|
|
|
cell_default: {
|
2020-04-06 12:51:31 +00:00
|
|
|
/* Broadcasted PLMN identities */
|
|
|
|
plmn_list: [
|
2020-07-09 13:55:04 +00:00
|
|
|
"${'{0:03}'.format(int(enb.mcc))}${'{0:02}'.format(int(enb.mnc))}",
|
2020-04-06 12:51:31 +00:00
|
|
|
],
|
|
|
|
|
2020-10-15 13:46:29 +00:00
|
|
|
% if enb.get('duplex') == "tdd":
|
|
|
|
uldl_config: ${enb.tdd_uldl_config},
|
|
|
|
sp_config: ${enb.tdd_special_subframe_pattern},
|
|
|
|
% endif
|
|
|
|
|
2020-04-14 12:04:32 +00:00
|
|
|
% if int(enb.get('transmission_mode')) == 1:
|
2020-03-30 11:51:21 +00:00
|
|
|
n_antenna_dl: 1, /* number of DL antennas */
|
|
|
|
n_antenna_ul: 1, /* number of UL antennas */
|
2020-04-14 12:04:32 +00:00
|
|
|
% else:
|
|
|
|
n_antenna_dl: 2, /* number of DL antennas */
|
|
|
|
n_antenna_ul: 2, /* number of UL antennas */
|
|
|
|
% endif
|
|
|
|
|
2020-03-30 11:51:21 +00:00
|
|
|
n_rb_dl: ${enb.num_prb}, /* Bandwidth: 25: 5 MHz, 50: 10 MHz, 75: 15 MHz, 100: 20 MHz */
|
|
|
|
cyclic_prefix: "normal",
|
|
|
|
|
|
|
|
phich_duration: "normal",
|
|
|
|
phich_resource: "1", /* ratio of NG */
|
|
|
|
|
|
|
|
/* System Information Block type 1 */
|
|
|
|
sib1: "amarisoft_sib1.asn",
|
|
|
|
|
|
|
|
/* other SIBs, in same order as the scheduling list in SIB 1 */
|
|
|
|
sib_sched_list: [ "amarisoft_sib23.asn" ],
|
|
|
|
|
|
|
|
si_coderate: 0.30, /* maximum code rate for SI/RA/P-RNTI messages */
|
|
|
|
si_pdcch_format: 2, /* 2 or 3. Log2 of the number of CCEs for PDCCH
|
|
|
|
for SI/RA/P-RNTI */
|
|
|
|
|
|
|
|
n_symb_cch: 0, /* number of symbols for CCH (0 = auto) */
|
|
|
|
|
|
|
|
/* PDSCH dedicated config (currently same for all UEs) */
|
|
|
|
pdsch_dedicated: {
|
|
|
|
p_a: 0,
|
|
|
|
},
|
|
|
|
|
|
|
|
/* If defined, force for number of CCEs for UE specific PDCCH to
|
|
|
|
2^pdcch_format. Otherwise it is computed from the reported
|
|
|
|
CQI. Range: 0 to 3. */
|
2020-06-22 11:10:24 +00:00
|
|
|
//pdcch_format: 1,
|
2020-03-30 11:51:21 +00:00
|
|
|
|
|
|
|
/* if defined, force the PDSCH MCS for all UEs. Otherwise it is
|
|
|
|
computed from the reported CQI */
|
|
|
|
/* pdsch_mcs: 12, */
|
|
|
|
|
|
|
|
/* PUSCH dedicated config (currently same for all UEs) */
|
|
|
|
pusch_dedicated: {
|
|
|
|
beta_offset_ack_index: 9,
|
|
|
|
beta_offset_ri_index: 6,
|
|
|
|
beta_offset_cqi_index: 6,
|
|
|
|
},
|
|
|
|
|
|
|
|
/* MCS for Msg3 (=CCCH RRC Connection Request) */
|
|
|
|
pusch_msg3_mcs: 0,
|
|
|
|
|
|
|
|
/* this CQI value is assumed when none is received from the UE */
|
|
|
|
initial_cqi: 5,
|
|
|
|
|
|
|
|
/* if defined, force the PUSCH MCS for all UEs. Otherwise it is
|
|
|
|
computed from the last received SRS/PUSCH. */
|
|
|
|
// pusch_mcs: 18,
|
|
|
|
|
|
|
|
transmission_mode: ${enb.transmission_mode},
|
|
|
|
|
|
|
|
/* Scheduling request period (ms). Must be >= 40 for HD-FDD */
|
|
|
|
sr_period: 20,
|
|
|
|
|
|
|
|
/* CQI report config */
|
2020-06-22 11:10:24 +00:00
|
|
|
cqi_period: 40, /* period (ms). Must be >= 32 for HD-FDD */
|
2020-03-30 11:51:21 +00:00
|
|
|
|
|
|
|
/* RI reporting is done with a period of m_ri * cqi_period.
|
|
|
|
m_ri = 0 (default) disables RI reporting. */
|
2020-05-28 13:22:18 +00:00
|
|
|
% if int(enb.get('transmission_mode')) > 1:
|
|
|
|
m_ri: 8,
|
|
|
|
% endif
|
2020-03-30 11:51:21 +00:00
|
|
|
|
2020-04-06 12:51:31 +00:00
|
|
|
pucch_dedicated: {
|
|
|
|
/* ack/nack feedback mode when carrier aggregation is
|
|
|
|
enabled. It can be "cs" (for at most two scells) or "pucch3"
|
|
|
|
(used in all cases if more than two cells). */
|
|
|
|
ack_nack_feedback_mode_ca: "cs",
|
|
|
|
|
|
|
|
/* TDD ack/nack feedback mode when a rel 10 UE is detected. It
|
|
|
|
can be "bundling", "multiplexing", "cs" or "pucch3". By
|
|
|
|
default is it the same as tdd_ack_nack_feedback_mode. */
|
2020-10-15 13:46:29 +00:00
|
|
|
% if enb.get('duplex') == "tdd":
|
|
|
|
tdd_ack_nack_feedback_mode: "bundling",
|
2020-04-06 12:51:31 +00:00
|
|
|
// tdd_ack_nack_feedback_mode_r10: "cs",
|
2020-10-15 13:46:29 +00:00
|
|
|
% endif
|
2020-04-06 12:51:31 +00:00
|
|
|
|
|
|
|
/* number of PUCCH 1b CS resources. It determines
|
|
|
|
the maximum number of UEs that can be scheduled in one TTI
|
|
|
|
using carrier aggregation with PUCCH 1b CS ack/nack feedback. */
|
|
|
|
n1_pucch_an_cs_count: 1,
|
|
|
|
|
|
|
|
/* number of resource blocks for PUCCH 3. It determines
|
|
|
|
the maximum number of UEs that can be scheduled in one TTI
|
|
|
|
using carrier aggregation with PUCCH 3 ack/nack feedback. */
|
|
|
|
n3_pucch_an_n_rb: 0,
|
|
|
|
},
|
|
|
|
|
2020-03-30 11:51:21 +00:00
|
|
|
/* SRS dedicated config. All UEs share these
|
|
|
|
parameters. srs_config_index and freq_domain_position are
|
|
|
|
allocated for each UE) */
|
|
|
|
srs_dedicated: {
|
2020-06-22 11:10:24 +00:00
|
|
|
srs_period: 160, /* period (ms). Must be >= 40 for HD-FDD */
|
2020-03-30 11:51:21 +00:00
|
|
|
srs_bandwidth: 1,
|
|
|
|
srs_hopping_bandwidth: 0,
|
|
|
|
},
|
|
|
|
|
|
|
|
/* MAC configuration (same for all UEs) */
|
|
|
|
mac_config: {
|
|
|
|
ul_max_harq_tx: 5, /* max number of HARQ transmissions for uplink */
|
|
|
|
dl_max_harq_tx: 5, /* max number of HARQ transmissions for downlink */
|
2020-09-29 21:10:53 +00:00
|
|
|
ul_max_consecutive_retx: 1000,
|
2020-03-30 11:51:21 +00:00
|
|
|
},
|
|
|
|
|
|
|
|
/* CPU load limitation */
|
|
|
|
pusch_max_its: 6, /* max number of turbo decoder iterations */
|
|
|
|
|
|
|
|
/* dynamic power control */
|
|
|
|
dpc: true,
|
|
|
|
dpc_pusch_snr_target: 15,
|
|
|
|
dpc_pucch_snr_target: 10,
|
|
|
|
|
|
|
|
/* RRC/UP ciphering algorithm preference. EEA0 is always the last. */
|
|
|
|
cipher_algo_pref: [],
|
|
|
|
/* RRC integrity algorithm preference. EIA0 is always the last. */
|
|
|
|
integ_algo_pref: [2, 1],
|
|
|
|
|
|
|
|
/* (in ms) send RRC connection release after this time of network
|
|
|
|
inactivity */
|
2020-08-26 16:19:15 +00:00
|
|
|
inactivity_timer: ${enb.inactivity_timer},
|
2020-03-30 11:51:21 +00:00
|
|
|
|
|
|
|
/* SRB configuration */
|
|
|
|
srb_config: [
|
|
|
|
{
|
|
|
|
id: 1,
|
|
|
|
maxRetxThreshold: 32,
|
|
|
|
t_Reordering: 45,
|
|
|
|
t_PollRetransmit: 60,
|
|
|
|
},
|
|
|
|
{
|
|
|
|
id: 2 ,
|
|
|
|
maxRetxThreshold: 32,
|
|
|
|
t_Reordering: 45,
|
|
|
|
t_PollRetransmit: 60,
|
|
|
|
}
|
|
|
|
],
|
|
|
|
|
|
|
|
/* DRB configuration */
|
|
|
|
drb_config: "amarisoft_drb.cfg",
|
enb: add measurement modifier to scenario files
this commit adds basic support for configuring measurements in the
eNB config. It currently support A1, A2, and A3 events.
By default UE measurements are turned off and need to be enabled by
configuring an event with:
+mod-enb-meas-event@{name},{report_type},{value},{hysterisis},{time to trigger}
For example one can update the a2 and a3 event with:
+mod-enb-meas-event@a2,rsrq,-40,2,480+mod-enb-meas-event@a3,rsrp,6,1,512
Change-Id: Ia7657be2396886840570bc41645450a268b4cfff
2020-04-07 12:38:27 +00:00
|
|
|
|
|
|
|
% if enb.enable_measurements:
|
|
|
|
/* measurement configuration */
|
|
|
|
meas_config_desc: {
|
|
|
|
a1_report_type: "${enb.a1_report_type}",
|
|
|
|
a1_${enb.a1_report_type}: ${enb.a1_report_value},
|
|
|
|
a1_hysteresis: ${enb.a1_hysteresis},
|
|
|
|
a1_time_to_trigger: ${enb.a1_time_to_trigger},
|
|
|
|
a2_report_type: "${enb.a2_report_type}",
|
|
|
|
a2_${enb.a2_report_type}: ${enb.a2_report_value},
|
|
|
|
a2_hysteresis: ${enb.a2_hysteresis},
|
|
|
|
a2_time_to_trigger: ${enb.a2_time_to_trigger},
|
|
|
|
a3_report_type: "${enb.a3_report_type}",
|
|
|
|
a3_offset: ${enb.a3_report_value},
|
|
|
|
a3_hysteresis: ${enb.a3_hysteresis},
|
|
|
|
a3_time_to_trigger: ${enb.a3_time_to_trigger},
|
|
|
|
},
|
|
|
|
|
|
|
|
/* measurement gap configuration */
|
|
|
|
meas_gap_config: "gp0",
|
|
|
|
|
|
|
|
/* if true, initiate a handover when a suitable measurement report
|
|
|
|
is received */
|
|
|
|
ho_from_meas: true,
|
|
|
|
% endif
|
2020-03-30 11:51:21 +00:00
|
|
|
},
|
|
|
|
}
|