Ybts.conf

Ybts.conf is the main configuration file that you’ll have to edit when using YateBTS. This file holds a stripped version of the parameters inherited from OpenBTS and a few other YBTS related parameters that were added to control the connection between MBTS and YBTS.

Ybts.conf includes 12 sections. At an absolute minimum you only need to review the settings in [gsm] section. For the rest of the sections, appropriate values are already set.

The other sections can be reviewed for R & D purposes. Remember to uncomment the settings you change from defaults..

[gsm] Controls basic GSM operations

; You MUST set and review all the parameters in this section before starting the BTS!

; Radio.Band: keyword: The GSM operating band.
; For non-multiband units this value must match the hardware.
; Valid values: 850, 900, 1800, 1900.
; THERE IS NO DEFAULT, YOU MUST SET A VALUE HERE!
Radio.Band=

; Radio.C0: integer: The C0 ARFCN, also base ARFCN for a multi-ARFCN configuration.
; Valid values depend on the selected Radio.Band:
; 850 (GSM850): 128..251
; 900 (EGSM900): 0..124 or 975..1023
; 1800 (DSC1800): 512..885
; 1900 (PCS1900): 512..810
; THERE IS NO DEFAULT, YOU MUST SET A VALUE HERE!
Radio.C0=

; Identity.MCC: string: Mobile Country Code, must have three digits.
; The value 001 is reserved for for test networks.
; Defaults to 001 (Test Network).
;Identity.MCC=001

; Identity.MNC: string: Mobile Network Code, must have two or three digits.
; The value 01 is usual for test networks with a MCC value set on 001.
; Defaults to 01 (Test Network, only in association with Identity.MCC=001).
;Identity.MNC=01

; Identity.LAC: integer: Location Area Code, 16 bits, values 0xFFxx are reserved.
; For multi-BTS networks, assign a unique LAC to each BTS unit.
; Interval allowed: 0..65280.
; Defaults to 1000 (arbitrary).
;Identity.LAC=1000

; Identity.CI: integer: Cell ID, 16 bits, should be unique.
; Interval allowed: 0..65535.
; Defaults to 10 (arbitrary).
;Identity.CI=10

; Identity.BSIC.BCC: integer: GSM Basestation Color Code; lower 3 bits of the BSIC.
; BCC values in a multi-BTS network should be assigned so that BTS units with
; overlapping coverage do not share a BCC.
; This value will also select the training sequence used for all slots on this unit.
; Interval allowed: 0..7.
; Defaults to 2 (arbitrary).
;Identity.BSIC.BCC=2

; Identity.BSIC.NCC: integer: GSM Network Color Code; upper 3 bits of the BSIC.
; Assigned by your national regulator; must be different from NCCs of other GSM
; operators in your area.
; Interval allowed: 0..7.
; Defaults to 0.
;Identity.BSIC.NCC=0

; Identity.ShortName: string: Network short name, displayed on some phones.
; Optional, but must be defined if you want the network to send time-of-day.
; Defaults to YateBTS.
;Identity.ShortName=YateBTS

; Radio.PowerManager.MaxAttenDB: integer: Maximum transmitter attenuation level
; in dB wrt full scale on the D/A output.
; This sets the minimum power output level in the output power control loop.
; Interval allowed: 0..80.
; Defaults to 10 (-10dB).
;Radio.PowerManager.MaxAttenDB=10

; Radio.PowerManager.MinAttenDB: integer: Minimum transmitter attenuation level
; in dB wrt full scale on the D/A output.
; This sets the maximum power output level in the output power control loop.
; Interval allowed: 0..80, must be less or equal to Radio.PowerManager.MaxAttenDB.
; Defaults to 0 (maximum power).
;Radio.PowerManager.MinAttenDB=0

[gprs] Controls basic GPRS operations

; This section controls the internal GGSN function configuration.

; DNS: The list of DNS servers to be used by downstream clients.
; By default, DNS servers are taken from the host system.
; To override, specify a space-separated list of the DNS servers, in IP dotted notation, eg: 1.2.3.4 5.6.7.8.
; To use the host system DNS servers again, execute ‘unconfig GGSN.DNS’.
;DNS=

; Firewall.Enable: integer
; 0=no firewall; 1=block the MS attempted access to YateBTS or other MS; 2=block all private IP addresses.
;Firewall.Enable=1

; IP.MaxPacketSize: integer: The maximum size of an IP packet.
; Should normally be 1520.
; Allowed value 1492:9000.
; Default to 1520.
;IP.MaxPacketSize=1520

; IP.ReuseTimeout: integer: How long are IP addresses reserved after a session ends.
; Allowed value 120:240.
;IP.ReuseTimeout=180

; IP.TossDuplicatePackets: boolean: Toss duplicate TCP/IP packets to prevent unnecessary traffic on the radio.
;IP.TossDuplicatePackets=no

;Logfile.Name: string: If specified, Internet traffic is logged to this file. e.g. ggsn.log
;Logfile.Name=

; MS.IP.Base: ipaddress: Base IP address assigned to the MS.
;MS.IP.Base=192.168.99.1

; MS.IP.MaxCount: integer: Number of IP addresses to use for the MS.
; Allowed values 1:254
;MS.IP.MaxCount=254

; MS.IP.Route: A route address to be used for downstream clients.
; By default, YateBTS manufactures this value from the GGSN.MS.IP.Base assuming a 24 bit mask.
; To override, specify a route address in the form: xxx.xxx.xxx.xxx/yy.
; The address must encompass all MS IP addresses.
; To use the auto-generated value again, execute “unconfig GGSN.MS.IP.Route”.
;MS.IP.Route=

; ShellScript: string: A shell script invoked when MS devices attach or create IP connections.
; By default, this feature is disabled.
; To enable, specify an absolute path to the script you wish to execute. e.g. /usr/bin/ms-attach.sh
; To disable again, execute “unconfig GGSN.ShellScript”.
;ShellScript=

