Andre Puschmann | 6e081aa | 2021-05-04 16:56:25 +0200 | [diff] [blame] | 1 | /* OGT templated version of the lteenb configuration file for 4G and 5G NSA */ |
| 2 | |
Pau Espin Pedrol | 786a6bc | 2020-03-30 13:51:21 +0200 | [diff] [blame] | 3 | { |
| 4 | |
Pau Espin Pedrol | c04528c | 2020-04-01 13:55:51 +0200 | [diff] [blame] | 5 | %if enb.license_server_addr != '0.0.0.0': |
Pau Espin Pedrol | 786a6bc | 2020-03-30 13:51:21 +0200 | [diff] [blame] | 6 | license_server: { |
| 7 | server_addr: "${enb.license_server_addr}", |
| 8 | name: "amarisoft", |
| 9 | }, |
Pau Espin Pedrol | c04528c | 2020-04-01 13:55:51 +0200 | [diff] [blame] | 10 | %endif |
Pau Espin Pedrol | 786a6bc | 2020-03-30 13:51:21 +0200 | [diff] [blame] | 11 | |
Pau Espin Pedrol | d45a29e | 2020-04-02 17:21:47 +0200 | [diff] [blame] | 12 | % if enb.rf_dev_type == 'zmq': |
| 13 | /* Force sampling rate (if uncommented) */ |
| 14 | sample_rate: ${enb.sample_rate}, |
| 15 | %endif |
| 16 | |
Pau Espin Pedrol | 786a6bc | 2020-03-30 13:51:21 +0200 | [diff] [blame] | 17 | /* Log filter: syntax: layer.field=value[,...] |
| 18 | |
| 19 | Possible layers are phy, mac, rlc, pdcp, rrc, nas, s1ap, x2ap, gtpu and |
| 20 | all. The 'all' layer is used to address all the layers at the |
| 21 | same time. |
| 22 | |
| 23 | field values: |
| 24 | |
| 25 | - 'level': the log level of each layer can be set to 'none', |
| 26 | 'error', 'info' or 'debug'. Use 'debug' to log all the messages. |
| 27 | |
| 28 | - 'max_size': set the maximum size of the hex dump. 0 means no |
| 29 | hex dump. -1 means no limit. |
| 30 | */ |
Andre Puschmann | 62e887d | 2020-06-16 14:42:28 +0200 | [diff] [blame] | 31 | log_options: "${enb.log_options}", |
Pau Espin Pedrol | 786a6bc | 2020-03-30 13:51:21 +0200 | [diff] [blame] | 32 | log_filename: "${enb.log_filename}", |
| 33 | |
Andre Puschmann | dbe4bb3 | 2020-07-15 14:43:51 +0200 | [diff] [blame] | 34 | % if enb.enable_pcap == 'true': |
| 35 | pcap: {filename:"${enb.pcap_filename}"}, |
| 36 | %endif |
| 37 | |
Pau Espin Pedrol | 786a6bc | 2020-03-30 13:51:21 +0200 | [diff] [blame] | 38 | /* Enable remote API and Web interface */ |
| 39 | com_addr: "${enb.addr}:9001", |
| 40 | |
| 41 | /* RF driver configuration */ |
| 42 | include "amarisoft_rf_driver.cfg", |
| 43 | |
Andre Puschmann | 955249d | 2020-07-01 15:44:09 +0200 | [diff] [blame] | 44 | % if enb.enable_dl_awgn: |
| 45 | channel_dl: { |
| 46 | type: "awgn", |
| 47 | snr: ${enb.dl_awgn_snr} |
| 48 | }, |
| 49 | % endif |
| 50 | |
Pau Espin Pedrol | 786a6bc | 2020-03-30 13:51:21 +0200 | [diff] [blame] | 51 | mme_list: [ |
| 52 | { |
Pau Espin Pedrol | 3b49d46 | 2020-06-11 13:15:53 +0200 | [diff] [blame] | 53 | s1ap_bind_addr: "${enb.addr}", |
Pau Espin Pedrol | 786a6bc | 2020-03-30 13:51:21 +0200 | [diff] [blame] | 54 | /* address of MME for S1AP connection. Must be modified if the MME |
| 55 | runs on a different host. */ |
| 56 | mme_addr: "${enb.mme_addr}", |
| 57 | }, |
| 58 | ], |
| 59 | /* GTP bind address (=address of the ethernet interface connected to |
| 60 | 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] | 61 | gtp_addr: "${enb.gtp_bind_addr}", |
Pau Espin Pedrol | 786a6bc | 2020-03-30 13:51:21 +0200 | [diff] [blame] | 62 | |
| 63 | /* high 20 bits of SIB1.cellIdentifier */ |
Pau Espin Pedrol | 491f77c | 2020-04-20 14:20:43 +0200 | [diff] [blame] | 64 | enb_id: ${enb.id}, |
Pau Espin Pedrol | 786a6bc | 2020-03-30 13:51:21 +0200 | [diff] [blame] | 65 | |
Andre Puschmann | 6e081aa | 2021-05-04 16:56:25 +0200 | [diff] [blame] | 66 | % if int(enb.num_nr_cells) > 0: |
| 67 | nr_support: true, |
| 68 | % endif |
| 69 | |
Pau Espin Pedrol | 786a6bc | 2020-03-30 13:51:21 +0200 | [diff] [blame] | 70 | /* list of cells */ |
| 71 | cell_list: [ |
Andre Puschmann | a0e69aa | 2020-04-06 14:51:31 +0200 | [diff] [blame] | 72 | |
Pau Espin Pedrol | f46ae22 | 2020-04-17 16:23:54 +0200 | [diff] [blame] | 73 | %for cell in enb.cell_list: |
Andre Puschmann | 6e081aa | 2021-05-04 16:56:25 +0200 | [diff] [blame] | 74 | %if loop.index == 0: |
Andre Puschmann | a0e69aa | 2020-04-06 14:51:31 +0200 | [diff] [blame] | 75 | { |
Pau Espin Pedrol | f46ae22 | 2020-04-17 16:23:54 +0200 | [diff] [blame] | 76 | dl_earfcn: ${cell.dl_earfcn}, |
Andre Puschmann | 549826d | 2020-04-21 21:14:30 +0200 | [diff] [blame] | 77 | rf_port: ${cell.rf_port}, |
Pau Espin Pedrol | f46ae22 | 2020-04-17 16:23:54 +0200 | [diff] [blame] | 78 | cell_id: ${cell.cell_id}, |
Pau Espin Pedrol | 154dc93 | 2020-04-20 17:02:08 +0200 | [diff] [blame] | 79 | n_id_cell: ${cell.pci}, |
Andre Puschmann | 0908ceb | 2020-09-23 17:03:21 +0200 | [diff] [blame] | 80 | tac: 0x0007, |
Andre Puschmann | a9bbbd6 | 2020-09-30 14:46:27 +0200 | [diff] [blame] | 81 | root_sequence_index: ${loop.index * 10 + 204}, /* PRACH root sequence index */ |
Andre Puschmann | a0e69aa | 2020-04-06 14:51:31 +0200 | [diff] [blame] | 82 | |
Pau Espin Pedrol | 6c77874 | 2020-04-20 12:15:06 +0200 | [diff] [blame] | 83 | ncell_list: [ |
Pau Espin Pedrol | ef7256a | 2020-11-09 18:52:05 +0100 | [diff] [blame] | 84 | %for ncell in cell.ncell_list: |
| 85 | { 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] | 86 | %endfor |
| 87 | ], |
| 88 | |
Andre Puschmann | a0e69aa | 2020-04-06 14:51:31 +0200 | [diff] [blame] | 89 | scell_list: [ |
Pau Espin Pedrol | f46ae22 | 2020-04-17 16:23:54 +0200 | [diff] [blame] | 90 | %for scell_id in cell.scell_list: |
| 91 | { cell_id: ${scell_id}, cross_carrier_scheduling: false, scheduling_cell_id: ${cell.cell_id}, ul_allowed: true}, |
| 92 | %endfor |
Andre Puschmann | a0e69aa | 2020-04-06 14:51:31 +0200 | [diff] [blame] | 93 | ], |
Andre Puschmann | 6e081aa | 2021-05-04 16:56:25 +0200 | [diff] [blame] | 94 | |
| 95 | nr_scell_list: [ |
| 96 | %for nr_scell_id in cell.nr_scell_list: |
| 97 | { cell_id: ${nr_scell_id} }, |
| 98 | %endfor |
| 99 | ], |
Andre Puschmann | a0e69aa | 2020-04-06 14:51:31 +0200 | [diff] [blame] | 100 | }, |
Andre Puschmann | 6e081aa | 2021-05-04 16:56:25 +0200 | [diff] [blame] | 101 | %endif |
Pau Espin Pedrol | f46ae22 | 2020-04-17 16:23:54 +0200 | [diff] [blame] | 102 | %endfor |
Andre Puschmann | a0e69aa | 2020-04-06 14:51:31 +0200 | [diff] [blame] | 103 | ], /* cell_list */ |
| 104 | |
Andre Puschmann | 6e081aa | 2021-05-04 16:56:25 +0200 | [diff] [blame] | 105 | % if int(enb.num_nr_cells) > 0: |
| 106 | |
| 107 | nr_cell_list: [ |
| 108 | |
| 109 | %for nr_cell in enb.nr_cell_list: |
| 110 | %if loop.index == 0: |
| 111 | { |
| 112 | rf_port: ${nr_cell.rf_port}, |
| 113 | cell_id: ${nr_cell.cell_id}, |
| 114 | band: ${nr_cell.band}, |
| 115 | dl_nr_arfcn: ${nr_cell.dl_nr_arfcn}, |
| 116 | }, |
| 117 | %endif |
| 118 | %endfor |
| 119 | |
| 120 | ], /* nr_cell_list */ |
| 121 | |
| 122 | % endif |
| 123 | |
Andre Puschmann | a0e69aa | 2020-04-06 14:51:31 +0200 | [diff] [blame] | 124 | /* default cell parameters */ |
| 125 | cell_default: { |
Pau Espin Pedrol | 786a6bc | 2020-03-30 13:51:21 +0200 | [diff] [blame] | 126 | /* Broadcasted PLMN identities */ |
| 127 | plmn_list: [ |
Andre Puschmann | 5c4c052 | 2020-07-09 15:55:04 +0200 | [diff] [blame] | 128 | "${'{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] | 129 | ], |
| 130 | |
Andre Puschmann | d0682ba | 2020-10-15 15:46:29 +0200 | [diff] [blame] | 131 | % if enb.get('duplex') == "tdd": |
| 132 | uldl_config: ${enb.tdd_uldl_config}, |
| 133 | sp_config: ${enb.tdd_special_subframe_pattern}, |
| 134 | % endif |
| 135 | |
Andre Puschmann | bf40f8c | 2020-04-14 14:04:32 +0200 | [diff] [blame] | 136 | % if int(enb.get('transmission_mode')) == 1: |
Pau Espin Pedrol | 786a6bc | 2020-03-30 13:51:21 +0200 | [diff] [blame] | 137 | n_antenna_dl: 1, /* number of DL antennas */ |
| 138 | n_antenna_ul: 1, /* number of UL antennas */ |
Andre Puschmann | bf40f8c | 2020-04-14 14:04:32 +0200 | [diff] [blame] | 139 | % else: |
| 140 | n_antenna_dl: 2, /* number of DL antennas */ |
| 141 | n_antenna_ul: 2, /* number of UL antennas */ |
| 142 | % endif |
| 143 | |
Pau Espin Pedrol | 786a6bc | 2020-03-30 13:51:21 +0200 | [diff] [blame] | 144 | n_rb_dl: ${enb.num_prb}, /* Bandwidth: 25: 5 MHz, 50: 10 MHz, 75: 15 MHz, 100: 20 MHz */ |
| 145 | cyclic_prefix: "normal", |
| 146 | |
| 147 | phich_duration: "normal", |
| 148 | phich_resource: "1", /* ratio of NG */ |
| 149 | |
| 150 | /* System Information Block type 1 */ |
| 151 | sib1: "amarisoft_sib1.asn", |
| 152 | |
| 153 | /* other SIBs, in same order as the scheduling list in SIB 1 */ |
| 154 | sib_sched_list: [ "amarisoft_sib23.asn" ], |
| 155 | |
Andre Puschmann | 6e081aa | 2021-05-04 16:56:25 +0200 | [diff] [blame] | 156 | % if int(enb.num_prb) == 6: |
Pau Espin Pedrol | 786a6bc | 2020-03-30 13:51:21 +0200 | [diff] [blame] | 157 | si_coderate: 0.30, /* maximum code rate for SI/RA/P-RNTI messages */ |
Andre Puschmann | 6e081aa | 2021-05-04 16:56:25 +0200 | [diff] [blame] | 158 | % else: |
| 159 | si_coderate: 0.20, /* maximum code rate for SI/RA/P-RNTI messages */ |
| 160 | % endif |
Pau Espin Pedrol | 786a6bc | 2020-03-30 13:51:21 +0200 | [diff] [blame] | 161 | si_pdcch_format: 2, /* 2 or 3. Log2 of the number of CCEs for PDCCH |
| 162 | for SI/RA/P-RNTI */ |
| 163 | |
| 164 | n_symb_cch: 0, /* number of symbols for CCH (0 = auto) */ |
| 165 | |
| 166 | /* PDSCH dedicated config (currently same for all UEs) */ |
| 167 | pdsch_dedicated: { |
| 168 | p_a: 0, |
| 169 | }, |
| 170 | |
| 171 | /* If defined, force for number of CCEs for UE specific PDCCH to |
| 172 | 2^pdcch_format. Otherwise it is computed from the reported |
| 173 | CQI. Range: 0 to 3. */ |
Andre Puschmann | 0694c30 | 2020-06-22 13:10:24 +0200 | [diff] [blame] | 174 | //pdcch_format: 1, |
Pau Espin Pedrol | 786a6bc | 2020-03-30 13:51:21 +0200 | [diff] [blame] | 175 | |
| 176 | /* if defined, force the PDSCH MCS for all UEs. Otherwise it is |
| 177 | computed from the reported CQI */ |
| 178 | /* pdsch_mcs: 12, */ |
| 179 | |
| 180 | /* PUSCH dedicated config (currently same for all UEs) */ |
| 181 | pusch_dedicated: { |
| 182 | beta_offset_ack_index: 9, |
| 183 | beta_offset_ri_index: 6, |
| 184 | beta_offset_cqi_index: 6, |
| 185 | }, |
| 186 | |
| 187 | /* MCS for Msg3 (=CCCH RRC Connection Request) */ |
| 188 | pusch_msg3_mcs: 0, |
| 189 | |
| 190 | /* this CQI value is assumed when none is received from the UE */ |
Andre Puschmann | 6e081aa | 2021-05-04 16:56:25 +0200 | [diff] [blame] | 191 | % if int(enb.num_prb) == 6: |
Pau Espin Pedrol | 786a6bc | 2020-03-30 13:51:21 +0200 | [diff] [blame] | 192 | initial_cqi: 5, |
Andre Puschmann | 6e081aa | 2021-05-04 16:56:25 +0200 | [diff] [blame] | 193 | % else: |
| 194 | initial_cqi: 3, |
| 195 | % endif |
Pau Espin Pedrol | 786a6bc | 2020-03-30 13:51:21 +0200 | [diff] [blame] | 196 | |
| 197 | /* if defined, force the PUSCH MCS for all UEs. Otherwise it is |
| 198 | computed from the last received SRS/PUSCH. */ |
| 199 | // pusch_mcs: 18, |
| 200 | |
| 201 | transmission_mode: ${enb.transmission_mode}, |
| 202 | |
Andre Puschmann | 6e081aa | 2021-05-04 16:56:25 +0200 | [diff] [blame] | 203 | dl_256qam: true, |
| 204 | ul_64qam: true, |
| 205 | |
Pau Espin Pedrol | 786a6bc | 2020-03-30 13:51:21 +0200 | [diff] [blame] | 206 | /* Scheduling request period (ms). Must be >= 40 for HD-FDD */ |
| 207 | sr_period: 20, |
| 208 | |
| 209 | /* CQI report config */ |
Andre Puschmann | 0694c30 | 2020-06-22 13:10:24 +0200 | [diff] [blame] | 210 | cqi_period: 40, /* period (ms). Must be >= 32 for HD-FDD */ |
Pau Espin Pedrol | 786a6bc | 2020-03-30 13:51:21 +0200 | [diff] [blame] | 211 | |
| 212 | /* RI reporting is done with a period of m_ri * cqi_period. |
| 213 | m_ri = 0 (default) disables RI reporting. */ |
Andre Puschmann | 487d1ef | 2020-05-28 15:22:18 +0200 | [diff] [blame] | 214 | % if int(enb.get('transmission_mode')) > 1: |
| 215 | m_ri: 8, |
| 216 | % endif |
Pau Espin Pedrol | 786a6bc | 2020-03-30 13:51:21 +0200 | [diff] [blame] | 217 | |
Andre Puschmann | a0e69aa | 2020-04-06 14:51:31 +0200 | [diff] [blame] | 218 | pucch_dedicated: { |
| 219 | /* ack/nack feedback mode when carrier aggregation is |
| 220 | enabled. It can be "cs" (for at most two scells) or "pucch3" |
| 221 | (used in all cases if more than two cells). */ |
| 222 | ack_nack_feedback_mode_ca: "cs", |
| 223 | |
| 224 | /* TDD ack/nack feedback mode when a rel 10 UE is detected. It |
| 225 | can be "bundling", "multiplexing", "cs" or "pucch3". By |
| 226 | default is it the same as tdd_ack_nack_feedback_mode. */ |
Andre Puschmann | d0682ba | 2020-10-15 15:46:29 +0200 | [diff] [blame] | 227 | % if enb.get('duplex') == "tdd": |
| 228 | tdd_ack_nack_feedback_mode: "bundling", |
Andre Puschmann | a0e69aa | 2020-04-06 14:51:31 +0200 | [diff] [blame] | 229 | // tdd_ack_nack_feedback_mode_r10: "cs", |
Andre Puschmann | d0682ba | 2020-10-15 15:46:29 +0200 | [diff] [blame] | 230 | % endif |
Andre Puschmann | a0e69aa | 2020-04-06 14:51:31 +0200 | [diff] [blame] | 231 | |
Andre Puschmann | 6e081aa | 2021-05-04 16:56:25 +0200 | [diff] [blame] | 232 | n1_pucch_sr_count: 11, /* increase if more UEs are needed */ |
| 233 | cqi_pucch_n_rb: 1, /* increase if more UEs are needed */ |
| 234 | |
Andre Puschmann | a0e69aa | 2020-04-06 14:51:31 +0200 | [diff] [blame] | 235 | /* number of PUCCH 1b CS resources. It determines |
| 236 | the maximum number of UEs that can be scheduled in one TTI |
| 237 | using carrier aggregation with PUCCH 1b CS ack/nack feedback. */ |
| 238 | n1_pucch_an_cs_count: 1, |
| 239 | |
| 240 | /* number of resource blocks for PUCCH 3. It determines |
| 241 | the maximum number of UEs that can be scheduled in one TTI |
| 242 | using carrier aggregation with PUCCH 3 ack/nack feedback. */ |
| 243 | n3_pucch_an_n_rb: 0, |
| 244 | }, |
| 245 | |
Pau Espin Pedrol | 786a6bc | 2020-03-30 13:51:21 +0200 | [diff] [blame] | 246 | /* SRS dedicated config. All UEs share these |
| 247 | parameters. srs_config_index and freq_domain_position are |
| 248 | allocated for each UE) */ |
| 249 | srs_dedicated: { |
Andre Puschmann | 0694c30 | 2020-06-22 13:10:24 +0200 | [diff] [blame] | 250 | srs_period: 160, /* period (ms). Must be >= 40 for HD-FDD */ |
Pau Espin Pedrol | 786a6bc | 2020-03-30 13:51:21 +0200 | [diff] [blame] | 251 | srs_bandwidth: 1, |
| 252 | srs_hopping_bandwidth: 0, |
| 253 | }, |
| 254 | |
| 255 | /* MAC configuration (same for all UEs) */ |
| 256 | mac_config: { |
| 257 | ul_max_harq_tx: 5, /* max number of HARQ transmissions for uplink */ |
| 258 | dl_max_harq_tx: 5, /* max number of HARQ transmissions for downlink */ |
Andre Puschmann | 51fa941 | 2020-09-29 23:10:53 +0200 | [diff] [blame] | 259 | ul_max_consecutive_retx: 1000, |
Pau Espin Pedrol | 786a6bc | 2020-03-30 13:51:21 +0200 | [diff] [blame] | 260 | }, |
| 261 | |
| 262 | /* CPU load limitation */ |
| 263 | pusch_max_its: 6, /* max number of turbo decoder iterations */ |
| 264 | |
| 265 | /* dynamic power control */ |
| 266 | dpc: true, |
| 267 | dpc_pusch_snr_target: 15, |
| 268 | dpc_pucch_snr_target: 10, |
| 269 | |
| 270 | /* RRC/UP ciphering algorithm preference. EEA0 is always the last. */ |
Nils Fürste | a818015 | 2020-12-03 14:14:31 +0100 | [diff] [blame] | 271 | 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 Pedrol | 786a6bc | 2020-03-30 13:51:21 +0200 | [diff] [blame] | 272 | /* RRC integrity algorithm preference. EIA0 is always the last. */ |
Nils Fürste | a818015 | 2020-12-03 14:14:31 +0100 | [diff] [blame] | 273 | integ_algo_pref: [${', '.join(list(dict.fromkeys(enb.integrity_list))).split("eia")[1]}], |
Pau Espin Pedrol | 786a6bc | 2020-03-30 13:51:21 +0200 | [diff] [blame] | 274 | |
| 275 | /* (in ms) send RRC connection release after this time of network |
| 276 | inactivity */ |
Andre Puschmann | 0cfc084 | 2020-08-26 18:19:15 +0200 | [diff] [blame] | 277 | inactivity_timer: ${enb.inactivity_timer}, |
Pau Espin Pedrol | 786a6bc | 2020-03-30 13:51:21 +0200 | [diff] [blame] | 278 | |
| 279 | /* SRB configuration */ |
| 280 | srb_config: [ |
| 281 | { |
| 282 | id: 1, |
| 283 | maxRetxThreshold: 32, |
| 284 | t_Reordering: 45, |
| 285 | t_PollRetransmit: 60, |
| 286 | }, |
| 287 | { |
| 288 | id: 2 , |
| 289 | maxRetxThreshold: 32, |
| 290 | t_Reordering: 45, |
| 291 | t_PollRetransmit: 60, |
| 292 | } |
| 293 | ], |
| 294 | |
| 295 | /* DRB configuration */ |
| 296 | drb_config: "amarisoft_drb.cfg", |
Andre Puschmann | a7f1983 | 2020-04-07 14:38:27 +0200 | [diff] [blame] | 297 | |
| 298 | % if enb.enable_measurements: |
| 299 | /* measurement configuration */ |
| 300 | meas_config_desc: { |
| 301 | a1_report_type: "${enb.a1_report_type}", |
| 302 | a1_${enb.a1_report_type}: ${enb.a1_report_value}, |
| 303 | a1_hysteresis: ${enb.a1_hysteresis}, |
| 304 | a1_time_to_trigger: ${enb.a1_time_to_trigger}, |
| 305 | a2_report_type: "${enb.a2_report_type}", |
| 306 | a2_${enb.a2_report_type}: ${enb.a2_report_value}, |
| 307 | a2_hysteresis: ${enb.a2_hysteresis}, |
| 308 | a2_time_to_trigger: ${enb.a2_time_to_trigger}, |
| 309 | a3_report_type: "${enb.a3_report_type}", |
| 310 | a3_offset: ${enb.a3_report_value}, |
| 311 | a3_hysteresis: ${enb.a3_hysteresis}, |
| 312 | a3_time_to_trigger: ${enb.a3_time_to_trigger}, |
Andre Puschmann | 6e081aa | 2021-05-04 16:56:25 +0200 | [diff] [blame] | 313 | % if int(enb.num_nr_cells) > 0: |
| 314 | // NR events hard-coded |
| 315 | nr_b1_report_type: "rsrp", |
| 316 | nr_b1_rsrp: -100, |
| 317 | nr_b1_hysteresis: 0, |
| 318 | nr_b1_time_to_trigger: 100, |
| 319 | nr_rsrp_filter_coeff: 3 |
| 320 | % endif |
Andre Puschmann | a7f1983 | 2020-04-07 14:38:27 +0200 | [diff] [blame] | 321 | }, |
| 322 | |
| 323 | /* measurement gap configuration */ |
| 324 | meas_gap_config: "gp0", |
| 325 | |
| 326 | /* if true, initiate a handover when a suitable measurement report |
| 327 | is received */ |
| 328 | ho_from_meas: true, |
| 329 | % endif |
Pau Espin Pedrol | 786a6bc | 2020-03-30 13:51:21 +0200 | [diff] [blame] | 330 | }, |
Andre Puschmann | 6e081aa | 2021-05-04 16:56:25 +0200 | [diff] [blame] | 331 | |
| 332 | % if int(enb.num_nr_cells) > 0: |
| 333 | nr_cell_default: { |
| 334 | subcarrier_spacing: 15, /* kHz */ |
| 335 | ssb_subcarrier_spacing: 30, |
| 336 | bandwidth: ${enb.nr_bandwidth}, /* MHz */ |
| 337 | n_antenna_dl: 1, |
| 338 | n_antenna_ul: 1, |
| 339 | |
| 340 | /* force the timing TA offset (optional) */ |
| 341 | n_timing_advance_offset: 0, |
| 342 | |
| 343 | tdd_ul_dl_config: { |
| 344 | pattern1: { |
| 345 | period: 10, |
| 346 | dl_slots: 6, |
| 347 | dl_symbols: 0, |
| 348 | ul_slots: 3, |
| 349 | ul_symbols: 0, |
| 350 | }, |
| 351 | }, |
| 352 | ssb_pos_bitmap: "10000000", |
| 353 | ssb_period: 20, /* in ms */ |
| 354 | n_id_cell: 500, |
| 355 | |
| 356 | root_sequence_index: 1, /* PRACH root sequence index */ |
| 357 | |
| 358 | /* Scheduling request period (slots). */ |
| 359 | sr_period: 40, |
| 360 | |
| 361 | dmrs_type_a_pos: 2, |
| 362 | |
| 363 | /* to limit the number of HARQ feedback in UL, use pdsch_harq_ack_max; |
| 364 | allows to workaround issues with SM-G977N for example */ |
| 365 | //pdsch_harq_ack_max: 2, |
| 366 | |
| 367 | prach: { |
| 368 | prach_config_index: 0, |
| 369 | msg1_subcarrier_spacing: 15, /* kHz */ |
| 370 | msg1_fdm: 1, |
| 371 | % if int(enb.nr_bandwidth) == 10: |
| 372 | msg1_frequency_start: 1, |
| 373 | % else: |
| 374 | msg1_frequency_start: 3, |
| 375 | % endif |
| 376 | zero_correlation_zone_config: 0, |
| 377 | preamble_received_target_power: -110, /* in dBm */ |
| 378 | preamble_trans_max: 7, |
| 379 | power_ramping_step: 4, /* in dB */ |
| 380 | ra_response_window: 10, /* in slots */ |
| 381 | restricted_set_config: "unrestricted_set", |
| 382 | ra_contention_resolution_timer: 64, /* in ms */ |
| 383 | ssb_per_prach_occasion: 1, |
| 384 | cb_preambles_per_ssb: 8, |
| 385 | }, |
| 386 | |
| 387 | pdcch: { |
| 388 | common_coreset: { |
| 389 | rb_start: -1, /* -1 to have the maximum bandwidth */ |
| 390 | l_crb: -1, /* -1 means all the bandwidth */ |
| 391 | duration: 1, |
| 392 | precoder_granularity: "sameAsREG_bundle", |
| 393 | //dmrs_scid: 0, |
| 394 | }, |
| 395 | |
| 396 | dedicated_coreset: { |
| 397 | rb_start: -1, /* -1 to have the maximum bandwidth */ |
| 398 | l_crb: -1, /* -1 means all the bandwidth */ |
| 399 | duration: 1, |
| 400 | precoder_granularity: "sameAsREG_bundle", |
| 401 | //dmrs_scid: 0, |
| 402 | }, |
| 403 | |
| 404 | css: { |
| 405 | n_candidates: [ 1, 1, 1, 0, 0 ], |
| 406 | }, |
| 407 | rar_al_index: 2, |
| 408 | |
| 409 | uss: { |
| 410 | n_candidates: [ 0, 2, 1, 0, 0 ], |
| 411 | dci_0_1_and_1_1: false, |
| 412 | force_dci_0_0: true, // Forces DCI format 0_0 for Uplink |
| 413 | force_dci_1_0: true, // Forces DCI format 1_0 for Downlink |
| 414 | }, |
| 415 | al_index: 1, |
| 416 | }, |
| 417 | |
| 418 | pdsch: { |
| 419 | mapping_type: "typeA", |
| 420 | start_symb: 1, |
| 421 | n_symb: 13, |
| 422 | dmrs_add_pos: 1, |
| 423 | dmrs_type: 1, |
| 424 | dmrs_max_len: 1, |
| 425 | k0: 0, /* delay in slots from DCI to PDSCH */ |
| 426 | /* delay in slots from PDSCH to PUCCH/PUSCH ACK/NACK */ |
| 427 | k1: [ 8, 7, 6, 6, 5, 4], |
| 428 | mcs_table: "qam64", |
| 429 | |
| 430 | rar_mcs: 2, |
| 431 | /* If defined, force the PDSCH MCS for all UEs. Otherwise it is computed |
| 432 | * based on DL channel quality estimation */ |
| 433 | /* mcs: 24, */ |
| 434 | }, |
| 435 | |
| 436 | csi_rs: { |
| 437 | nzp_csi_rs_resource: [ |
| 438 | { |
| 439 | csi_rs_id: 0, |
| 440 | n_ports: 1, |
| 441 | frequency_domain_allocation: "row2", |
| 442 | bitmap: "100000000000", |
| 443 | cdm_type: "no_cdm", |
| 444 | density: 1, |
| 445 | first_symb: 4, |
| 446 | rb_start: 0, |
| 447 | l_crb: -1, /* -1 means from rb_start to the end of the bandwidth */ |
| 448 | power_control_offset: 0, /* dB */ |
| 449 | power_control_offset_ss: 0, /* dB */ |
| 450 | scrambling_id: 0, |
| 451 | period: 80, |
| 452 | offset: 1, /* != 0 to avoid collision with SSB */ |
| 453 | qcl_info_periodic_csi_rs: 0, |
| 454 | }, |
| 455 | #define USE_TRS |
| 456 | #ifdef USE_TRS |
| 457 | /* TRS : period of 40 ms, slots 1 & 2, symbols 4 and 8 */ |
| 458 | { |
| 459 | csi_rs_id: 1, |
| 460 | n_ports: 1, |
| 461 | frequency_domain_allocation: "row1", |
| 462 | bitmap: "0001", |
| 463 | cdm_type: "no_cdm", |
| 464 | density: 3, |
| 465 | first_symb: 4, |
| 466 | rb_start: 0, |
| 467 | l_crb: -1, /* -1 means from rb_start to the end of the bandwidth */ |
| 468 | power_control_offset: 0, /* dB */ |
| 469 | power_control_offset_ss: 0, /* dB */ |
| 470 | scrambling_id: 0, |
| 471 | period: 40, |
| 472 | offset: 11, |
| 473 | qcl_info_periodic_csi_rs: 0, |
| 474 | }, |
| 475 | { |
| 476 | csi_rs_id: 2, |
| 477 | n_ports: 1, |
| 478 | frequency_domain_allocation: "row1", |
| 479 | bitmap: "0001", |
| 480 | cdm_type: "no_cdm", |
| 481 | density: 3, |
| 482 | first_symb: 8, |
| 483 | rb_start: 0, |
| 484 | l_crb: -1, /* -1 means from rb_start to the end of the bandwidth */ |
| 485 | power_control_offset: 0, /* dB */ |
| 486 | power_control_offset_ss: 0, /* dB */ |
| 487 | scrambling_id: 0, |
| 488 | period: 40, |
| 489 | offset: 11, |
| 490 | qcl_info_periodic_csi_rs: 0, |
| 491 | }, |
| 492 | { |
| 493 | csi_rs_id: 3, |
| 494 | n_ports: 1, |
| 495 | frequency_domain_allocation: "row1", |
| 496 | bitmap: "0001", |
| 497 | cdm_type: "no_cdm", |
| 498 | density: 3, |
| 499 | first_symb: 4, |
| 500 | rb_start: 0, |
| 501 | l_crb: -1, /* -1 means from rb_start to the end of the bandwidth */ |
| 502 | power_control_offset: 0, /* dB */ |
| 503 | power_control_offset_ss: 0, /* dB */ |
| 504 | scrambling_id: 0, |
| 505 | period: 40, |
| 506 | offset: 12, |
| 507 | qcl_info_periodic_csi_rs: 0, |
| 508 | }, |
| 509 | { |
| 510 | csi_rs_id: 4, |
| 511 | n_ports: 1, |
| 512 | frequency_domain_allocation: "row1", |
| 513 | bitmap: "0001", |
| 514 | cdm_type: "no_cdm", |
| 515 | density: 3, |
| 516 | first_symb: 8, |
| 517 | rb_start: 0, |
| 518 | l_crb: -1, /* -1 means from rb_start to the end of the bandwidth */ |
| 519 | power_control_offset: 0, /* dB */ |
| 520 | power_control_offset_ss: 0, /* dB */ |
| 521 | scrambling_id: 0, |
| 522 | period: 40, |
| 523 | offset: 12, |
| 524 | qcl_info_periodic_csi_rs: 0, |
| 525 | }, |
| 526 | #endif |
| 527 | ], |
| 528 | nzp_csi_rs_resource_set: [ |
| 529 | { |
| 530 | csi_rs_set_id: 0, |
| 531 | nzp_csi_rs_resources: [ 0 ], |
| 532 | repetition: false, |
| 533 | }, |
| 534 | #ifdef USE_TRS |
| 535 | { |
| 536 | csi_rs_set_id: 1, |
| 537 | nzp_csi_rs_resources: [ 1, 2, 3, 4 ], |
| 538 | repetition: false, |
| 539 | trs_info: true, |
| 540 | }, |
| 541 | #endif |
| 542 | ], |
| 543 | |
| 544 | csi_im_resource: [ |
| 545 | { |
| 546 | csi_im_id: 0, |
| 547 | pattern: 1, |
| 548 | subcarrier_location: 8, |
| 549 | symbol_location: 8, |
| 550 | rb_start: 0, |
| 551 | l_crb: -1, /* -1 means from rb_start to the end of the bandwidth */ |
| 552 | period: 80, |
| 553 | offset: 1, /* != 0 to avoid collision with SSB */ |
| 554 | }, |
| 555 | ], |
| 556 | csi_im_resource_set: [ |
| 557 | { |
| 558 | csi_im_set_id: 0, |
| 559 | csi_im_resources: [ 0 ], |
| 560 | } |
| 561 | ], |
| 562 | /* ZP CSI-RS to set the CSI-IM REs to zero */ |
| 563 | zp_csi_rs_resource: [ |
| 564 | { |
| 565 | csi_rs_id: 0, |
| 566 | frequency_domain_allocation: "row4", |
| 567 | bitmap: "100", |
| 568 | n_ports: 4, |
| 569 | cdm_type: "fd_cdm2", |
| 570 | first_symb: 8, |
| 571 | density: 1, |
| 572 | rb_start: 0, |
| 573 | l_crb: -1, /* -1 means from rb_start to the end of the bandwidth */ |
| 574 | period: 80, |
| 575 | offset: 1, |
| 576 | }, |
| 577 | ], |
| 578 | p_zp_csi_rs_resource_set: [ |
| 579 | { |
| 580 | zp_csi_rs_resources: [ 0 ], |
| 581 | }, |
| 582 | ], |
| 583 | |
| 584 | csi_resource_config: [ |
| 585 | { |
| 586 | csi_rsc_config_id: 0, |
| 587 | nzp_csi_rs_resource_set_list: [ 0 ], |
| 588 | resource_type: "periodic", |
| 589 | }, |
| 590 | { |
| 591 | csi_rsc_config_id: 1, |
| 592 | csi_im_resource_set_list: [ 0 ], |
| 593 | resource_type: "periodic", |
| 594 | }, |
| 595 | #ifdef USE_TRS |
| 596 | { |
| 597 | csi_rsc_config_id: 2, |
| 598 | nzp_csi_rs_resource_set_list: [ 1 ], |
| 599 | resource_type: "periodic", |
| 600 | }, |
| 601 | #endif |
| 602 | ], |
| 603 | csi_report_config: [ |
| 604 | { |
| 605 | resources_for_channel_measurement: 0, |
| 606 | csi_im_resources_for_interference: 1, |
| 607 | report_config_type: "periodic", |
| 608 | period: 80, |
| 609 | report_quantity: "CRI_RI_PMI_CQI", |
| 610 | cqi_table: 2, |
| 611 | subband_size: "value1", |
| 612 | }, |
| 613 | ], |
| 614 | }, |
| 615 | |
| 616 | pucch: { |
| 617 | pucch_group_hopping: "neither", |
| 618 | hopping_id: -1, /* -1 = n_cell_id */ |
| 619 | p0_nominal: -90, |
| 620 | pucch1: { |
| 621 | n_cs: 3, |
| 622 | n_occ: 3, |
| 623 | freq_hopping: false, |
| 624 | }, |
| 625 | pucch2: { |
| 626 | n_symb: 2, |
| 627 | n_prb: 1, |
| 628 | freq_hopping: false, |
| 629 | simultaneous_harq_ack_csi: false, |
| 630 | max_code_rate: 0.25, |
| 631 | }, |
| 632 | }, |
| 633 | |
| 634 | pusch: { |
| 635 | mapping_type: "typeA", |
| 636 | n_symb: 14, |
| 637 | dmrs_add_pos: 1, |
| 638 | dmrs_type: 1, |
| 639 | dmrs_max_len: 1, |
| 640 | tf_precoding: false, |
| 641 | mcs_table: "qam64", /* without transform precoding */ |
| 642 | mcs_table_tp: "qam64", /* with transform precoding */ |
| 643 | ldpc_max_its: 5, |
| 644 | k2: 4, /* delay in slots from DCI to PUSCH */ |
| 645 | p0_nominal_with_grant: -90, |
| 646 | msg3_k2: 5, |
| 647 | msg3_mcs: 4, |
| 648 | msg3_delta_power: 0, /* in dB */ |
| 649 | beta_offset_ack_index: 9, |
| 650 | |
| 651 | /* hardcoded scheduling parameters */ |
| 652 | n_dmrs_cdm_groups: 1, |
| 653 | n_layer: 1, |
| 654 | /* if defined, force the PUSCH MCS for all UEs. Otherwise it is |
| 655 | computed from the last received PUSCH. */ |
| 656 | //mcs: 16, |
| 657 | //max_mcs: 16, |
| 658 | }, |
| 659 | |
| 660 | /* MAC configuration */ |
| 661 | mac_config: { |
| 662 | msg3_max_harq_tx: 5, |
| 663 | ul_max_harq_tx: 5, /* max number of HARQ transmissions for uplink */ |
| 664 | dl_max_harq_tx: 5, /* max number of HARQ transmissions for downlink */ |
| 665 | ul_max_consecutive_retx: 30, /* disconnect UE if reached */ |
| 666 | dl_max_consecutive_retx: 30, /* disconnect UE if reached */ |
| 667 | periodic_bsr_timer: 20, |
| 668 | retx_bsr_timer: 320, |
| 669 | periodic_phr_timer: 500, |
| 670 | prohibit_phr_timer: 200, |
| 671 | phr_tx_power_factor_change: "dB3", |
| 672 | sr_prohibit_timer: 0, /* in ms, 0 to disable the timer */ |
| 673 | sr_trans_max: 64, |
| 674 | }, |
| 675 | |
| 676 | cipher_algo_pref: [${', '.join(list(dict.fromkeys(enb.cipher_list))).split("eea")[1] if len(list(dict.fromkeys(enb.cipher_list))) > 0 else ''}], |
| 677 | integ_algo_pref: [${', '.join(list(dict.fromkeys(enb.integrity_list))).split("eia")[1]}], |
| 678 | |
| 679 | inactivity_timer: ${enb.inactivity_timer}, |
| 680 | |
| 681 | drb_config: "amarisoft_drb_nr.cfg", |
| 682 | }, |
| 683 | % endif |
| 684 | } |