The Osmocom project has released new version of the CNI (Cellular Network Infrastructure) software, including OsmoTRX, OsmoBTS, OsmoBSC, OsmoMGW, OsmoMSC, OsmoHLR, OsmoSGSN, OsmoGGSN.
Those new tagged/released versions contain half a year of work since the previous versions released during summer 2018. The primary focus was on bug-fixing and stabilization as well as some major new features, such as inter-BSC-handover support in osmo-bsc.
You can find pre-compiled binary packages of our latest release for a variety of Debian and Ubuntu GNU/Linux versions at Latest_Builds.
List of tagged versions and link to related ChangeLog¶
Noteworthy Changes¶
Misc¶
- the asciidoc source of the user manuals + VTY reference manuals is now always kept inside the respective repository: osmo-bts.git contains the osmo-bts manual. Before this, we used to have all manuals in osmo-gsm-manuals.git.
- logging vty: deprecate the 'everything' keyword
- various logging related improvements
- various improvements of osmo_fsm
- new osmo-config-merge utility
- SGsAP protocol encoding/decoding (SGsAP not yet part of osmo-msc!)
- GSMTAP definitions for LTE RRC and NAS sub-types
- introduce osmo_timerfd support as part of libosmocore (recurring timers)
- Introduce OsmoTRX user manual
- Direct support of LimeSuite as
osmo-trx-lms
without the detour of uhd+soapy-uhd+soapysdr
- split device-specific parts into their own classes + binaries: osmo-trx-{uhd,lms,usrp1}
- make better use of diferent logging sub-systems / log levels
- various correctness fixes related to advanced SACCH FILL scenarios with different SI5/SI6 per channel/subscriber
- various fixes to bit-rotten CBCH support; related generalization
- CBCH support for osmo-bts-trx
- extend precision of TOA mesaurement reports to 1/256 symbol duration
- make RTP port range configurable
- extensive fixes on correctness of computed + reported measurement reports
- Fix build against gpsd >= 3.18
- Allocate TRX for BTS dynamically, deprecate "-t" command line option
- Initial support for OpenCellular OC-2G BTS model/PHY
- inter-BSC hand-over support (AoIP and SCCPlite)
- large refactoring: use FSMs for lchans; timeslots; MGCP endpoints; ...
- Implement RR Classmark Enquiry in case
- various LCLS related fixes
- various codec / channel type related fixes during ASSIGNMENT
- interop tested against 3rd party MSCs for both AoIP and SCCPlite
- Implementation of MSC-originated CLASSMARK inquiry procedure for MS/UE without early classmark sending to allow A5/3 encryption
- mncc: fix byte ordering of IP-Address in mncc
- various improvements on state introspection via VTY
- forward SS / USSD messages via GSUP to HLR rather than processing it in MSC
- optional forward of SMS via GSUP to/from HLR rather than using internal SMSC
- fix Classmark Update without VLR subscriber
- vty: add SCCP related vty commands
- GSUP client: send CN domain IE on LU request
- vty: add command to show all known BSC
- Add GSUP message router
- Add concept of Internal (IUSE) and external (EUSE) USSD handlers
- Implement handling of USSD received from OsmoMSC via GSUP
- Introduce shared libosmo-gsup-client library for client programs connecting to OsmoHLR (like OsmoMSC, OsmoSGSN).
OsmoMGW (and libosmo-mgcp-client)¶
- Remove libosmo-legacy-mgcp and osmo-bsc-mgcp (they live in deprecated openbsc.git)
- various OSMUX related fixes
- use IETF-allocated port number for call-agent side as default
- introduce the concept of payload type maps
- rewrite/translate payload type numbers as per the ptmap
- make MGCP parser more tolerant (and interoperable)
- add extensive statistics / counters and improve VTY introspection
- various logging improvements (more strings, less numbers)
- better SIP/MNCC cause mapping
OsmoSTP (and libosmo-sigtran)¶
- make SCCP timers configurable (required for some SCCPlite peers)
- osmo-stp: add SCCP related VTY commands
- allow less characters for SCCP address book entries
- skip simple-client default as/asp when saving VTY config
- fix ipa_asp_fsm down state transition
- gprs_gmm: introduce a GMM Attach Request FSM
- sgsn_ggsn_ctx_drop_pdp: protect against nullpointer when MM is gone
- gprs_gmm: dont answer unknown IMSI/TMSI on Service Requests NET_FAIL
- gprs_gmm: Fix missing Security Command for 3G when attaching
- sgsn_libgtp: fix a potential memleak when the GGSN is not reachable
- gb_proxy: Add ctrl interface and nsvc-state, gbproxy-state commands
- osmo-sgsn: ping GGSN periodically and check for restart counter
- Disarm T3395 when dettaching mmctx from pdpctx
- sgsn: cdr: Fix uninitialized string access if ggsn is detached
- gbproxy: Add VTY parameter: link stored-msgs-max-length
- gbproxy: Add new VTY-managed timer: link-list clean-stale-timer
- Remove local libgsupclient; Use libosmo-gsup-client from osmo-hlr
- ggsn: ctrl iface: listen on IP configured by VTY
- gtp: Allow recv DEL CTX REQ in sgsn and DEL CTX RSP in ggsn
- gtp: Log ignore CTX DEL REQ due to no teardown and only 1 ctx active
- gtp: Add new API to avoid freeing pdp contexts during DEL CTX REQ
- fix support for multiple IPCP in PDP protocol configuration options
The Osmocom project has released new version of the CNI (Cellular Network Infrastructure) software, including OsmoBTS, OsmoBSC, OsmoMGW, OsmoMSC, OsmoHLR, OsmoSGSN, OsmoGGSN.
Those new tagged/released versions contain half a year of work since the previous versions released in early November 2017. The primary focus was on bug-fixing and stabilization. Many bugs were introduced during the split of the NITB into individual network elements during 2017, and even more bugs exposed by our ever-growing test coverage, particularly in the Osmocom TTCN-3 test suites.
All-in-all, the post-NITB stack has gained a lot in terms of spec compliance, robustness, stability and features during this period.
You can find pew-compiled binary packages of our latest release for a variety of Debian and Ubuntu GNU/Linux versions at
Latest_Builds.
The developer performing the release related work was Pau Espin. Thanks!
List of tagged versions and link to related ChangeLog¶
Noteworthy Changes¶
Misc¶
- GnuTLS fall-back for obtaining randomness
- support for three-digit MNC throguhout the code-base
- add talloc introspection via VTY
- tighter CRTL input parsing
- stricter VTY config file parsing
- allow to print only basename of source code file in logging
- print log level with color-keying of the level name
- OsmoTRX has now a VTY interface and uses Osmocom-style logging + config file
- use GNU autotest, like other osmocom projects
- re-introduce support for USRP1 devices
- build multiple binaries rather than selecting UHD / USRP1 at compile time
- EFR decoding fixes
- fix dynamic detection/use of CPU optimization (SSE3 vs SSSE3)
- various parsing/encoding fixes for trx-control interface
- add example config file for USRP B200
- higher accuracy reporting of time of arrival
- fix LAPDm UA memory leak
- put useful information into RTCP SDES packets
- fix AMR DTX FSM related crash
- many fixes related to measurement processing + reporting
- more robust RSL message parsing + error reporting
- implement DELETE INDICATION on AGCH overflow
- fix crashes in IPA DLCX processing
- fix operation without System Information Type 1
- support all types of Cell Identifier Lists in BSSMAP PAGING
- fix intra-BSC hand-over (used to work in NITB)
- fix various error paths in hand-over logic
- introduce new "handover 2" algorithm from Andreas Eversberg
- introduce load-based hand-over to balance channel load between overlapping BTSs
- implement SI2ter + SI2bis rest octets
- switch to osmo-mgw for handling media/user plane (instead of old osmo-bsc_mgcp)
- introduce osmo_fsm for subscriber_connection
- reduce several GSM timers to more reasonable default values (T3113, T3109, T3101, ...)
- permit codec list with both TCH/F and TCH/H channels
- permit network supporting more than one A5 cipher
- fix missing L2 pseudo-length in SI5/SI6 messages
- introduce Access Control Class (ACC) ramping to deal with overload situations on network power-up
- switch to "late assignment" by default (we used to do early / very early assignment)
- many fixes related to 3GPP spec / protocol compliance
- fix various use-after-free in GSUP and CC
- fix GSM-MILENAGE in presence of 2G keys
- cancel all paging on IMSI DETACH
- many fixes related to 3GPP spec / protocol compliance
- permit network supporting more than one A5 cipher
- properly pass bearer capabilities between MNCC and CC
- switch to osmo-mgw for handling media/user plane (instead of old osmo-bsc_mgcp)
- use dynamic MGCP endpoint allocation using wildcard
- migrate away from openssl to new libosmocore rand abstraction
- fixes related to SMS validity time
- delete expired SMS automatically
- fix transmission of MM INFO messages
- fix SMS to non-local subscriber
- fix various crashes
- fix response to PURGE_MS
- notify GSUP clients (MSC, SGSN) when HLR subscriber information changes
OsmoMGW (and libosmo-mgcp-client)¶
- Introduce osmo_fsm client API
- various fixes of SDP parser
- significantly improved compliance with MGCP spec
- wildcarded endpoint allocation in CRCX
- integrate libsofia-sip logging with libosmocore logging
- add systemd service file
OsmoSTP (and libosmo-sigtran)¶
- fix various memory leaks
- introduce IPA/SCCPlite support (allows translation of SCCPlite to M3UA/SUA)
- fix some crashes
- migrate away from openssl to new libosmocore rand abstraction
- fix display of GTP addresses in VTY
- re-introduce support for kernel GTP acceleration (was temporarily removed when migrating from OpenGGSN)
- fix byte-order of IPCP IPv4 DNS server addresses
- add support for IPv4v6 End User Addresses
- Validate packet src addr from MS
- various sgsnemu fixes
As Ubuntu 18.04 (Bionic Beaver) has been released two days ago, Osmocom has enabled Binary_Packages builds for this new distribution in both nightly and latest. As a result, you can now use our binary package feeds on this most recent incarnation of Ubuntu just like on the other supported distributions.
This was relatively easy due to the openSUSE Build Service (OBS) immediately adding support for Ubuntu 18.04. so all we had to o is enable it, and fix up some minor failures. Thanks to OBS for making supporting new distributions very easy!
A team of Osmocom volunteers has continued the tradition of operating an experimental test network at the annual Chaos Communication Congress 34C3 held in Leipzig (Germany) from December 27 through December 30, 2017.
You can find some more information about this network at the GSM page in the 34C3 wiki and the report by tsaitgaist as part of the 34C3 infrastructure review (from minute 35 onwards of http://live.dus.c3voc.de/relive//34c3/8911/muxed.mp4)
Osmocom thanks
- Deutsche Telekom for providing us with 3 ARFCN in the 1800 MHz band
- Bundesnetzagentur for providing the experimental license for UMTS in the 850 MHz band
- The team of volunteers working on the setup and operation of the network
The Outreachy project has selected work on Debian packaging for Osmocom for the Dec 2017 to Mar 2018 Outreachy Interns
You can read the related announcement at the outreachy announce mailing list
Kira "kobr" Obrezkova will be working on this, with Debian developer Thorsten Alteholz as mentor.
Congratulations, Kira! Thanks to Thorsten Alteholz for mentoring as well as to Outreachy and its sponsors!
In Osmocom, we have made tremendous progress during 2016 and 2017 in re-structuring our code base, with a proper 3GPP AoIP interface between BSC and MSC, the split-up of OsmoNITB, the externalization of the HLR and full 3G integration. This has had lots of fall-out in terms of packaging, and it's important to have the new post-NITB architecture packaged properly in upstream Debian.
Outreachy provides three-month internships for people from groups traditionally underrepresented in tech. Interns are paid a stipend of $5,500 and have a $500 travel stipend available to them. Interns work remotely with mentors from Free and Open Source Software (FOSS) communities on projects ranging from programming, user experience, documentation, illustration and graphical design, to data science.
Starting today, Osmocom offers an osmocom:latest package feed with Ubuntu + Debian packages of the latest tagged releases of all Osmocom cellular infrastructure software.
Since early 2016, Osmocom has already been offering Nightly_Builds of the master-of-the-day of each individual projects git repository to enable users to utilize Osmocom software without having to build from source. However, by their very nature, nightly builds are volatile as they track each indiviudal development step. This is interesting for users who are testing latest developments or who need to track fixes introduced only very recently.
The new Latest_Builds only change whenever a new release tag is set in the respective source code repository, i.e. every few weeks to months for a given project. While this is not a long-terms supported release, osmocom:latest
is a much more suitable choice for deployments.
During the last couple of days, I've been working on completing, cleaning up and merging a Virtual Um interface (i.e. virtual radio layer) between OsmoBTS and OsmocomBB. After I started with the implementation and left it in an early stage in January 2016, Sebastian Stumpf has been completing it around early 2017, with now some subsequent fixes and improvements by me. The combined result allows us to run a complete GSM network with 1-N BTSs and 1-M MSs without any actual radio hardware, which is of course excellent for all kinds of testing scenarios.
The Virtual Um layer is based on sending L2 frames (blocks) encapsulated via GSMTAP UDP multicast packets. There are two separate multicast groups, one for uplink and one for downlink. The multicast nature simulates the shared medium and enables any simulated phone to receive the signal from multiple BTSs via the downlink multicast group.
In OsmoBTS, this is implemented via the new osmo-bts-virtual
BTS model.
In OsmocomBB, this is realized by adding virtphy
virtual L1, which speask the same L1CTL protocol that is used between the real OsmcoomBB Layer1 and the Layer2/3 programs such as Mobile and the like.
Now many people would argue that GSM without the radio and actual handsets is no fun. I tend to agree, as I'm a hardware person at heart and I am not a big fan of simulation.
Nevertheless, this forms the basis of all kinds of possibilities for automatized (regression) testing in a way and for layers/interfaces that osmo-gsm-tester cannot cover as it uses a black-box proprietary mobile phone (modem). It is also pretty useful if you're travelling a lot and don't want to carry around a BTS and phones all the time, or get some development done in airplanes or other places where operating a radio transmitter is not really a (viable) option.
If you're curious and want to give it a shot, I've put together some setup instructions at Virtual Um.
We're happy to announce that there will be two talks related to the Osmocom cellular infrastructure projects at the upcoming OpenCellular Workshop held in Nairobi, Kenya on June 19 and June 20.
At the OpenCellular workshop hosted by iHub, technology and business leaders will share their insights and drive discussions around radio design, site planning, business models and many other topics on rural connectivity.
The two talks about Osmocom will be on:
- Osmocom: Open-source cellular stack for 2G and 3G by Harald Welte, Osmocom and sysmocom co-founder
- End to end testing of the Osmocom stack by Pau Espin Pedrol, engineer at sysmocom
You can learn more about the event (including venue, schedule, etc.) at https://www.opencellular.ihub.co.ke/
We're looking forward to meeting all parties involved in providing rural communications, as we consider the Osmocom cellular protocol stack a key factor in driving cost and innovation in connecting the next billion mobile subscribers.