Skip to content

Configuration File

Klaus Kuehnhammer edited this page Dec 12, 2023 · 7 revisions

Default location is /etc/5gm.conf

Cell Parameters

cell: {
  number_of_prbs = 25;
  mode: "mixed";
  scs: 15.0;
  cp = "extended";
  pci = 42;
  cfi: 3;
  mcc: (9,0,1);
  mnc: (5,6);
  dl_earfcn: 68821;
//  e_utra_band: 68;
//  dl_freq = 557000000L;

  pdcch_aggregation_level_16_r16: false;
  semi_static_cfi_r16: false;
  pbch_repetition_r16: false;
};
number_of_prbs: 25; Defines the channel bandwidth. Valid settings are 6 (1.4 MHz), 15 (3 Mhz), 25 (5 Mhz), 30 (6 Mhz), 35 (7 Mhz), 40 (8 MHz), 50 (10 Mhz), 75 (15 MHz), 100 (20 MHz)
mode: "mixed"; Set to "dedicated" for MBMS dedicated cell mode, "mixed" for eMBMS mixed mode (useful for CRD/QRD)
scs: 15.0; MBSFN subframe subcarrier spacing in kHz, can be 0.37, 1.25, 2.5, 7.5 or 15.0
cp: "extended"; CAS subframe CP length. Leave at "extended".
pci: 42; Physical Cell Identifier. Can be 0 .. 503
cfi: 3; CAS subframe Control format indicator. Leave at 3.
mcc: (9,0,1); Mobile Country Code. Leave at 9,0,1 for 5G Broadcast.
mnc: (5,6); Mobile Network Code. Leave at 5,6 for 5G Broadcast.
dl_earfcn: 68821; Optional EARFCN specifying the downlink frequency and band. If present, parameters e_utra_band and dl_freq are ignored.
e_utra_band: 68; Number of the E-UTRA band. Ignored if dl_earfcn is present.
dl_freq : 557000000L; Downlink frequency in Hz. Ignored if dl_earfcn is present.
pdcch_aggregation_level_16_r16: false; 3GPP Rel-16 extension: Use PDCCH aggregation level 16.
semi_static_cfi_r16: false; 3GPP Rel-16 extension: Set semi-static CFI in MIB.
pbch_repetition_r16: false; 3GPP Rel-16 extension: Enable PBCH repetition.

Data Input Parameters