; TunName: string: Tunnel device name for GGSN.
;TunName=sgsntun

[transceiver] Controls how to start and operate the radio transceiver

; In newer versions of YateBTS the transceiver is no longer an external executable.
; The “gsmtrx” Yate module implements the device independent transceiver logic and
; uses the configuration from this section.
; The radio device is implemented in another Yate module named “ybladerf”. If you
; need to configure board specific parameters please edit ybladerf.conf
; For compatibility the RadioFrequencyOffset, TX.OffsetI and TX.OffsetQ set in this
; section override any similar setting made in ybladerf.conf
; If you install prebuilt packages the yate-bladerf package holds the ybladerf module
; as well as the FPGA images with which YateBTS is known to work.

; MinimumRxRSSI: integer: Minimum signal strength (in dB) of acceptable bursts.
; Bursts received at the physical layer below this threshold are ignored.
; Do not adjust without proper calibration.
; Interval allowed: -90..90.
; Defaults to -63.
;MinimumRxRSSI=-63

; RadioFrequencyOffset: integer: Master radio interface clock frequency adjustment.
; Fine-tuning adjustment for the transceiver master clock.
; Set at the factory, do not adjust without proper calibration.
; Interval allowed: 64..192.
; Defaults to 128 (but some radios provide their own calibrated default).
;RadioFrequencyOffset=128

; TX.OffsetI: integer: Radio interface transmitter DC offset correction for I
; Set at the factory, do not adjust without proper calibration.
; Interval allowed: -63..63.
;TX.OffsetI=0

; TX.OffsetQ: integer: Radio interface transmitter DC offset correction for Q
; Set at the factory, do not adjust without proper calibration.
; Interval allowed: -63..63.
;TX.OffsetI=0

; TxAttenOffset: integer: Transmitter attenuation in dB.
; Hardware-specific gain adjustment for transmitter, matched to the amplifier.
; Do not adjust without proper calibration.
; Interval allowed: 0..100
; Defaults to 0.
;TxAttenOffset=0

; Timeout.Clock: integer: Transceiver read timeout, in seconds.
; How long to wait during a read operation from the transceiver before giving up.
; Interval allowed: 5..15
; Defaults to 10.
;Timeout.Clock=10

; clock_update_offset: integer: Offset (in GSM timeslots) for radio clock advertised to upper layer
; This value is added to current radio clock when synchronizing with upper layer
; This parameter is applied on reload
; Defaults to 16. Allowed interval [0..256]
;clock_update_offset=16

; tx_slots: integer: The number of timeslots to send in one loop
; This parameter is applied on reload
; Defaults to 16 if no radio capabilities are available
; Otherwise: the default value will be taken from radio capabilities
; I.e. this parameter may be used to override radio capabilities
; Allowed interval [1..1024]
;tx_slots=16

; radio_latency_slots: integer: Estimated radio latency in timeslots
; This value is used to drop old bursts from send queue (avoid sending old data to radio)
; This parameter is applied on reload
; Defaults to 5 if no radio capabilities are available
; Otherwise: the default value will be taken from radio capabilities
; I.e. this parameter may be used to override radio capabilities
; Allowed interval [0..256]
;radio_latency_slots=5

; radio_read_priority: keyword: Radio read thread priority
; Allowed values: lowest, low, normal, high, highest
; Defaults to ‘highest’ if missing or invalid
;radio_read_priority=highest

; radio_send_priority: keyword: Radio send thread priority
; Allowed values: lowest, low, normal, high, highest
; Defaults to ‘high’ if missing or invalid
;radio_send_priority=high

; tx_silence_debug_interval: integer: Interval, in milliseconds, to silence tx bursts
; time related debug messages (avoid delayed/missing/expired bursts debug messages on startup)
; Defaults to 5000. Allowed interval [0..20000]
;tx_silence_debug_interval=5000

; gsm_time_sync_check: integer: Interval, in milliseconds, to check GSM time sync
; with upper layer
; This parameter should be used when debugging: when sync times out a debug FAIL message
; will be printed
; Set to 0 to disable it
; A non 0 value will be clamped in interval [2000 .. 10000]
; This parameter is applied on transceiver start
;gsm_time_sync_check=0

; print_status: integer: Print transceiver status on output
; This parameter is applied on reload
; New value will override old value even if not changed
; Values:
; 0: disable
; negative: forever, until changed
; positive: the number of times to print it
;print_status=0

; print_status_bursts: integer: Print burst counters when printing transceiver status
; This parameter is applied on reload and is ignored if print_status is 0
;print_status_bursts=yes

[control] Configuration for various MBTS controls

; Normally nothing should be changed in this section.

; VEA: boolean: Use very early assignment for speech call establishment.
; See GSM 04.08 Section 7.3.2 for a detailed explanation of assignment types.
; See GSM 04.08 Sections 9.1.8 and 10.5.2.4 for an explanation of the NECI bit.
; Some handsets exhibit bugs when VEA is used, which can affect performance.
; If VEA is selected, [gsm_advanced] CellSelection.NECI should be set to 1.
; Defaults to yes.
;VEA=yes

; LUR.AttachDetach: boolean: Use the attach/detach procedure.
; This will make initial LUR more prompt.
; It will also cause an un-regstration if the handset powers off, and really
; heavy LUR loads in areas with spotty coverage.
; Defaults to yes.
;LUR.AttachDetach=yes

; SACCHTimeout.BumpDown: integer: RSSI decrease amount.
; Decrease the RSSI by this amount to induce more power in the MS each time
; we fail to receive a response from it.
; Interval allowed: 1..3
; Defaults to 1.
;SACCHTimeout.BumpDown=1

[tapping] These settings control if radio layer GSM and GPRS packets are tapped to Wireshark

