| /* lteenb configuration file version 2018-10-18 |
| * Copyright (C) 2015-2018 Amarisoft |
| */ |
| { |
| |
| %if enb.license_server_addr != '0.0.0.0': |
| license_server: { |
| server_addr: "${enb.license_server_addr}", |
| name: "amarisoft", |
| }, |
| %endif |
| |
| % if enb.rf_dev_type == 'zmq': |
| /* Force sampling rate (if uncommented) */ |
| sample_rate: ${enb.sample_rate}, |
| %endif |
| |
| /* 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. |
| */ |
| log_options: "${enb.log_options}", |
| log_filename: "${enb.log_filename}", |
| |
| % if enb.enable_pcap == 'true': |
| pcap: {filename:"${enb.pcap_filename}"}, |
| %endif |
| |
| /* Enable remote API and Web interface */ |
| com_addr: "${enb.addr}:9001", |
| |
| /* RF driver configuration */ |
| include "amarisoft_rf_driver.cfg", |
| |
| % if enb.enable_dl_awgn: |
| channel_dl: { |
| type: "awgn", |
| snr: ${enb.dl_awgn_snr} |
| }, |
| % endif |
| |
| mme_list: [ |
| { |
| s1ap_bind_addr: "${enb.addr}", |
| /* 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. */ |
| gtp_addr: "${enb.gtp_bind_addr}", |
| |
| /* high 20 bits of SIB1.cellIdentifier */ |
| enb_id: ${enb.id}, |
| |
| /* list of cells */ |
| cell_list: [ |
| |
| %for cell in enb.cell_list: |
| { |
| dl_earfcn: ${cell.dl_earfcn}, |
| rf_port: ${cell.rf_port}, |
| cell_id: ${cell.cell_id}, |
| n_id_cell: ${cell.pci}, |
| tac: 0x0007, |
| root_sequence_index: ${loop.index * 10 + 204}, /* PRACH root sequence index */ |
| |
| ncell_list: [ |
| %for ncell in cell.ncell_list: |
| { n_id_cell: ${ncell.pci}, dl_earfcn: ${ncell.dl_earfcn}, cell_id: ${ncell.cell_id}, tac: 7 }, |
| %endfor |
| ], |
| |
| scell_list: [ |
| %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 |
| ], |
| }, |
| %endfor |
| ], /* cell_list */ |
| |
| /* default cell parameters */ |
| cell_default: { |
| /* Broadcasted PLMN identities */ |
| plmn_list: [ |
| "${'{0:03}'.format(int(enb.mcc))}${'{0:02}'.format(int(enb.mnc))}", |
| ], |
| |
| % if enb.get('duplex') == "tdd": |
| uldl_config: ${enb.tdd_uldl_config}, |
| sp_config: ${enb.tdd_special_subframe_pattern}, |
| % endif |
| |
| % if int(enb.get('transmission_mode')) == 1: |
| n_antenna_dl: 1, /* number of DL antennas */ |
| n_antenna_ul: 1, /* number of UL antennas */ |
| % else: |
| n_antenna_dl: 2, /* number of DL antennas */ |
| n_antenna_ul: 2, /* number of UL antennas */ |
| % endif |
| |
| 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. */ |
| //pdcch_format: 1, |
| |
| /* 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 */ |
| cqi_period: 40, /* period (ms). Must be >= 32 for HD-FDD */ |
| |
| /* RI reporting is done with a period of m_ri * cqi_period. |
| m_ri = 0 (default) disables RI reporting. */ |
| % if int(enb.get('transmission_mode')) > 1: |
| m_ri: 8, |
| % endif |
| |
| 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. */ |
| % if enb.get('duplex') == "tdd": |
| tdd_ack_nack_feedback_mode: "bundling", |
| // tdd_ack_nack_feedback_mode_r10: "cs", |
| % endif |
| |
| /* 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, |
| }, |
| |
| /* SRS dedicated config. All UEs share these |
| parameters. srs_config_index and freq_domain_position are |
| allocated for each UE) */ |
| srs_dedicated: { |
| srs_period: 160, /* period (ms). Must be >= 40 for HD-FDD */ |
| 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 */ |
| ul_max_consecutive_retx: 1000, |
| }, |
| |
| /* 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 */ |
| inactivity_timer: ${enb.inactivity_timer}, |
| |
| /* 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", |
| |
| % 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 |
| }, |
| } |