/* lteenb configuration file version 2023-06-07 * Copyright (C) 2019-2023 Amarisoft * LTE cell MIMO 2x2 + 2CC NR cell */ #define TDD 0 // Values: 0 (LTE FDD), 1(LTE TDD) #define NR_TDD 1 // Values: 0 (NR FDD), 1(NR TDD) #define NR_TDD_CONFIG 2 // Values: 1, 2, 3 or 4 (compatible with LTE TDD config 2) #define N_RB_DL 100 // Values: 6 (1.4MHz), 25 (5MHz), 50 (10MHz), 75 (15MHz), 100 (20MHz) #define N_ANTENNA_DL 2 // Values: 1 (SISO), 2 (MIMO 2x2), 4 (MIMO 4x4) #define N_ANTENNA_UL 1 // Values: 1 (SISO), 2 (diversity 2RX), 4 (diversity 4RX) #if NR_TDD == 1 #define NR_BANDWIDTH 100 // NR cell bandwidth #else #define NR_BANDWIDTH 60 // NR cell bandwidth #endif #define NR_LONG_PUCCH_FORMAT 2 // Values: 2, 3, 4 { log_options: "all.level=debug,all.max_size=1", //log_options: "all.level=error,all.max_size=0,nas.level=debug,nas.max_size=1,s1ap.level=debug,s1ap.max_size=1,x2ap.level=debug,x2ap.max_size=1,rrc.level=debug,rrc.max_size=1", log_filename: "/tmp/gnb0.log", /* Enable remote API and Web interface */ com_addr: "[::]:9001", rf_driver: { name: "sdr", /* list of devices. 'dev0' is always the master. */ /* TDD: force the RX antenna on the RX connector */ args: "dev0=/dev/sdr0,dev1=/dev/sdr1,dev2=/dev/sdr2,dev3=/dev/sdr3,dev4=/dev/sdr4,dev5=/dev/sdr5", rx_antenna: "rx", /* synchronisation source: none, internal, gps, external (default = none) */ // sync: "gps", }, tx_gain: 70.0, /* TX gain (in dB) */ rx_gain: 20.0, /* RX gain (in dB) */ mme_list: [ { /* address of MME for S1AP connection. Must be modified if the MME runs on a different host. */ mme_addr: "127.0.1.100", }, ], /* 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: "127.0.1.1", /* high 24 bits of SIB1.cellIdentifier */ enb_id: 0x1A2D0, en_dc_support: true, /* list of cells */ cell_list: [ { rf_port: 0, /* Broadcasted PLMN identities */ plmn_list: [ "00101", ], dl_earfcn: 300, /* DL center frequency: 2140 MHz (Band 1) */ n_id_cell: 1, cell_id: 0x01, tac: 0x0001, root_sequence_index: 120, /* PRACH root sequence index */ scell_list: [ { cell_id: 0x02, cross_carrier_scheduling: false, }, { cell_id: 0x03, cross_carrier_scheduling: false, }, { cell_id: 0x04, cross_carrier_scheduling: false, }, { cell_id: 0x05, cross_carrier_scheduling: false, }, { cell_id: 0x06, cross_carrier_scheduling: false, }, ], }, { rf_port: 1, /* Broadcasted PLMN identities */ plmn_list: [ "00101", ], dl_earfcn: 1476, n_id_cell: 2, cell_id: 0x02, tac: 0x0001, root_sequence_index: 28, /* PRACH root sequence index */ scell_list: [ { cell_id: 0x01, cross_carrier_scheduling: false, }, { cell_id: 0x03, cross_carrier_scheduling: false, }, { cell_id: 0x04, cross_carrier_scheduling: false, }, { cell_id: 0x05, cross_carrier_scheduling: false, }, { cell_id: 0x06, cross_carrier_scheduling: false, }, ], }, { rf_port: 2, /* Broadcasted PLMN identities */ plmn_list: [ "00101", ], dl_earfcn: 1674, n_id_cell: 3, cell_id: 0x03, tac: 0x0001, root_sequence_index: 202, /* PRACH root sequence index */ scell_list: [ { cell_id: 0x01, cross_carrier_scheduling: false, }, { cell_id: 0x02, cross_carrier_scheduling: false, }, { cell_id: 0x04, cross_carrier_scheduling: false, }, { cell_id: 0x05, cross_carrier_scheduling: false, }, { cell_id: 0x06, cross_carrier_scheduling: false, }, ], }, { rf_port: 3, /* Broadcasted PLMN identities */ plmn_list: [ "00101", ], dl_earfcn: 3001, n_id_cell: 4, cell_id: 0x04, tac: 0x0001, root_sequence_index: 156, /* PRACH root sequence index */ scell_list: [ { cell_id: 0x01, cross_carrier_scheduling: false, }, { cell_id: 0x02, cross_carrier_scheduling: false, }, { cell_id: 0x03, cross_carrier_scheduling: false, }, { cell_id: 0x05, cross_carrier_scheduling: false, }, { cell_id: 0x06, cross_carrier_scheduling: false, }, ], }, { rf_port: 4, /* Broadcasted PLMN identities */ plmn_list: [ "00101", ], dl_earfcn: 3199, n_id_cell: 5, cell_id: 0x05, tac: 0x0001, root_sequence_index: 86, /* PRACH root sequence index */ scell_list: [ { cell_id: 0x01, cross_carrier_scheduling: false, }, { cell_id: 0x02, cross_carrier_scheduling: false, }, { cell_id: 0x03, cross_carrier_scheduling: false, }, { cell_id: 0x04, cross_carrier_scheduling: false, }, { cell_id: 0x06, cross_carrier_scheduling: false, }, ], }, { rf_port: 5, /* Broadcasted PLMN identities */ plmn_list: [ "00101", ], dl_earfcn: 9435, n_id_cell: 6, cell_id: 0x06, tac: 0x0001, root_sequence_index: 134, /* PRACH root sequence index */ scell_list: [ { cell_id: 0x01, cross_carrier_scheduling: false, }, { cell_id: 0x02, cross_carrier_scheduling: false, }, { cell_id: 0x03, cross_carrier_scheduling: false, }, { cell_id: 0x04, cross_carrier_scheduling: false, }, { cell_id: 0x05, cross_carrier_scheduling: false, }, ], }, ], /* cell_list */ /* default cell parameters */ cell_default: { n_antenna_dl: N_ANTENNA_DL, /* number of DL antennas */ n_antenna_ul: 1, /* number of UL antennas */ #if TDD == 1 uldl_config: 2, /* TDD only */ sp_config: 7, /* TDD only */ #endif n_rb_dl: N_RB_DL, /* 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 */ /* SIB1 */ si_value_tag: 0, /* increment modulo 32 if SI is modified */ cell_barred: false, /* SIB1.cellBarred-r13 */ intra_freq_reselection: true, /* SIB1.intraFreqReselection */ q_rx_lev_min: -70, /* SIB1.q-RxLevMin */ p_max: 10, /* maximum power allowed for the UE (dBm) */ si_window_length: 40, /* ms */ sib_sched_list: [ { filename: "sib2_3.asn", si_periodicity: 16, /* frames */ }, ], #if N_RB_DL == 6 si_coderate: 0.30, /* maximum code rate for SI/RA/P-RNTI messages */ #else si_coderate: 0.20, /* maximum code rate for SI/RA/P-RNTI messages */ #endif 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: { #if N_ANTENNA_DL >= 4 p_a: -6, #elif N_ANTENNA_DL == 2 p_a: -3, #else p_a: 0, #endif p_b: -1, /* -1 means automatic */ }, /* 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: 2, */ /* if defined, force the PDSCH MCS for all UEs. Otherwise it is computed from the reported CQI */ /* pdsch_mcs: 12, */ #if N_RB_DL == 6 prach_config_index: 15, /* subframe 9 every 20 ms */ #else prach_config_index: 4, /* subframe 4 every 10 ms */ #endif prach_freq_offset: -1, /* -1 means automatic */ /* PUCCH dedicated config (currently same for all UEs) */ pucch_dedicated: { n1_pucch_sr_count: 11, /* increase if more UEs are needed */ cqi_pucch_n_rb: 1, /* increase if more UEs are needed */ #if TDD == 1 tdd_ack_nack_feedback_mode_r10: "cs", //tdd_ack_nack_feedback_mode: "bundling", /* TDD only */ tdd_ack_nack_feedback_mode: "multiplexing", /* TDD only */ #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: 3, ack_nack_feedback_mode_ca: "pucch3", /* 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: 3, }, /* 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, }, pusch_hopping_offset: -1, /* -1 means automatic */ /* MCS for Msg3 (=CCCH RRC Connection Request) */ pusch_msg3_mcs: 0, /* this CQI value is assumed when none is received from the UE */ #if N_RB_DL == 6 initial_cqi: 5, #else initial_cqi: 3, #endif /* if defined, force the PUSCH MCS for all UEs. Otherwise it is computed from the last received SRS/PUSCH. */ // pusch_mcs: 18, dl_256qam: true, ul_64qam: true, /* Scheduling request period (ms). Must be >= 40 for HD-FDD */ sr_period: 20, /* CQI report config */ cqi_period: 0, /* period (ms). Must be >= 32 for HD-FDD */ ap_cqi_period: 40, ap_cqi_rm: "rm30", ap_cqi_trigger_list: [ [0,1,2,3,4,5], [1,3,5], [0,2,4], [0,1,2,3], [2,3,4,5], [0,5], ], #if N_ANTENNA_DL >= 2 /* RI reporting is done with a period of m_ri * cqi_period. m_ri = 0 (default) disables RI reporting. */ m_ri: 0, //m_ri: 8, /* transmission mode */ transmission_mode: 3, #endif /* SRS dedicated config. All UEs share these parameters. srs_config_index and freq_domain_position are allocated for each UE) */ srs_dedicated: { #if N_RB_DL == 6 srs_bandwidth_config: 7, srs_bandwidth: 1, #elif N_RB_DL == 15 srs_bandwidth_config: 6, srs_bandwidth: 1, #elif N_RB_DL == 25 srs_bandwidth_config: 3, srs_bandwidth: 1, #elif N_RB_DL == 50 srs_bandwidth_config: 2, srs_bandwidth: 2, #elif N_RB_DL == 75 srs_bandwidth_config: 2, srs_bandwidth: 2, #else srs_bandwidth_config: 2, srs_bandwidth: 3, #endif srs_subframe_config: 3, /* 0 - 15 */ srs_period: 40, /* period (ms). Must be >= 40 for HD-FDD */ 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 */ }, /* CPU load limitation */ //pusch_max_its: 6, /* max number of turbo decoder iterations */ /* dynamic power control */ dpc: true, dpc_pusch_snr_target: 25, dpc_pucch_snr_target: 20, /* 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: 10000, /* 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: "drb.cfg", }, }