; GSM: boolean: Captures GSM signaling at the L1/L2 interface via GSMTAP.
; Do not leave tapping enabled after finishing troubleshooting.
; Defaults to no.
;GSM=no

; GPRS: boolean: Captures GPRS signaling and traffic at L1/L2 interface via GSMTAP.
; Do not leave tapping enabled after finishing troubleshooting.
; Defaults to no.
;GPRS=no

; TargetIP: ipaddress: Target IP address for GSMTAP packets.
; The IP address for receiving Wireshark, if you use it for real time traces.
;TargetIP=127.0.0.1

[gsm_advanced] Controls more advanced GSM features

; This section controls more advanced GSM features.
; Normally nothing should be changed in this section.

; Channels.NumC1s: integer: Number of Combination-I timeslots to configure.
; The C-I slot carries a single full-rate TCH, used for speech calling.
; Interval allowed: 0..100
; Defaults to 7 (all timeslots of a single ARFCN).
;Channels.NumC1s=7

; Channels.NumC7s: integer: Number of Combination-VII timeslots to configure.
; The C-VII slot carries 8 SDCCHs, useful to handle high registration loads,
; SMS or USSD.
; If C0T0 is C-IV you must have at least one C-VII as well.
; Interval allowed: 0..100
; Defaults to 0.
;Channels.NumC7s=0

; Channels.C1sFirst: boolean: Allocate C-I slots first, starting with C0T1.
; Defaults to no (allocate C-VII slots first).
;Channels.C1sFirst=no

; Channels.SDCCHReserve: integer: Number of SDCCHs to reserve for non-LUR operations.
; This can be used to force LUR transactions into a lower priority.
; Interval allowed: 0..10
; Defaults to 0.
;Channels.SDCCHReserve=0

; CCCH.AGCH.QMax: integer: Maximum queued access grants.
; Maximum number of access grants to be queued for transmission on AGCH
; before declaring congestion.
; Interval allowed: 3..8
; Defaults to 5.
;CCCH.AGCH.QMax=5

; CCCH.CCCH-CONF: integer: CCCH configuration type.
; See GSM 10.5.2.11 for encoding.
; Values allowed: 1 (C-V beacon) or 2 (C-IV beacon)
; Defaults to 1.
;CCCH.CCCH-CONF=1

; CellOptions.RADIO-LINK-TIMEOUT: integer: Seconds before declaring a physical link dead.
; Interval allowed: 10..20
; Defaults to 15.
;CellOptions.RADIO-LINK-TIMEOUT=15

; CellSelection.CELL-RESELECT-HYSTERESIS: integer: Cell Reselection Hysteresis
; See GSM 04.08 10.5.2.4, Table 10.5.23 for encoding, Hysteresis is 2N dB.
; Interval allowed: 0..7 (corresponds to 0..14 dB)
; Defaults to 3.
;CellSelection.CELL-RESELECT-HYSTERESIS=3

; CellSelection.MS-TXPWR-MAX-CCH: integer: Cell selection parameters.
; See GSM 04.08 10.5.2.4 for details.
; Interval allowed: 0..31
; Defaults to 0.
;CellSelection.MS-TXPWR-MAX-CCH=0

; CellSelection.NCCsPermitted: integer: An 8 bit mask of allowed NCCs
; Unless you are coordinating with another carrier use -1, which only allows
; your own NCC
; Valid values: 0..255 or -1
; Defaults to -1 (allow only your own NCC).
;CellSelection.NCCsPermitted=-1

; CellSelection.NECI: integer: New Establishment Causes support.
; See GSM 04.08 10.5.2.4, Table 10.5.23 and 04.08 9.1.8, Table 9.9.
; This must be set to 1 if you want to support Very Early Assignment.
; Check VEA setting in section [control].
; Valid values: 0..1
; Defaults to 1.
;CellSelection.NECI=1

; CellSelection.RXLEV-ACCESS-MIN: integer: Cell selection parameters.
; See GSM 04.08 10.5.2.4 for details.
; Interval allowed: 0..63
; Defaults to 0.
;CellSelection.RXLEV-ACCESS-MIN=0

; Cipher.CCHBER: float: Probability of a bit getting toggled in a
; control channel burst for cracking protection.
; Interval allowed: 0.0 – 1.0
; Defauls to 0.
;Cipher.CCHBER=0

; Cipher.Encrypt: boolean: Encrypt traffic between the MS and the BTS.
; Defaults to no.
;Cipher.Encrypt=no

; Cipher.RandomNeighbor: float: Probability of a random neighbor being
; added to SI5 for cracking protection.
; Interval allowed: 0.0 – 1.0
; Defauls to 0.
;Cipher.RandomNeighbor=0

; Cipher.ScrambleFiller: boolean: Scramble filler in layer 2 for
; cracking protection.
; Defaults to no.
;Cipher.ScrambleFiller=no

; Control.GPRSMaxIgnore: integer: Ignore GPRS messages on GSM control channels
; Value is the number of consecutive messages to ignore.
; Interval allowed: 3..8
; Defaults to 5.
;Control.GPRSMaxIgnore=5

; Handover.InitialHoldoff: integer: Handover determination hold off time, in milliseconds ,
; after channel establishment. Allows the MS RSSI value to stabilize.
; Allowed values 2000..7000
; Defaults to 5000.
;Handover.InitialHoldoff=5000

; Handover.RepeatHoldoff: integer: Handover determination hold off time in milliseconds
; after a previous attempt.
; Allowed values 750..7000
; Defaults to 3000.
;Handover.RepeatHoldoff=3000

; Handover.LocalRSSIMin: integer: Do not handover if the downlink RSSI is above this
; level (in dBm), regardless of the power difference.
; Allowed values -100..-50
; Defaults to -80.
;Handover.LocalRSSIMin=-80

