blob: 2c6fcc03c1bff704950a86b718cf4cdf68653f7c [file] [log] [blame]
Pau Espin Pedrol786a6bc2020-03-30 13:51:21 +02001/* lteenb configuration file version 2018-10-18
2 * Copyright (C) 2015-2018 Amarisoft
3 */
4{
5
Pau Espin Pedrolc04528c2020-04-01 13:55:51 +02006%if enb.license_server_addr != '0.0.0.0':
Pau Espin Pedrol786a6bc2020-03-30 13:51:21 +02007 license_server: {
8 server_addr: "${enb.license_server_addr}",
9 name: "amarisoft",
10 },
Pau Espin Pedrolc04528c2020-04-01 13:55:51 +020011%endif
Pau Espin Pedrol786a6bc2020-03-30 13:51:21 +020012
Pau Espin Pedrold45a29e2020-04-02 17:21:47 +020013% if enb.rf_dev_type == 'zmq':
14 /* Force sampling rate (if uncommented) */
15 sample_rate: ${enb.sample_rate},
16%endif
17
Pau Espin Pedrol786a6bc2020-03-30 13:51:21 +020018 /* Log filter: syntax: layer.field=value[,...]
19
20 Possible layers are phy, mac, rlc, pdcp, rrc, nas, s1ap, x2ap, gtpu and
21 all. The 'all' layer is used to address all the layers at the
22 same time.
23
24 field values:
25
26 - 'level': the log level of each layer can be set to 'none',
27 'error', 'info' or 'debug'. Use 'debug' to log all the messages.
28
29 - 'max_size': set the maximum size of the hex dump. 0 means no
30 hex dump. -1 means no limit.
31 */
Andre Puschmann62e887d2020-06-16 14:42:28 +020032 log_options: "${enb.log_options}",
Pau Espin Pedrol786a6bc2020-03-30 13:51:21 +020033 log_filename: "${enb.log_filename}",
34
Andre Puschmanndbe4bb32020-07-15 14:43:51 +020035% if enb.enable_pcap == 'true':
36 pcap: {filename:"${enb.pcap_filename}"},
37%endif
38
Pau Espin Pedrol786a6bc2020-03-30 13:51:21 +020039 /* Enable remote API and Web interface */
40 com_addr: "${enb.addr}:9001",
41
42 /* RF driver configuration */
43 include "amarisoft_rf_driver.cfg",
44
Andre Puschmann955249d2020-07-01 15:44:09 +020045% if enb.enable_dl_awgn:
46 channel_dl: {
47 type: "awgn",
48 snr: ${enb.dl_awgn_snr}
49 },
50% endif
51
Pau Espin Pedrol786a6bc2020-03-30 13:51:21 +020052 mme_list: [
53 {
Pau Espin Pedrol3b49d462020-06-11 13:15:53 +020054 s1ap_bind_addr: "${enb.addr}",
Pau Espin Pedrol786a6bc2020-03-30 13:51:21 +020055 /* address of MME for S1AP connection. Must be modified if the MME
56 runs on a different host. */
57 mme_addr: "${enb.mme_addr}",
58 },
59 ],
60 /* GTP bind address (=address of the ethernet interface connected to
61 the MME). Must be modified if the MME runs on a different host. */
Andre Puschmann4b5a09a2020-04-14 22:24:00 +020062 gtp_addr: "${enb.gtp_bind_addr}",
Pau Espin Pedrol786a6bc2020-03-30 13:51:21 +020063
64 /* high 20 bits of SIB1.cellIdentifier */
Pau Espin Pedrol491f77c2020-04-20 14:20:43 +020065 enb_id: ${enb.id},
Pau Espin Pedrol786a6bc2020-03-30 13:51:21 +020066
67 /* list of cells */
68 cell_list: [
Andre Puschmanna0e69aa2020-04-06 14:51:31 +020069
Pau Espin Pedrolf46ae222020-04-17 16:23:54 +020070%for cell in enb.cell_list:
Andre Puschmanna0e69aa2020-04-06 14:51:31 +020071 {
Pau Espin Pedrolf46ae222020-04-17 16:23:54 +020072 dl_earfcn: ${cell.dl_earfcn},
Andre Puschmann549826d2020-04-21 21:14:30 +020073 rf_port: ${cell.rf_port},
Pau Espin Pedrolf46ae222020-04-17 16:23:54 +020074 cell_id: ${cell.cell_id},
Pau Espin Pedrol154dc932020-04-20 17:02:08 +020075 n_id_cell: ${cell.pci},
Andre Puschmann0908ceb2020-09-23 17:03:21 +020076 tac: 0x0007,
Andre Puschmanna9bbbd62020-09-30 14:46:27 +020077 root_sequence_index: ${loop.index * 10 + 204}, /* PRACH root sequence index */
Andre Puschmanna0e69aa2020-04-06 14:51:31 +020078
Pau Espin Pedrol6c778742020-04-20 12:15:06 +020079 ncell_list: [
Pau Espin Pedrolef7256a2020-11-09 18:52:05 +010080%for ncell in cell.ncell_list:
81 { n_id_cell: ${ncell.pci}, dl_earfcn: ${ncell.dl_earfcn}, cell_id: ${ncell.cell_id}, tac: 7 },
Pau Espin Pedrol6c778742020-04-20 12:15:06 +020082%endfor
83 ],
84
Andre Puschmanna0e69aa2020-04-06 14:51:31 +020085 scell_list: [
Pau Espin Pedrolf46ae222020-04-17 16:23:54 +020086%for scell_id in cell.scell_list:
87 { cell_id: ${scell_id}, cross_carrier_scheduling: false, scheduling_cell_id: ${cell.cell_id}, ul_allowed: true},
88%endfor
Andre Puschmanna0e69aa2020-04-06 14:51:31 +020089 ],
90 },
Pau Espin Pedrolf46ae222020-04-17 16:23:54 +020091%endfor
Andre Puschmanna0e69aa2020-04-06 14:51:31 +020092 ], /* cell_list */
93
94 /* default cell parameters */
95 cell_default: {
Pau Espin Pedrol786a6bc2020-03-30 13:51:21 +020096 /* Broadcasted PLMN identities */
97 plmn_list: [
Andre Puschmann5c4c0522020-07-09 15:55:04 +020098 "${'{0:03}'.format(int(enb.mcc))}${'{0:02}'.format(int(enb.mnc))}",
Pau Espin Pedrol786a6bc2020-03-30 13:51:21 +020099 ],
100
Andre Puschmannd0682ba2020-10-15 15:46:29 +0200101% if enb.get('duplex') == "tdd":
102 uldl_config: ${enb.tdd_uldl_config},
103 sp_config: ${enb.tdd_special_subframe_pattern},
104% endif
105
Andre Puschmannbf40f8c2020-04-14 14:04:32 +0200106% if int(enb.get('transmission_mode')) == 1:
Pau Espin Pedrol786a6bc2020-03-30 13:51:21 +0200107 n_antenna_dl: 1, /* number of DL antennas */
108 n_antenna_ul: 1, /* number of UL antennas */
Andre Puschmannbf40f8c2020-04-14 14:04:32 +0200109% else:
110 n_antenna_dl: 2, /* number of DL antennas */
111 n_antenna_ul: 2, /* number of UL antennas */
112% endif
113
Pau Espin Pedrol786a6bc2020-03-30 13:51:21 +0200114 n_rb_dl: ${enb.num_prb}, /* Bandwidth: 25: 5 MHz, 50: 10 MHz, 75: 15 MHz, 100: 20 MHz */
115 cyclic_prefix: "normal",
116
117 phich_duration: "normal",
118 phich_resource: "1", /* ratio of NG */
119
120 /* System Information Block type 1 */
121 sib1: "amarisoft_sib1.asn",
122
123 /* other SIBs, in same order as the scheduling list in SIB 1 */
124 sib_sched_list: [ "amarisoft_sib23.asn" ],
125
126 si_coderate: 0.30, /* maximum code rate for SI/RA/P-RNTI messages */
127 si_pdcch_format: 2, /* 2 or 3. Log2 of the number of CCEs for PDCCH
128 for SI/RA/P-RNTI */
129
130 n_symb_cch: 0, /* number of symbols for CCH (0 = auto) */
131
132 /* PDSCH dedicated config (currently same for all UEs) */
133 pdsch_dedicated: {
134 p_a: 0,
135 },
136
137 /* If defined, force for number of CCEs for UE specific PDCCH to
138 2^pdcch_format. Otherwise it is computed from the reported
139 CQI. Range: 0 to 3. */
Andre Puschmann0694c302020-06-22 13:10:24 +0200140 //pdcch_format: 1,
Pau Espin Pedrol786a6bc2020-03-30 13:51:21 +0200141
142 /* if defined, force the PDSCH MCS for all UEs. Otherwise it is
143 computed from the reported CQI */
144 /* pdsch_mcs: 12, */
145
146 /* PUSCH dedicated config (currently same for all UEs) */
147 pusch_dedicated: {
148 beta_offset_ack_index: 9,
149 beta_offset_ri_index: 6,
150 beta_offset_cqi_index: 6,
151 },
152
153 /* MCS for Msg3 (=CCCH RRC Connection Request) */
154 pusch_msg3_mcs: 0,
155
156 /* this CQI value is assumed when none is received from the UE */
157 initial_cqi: 5,
158
159 /* if defined, force the PUSCH MCS for all UEs. Otherwise it is
160 computed from the last received SRS/PUSCH. */
161 // pusch_mcs: 18,
162
163 transmission_mode: ${enb.transmission_mode},
164
165 /* Scheduling request period (ms). Must be >= 40 for HD-FDD */
166 sr_period: 20,
167
168 /* CQI report config */
Andre Puschmann0694c302020-06-22 13:10:24 +0200169 cqi_period: 40, /* period (ms). Must be >= 32 for HD-FDD */
Pau Espin Pedrol786a6bc2020-03-30 13:51:21 +0200170
171 /* RI reporting is done with a period of m_ri * cqi_period.
172 m_ri = 0 (default) disables RI reporting. */
Andre Puschmann487d1ef2020-05-28 15:22:18 +0200173 % if int(enb.get('transmission_mode')) > 1:
174 m_ri: 8,
175 % endif
Pau Espin Pedrol786a6bc2020-03-30 13:51:21 +0200176
Andre Puschmanna0e69aa2020-04-06 14:51:31 +0200177 pucch_dedicated: {
178 /* ack/nack feedback mode when carrier aggregation is
179 enabled. It can be "cs" (for at most two scells) or "pucch3"
180 (used in all cases if more than two cells). */
181 ack_nack_feedback_mode_ca: "cs",
182
183 /* TDD ack/nack feedback mode when a rel 10 UE is detected. It
184 can be "bundling", "multiplexing", "cs" or "pucch3". By
185 default is it the same as tdd_ack_nack_feedback_mode. */
Andre Puschmannd0682ba2020-10-15 15:46:29 +0200186% if enb.get('duplex') == "tdd":
187 tdd_ack_nack_feedback_mode: "bundling",
Andre Puschmanna0e69aa2020-04-06 14:51:31 +0200188 // tdd_ack_nack_feedback_mode_r10: "cs",
Andre Puschmannd0682ba2020-10-15 15:46:29 +0200189% endif
Andre Puschmanna0e69aa2020-04-06 14:51:31 +0200190
191 /* number of PUCCH 1b CS resources. It determines
192 the maximum number of UEs that can be scheduled in one TTI
193 using carrier aggregation with PUCCH 1b CS ack/nack feedback. */
194 n1_pucch_an_cs_count: 1,
195
196 /* number of resource blocks for PUCCH 3. It determines
197 the maximum number of UEs that can be scheduled in one TTI
198 using carrier aggregation with PUCCH 3 ack/nack feedback. */
199 n3_pucch_an_n_rb: 0,
200 },
201
Pau Espin Pedrol786a6bc2020-03-30 13:51:21 +0200202 /* SRS dedicated config. All UEs share these
203 parameters. srs_config_index and freq_domain_position are
204 allocated for each UE) */
205 srs_dedicated: {
Andre Puschmann0694c302020-06-22 13:10:24 +0200206 srs_period: 160, /* period (ms). Must be >= 40 for HD-FDD */
Pau Espin Pedrol786a6bc2020-03-30 13:51:21 +0200207 srs_bandwidth: 1,
208 srs_hopping_bandwidth: 0,
209 },
210
211 /* MAC configuration (same for all UEs) */
212 mac_config: {
213 ul_max_harq_tx: 5, /* max number of HARQ transmissions for uplink */
214 dl_max_harq_tx: 5, /* max number of HARQ transmissions for downlink */
Andre Puschmann51fa9412020-09-29 23:10:53 +0200215 ul_max_consecutive_retx: 1000,
Pau Espin Pedrol786a6bc2020-03-30 13:51:21 +0200216 },
217
218 /* CPU load limitation */
219 pusch_max_its: 6, /* max number of turbo decoder iterations */
220
221 /* dynamic power control */
222 dpc: true,
223 dpc_pusch_snr_target: 15,
224 dpc_pucch_snr_target: 10,
225
226 /* RRC/UP ciphering algorithm preference. EEA0 is always the last. */
Nils Fürstea8180152020-12-03 14:14:31 +0100227 cipher_algo_pref: [${', '.join(list(dict.fromkeys(enb.cipher_list))).split("eea")[1] if len(list(dict.fromkeys(enb.cipher_list))) > 0 else ''}],
Pau Espin Pedrol786a6bc2020-03-30 13:51:21 +0200228 /* RRC integrity algorithm preference. EIA0 is always the last. */
Nils Fürstea8180152020-12-03 14:14:31 +0100229 integ_algo_pref: [${', '.join(list(dict.fromkeys(enb.integrity_list))).split("eia")[1]}],
Pau Espin Pedrol786a6bc2020-03-30 13:51:21 +0200230
231 /* (in ms) send RRC connection release after this time of network
232 inactivity */
Andre Puschmann0cfc0842020-08-26 18:19:15 +0200233 inactivity_timer: ${enb.inactivity_timer},
Pau Espin Pedrol786a6bc2020-03-30 13:51:21 +0200234
235 /* SRB configuration */
236 srb_config: [
237 {
238 id: 1,
239 maxRetxThreshold: 32,
240 t_Reordering: 45,
241 t_PollRetransmit: 60,
242 },
243 {
244 id: 2 ,
245 maxRetxThreshold: 32,
246 t_Reordering: 45,
247 t_PollRetransmit: 60,
248 }
249 ],
250
251 /* DRB configuration */
252 drb_config: "amarisoft_drb.cfg",
Andre Puschmanna7f19832020-04-07 14:38:27 +0200253
254% if enb.enable_measurements:
255 /* measurement configuration */
256 meas_config_desc: {
257 a1_report_type: "${enb.a1_report_type}",
258 a1_${enb.a1_report_type}: ${enb.a1_report_value},
259 a1_hysteresis: ${enb.a1_hysteresis},
260 a1_time_to_trigger: ${enb.a1_time_to_trigger},
261 a2_report_type: "${enb.a2_report_type}",
262 a2_${enb.a2_report_type}: ${enb.a2_report_value},
263 a2_hysteresis: ${enb.a2_hysteresis},
264 a2_time_to_trigger: ${enb.a2_time_to_trigger},
265 a3_report_type: "${enb.a3_report_type}",
266 a3_offset: ${enb.a3_report_value},
267 a3_hysteresis: ${enb.a3_hysteresis},
268 a3_time_to_trigger: ${enb.a3_time_to_trigger},
269 },
270
271 /* measurement gap configuration */
272 meas_gap_config: "gp0",
273
274 /* if true, initiate a handover when a suitable measurement report
275 is received */
276 ho_from_meas: true,
277% endif
Pau Espin Pedrol786a6bc2020-03-30 13:51:21 +0200278 },
279}