2.5G – GSM and GPRS

5.0 alpha : source

New APIs and revised Layer 2 code.

4.0.0 : source | binary

Production release for 2.5G networks.


1.0 alpha : source | wiki

Initial publication.

Working on the Bleeding Edge


You can clone latest from the repository on GitHub. Issues and Pull requests are welcome.

Follow the project on GitHub.


Future 5.0 (GitHub master)

  • openbts
    • Event publishing framework added to NodeManager.
    • PhysicalStatus event API added which exposes SACCH meauserement report data in realtime.
    • Combination I and Combination VII counts are now automatically allocated based on number of ARFCNs configured.
    • Layer 2 architecture refactored.
    • Control channel architecture refactored.

4.0.0 (2014.03.25)

  • all components
    • New JSON management API called “NodeManager” to allow third-party applications to easily manage each component (OpenBTS, SMQueue and SIPAuthServe all speak NodeManager).
    • Binary package support added for Ubuntu 12.04.
  • openbts
    • Layer 3 completely rewritten as a proper state machine dramatically increasing performance and stability.
    • New PowerScanner application to quickly determine the cleanest ARFCNs in a given area.
  • smqueue
    • Refactored to use multiple threads and cache messages when not running. Reliable message delivery rates increased 2.5x.
  • sipauthserve
    • Refactored to use a memory database cache, resulting in a 14x higher REGISTER message processing capacity. (2014.01.07)

  • sip programmer
    • added batch codes to support programming newer SIM card lots

3.1.3 (2013.09.27)

  • sipauthserve
    • performance: registrations-per-second capacity boosted by ~90%
    • bug fix: package installation no longer fails if registry database has an empty sip_buddies table
  • openbts
    • improvement: limit valid ARFCN choices based on currently selected radio band
    • improvement: track dropped calls with new stats counter [CLI> stats OpenBTS.GSM.CC.DroppedCalls?]
    • bug fix: correctly validate EGSM ARFCNs
  • system-configs
    • bug fix: correctly define resolvconf as a dependency
  • sip programmer
    • bug fix: correctly define pcscd as a dependency so smartcard devices are recognized out-of-the-box

3.1.2 (2013.06.20)

  • all components
    • improvement: package install scripts are more robust
    • improvement: file permissions are now automatically fixed on boot if needed
  • sipauthserve
    • improvement: automatically update database schema if needed
    • bug fix: correctly define “screen” package as a dependency
  • asterisk-configs
    • improvement: ODBC configuration now works out-of-the-box
  • asterisk
    • improvement: first appearance of this package, our fully tested build of Asterisk
  • smqueue
    • bug fix: correctly define “screen” package as a dependency
  • openbts
    • bug fix: correctly define “screen” package as a dependency

3.1.1 (2013.05.28)

  • all components
    • performance: enable high-concurrency WAL mode on sqlite3 databases by default
    • improvement: package install scripts are more robust
    • bug fix: silenced some noisy and innocuous log messages
    • bug fix: automatically retry database access when non-critical failures are encountered
    • bug fix: user customized configuration files are no longer overwritten by newer packages, a per-file choice is now presented
  • sipauthserve
    • crash fix: fail gracefully when a database query returns NULL
  • asterisk-configs
    • bug fix: incoming caller id now transmitted correctly in local mobile-to-mobile calls
    • bug fix: calling source number is now read and displayed correctly in log messages
  • openbts
    • improvement: produce a warning when GPRS is enabled on an installation incapable of GPRS
    • bug fix: no longer report “0” as an invalid value for GSM.Timer.T3212
    • crash fix: L3TI generator can no longer produce invalid values

3.1.0 (2013.05.11)

  • all components
    • Configuration schema and validation system added which allow all parameters to be sanity checked.
    • Installable binary packages for all components (Ubuntu 10.04 supported for now, more coming).
  • openbts
    • Added GPRS
    • Added audit CLI command which can check inter-parameter relationships and validate configuration.
    • Added trxfactory CLI command which can query the radio’s factory calibration and report changes.


  • no notes

2.9 (Plaquemine)

  • openbts
    • socket-based remote CLI

2.8 (Opelousas)

  • openbts
    • added SHA1/RSA image verification
    • move databases to /etc and /var
    • SIP-based authentication