; Handover.ThresholdDelta: integer: A neighbor downlink signal must be this much
; stronger (in dB) than this downlink signal for handover to occur.
; Allowed values 5..20
; Defaults to 10.
;Handover.ThresholdDelta=10

; MS.Power.Damping: integer: Damping value for the MS power control loop.
; Interval allowed: 25..75
; Defaults to 50.
;MS.Power.Damping=50

; MS.Power.Max: integer: Maximum commanded MS power level in dBm.
; Interval allowed: 5..100
; Defaults to 33.
;MS.Power.Max=33

; MS.Power.Min: integer: Minimum commanded MS power level in dBm.
; Must be lower or equal to MS.Power.Max.
; Interval allowed: 5..100
; Defaults to 5.
;MS.Power.Min=5

; MS.TA.Damping: integer: Damping value for the timing advance control loop.
; Interval allowed: 25..75
; Defaults to 50.
;MS.TA.Damping=50

; MS.TA.Max: integer: Maximum allowed timing advance in symbol periods.
; One symbol period of round-trip delay is about 0.55 km of distance.
; RACH bursts with delays greater than this are ignored.
; Can be used to limit service range.
; Interval allowed: 1..62.
; Defaults to 62 (maximum range).
;MS.TA.Max=62

; MaxSpeechLatency: integer: Maximum allowed speech buffering latency.
; It is expressed in 20ms frames.
; Frames will be dropped if the jitter is larger than this delay.
; Interval allowed: 1..5.
; Defaults to 2.
;MaxSpeechLatency=2

; Neighbors.NumToSend: integer: Maximum number of neighbors to send to
; the handset in a neighbor list in BCCH.
; Interval allowed: 1..10.
; Defaults to 8.
;Neighbors.NumToSend=8

; Ny1: integer: Maximum number of repeats of the Physical Information.
; Message during handover procedure, GSM 04.08 11.1.3.
; Interval allowed: 1..10.
; Defaults to 5.
;Ny1=5

; RACH.MaxRetrans: integer: Maximum RACH retransmission attempts.
; This is the raw parameter sent on BCCH, see GSM 04.08 10.5.2.29 for encoding.
; Interval allowed: 0..3 (encodes to 1..7 retransmissions).
; Defaults to 1 (2 retransmissions).
;RACH.MaxRetrans=1

; RACH.TxInteger: integer: Parameter to spread RACH busts over time.
; This is the raw parameter sent on BCCH, see GSM 04.08 10.5.2.29 for encoding.
; Interval allowed: 0..15 (encodes to 3..50 slots).
; Defaults to 14 (32 slots).
;RACH.TxInteger=14

; Radio.ARFCNs: integer: The number of ARFCNs to use.
; The ARFCN set will be C0, C0+2, C0+4, …
; Interval allowed: 1..10.
; Defaults to 1 (single ARFCN unit).
;Radio.ARFCNs=1

; Radio.MaxExpectedDelaySpread: integer: Expected worst-case delay spread.
; Expressed in symbol periods, roughly 3.7 us or 1.1 km per unit.
; This parameter is dependent on the terrain type in the installation area.
; Typical values: 1 -> open terrain, small coverage, 4 -> large coverage area.
; This parameter has a large effect on computational requirements of the
; radio software.
; Interval allowed: 1..4.
; Defaults to 2.
;Radio.MaxExpectedDelaySpread=2

; Radio.NeedBSIC: boolean: Does the Radio type require the full BSIC.
; Defaults to no.
;Radio.NeedBSIC=no

; Radio.PowerManager.NumSamples: integer: Number of samples averaged by
; the output power control loop.
; Interval allowed: 5..20.
; Defaults to 10.
;Radio.PowerManager.NumSamples=10

; Radio.PowerManager.Period: integer: Power manager control loop master
; period, in milliseconds.
; Interval allowed: 4500..7500.
; Defaults to 6000.
;Radio.PowerManager.Period=6000

; Radio.PowerManager.SamplePeriod : integer: Sample period for the output
; power control loop in milliseconds.
; Interval allowed: 1500..2500.
; Defaults to 2000.
;Radio.PowerManager.SamplePeriod=2000

; Radio.PowerManager.TargetT3122: integer: Target value for T3122, the
; random access hold-off timer, for the power control loop.
; Interval allowed: 3750..6250.
; Defaults to 5000.
;Radio.PowerManager.TargetT3122=5000

; Radio.RSSITarget: integer: Target uplink RSSI for the MS power control loop.
; Expressed in dB wrt to the receiver’s A/D convertor full scale.
; Should be 6-10 dB above the noise floor (see the “mbts noise” command).
; Interval allowed: -75..-25.
; Defaults to -50.
;Radio.RSSITarget=-50

; Radio.RxGain: integer: Receiver gain setting in dB.
; Ideal value is dictated by the hardware; 47 dB for RAD1, less for USRPs.
; Interval allowed: 0..75.
; Defaults to 0 (but some radios provide their own calibrated default).
;Radio.RxGain=0

; ShowCountry: boolean: Tell the MS to show the country name based on the MCC.
; Defaults to no.
;ShowCountry=no

; Timer.T3103: integer: Handover timeout, in milliseconds, see GSM 04.08 11.1.2.
; This is the timeout for a handset to seize a channel during handover. Allowed: 2500:7500(100).
;Timer.T3103=5000

; Timer.T3105: integer: Milliseconds necessary for the MS to respond to the physical information. See GSM 04.08 11.1.2.
; Interval allowed 25:75(5).
; Defaults to 50.
;Timer.T3105=50

; Timer.T3113: integer: Paging timer T3113, in milliseconds.
; This is the timeout for a MS to respond to a paging request.
; This should usually be the same as SIP.Timer.B in your VoIP network.
; Allowed interval 5000:15000(500).
; Defaults to 10000.
; Timer.T3113=10000