input: {
  mode: "static";
  static: {
    mbsfn_area: 0;
    sais: (0);
    signalling_mcs: 2;
    pmchs: (
      {
        last_subframe: 767;
        data_mcs: 9;
        service_id: 0x000010;
        ingress: {
          tun_interface_name: "5gm_pmch_1";
        };
      }
    );
  };
};
mode: "static"; Input mode: "static" for stand-alone operation, "m2" for configuration through broadcast core
static: { Parameters for static/stand-alone operation
mbsfn_area: 0; MBSFN area ID
sais: (0); List of MBMS service area IDs
signalling_mcs: 2; MCS for MCCH and first MCH subframes
pmchs: ( List of PMCHs to configure
last_subframe: 767; Number of MBSFN subframe assigned to this PMCH
data_mcs: 9; MCS for MCH subframes
service_id: 0x000010; Service ID, together with MNC and MCC this gives the TMGI
tun_interface_name: "5gm_pmch_1"; Name of the tunnel network interface created

Data Output Parameters

output: {
  iq :
  {
    send_to: "bladerf";
    bladerf:
    {
      gain: 66;
      fixed_tx_ts_offset = 30;
      device_string = "";
    };
    udp :
    {
      holdoff_time_when_unreachable = 2;
      target :
      {
        ip = "239.1.1.22";
        port = "31200";
      };
      leap_seconds = 18;
      fixed_tx_ts_offset = 200;
    };
    file :
    {
      enabled = false;
      format = "CF32";
      file_name = "iq_samples.dat";
      stop_after = 10240;
    };
  };
};
iq > send_to: "bladerf"; Target for generated I/Q data. "bladerf" to output to a Nuand BladeRF SDR, "udp" to send as UDP packets, also see UDP packet header format description
bladerf: Configuration parameters for BladeRF output
gain: 66; System gain (in dB)
fixed_tx_ts_offset = 30; Fixed offset in ms added to the packet timestamp
device_string = ""; Additional configuration passed to the BladeRF library when initialising the device
udp : Configuration parameters for UDP output
target : IP address and port to send packets to. Can be unicast or multicast
leap_seconds = 18; Leap seconds added to UTC time to get GPS time
fixed_tx_ts_offset = 200; Fixed offset in ms added to the packet timestamp
file : Configuration parameters for file output
enabled = false; true: create a file containg I/Q data, false: disabled
format = "CF32"; Format of the samples in the created file. Supported values: "CF32" - 32bit complex floats, use for input to rt-mbms-modem / "SC16Q11" - 16 bit signed complex Q11 fixed point
file_name = "iq_samples.dat"; Name of created file
stop_after = 10240; Stop writing to the file after this many subframes. 10240 = one complete cycle of the radio frame number.

RESTful API Parameters

api :
{
  enabled = true;
  listen_address = "0.0.0.0";
  listen_port = 4000;
};
enabled = true; Enable the built-in API
listen_address = "0.0.0.0"; Address of the interface to bind to. 0.0.0.0 for all interfaces.
listen_port = 4000; Port to listen for connections on

Test Mode Parameters

test_modes :
{
  zero_frames :
  {
    enabled = false;
    interval = 1;
  };
};
zero_frames Params for testing zero'd subframes (N flag set, no data)
interval = 1; Zero every N subframes

Log Levels

All appliation modules can be configured with log levels "trace", "debug", "info", "warn", "err", "critical", "off".

Complete example file

cell: {
  number_of_prbs = 25;
  mode: "mixed";
  scs: 15.0;
  cp = "extended";
  pci = 42;
  cfi: 3;
  mcc: (9,0,1);
  mnc: (5,6);
  dl_earfcn: 68821;
//  e_utra_band: 68;
//  dl_freq = 557000000L;

  pdcch_aggregation_level_16_r16: false;
  semi_static_cfi_r16: false;
  pbch_repetition_r16: false;
};
input: {
  mode: "static";
  static: {
    mbsfn_area: 0;
    sais: (0);
    signalling_mcs: 2;
    pmchs: (
      {
        last_subframe: 767;
        data_mcs: 9;
        service_id: 0x000010;
        ingress: {
          tun_interface_name: "5gm_pmch_1";
        };
      }
    );
  };
};
output: {
  iq :
  {
    send_to: "bladerf";
    bladerf:
    {
      gain: 66;
      fixed_tx_ts_offset = 30;
      device_string = "";
    };
    udp :
    {
      holdoff_time_when_unreachable = 2;
      target :
      {
        ip = "239.1.1.22";
        port = "31200";
      };
      leap_seconds = 18;
      fixed_tx_ts_offset = 200;
    };
    file :
    {
      enabled = false;
      format = "CF32";
      file_name = "iq_samples.dat";
      stop_after = 10240;
    };
  };
};
api :
{
  enabled = true;
  listen_address = "0.0.0.0";
  listen_port = 4000;
};
test_modes :
{
  zero_frames :
  {
    enabled = false;
    interval = 1;
  };
};
log_levels :
{
  main = "info";
  iqsender = "info";
  subframe = "info";
  system-information = "info";
  mtch = "info";
  bch = "info";
  dl-sch = "info";
  mch = "info";
  signals = "info";
  pbch = "info";
  pdcch = "info";
  pcfich = "info";
  pdsch = "info";
  pmch = "info";
  m1 = "info";
  m2 = "info";
  tun = "info";
  api = "info";
};

Clone this wiki locally