Pau Espin Pedrol | 786a6bc | 2020-03-30 13:51:21 +0200 | [diff] [blame] | 1 | /* lteenb configuration file version 2018-10-18 |
| 2 | * Copyright (C) 2015-2018 Amarisoft |
| 3 | */ |
| 4 | { |
| 5 | |
Pau Espin Pedrol | c04528c | 2020-04-01 13:55:51 +0200 | [diff] [blame] | 6 | %if enb.license_server_addr != '0.0.0.0': |
Pau Espin Pedrol | 786a6bc | 2020-03-30 13:51:21 +0200 | [diff] [blame] | 7 | license_server: { |
| 8 | server_addr: "${enb.license_server_addr}", |
| 9 | name: "amarisoft", |
| 10 | }, |
Pau Espin Pedrol | c04528c | 2020-04-01 13:55:51 +0200 | [diff] [blame] | 11 | %endif |
Pau Espin Pedrol | 786a6bc | 2020-03-30 13:51:21 +0200 | [diff] [blame] | 12 | |
Pau Espin Pedrol | d45a29e | 2020-04-02 17:21:47 +0200 | [diff] [blame] | 13 | % if enb.rf_dev_type == 'zmq': |
| 14 | /* Force sampling rate (if uncommented) */ |
| 15 | sample_rate: ${enb.sample_rate}, |
| 16 | %endif |
| 17 | |
Pau Espin Pedrol | 786a6bc | 2020-03-30 13:51:21 +0200 | [diff] [blame] | 18 | /* 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 Puschmann | 62e887d | 2020-06-16 14:42:28 +0200 | [diff] [blame] | 32 | log_options: "${enb.log_options}", |
Pau Espin Pedrol | 786a6bc | 2020-03-30 13:51:21 +0200 | [diff] [blame] | 33 | log_filename: "${enb.log_filename}", |
| 34 | |
Andre Puschmann | dbe4bb3 | 2020-07-15 14:43:51 +0200 | [diff] [blame] | 35 | % if enb.enable_pcap == 'true': |
| 36 | pcap: {filename:"${enb.pcap_filename}"}, |
| 37 | %endif |
| 38 | |
Pau Espin Pedrol | 786a6bc | 2020-03-30 13:51:21 +0200 | [diff] [blame] | 39 | /* 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 Puschmann | 955249d | 2020-07-01 15:44:09 +0200 | [diff] [blame] | 45 | % if enb.enable_dl_awgn: |
| 46 | channel_dl: { |
| 47 | type: "awgn", |
| 48 | snr: ${enb.dl_awgn_snr} |
| 49 | }, |
| 50 | % endif |
| 51 | |
Pau Espin Pedrol | 786a6bc | 2020-03-30 13:51:21 +0200 | [diff] [blame] | 52 | mme_list: [ |
| 53 | { |
Pau Espin Pedrol | 3b49d46 | 2020-06-11 13:15:53 +0200 | [diff] [blame] | 54 | s1ap_bind_addr: "${enb.addr}", |
Pau Espin Pedrol | 786a6bc | 2020-03-30 13:51:21 +0200 | [diff] [blame] | 55 | /* 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 Puschmann | 4b5a09a | 2020-04-14 22:24:00 +0200 | [diff] [blame] | 62 | gtp_addr: "${enb.gtp_bind_addr}", |
Pau Espin Pedrol | 786a6bc | 2020-03-30 13:51:21 +0200 | [diff] [blame] | 63 | |
| 64 | /* high 20 bits of SIB1.cellIdentifier */ |
Pau Espin Pedrol | 491f77c | 2020-04-20 14:20:43 +0200 | [diff] [blame] | 65 | enb_id: ${enb.id}, |
Pau Espin Pedrol | 786a6bc | 2020-03-30 13:51:21 +0200 | [diff] [blame] | 66 | |
| 67 | /* list of cells */ |
| 68 | cell_list: [ |
Andre Puschmann | a0e69aa | 2020-04-06 14:51:31 +0200 | [diff] [blame] | 69 | |
Pau Espin Pedrol | f46ae22 | 2020-04-17 16:23:54 +0200 | [diff] [blame] | 70 | %for cell in enb.cell_list: |
Andre Puschmann | a0e69aa | 2020-04-06 14:51:31 +0200 | [diff] [blame] | 71 | { |
Pau Espin Pedrol | f46ae22 | 2020-04-17 16:23:54 +0200 | [diff] [blame] | 72 | dl_earfcn: ${cell.dl_earfcn}, |
Andre Puschmann | 549826d | 2020-04-21 21:14:30 +0200 | [diff] [blame] | 73 | rf_port: ${cell.rf_port}, |
Pau Espin Pedrol | f46ae22 | 2020-04-17 16:23:54 +0200 | [diff] [blame] | 74 | cell_id: ${cell.cell_id}, |
Pau Espin Pedrol | 154dc93 | 2020-04-20 17:02:08 +0200 | [diff] [blame] | 75 | n_id_cell: ${cell.pci}, |
Andre Puschmann | 0908ceb | 2020-09-23 17:03:21 +0200 | [diff] [blame] | 76 | tac: 0x0007, |
Andre Puschmann | a9bbbd6 | 2020-09-30 14:46:27 +0200 | [diff] [blame] | 77 | root_sequence_index: ${loop.index * 10 + 204}, /* PRACH root sequence index */ |
Andre Puschmann | a0e69aa | 2020-04-06 14:51:31 +0200 | [diff] [blame] | 78 | |
Pau Espin Pedrol | 6c77874 | 2020-04-20 12:15:06 +0200 | [diff] [blame] | 79 | ncell_list: [ |
Pau Espin Pedrol | ef7256a | 2020-11-09 18:52:05 +0100 | [diff] [blame] | 80 | %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 Pedrol | 6c77874 | 2020-04-20 12:15:06 +0200 | [diff] [blame] | 82 | %endfor |
| 83 | ], |
| 84 | |
Andre Puschmann | a0e69aa | 2020-04-06 14:51:31 +0200 | [diff] [blame] | 85 | scell_list: [ |
Pau Espin Pedrol | f46ae22 | 2020-04-17 16:23:54 +0200 | [diff] [blame] | 86 | %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 Puschmann | a0e69aa | 2020-04-06 14:51:31 +0200 | [diff] [blame] | 89 | ], |
| 90 | }, |
Pau Espin Pedrol | f46ae22 | 2020-04-17 16:23:54 +0200 | [diff] [blame] | 91 | %endfor |
Andre Puschmann | a0e69aa | 2020-04-06 14:51:31 +0200 | [diff] [blame] | 92 | ], /* cell_list */ |
| 93 | |
| 94 | /* default cell parameters */ |
| 95 | cell_default: { |
Pau Espin Pedrol | 786a6bc | 2020-03-30 13:51:21 +0200 | [diff] [blame] | 96 | /* Broadcasted PLMN identities */ |
| 97 | plmn_list: [ |
Andre Puschmann | 5c4c052 | 2020-07-09 15:55:04 +0200 | [diff] [blame] | 98 | "${'{0:03}'.format(int(enb.mcc))}${'{0:02}'.format(int(enb.mnc))}", |
Pau Espin Pedrol | 786a6bc | 2020-03-30 13:51:21 +0200 | [diff] [blame] | 99 | ], |
| 100 | |
Andre Puschmann | d0682ba | 2020-10-15 15:46:29 +0200 | [diff] [blame] | 101 | % if enb.get('duplex') == "tdd": |
| 102 | uldl_config: ${enb.tdd_uldl_config}, |
| 103 | sp_config: ${enb.tdd_special_subframe_pattern}, |
| 104 | % endif |
| 105 | |
Andre Puschmann | bf40f8c | 2020-04-14 14:04:32 +0200 | [diff] [blame] | 106 | % if int(enb.get('transmission_mode')) == 1: |
Pau Espin Pedrol | 786a6bc | 2020-03-30 13:51:21 +0200 | [diff] [blame] | 107 | n_antenna_dl: 1, /* number of DL antennas */ |
| 108 | n_antenna_ul: 1, /* number of UL antennas */ |
Andre Puschmann | bf40f8c | 2020-04-14 14:04:32 +0200 | [diff] [blame] | 109 | % else: |
| 110 | n_antenna_dl: 2, /* number of DL antennas */ |
| 111 | n_antenna_ul: 2, /* number of UL antennas */ |
| 112 | % endif |
| 113 | |
Pau Espin Pedrol | 786a6bc | 2020-03-30 13:51:21 +0200 | [diff] [blame] | 114 | 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 Puschmann | 0694c30 | 2020-06-22 13:10:24 +0200 | [diff] [blame] | 140 | //pdcch_format: 1, |
Pau Espin Pedrol | 786a6bc | 2020-03-30 13:51:21 +0200 | [diff] [blame] | 141 | |
| 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 Puschmann | 0694c30 | 2020-06-22 13:10:24 +0200 | [diff] [blame] | 169 | cqi_period: 40, /* period (ms). Must be >= 32 for HD-FDD */ |
Pau Espin Pedrol | 786a6bc | 2020-03-30 13:51:21 +0200 | [diff] [blame] | 170 | |
| 171 | /* RI reporting is done with a period of m_ri * cqi_period. |
| 172 | m_ri = 0 (default) disables RI reporting. */ |
Andre Puschmann | 487d1ef | 2020-05-28 15:22:18 +0200 | [diff] [blame] | 173 | % if int(enb.get('transmission_mode')) > 1: |
| 174 | m_ri: 8, |
| 175 | % endif |
Pau Espin Pedrol | 786a6bc | 2020-03-30 13:51:21 +0200 | [diff] [blame] | 176 | |
Andre Puschmann | a0e69aa | 2020-04-06 14:51:31 +0200 | [diff] [blame] | 177 | 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 Puschmann | d0682ba | 2020-10-15 15:46:29 +0200 | [diff] [blame] | 186 | % if enb.get('duplex') == "tdd": |
| 187 | tdd_ack_nack_feedback_mode: "bundling", |
Andre Puschmann | a0e69aa | 2020-04-06 14:51:31 +0200 | [diff] [blame] | 188 | // tdd_ack_nack_feedback_mode_r10: "cs", |
Andre Puschmann | d0682ba | 2020-10-15 15:46:29 +0200 | [diff] [blame] | 189 | % endif |
Andre Puschmann | a0e69aa | 2020-04-06 14:51:31 +0200 | [diff] [blame] | 190 | |
| 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 Pedrol | 786a6bc | 2020-03-30 13:51:21 +0200 | [diff] [blame] | 202 | /* 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 Puschmann | 0694c30 | 2020-06-22 13:10:24 +0200 | [diff] [blame] | 206 | srs_period: 160, /* period (ms). Must be >= 40 for HD-FDD */ |
Pau Espin Pedrol | 786a6bc | 2020-03-30 13:51:21 +0200 | [diff] [blame] | 207 | 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 Puschmann | 51fa941 | 2020-09-29 23:10:53 +0200 | [diff] [blame] | 215 | ul_max_consecutive_retx: 1000, |
Pau Espin Pedrol | 786a6bc | 2020-03-30 13:51:21 +0200 | [diff] [blame] | 216 | }, |
| 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. */ |
| 227 | cipher_algo_pref: [], |
| 228 | /* RRC integrity algorithm preference. EIA0 is always the last. */ |
| 229 | integ_algo_pref: [2, 1], |
| 230 | |
| 231 | /* (in ms) send RRC connection release after this time of network |
| 232 | inactivity */ |
Andre Puschmann | 0cfc084 | 2020-08-26 18:19:15 +0200 | [diff] [blame] | 233 | inactivity_timer: ${enb.inactivity_timer}, |
Pau Espin Pedrol | 786a6bc | 2020-03-30 13:51:21 +0200 | [diff] [blame] | 234 | |
| 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 Puschmann | a7f1983 | 2020-04-07 14:38:27 +0200 | [diff] [blame] | 253 | |
| 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 Pedrol | 786a6bc | 2020-03-30 13:51:21 +0200 | [diff] [blame] | 278 | }, |
| 279 | } |