; Timer.T3122Max: integer: Maximum allowed value for T3122, the RACH hold off timer, in milliseconds.
; Allowed interval 127500:382500(1000).
; Defaults to 255000.
;Timer.T3122Max=255000

; Timer.T3122Min: integer: Minimum allowed value for T3122, the RACH hold off timer, in milliseconds.
; Allowed interval 1000:3000(100).
; Defaults to 2000.
;Timer.T3122Min=2000

; Timer.T3212: integer: Registration timer T3212 period in minutes.
; Should be a factor of 6.
; Set to 0 to disable periodic registration.
; Should be smaller than SIP registration period.
; Allowed interval 0:1530(6).
; Defaults to 24.
;Timer.T3212=24

[gprs_advanced] Controls more advanced GPRS features

; Normally nothing should be changed in this section.

; Debug: boolean: Toggle GPRS debugging. Defaults to no.
;Debug=no

; MS.Power.Alpha: integer: MS power control parameter, unitless, in steps of 0.1, so a parameter of 5 is an alpha value of 0.5.
; Determines the sensitivity of the MS to variations in downlink RSSI.
; Valid range is 0…10 for alpha values of 0.0 … 1.0. See GSM 05.08 10.2.1.
; MS.Power.Alpha=10

; MS.Power.Gamma: integer: MS power control parameter, in 2 dB steps.
; Determines baseline of handset uplink power relative to downlink RSSI.
; The optimum value will tend to be lower for BTS units with higher power output.
; Valid range is 0…31 for gamma values of 0…62 dB. See GSM 05.08 10.2.1.
;MS.Power.Gamma=31

; MS.Power.T_AVG_T: integer: MS power control parameter; see GSM 05.08 10.2.1
; Valid range is 0…25.
;MS.Power.T_AVG_T=15

; MS.Power.T_AVG_W: integer: MS power control parameter; see GSM 05.08 10.2.1.
; Valid range is 0…25. Defaults to 15.
;MS.Power.T_AVG_W=15

; Multislot.Max.Downlink: integer: Maximum number of channels used for a single MS in downlink.
; Valid range is 0…10. Defaults to 3.
;Multislot.Max.Downlink=3

; Multislot.Max.Uplink: integer: Maximum number of channels used for a single MS in uplink.
; Valid range is 0…10. Defaults to 2.
;Multislot.Max.Uplink=2

; Codecs.Downlink: integer: List of allowed GPRS downlink codecs 1..4 for CS-1..CS-4. Currently, only 1 and 4 are supported e.g. 14.
;Codecs.Downlink=14

; Codecs.Uplink: integer: List of allowed GPRS uplink codecs 1..4 for CS-1..CS-4. Currently, only 1 and 4 are supported. e.g. 14
;Codecs.Uplink=14

; Uplink.KeepAlive: integer: How often keep-alive messages should be sent for persistent TBFs, in milliseconds; must be long enough to avoid simultaneous in-flight duplicates, and short enough that MS gets one every 5 seconds.
; Allowed interval 200:5000(100). Defaults to 300.
;Uplink.KeepAlive=300

; Uplink.Persist: integer: After completion, uplink TBFs are held open for this time in milliseconds.
; If non-zero, must be greater than GPRS.Uplink.KeepAlive.
; This is broadcast in the beacon and cannot be changed once the BTS is started.
; Allowed interval 0:6000(100). Defaults to 4000.
;Uplink.Persist=4000

; TBF.Downlink.Poll1: integer: When the first poll is sent for a downlink TBF, measured in blocks sent. Allowed values 5:15.
; Defaults to 10.
;TBF.Downlink.Poll1=10

; TBF.EST: boolean: Allow MS to request another uplink assignment at end up of uplink TBF. See GSM 4.60 9.2.3.4
; Defaults to yes.
;TBF.EST=yes

; TBF.Expire: integer: How long to try before giving up on a TBF.
; Allowed interval 20000:40000.
; Defaults to 30000.
;TBF.Expire=30000

; TBF.KeepExpiredCount: integer: How many expired TBF structs to retain; they can be viewed with GPRS list TBF -x.
; Allowed interval 15:25.
;TBF.KeepExpiredCount=20

; TBF.Retry: integer: If 0, no TBF retry, otherwise if a TBF fails, it will be retried with this codec, numbered 1..4.
;TBF.Retry=1

; advanceblocks: integer: Number of advance blocks to use in the CCCH. reservation.; Allowed interval 5:15.
; Defaults to 10.
;advanceblocks=10

; CellOptions.T3168Code: integer: Timer 3168 in the MS controls the wait time after sending a Packet Resource Request to initiate a TBF before giving up or reattempting a Packet Access Procedure, which may imply sending a new RACH.
; This code is broadcast to the MS in the C0T0 beacon in the GPRS Cell Options IE.
; See GSM 04.60 12.24.
; Range 0..7 to represent 0.5sec to 4sec in 0.5sec steps.
;CellOptions.T3168Code=5

; CellOptions.T3192Code: integer: Timer 3192 in the MS specifies the time MS continues to listen on PDCH after all downlink TBFs are finished, and is used to reduce unnecessary RACH traffic.
; This code is broadcast to the MS in the C0T0 beacon in the GPRS Cell Options IE.
; The value must be one of the codes described in GSM 04.60 12.24.
; Value 0 implies 500msec; 2 implies 1500msec; 3 implies 0msec.
;CellOptions.T3192Code=0

; ChannelCodingControl.RSSI: integer: If the initial unlink signal strength is less than this amount in DB GPRS uses a lower bandwidth but more robust encoding CS-1. This value should normally be GSM.Radio.RSSITarget + 10 dB.
; Interval allowed -65:-15. Defaults to -40.
;ChannelCodingControl.RSSI=-40

