Driver for Amarisoft eNB

Hello,

Is anyone here using Amarisoft eNB (LTE 100) with the LimeSDR?

I tried using this RF driver https://github.com/myriadrf/trx-lms7002m but the LTE eNB is saying the TRX API should be 12 and this driver is 11. I tried simply changing it in the .h but it didn’t like it.

If anyone has it working with a fairly recent version of Amarisoft (oldest I have is 06-2017 and it still expects API 12) can you let know where you got the driver?

Thanks

1 Like

Hello,
I think we are still using older eNB that expects TRX API version 11 in our test setups. I will try to get more recent eNB and update trx-lms7002m to use API 12.

1 Like

Thanks!

Is there some documentation on the TRX API somewhere? Maybe I could help bring it up to date.

BTW, How about some development level of price, for Lime users :wink:

Hi,
I have updated the header (trx_driver.h). I haven’t done a lot of testing but eNB (2017-10-13) starts now.

2 Likes

Thank you!

It does start but having problems with my configuration for Cat M1:

[INFO] Estimated reference clock 30.7198 MHz
[INFO] Selected reference clock 30.720 MHz
[INFO] LMS7002M cache /home/gabriel/.limesuite/LMS7002M_cache_values.db
DAC WRITE
Config file: config/rf_driver/sodera_siso_800MHz.ini
CGEN: Freq=170 MHz, VCO=2.38 GHz, INT=76, FRAC=496980, DIV_OUTCH_CGEN=5
M=196, N=4, Fvco=1041.250 MHz
M=196, N=4, Fvco=1041.250 MHz
M=196, N=4, Fvco=1041.250 MHz
M=196, N=4, Fvco=1041.250 MHz
Force calibration
sample rate must be at least 9000000 Hz
libusb: warning [libusb_exit] application left some devices open

Would you have any suggestions? I tried adding a sample_rate parameter but it didn’t help.
Here’s the configuration file I’m using with the USRP TRX.

Thanks again.

/* lteenb configuration file example for Category M1 UEs
 * version 2017-10-10
 * Copyright (C) 2016-2017 Amarisoft
 */
{
  /* 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: "all.level=debug,all.max_size=32",
  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/enb0.log",

  /* Enable remote API and Web interface */
  //com_addr: "0.0.0.0:9001",

/* Bandwidth: 25: 5 MHz, 50: 10 MHz, 75: 15 MHz, 100: 20 MHz */
#define N_RB_DL 50
/* number of downlink antennas: 1 = SISO, 2 = MIMO 2x2 */
#define N_ANTENNA_DL 2

  /* RF driver configuration */
  include "rf_driver/1chan.cfg",

  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 20 bits of SIB1.cellIdentifier */
  enb_id: 0x1A2D0,

  /* list of cells */
  cell_list: [
  {
    /* Broadcasted PLMN identities */
    plmn_list: [
      "00101", 
    ],

    //dl_earfcn: 300,   /* DL center frequency: 2132 MHz (Band 1) */
    //dl_earfcn: 900,   /* DL center frequency: 1960 MHz (Band 2) */
    //dl_earfcn: 1575,  /* DL center frequency: 1842.5 MHz (Band 3) */
    //dl_earfcn: 2150,  /* DL center frequency: 2130 MHz (Band 4) */
    //dl_earfcn: 2525,  /* DL center frequency: 881.5 MHz (Band 5) */
    dl_earfcn: 3350,  /* DL center frequency: 2680 MHz (Band 7) */
    //dl_earfcn: 6300,  /* 806 MHz (Band 20) */
    //dl_earfcn: 38050, /* 2600 MHz (band 38) */
    //dl_earfcn: 40620, /* 2593 MHz (band 41) */
    //dl_earfcn: 42590, /* 3500 MHz (band 42) */

    n_id_cell: 1,
    cell_id: 0x01,
    tac: 0x0001,
    root_sequence_index: 204, /* PRACH root sequence index */
  },
  ], /* 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 */
    n_rb_dl: N_RB_DL,
    cyclic_prefix: "normal",

    phich_duration: "normal",
    phich_resource: "1", /* ratio of NG */

    /* System Information Block type 1 */
    sib1: "sib1.asn",

    /* other SIBs, in same order as the scheduling list in SIB 1 */
#if N_RB_DL == 25
    sib_sched_list: [ "sib23_rb25_nbr.asn" ],
#else
    sib_sched_list: [ `sib23_rb${N_RB_DL}.asn` ],
#endif

    si_coderate: 0.20,   /* 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: {
#if N_ANTENNA_DL == 2
      p_a: -3,
#else
      p_a: 0,
#endif
    },

    /* 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, */

    /* 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: 1,

    /* this CQI value is assumed when none is received from the UE */
    initial_cqi: 3,

    /* if defined, force the PUSCH MCS for all UEs. Otherwise it is
       computed from the last received SRS/PUSCH. */ 
    //  pusch_mcs: 18, 

    /* 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 */
#if N_ANTENNA_DL == 2
    m_ri: 8,
    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: {
      srs_period: 40, /* period (ms). Must be >= 40 for HD-FDD */
      srs_bandwidth: 3,
      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: 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: 10000,

    /* DRB configuration */
    drb_config: "drb.cfg",

    /* configuration for Bandwidth Reduced UEs */
    br_ue: {
      br_root_sequence_index: 648,
      br_r_sib1: 1, /* number of SIB1 repetitions per 20 ms (1, 2 or 4) */
      br_si_window_length: 40, /* in ms */
      br_si_repetition_pattern: 4, /* 1, 2, 4, 8 */
      br_sib_sched_list: [ 
          { si_periodicity: 16, filename: `sib23_rb${N_RB_DL}_br.asn` },
      ],
      br_rar_coderate: 0.20, /* max code rate for the RAR message */
      br_mpdcch_css_ra_al: 24, /* MPDCCH aggregation level: 8, 16 or 24 */
      br_mpdcch_n_rb: 6, /* MPDCCH: number of PRBs: 2, 4, 6 */
      br_mpdcch_al: 24, /* MPDCCH aggregation level for each UE (CQI is currently ignored) */
      br_initial_cqi: 4, /* currently cannot be lower because no repetition are possible for CCCH */
      br_pdsch_n_rep: 1, /* number of repetitions for PDSCH */
      br_paging_mcs: 5, /* mcs used for paging */
      br_paging_n_rep: 1, /* number of repetitions for paging */
      br_n1_pucch_sr_count: 5,
      br_cqi_pucch_n_rb: 2,
      br_mpdcch_ue_count: 10,
      br_srs_enabled: false, /* disable SRS for BR UE */
    },
  },
}

Sample rate should be set in “config/rf_driver/1chan.cfg”. I have noticed that there is only one (almost empty) configuration file on GitHub (you can try that). I will add some example configuration files to GitHub.

1 Like

Silly me, forgot to check on the rf_driver file. It’s working now awesome! Thanks so much for the help and patience.

1 Like