GSM/LTE LabKit AppNote: Legba LTE/GSM LabKit easy configuration for IoT tests

From YateBTS
Revision as of 13:27, 5 February 2018 by Iulian.Comanescu (Talk | contribs) (Undo revision 3536 by Iulian.Comanescu (talk))

Jump to: navigation, search

The purpose of this page is to document the format and syntax of XML files for SIB messages in YateeNB.


System Information Blocks (SIBs) are broadcast messages that advertise the configuration of the eNodeB.

The YateeNB module generates the binary content of its SIBs from XML files. The module parses these files whenever it is started or restarted. Any information elements defined in the Release 12 RRC specification (3GPP 36.331) can be encoded into these files, regardless of whether the associated features are actually supported in the YateeNB module.

The XER-UPER encoder for these files is generated directly from the ASN.1 source code in the specifications. The syntax of the XML files is standard ASN.1 XER, except that the "-" character is substituted with "_" in element names and enumerated values.

For SIB Type 1, there are two possible XML files, one for FDD and one for TDD:

  • enb-sib1.fdd.xml
  • enb-sib1-tdd.xml

For all other SIB types there is a single possible XML file named enb-SIB<N>.xml, where <N> is the SIB type.

In a LabKit or SatSite system, these files are located in /usr/share/yate/scripts.

Note: Advertising features that the eNodeB does not support may cause UE connections to fail. Understand the implications of any changes to the SIB content before making those changes. Save copies of the default, original SIB XML files before changing them.

Variable Substitution

The XML encoder can set the values of SIB information elements from the general section of the YateeNB.conf or YateeNB-custom.conf configuration file. These values are substituted into the XML as strings before the XML-to-PER encoding step.

For example, here is the standard FDD SIB Type 1 XML file distributed with YateeNB:


In this example, the following elements take their values from the YateeNB module configuration:

mcc MCC
mnc MNC
trackingAreaCode TAC
cellIdentity CellIdentity
q_RxLevMin RxLevMin
freqBandIndicator Band
si_Periodicity "rf" + SiPeriodicity
si_WindowLength "ms" + SiWindowLength

These particular configuration parameters are defined in YateeNB.conf by the MMI or LMI, or they are defined with default values in the YateeNB module itself during initialization.

You can also add new parameters to YateeNB-custom.conf and then use them in the SIB XML files in this way. The only restrictions are:

  • The parameter name does not conflict with any existing YateeNB parameter.
  • The new element or element value does not conflict with the actual implementation of the eNodeB.

So, for example, to make cell-barring configurable, change the line


to something like


and then add some lines like this to YateeNB-custom.conf:

; Cell Barred configuration in SIB1.
; Valid values are "notBarred" and "barred".
callBarredParam notBarred

Note: If you try to add new parameters to yatenb.conf instead of YateeNB-custom.conf, the LMI or MMI will erase them the next time it updates the configuration.

Note: Parameters that are hard-coded in the SIBs provide reasonable default values in most cases. Changing them may degrade performance.

Error Checking

The YateeNB module logs XML/SIB encoding errors the CRIT level. If you edit the XML files, be sure to check the logs for encoding error warnings the first time you run the eNodeB.

Adding New SIBs

The YateeNB module schedules all SIBs Type 2 and higher in a single SI Message, with the same periodicity.

To add a new SIB type <N> to the eNodeB:

  • Create the new XML file enb-sib<N>.xml in /usr/share/yate/scripts.
  • Define a parameter SibList in YateeNB-custom.conf that list all of the SIBs (above SIB Type 2) that are to be used.
    • The form for the SibList parameter is sibType3 sibType4, etc.
    • The presence of SIB Types 1 and 2 is implied, so those do not appear in the list.


For example, to add a simple SIB Type 4 with one neighbor, define a new file enb-sib4.xml with this content:


and add these line to YateeNB-custom.conf:

; List of supported SIBs above Type 2
SibList = sibType3 sibType4
; example neighbor in SIB4
; PHY cell ID
neighborPhyCellID = 5
; neighbor power offset in dB
neighborOffset = 0

and edit enb-sib1.tdd.xml and enb-sib1.fdd.xml to update the SIB Mapping Information element:


Message Size Limitation

All SIBs Type 2 and higher must fit together into a single SI Message in a single subframe using QPSK modulation. The YateeNB module will lower the coding rate for SIBs as needed to try to fit all of these SIBs into the subframe. If the SIBs do not fit into the subframe even at the lowest allowed rate, the eNodeB will log a warning at the CRIT level.

Approximate maximum message sizes are:

LTE Bandwidth
Approx Max SI Message
1.4 1.4
3 3.5
5 5.9
10 12
15 18
20 24

The YateeNB module may also change the DCI type for SIBs to increase the maximum message size. It will log a message at the CONF level if it does this.