Concentrator Design v2

This section lists the available object types and fields with their possible values as understood by Station when parsing configuration files. The semantics of the fields is discussed elsewhere (cf. the respective documentation of the radio board). Only additional fields or extensions that are specific to Station are briefly explained.

A configuration need not specify any frequencies or enablement for IFCONF or RFCONF objects. This information is submitted by the LNS based on the channel plan assigned to a gateway. The channel-plan settings are merged with the local configuration before the concentrator board is being initialized.

The concentrator configuration is embedded into station.conf or slave-N.conf files in the following way:

  ...                    // possibly other fields e.g. "station_conf"
  "radio_conf"  : [ BOARD, .. ]

BOARD Object

  "device"        : STRING   // station specific
  "pps"           : BOOL     // station specific
  "loramac_public": BOOL
  "clksrc"        : INT
  "board_rx_freq" : INT
  "board_rx_bw"   : INT
  "full_duplex"   : BOOL
  "board_type"    : "master" | "slave"
  "FSK_sync"      : STRING     // hexdigits encoding 1-8 bytes
  "calibration_temperature_celsius_room": INT(-128..127)
  "calibration_temperature_code_ad9361" : INT(0..255)
  "dsp_stat_interval" : INT(0..255)
  "nb_dsp"        : INT
  "aes_key"       : STRING     // hexdigits encoding 16 bytes
  "rf_chain_conf" : RFCHAINCONF
  "SX1301_conf"   : [ SX1301CONF, .. ]
  "lbt_conf"      : LBTCONF

The field device specifies the SPI device, which is used to communicate with the radio board. If multiple radio boards are used then the wildcard character ? is replaced with the actual board index. The board index is inferred from the position inside the radio_conf array.

If the gateway has a PPS signal (GPS device or other source), the concentrator board that has access to this signal MUST have the field pps set to true. No more than one board MUST have this field set to true.

Note: Station does NOT REQUIRE access to a GPS device to maintain a global GPS time for class B operation. A PPS aligned with the GPS time is sufficient.

SX1301CONF Object

  "chip_enable"      : BOOL
  "chip_center_freq" : INT
  "chip_rf_chain"    : INT
  "chan_multiSF_X"   : CHANCONF   // where X in {0..7}
  "chan_LoRa_std"    : CHANCONF
  "chan_FSK"         : CHANCONF


  "chan_rx_freq"  : INT
  "bandwidth"     : INT(125000,250000,50000)
  // if under fields "chan_multiSF_0".."chan_multiSF_7"
  "spread_factor" : INT(7..12)
  // if under field "chan_LoRa_std"
  "spread_factor" : "N-M"        // N,M in {7..12} and N <= M
  // "spread_factor" must be absent if under field "chan_FSK"
  // valid only if under field "chan_FSK"
  "bit_rate"      : INT


  "enable" : BOOL
  "rssi_target" : INT(-128..127)
  "rssi_shift"  : INT(0..255)
  "chan_cfg"    : [ .. ]

Note: The field chan_cfg MUST NOT be specified in a station.conf file. This data is auto generated from channel plan submitted by the LNS to the Station.


  "rx_enable"    : BOOL
  "tx_enable"    : BOOL
  "rssi_offset"  : INT
  "rssi_offset_coeff_a"  : INT
  "rssi_offset_coeff_b"  : INT
  "tx_freq_min"  : INT
  "tx_freq_max"  : INT
  "tx_lut"       : [ TXLUT, .. ]
  "txpow_adjust" : INT
  "antenna_type" : "omni" | "sector"

All of the fields of RFCONF are optional and missing fields are read as false or 0. If antenna_type or type is missing, the value is undefined. txpow_adjust is just an alias for antenna_gain.

Station targets a specific output power to be dissipated. The values of the fields txpow_adjust and antenna_gain are subtracted from this target value to account for any gains by the antenna and any losses by the cable.

The field antenna_type specifies the nature of the antenna. The response to an uplink frame received via a sector antenna is always sent back over the same antenna. This is also the preferred behavior for an antenna labeled omni. If the antenna is blocked (e.g., due to duty-cycle limitations or being busy with another transmit), Station may transfer the downlink transmit to another omni antenna.

TXLUT Object

  "rf_power"      : INT(-128..127)
  "fpga_dig_gain" : INT(0..255)
  "ad9361_atten"  : INT(0..65535)
  "ad9361_auxdac_vref"   : INT(0..255)
  "ad9361_auxdac_word"   : INT(0..65535)
  "ad9361_tcomp_coeff_a" : INT(-32768..32767)
  "ad9361_tcomp_coeff_b" : INT(-32768..32767)