; Channels.Congestion.Threshold: integer: The GPRS channel is considered congested if the desired bandwidth exceeds available bandwidth by this amount, specified in percent.
; Interval allowed 100:300(5). Defaults to 200.
;Channels.Congestion.Threshold=200

; Channels.Congestion.Timer: integer: Determines how long, in seconds, the GPRS congestion exceeds the Congestion.Threshold before we attempt to allocate another channel for GPRS.
; Interval allowed 30:90(5). Defaults to 60.
;Channels.Congestion.Timer=60

; Channels.Min.C0: integer: Minimum number of channels allocated for the GPRS service on ARFCN C0.
; Interval allowed 0:7. Defaults to 3.
;Channels.Min.C0=3

; Channels.Min.CN: integer: Minimum number of channels allocated for the GPRS service on ARFCNs other than C0.
; Interval allowed 0:100. Defaults to 0.
;Channels.Min.CN=0

; Channels.Max: integer: Maximum number of channels allocated for the GPRS service.
; Interval allowed 0:10. Defaults to 4.
;Channels.Max=4

; Counters.Assign: integer: Maximum number of assign messages sent.
; Interval allowed 5:15. Defaults to 10.
;Counters.Assign=10

; Counters.N3101: integer: Counts unused USF responses to detect a non-responsive MS.
; Should be > 8. See GSM04.60 sec 13.
; Interval allowed 8:32. Defaults to 20.
;Counters.N3101=20

; Counters.N3103: integer: Counts ACK/NACK attempts to detect a non-responsive MS. See GSM04.60 sec 13.
; Interval allowed 4:12. Defaults to 8.
;Counters.N3103=8

; Counters.N3105: integer: Counts unused RRBP responses to detect a non-responsive MS. See GSM04.60 sec 13.
; Interval allowed 6:18. Defaults to 12.
;Counters.N3105=12

; Counters.Reassign: integer: Maximum number of sent reassign messages.
; Interval allowed 3:9. Defaults to 6.
;Counters.Reassign=6

; Counters.TbfRelease: integer: Maximum number of sent TBF release messages.
; Interval allowed 3:8. Defaults to 5.
;Counters.TbfRelease=5

; Downlink.KeepAlive: integer: How often to send keep-alive messages for persistent TBFs, in milliseconds; must be long enough to avoid simultaneous in-flight duplicates, and short enough that MS gets one every 5 seconds. GSM 5.08 10.2.2 indicates that an MS must get a block every 360ms.
; Interval allowed 200:5000(100). Defaults to 300.
;Downlink.KeepAlive=300

; Downlink.Persist: integer: After completion, downlink TBFs are held open for this time, in milliseconds.
; If non-zero, must be greater than GPRS.Downlink.KeepAlive.
;Downlink.Persist=0

; LocalTLLI.Enable: boolean: Enable recognition of local TLLI.
;LocalTLLI.Enable=yes

; MS.KeepExpiredCount: integer: How many expired MS structs to retain; they can be viewed with gprs list ms -x.
; Interval allowed 10:30. Defaults to 20.
;MS.KeepExpiredCount=20

; NC.NetworkControlOrder: integer:Controls measurement reports and cell reselection mode (MS autonomous or under network control); should not be changed.
; Interval allowed 0:3. Defaults to 2.
;NC.NetworkControlOrder=2

; NMO: integer: Network Mode of Operation.
; See GSM 03.60 Section 6.3.3.1 and 24.008 4.7.1.6.
; Allowed values are 1, 2, 3 for modes I, II, III.
; Mode II (2) is recommended. Mode I implies combined routing updating procedures.
;NMO=2

; PRIORITY-ACCESS-THR: integer: Code controls GPRS packet access priorities allowed. See GSM04.08 table 10.5.76.
; 0=Packet access not allowed in the cell, 3=Packet access allowed for priority level 1, 4=Packet access allowed for priority level 1 to 2, 5=Packet access allowed for priority level 1 to 3, 6=Packet access allowed for priority level 1 to 4
;PRIORITY-ACCESS-THR=6

; RRBP.Min: integer: Minimum value for RRBP reservations, range 0..3. Should normally be 0. A non-zero value gives the MS more time to respond to the RRBP request.
;RRBP.Min=0

; Reassign.Enable: boolean: Enable TBF Reassignment.
;Reassign.Enable=yes

; Release: integer: Protocol Release claiming to be supported.
; Interval allowed 2:10. Defaults to 2.
; If Uplink.Persist is not zero, then the release is forced to at least 4.
; Set this to at least 6 to work around a System Information 13 decoding bug in Wireshark.
;Release=4

; SendIdleFrames: boolean: Should be 0 for the current transceiver or 1 for deprecated version of transceiver.
;SendIdleFrames=no

; SGSN.port: integer: Port number of the SGSN required for GPRS service. This must match the port specified in the SGSN config file, currently osmo_sgsn.cfg.
;SGSN.port=1920

; Timers.Channels.Idle: integer: How long, in milliseconds, a GPRS channel is idle before being returned to the pool of channels. Also depends on Channels.Min. Currently the channel cannot be returned to the pool while there is any GPRS activity on any channel.
; Interval allowed 3000:6000(100). Defaults to 6000.
;Timers.Channels.Idle=6000

; Timers.MS.Idle: integer: How long, in seconds, an MS is idle before the BTS forgets about it.
; Interval allowed 300:900(10). Defaults to 600.
;Timers.MS.Idle=600

; Timers.MS.NonResponsive: integer: How long, in milliseconds, a TBF is non-responsive before the BTS kills it.
; Interval allowed 3000:9000(100). Defaults to 6000.
;Timers.MS.NonResponsive=6000

; Timers.T3169: integer: Non-responsive uplink TBF resource release timer, in milliseconds.
; See GSM04.60 Section 13.
; Interval allowed 2500:7500(100). Defaults to 5000.
;Timers.T3169=5000