2.7 (Natchitoches)

  • openbts
    • converted TMSITable to sqlite3 (r902)
    • sqlite3-based configuration (r???)
    • converted Logger to syslogd (r903)
    • added support for rest octets (r1022)
    • external database for transaction reporting (r1184)
    • external database for channel status reporting (r1203)
    • in-call delivery and submission of text messages (r1231)
    • RFC-2833 DMTF (r1249)

2.6 (Mamou, r886)

  • openbts
    • fixed infamous fusb bug (r582)
    • fixed idle-filling table size bug
    • smoother uplink power control
    • load-limiting downlink power control
    • new “config” features (optional, static)
    • IMEI interrogation
    • fixed MOD “missing FIFO” bug
    • configurable short code features
    • fixed transceiver startup crash (r646)
    • readline support is back
    • fixed timing advance bug (r844)
    • added CLI “chans” command
    • track time-of-use in TMSI table (r844)
    • added CLI “noise” command (r844)
    • added CLI “rxpower” command (r844)
    • added CLI “unconfig” command

2.5.4 (Lacassine, r812)

  • openbts
    • merged fixes to build under latest Fedora and to build with git GnuRadio (r814)

2.5.3 (Lacassine, r756)

  • openbts
    • merged fix for transceiver startup crash due to use of uninitialized variables (r646)
    • merged fix for fusb bug from trunk (r582)

2.5.2 (Lacassine, r630)

  • openbts
    • fixed channel assignment bug for Nokia DCT4+ handsets

2.5.1 (Lacassine, r595)

  • openbts
    • fixed some build bugs for some Linux distros

2.5 (Lacassine, r551)

  • openbts
    • imported Joshua Lackey patches
    • SIP fixes from Anne Kwong
    • SIP fixes from testing with SMS server
    • L3 TI handling fixes
    • SMS server support
    • GNU Radio 3.2 compatibility
    • configurable max range and LU-reject cause
    • “page” & “testcall” CLI features

2.4.2 (Kinder, r482)

  • openbts
    • zero-length calling party number bug
    • g++ 4.4 #includes

2.4.1 (Kinder, r462)

  • openbts
    • fixed lots of valgrind errors

2.4 (Kinder, r208)

  • openbts
    • fixed BCCH neighbor list bug
    • support for neighbor lists
    • fixed support for non-local Asterisk servers
    • cleaner configuration management
    • more realtime control of BCCH parameters
    • proper rejection of Hold messages
    • fixed L3 hanging bug in MTDCheckBYE

2.3 (Jean Lafitte, r190)

  • openbts
    • check for out-of-date RACH bursts
    • better TRX-GSM clock sync
    • formal logging system
    • command line interface
    • emergency call setup

2.2 (Houma, r122)

  • openbts
    • added LEGAL notice
    • removed Assert classes
    • stop paging on page response
    • fixed Pager-spin bug
    • fixed Transceiver spin bugs
    • fixed 2^32 microsecond rollover bug
    • reduced stack footprints in Transceiver
    • fixed SMS timestamps
    • check LAI before using TMSI in LUR
    • reduced memory requirement by 75%
    • removed PagerTest
    • fixed stale-transaction bug in paging handler
    • fixed USRP clock rollover bug
    • faster call connection
    • new USRPDevice design

2.1 (Grand Coteau, r70)

  • openbts
    • DTMF support
    • fixed more Linux-related build errors: -lpthread, TLMessage constructor
    • expanded stack to prevent overflows in Linux
    • moved gSIPInterface to main app
    • fixed iterator bug in Pager

2.0 (St. Francisville, r54)

  • openbts
    • SMS support
    • file-based configuration

1.6 (New Iberia, r130)

  • openbts
    • import of all 2.2 improvements to non-SMS release

1.5 (Eunice, r39)

  • openbts
    • fixed L2 bugs related to segmentation
    • removed incomplete SMS directory
    • moved “abort” calls into L3 subclasses

1.4 (Donaldsonville, r23)

  • openbts
    • fixed Ubuntu build error

1.3 (Carencro, r1)

  • openbts
    • first post-injunction release

1.2 (Breaux Bridge, r10088)

  • openbts
    • GNU Build, very early assignment

1.1 (Arnaudville, r10019)

  • no notes


  • openbts
    • completed L1, L2