; Timers.T3191: integer: Non-responsive downlink TBF resource release timer, in milliseconds.
; See GSM04.60 Section 13.
; Interval allowed 2500:7500(100). Defaults to 5000.
;Timers.T3191=5000

; Timers.T3193: integer: Timer T3193, in milliseconds, in the BTS, corresponds to T3192 in the MS, which is set by GPRS.CellOptions.T3192Code.
; The T3193 value should be slightly longer than that specified by the T3192Code.
; If 0, the BTS will fill in a default value based on the T3192Code.
; Interval allowed 0:5000(100). Defaults to 0.
;Timers.T3193=0

; Timers.T3195: integer: Non-responsive downlink TBF resource release timer, in milliseconds.
; See GSM04.60 Section 13.
; Interval allowed 2500:7500(100). Defaults to 5000.
;Timers.T3195=5000

[sgsn] Internal SGSN function configuration

; Debug: boolean: Add layer-3 messages to the GGSN.Logfile, if any.
;Debug=no

; Timer.ImplicitDetach: integer: GPRS attached MS is implicitly detached, in seconds.
; Should be at least 240 seconds greater than SGSN.Timer.RAUpdate. See 3GPP 24.008 11.2.2.
; Interval allowed 2000:4000(10). Defaults to 3480.
;Timer.ImplicitDetach=3480

; Timer.MS.Idle: integer: How long an MS is idle before the SGSN forgets TLLI specific information.
; Interval allowed 300:900(10). Defaults to 600.
;Timer.MS.Idle=600

; Timer.RAUpdate: integer: How often the MS reports into the SGSN when it is idle, in seconds. Also known as T3312, see 3GPP 24.008 4.7.2.2.
; Setting to 0 or >12000 deactivates entirely, i.e., sets the timer to effective infinity.
; Note: to prevent GPRS Routing Area Updates you must set both this and GSM.Timer.T3212 to 0.
; Interval allowed 0:11160(2). Defaults to 3240.
;Timer.RAUpdate=3240

; Timer.Ready: integer: Also known as T3314, see 3GPP 24.008 4.7.2.1. Inactivity period required before an MS may perform another routing area or cell update, in seconds.
; Interval allowed 30:90. Defaults to 44.
;Timer.Ready=44

[logging] Controls the logging levels of MBTS

; Level: keyword: Default logging level of MBTS.
; Valid values are: EMERG, ALERT, CRIT, ERR, WARNING, NOTICE, INFO, DEBUG.
; Defaults to NOTICE.
;Level=NOTICE

[test] Special parameters used to simulate errors

; These must never be set in a production environment.

; SimulatedFER.Downlink: integer: Probability (0-100) of dropping any downlink frame to test robustness.
;SimulatedFER.Downlink=0

; SimulatedFER.Uplink: integer: Probability (0-100) of dropping any uplink frame to test robustness.
;SimulatedFER.Uplink=0

; UplinkFuzzingRate: integer: Probability (0-100) of flipping a bit in any uplink frame to test robustness.
;UplinkFuzzingRate=0

[ybts] Configures ybts related parameters

; mode: string: YBTS mode of operation. This setting will specify which Javascript script
; to load for the operation. Possible values are:
; – nipc: loads script necessary for Network In a PC mode of operation
; – roaming: loads script necessary for the roaming mode of operation
;mode=nipc

; heartbeat_ping: integer: Interval, in milliseconds, to send heartbeat (PING)
; to MBTS application. Ping is sent only if idle, e.g. it is not sent if there
; are other signaling packets to be sent.
; This parameter is applied on reload.
; Allowed interval: 1000 .. 120000.
; Defaults to 30000.
;heartbeat_ping=30000

; heartbeat_timeout: integer: Interval, in milliseconds, to wait for heartbeat (PING)
; or any other signaling packets from the MBTS application.
; MBTS will be restarted if this timer elapses.
; This parameter is applied on reload.
; Minimum allowed value is heartbeat_ping plus 3000; it will be automatically adjusted.
; Maximum allowed value is 180000.
; Defaults to 60000.
;heartbeat_timeout=60000

; handshake_start: integer: Interval, in milliseconds, to wait for handshake
; from the MBTS application after it has started.
; MBTS will be restart if this timer elapses.
; This parameter is applied on reload.
; Allowed interval: 10000 .. 300000.
; Defaults to 60000.
;handshake_start=60000

; max_restart: integer: Maximum number of restart attempts.
; When the start counter reaches this value, the entire Yate application will exit!
; The start index is reset each time the peer notifies radio up after handshake.
; This parameter is applied on reload.
; Defaults to 10, minimum allowed value is 3.
;max_start=10

; peer_cmd: string: Command used to run the MBTS application.
; Defaults to expansion of ${modulepath}/server/bts/mbts.
;peer_cmd=${modulepath}/server/bts/mbts

; peer_arg: string: Optional command line parameter for the MBTS application.
; Defaults to no parameter.
;peer_arg=

; peer_dir: string: Directory to change after forking the MBTS application.
; Defaults to expansion of ${modulepath}/server/bts.
;peer_dir=${modulepath}/server/bts

; print_msg: boolean/string: Print sent/received messages to output if debug is at level 9.
; Allowed values are boolean values or string.
; If a non boolean value is specified, the message buffer will be shown.
; This parameter is applied on reload.
; Defaults to yes if empty or missing.
;print_msg=yes

; print_msg_data: boolean/string: Print sent/received messages data.
; This parameter is ignored if message print is disabled.
; Allowed values are boolean values or string.
; If a non boolean value is specified (empty string also) message data will be printed
; in a friendly way (e.g. XML data will be printed with children on separate lines).
; This parameter is applied on reload.
; Defaults to verbose.
;print_msg_data=verbose

; imei_request: boolean: Ask for IMEI when updating location.
; This parameter is applied on reload.
; Defaults to yes.
;imei_request=yes

; t305: integer: Disconnect (hangup) timeout interval, in milliseconds.
; After sending Disconnect, the call will wait for Release or Release Complete.
; Release will be sent on timer expiry.
; This parameter is applied on reload.
; Interval allowed: 20000..60000.
; Defaults to 30000.
;t305=30000

; t308: integer: Release timeout interval, in milliseconds (wait for Release Complete).
; Release will be sent on first expiry, call reference will be released on second expiry.
; This parameter is applied on reload.
; Interval allowed: 4000..20000.
; Defaults to 5000.
;t308=5000

; t313: integer: Connect (answer) timeout interval, in milliseconds (wait for Connect Ack).
; Call reference will be released on expiry.
; This parameter is applied on reload.
; Interval allowed: 4000..20000.
; Defaults to 5000.
;t313=5000

; sms.timeout: integer: Interval, in milliseconds, to wait for an MT SMS to complete.
; This interval includes paging if needed.
; This parameter can be overridden in the msg.execute message by a ‘timeout’ parameter.
; This parameter is applied on reload.
; Interval allowed: 5000..600000.
; Defaults to 300000.
;sms.timeout=300000

; ussd.session_timeout: integer: Timeout, in milliseconds, of USSD sessions.
; This parameter configures the overall USSD session duration.
; When timed out a session will be terminated.
; This parameter can be overridden in the msg.execute message by a ‘timeout’ parameter.
; This parameter is applied on reload.
; Minimum allowed value is 30000.
; Defaults to 600000 (10 minutes).
;ussd.session_timeout=600000

; export_xml_as: string: Specify in which way the XML will be passed along into
; Yate messages.
; Allowed values are:
; – string: pass the XML as a string
; – object: pass the XML as an object
; – both: pass the XML as a string and object
; This parameter is applied on reload.
; Defaults to object.
;export_xml_as=object

; tmsi_expire: integer: Interval, in seconds, to keep TMSIs.
; This interval should be enforced in the applications, not ybts.cpp.
; This parameter is applied on reload.
; Allowed interval: 7200..2592000.
;tmsi_expire=864000

[security] Configures security related parameters

; t3260: integer: Interval, in milliseconds, to wait for a response to authentication
; requests.
; Authentication will be aborted on timer expiry.
; This parameter is applied on reload.
; Interval allowed: 5000..3600000.
; Defaults to 720000.
;t3260=720000

; auth.call: boolean: Authenticate an MS on MT calls.
; This parameter is applied on reload.
; Defaults to no.
;auth.call=no

; auth.sms: boolean: Authenticate an MS on MT SMS.
; This parameter is applied on reload.
; Defaults to no.
;auth.sms=no

; auth.ussd: boolean: Authenticate an MS on MT USSD.
; This parameter is applied on reload.
; Defaults to no.
;auth.ussd=no

[handover] Configures handover parameters used by roaming.js

; enable: boolean: Globally enable handover functions.
; Default is enabled.
;enable=yes

; neighbors: string: Comma separated list of neighbor SIP addresses.
; Each neighbor will be periodically queried for target handover availability.
; Example: neighbors=10.0.0.1, 10.0.0.2, 10.0.0.3:5065.
; Default is empty.
;neighbors=

; reason: string: Text to place in the Reason SIP header.
; An empty or boolean false value disables the Reason header.
; Default: GSM;text=”Handover”.
;reason=GSM;text=”Handover”

[roaming] Configures parameters used by roaming.js when connecting YateBTS to a core network

; expires: int: Expire time for registrations.
;expires=3600

; reg_sip: string: ip:port where SIP requests are sent.
; It is REQUIRED to set reg_sip or nodes_sip.
; Example: reg_sip=192.168.1.245:5058
;reg_sip=sip.core.yatebts.com:5058

; nodes_sip: json object: node => ip:port of each YateUCN server
; node, which is computed based on the TMSI received from the handset.
; This ensures that registrations are always sent to the same YateUCN server.
; It is REQUIRED to set reg_sip or nodes_sip
; Example: nodes_sip={“123″:”192.168.1.245:5058″,”101″:”192.168.1.176:5059”}
;nodes_sip=

; nnsf_bits: int: Number of bits to use for
; the Non Access Stratum (NAS) Node Selection Function (NNSF).
;nnsf_bits=8

; my_sip: string: ip:port for the local SIP listener.
; Unless otherwise configured, this is the IP of the machine
; where YateBTS is installed.
; Example: my_sip=198.168.1.168
;my_sip=

; gstn_location: string: unique number that identies the cell in the national database
; associated to each base station by the network operator.
; REQUIRED!
;gstn_location=

[gsm_advanced] Configures parameters to change from 1 ARFCN mode to 2 ARFCN (configure 2-TRX mode)

To configure 2-TRX mode:
– set Channels.NumC1s=14
– set Channels.NumC7s=1
– set Radio.ARFCNs=2

To configure 1-TRX mode:
– set Channels.NumC1s=7
– set Channels.NumC7s=0
– set Radio.ARFCNs=1

 ;Number of Combination-I timeslots to configure.
 ;The C-I slot carries a single full-rate TCH, used for speech calling.
 ;Interval allowed: 0..100. Default value: 7(all timeslots of a single ARFCN)
Channels.NumC1s=7

 ;Number of Combination-VII timeslots to configure.
 ;The C-VII slot carries 8 SDCCHs, useful to handle high registration loads, SMS or USSD.
 ;If C0T0 is C-IV, you must have at least one C-VII also.
 ;Interval allowed: 0..100.
 ;Defaults to 0(timeslots).
Channels.NumC7s=0

 ;The number of ARFCNs to use.
 ;The ARFCN set will be C0, C0+2, C0+4, …Interval allowed: 1..10
 ;Defaults to 1 (single ARFCN unit)
Radio.ARFCNs=1

Our solutions