Osmocom Projects and Contributions for GSM and TETRA Networks

Author

Reads 11K

Person Holding Black and White Electronic Device
Credit: pexels.com, Person Holding Black and White Electronic Device

Osmocom is a collection of open-source projects that provide a wide range of tools and software for GSM and TETRA networks.

One of the key projects within Osmocom is OpenBSC, which is a free and open-source implementation of the Base Station Controller (BSC) for GSM networks.

Osmocom's contributions to GSM networks are extensive, with projects like OpenBSC and OsmoNITB allowing users to create and manage their own GSM networks.

Osmocom also provides a set of tools for TETRA networks, including OsmoTETRA, which is a free and open-source implementation of the TETRA protocol stack.

If this caught your attention, see: Telekom Networks Malawi

Osmocom Projects

Osmocom Projects are a collection of Free Software projects that aim to provide a complete GSM/GPRS network implementation.

OpenBSC and related projects are an implementation of GSM/GPRS network elements, including the BSC, SGSN, and NITB.

The OpenBSC software was founded by me in 2008 and is used to run a Free Software based GSM network.

OsmoBSC projects

OsmoBSC projects are an implementation of GSM/GPRS network elements, including the BSC, SGSN, and NITB.

OpenBSC and related projects were founded by me in 2008.

OsmoBSC allows you to run a Free Software based GSM network.

For more information, see https://openbsc.osmocom.org/.

Enter

Credit: youtube.com, Welcome / Introduction / Osmocom Project 101

Osmocom has done a phenomenal job of building network elements that interop with commercial equipment and comply to standards.

The Sysmocom team driving many of these projects has made significant contributions to the Osmocom community.

Osmocom supports a variety of hardware, including commercial BTS vendors' products, Sysmocom's hardware, and Range Networks' hardware.

The NanoBTS range from ip.access is also supported by Osmocom, and can be purchased second-hand at a relatively low cost.

You can use a mix of hardware, including Software Defined Radio (SDR) hardware like the LimeSDR or USRP, to build a GSM network.

Osmocom supports many different SDR hardware options, so you can choose the one that works best for you.

Grab a cheap programmable SIM card, and you'll be ready to start building a GSM network.

Mailing List

You can find discussions related to libosmocore on the [email protected] mailing list. To subscribe or view the list archive, visit https://lists.osmocom.org/mailman/listinfo/openbsc.

The Osmocom Mailing List Rules should be observed when posting to the list.

Contributing

Credit: youtube.com, Osmocom Roadmap

Contributing to Osmocom Projects is a straightforward process. We use a Gerrit based patch submission/review process for managing contributions.

You can find more details about this process on the Osmocom website. The current patch queue for libosmocore can be seen at https://gerrit.osmocom.org/#/q/project:libosmocore+status:open.

If you're interested in contributing financially, you can do so through opencollective.com/osmocom.

Osmo AIS TX

Osmo AIS TX is a proof-of-concept hack that allows you to transmit AIS frames using general-purpose SDR hardware and Gnuradio.

This hack is a great example of the flexibility of SDR technology, enabling users to repurpose hardware for various applications.

The source code for Osmo AIS TX is available at FIXME:git.

This shows that the project is still in its early stages, with some details to be ironed out before it's ready for prime time.

Despite its experimental nature, Osmo AIS TX has the potential to be a valuable tool for developers and hobbyists interested in AIS technology.

Here's an interesting read: 2024 United States Telecommunications Hack

Osmo USRP

Credit: youtube.com, Osmocom Demo (USRP B210, osmo-bts-trx, osmo-bsc, osmo-trx-uhd)

Osmo-USRP was a 2011 attempt to turn OpenBTS into a real GSM BTS with A-bis interface by merging code from both OpenBTS and Osmocom.

The code was never completed and is now abandoned, superseded by the use of OsmoBTS with OsmoTRX.

My original source code can be found at https://cgit.osmocom.org/openbts-osmo/ and had been continued by Tom Cooper at https://github.com/tacooper/Osmo-USRP.

You might enjoy: Radio Code

Osmo Auc

Osmo Auc was an early attempt, or proof-of-concept, to implement an Authentication Center based on the C-language libosmo-map.

The source code for Osmo Auc is available at https://git.osmocom.org/osmo-auc/, making it easy to explore and learn from.

Osmo Auc is a significant part of the Osmocom Projects, highlighting the community's focus on open-source development and collaboration.

The Osmocom Projects have a strong commitment to transparency, with the Osmo Auc source code being a prime example of this principle in action.

Osmo Auc's connection to libosmo-map showcases the interconnectedness of different projects within the Osmocom ecosystem.

TETRA and GSM

Credit: youtube.com, Recording TETRA Radio Signals to a CFILE With an RTL-SDR, and Decoding It With Osmo-Tetra-SQ5BPF

TETRA and GSM are two older telephony technologies that I'm excited to explore. The author of the article has a fondness for older tech, which is evident in their tone.

The author mentions GSM/UMTS, which is a circuit-switched technology that's often skipped over in favor of LTE. This suggests that TETRA and GSM are not as widely used or discussed as newer technologies.

As a telephony tragic, the author gets nostalgic thinking about the first phones they interacted with, which is a testament to the lasting impact of these older technologies.

Curious to learn more? Check out: Contact Center Telephony

GSM Intro

GSM is an older technology, but it's still widely used, especially in combination with 3G and 4G networks.

The core of GSM is shared with UMTS/3G, which is still around for the foreseeable future. Circuit Switched Fallback (CSFB) is still common today for voice calls on LTE handsets without VoLTE support.

GSM powers GSM-R, the rail-specific standard of GSM used across Europe. The uplink power of GSM can be up to 8 Watts, making its effective service area larger than 3G and 4G air interfaces.

OpenBSC was a free software implementation of GSM protocol stack and elements, running on Linux and requiring an E1 interface. It was written in C and licensed using the GPL license.

OpenBSC was later split into different projects, including OsmoBSC, OsmoMSC, and OsmoHLR.

OsmoTETRA

Credit: youtube.com, Gsm & TETRA

OsmoTETRA is a project that implements the TETRA protocol. It focuses on the lower layer of the protocol.

Some research has been conducted on OsmoTETRA, revealing that some government traffic is not properly secured. This is a significant concern for those who handle sensitive information.

Libraries and Tools

Osmocom has a range of libraries and tools that make development easier, like libsmpp34, which is a library implementing the SMPP SMS-Transport-Protocol, Version 3.4. The source code is available from https://cgit.osmocom.org/libsmpp34/.

Some notable repositories include osmo-ttcn3-hacks, which is a public repository with 26 commits in the past year, and osmo-bts, which is also public with 100 commits in the past year. The repositories are mostly mirrored from other sources and are available on https://gitea.osmocom.org.

asn1c is an ASN.1 compiler / code generator developed by Lev Walkin, and the Osmocom fork of asn1c/libasn1c can be found at https://cgit.osmocom.org/asn1c/ and https://cgit.osmocom.org/libasn1c/.

Libosmo-Abis

Libosmo-Abis is a library implementing the transport layer for the A-bis protocol.

Credit: youtube.com, OsmoDevCon'12: libosmo-abis and libosmo-netif

It supports different flavors, including E1 based A-bis over mISDN-supported controllers and E1 based A-bis over DAHDI-supported controllers.

Libosmo-Abis also supports IP based A-bis using SCCP/Lite, also known as IPA multiplex.

This library is a crucial part of the OpenBSC project, which is a free and open-source implementation of the GSM protocol stack.

More information about libosmo-abis can be found on the OpenBSC wiki at https://openbsc.osmocom.org/trac/wiki/libosmo-abis.

See what others are reading: Affordable Connectivity Program Wiki

Libsmpp34

Libsmpp34 is a library implementing the SMPP SMS-Transport-Protocol, Version 3.4.

It was originally developed by Raul Tremsal, and the Osmocom project made some improvements to it.

The source code is available from https://cgit.osmocom.org/libsmpp34/.

Libosmo Asn1 Tcap

Libosmo Asn1 Tcap is a C-language shared library that provides encoding and decoding functions for the TCAP protocol. It utilizes libasn1c to achieve this functionality.

The source code for Libosmo Asn1 Tcap can be found at https://git.osmocom.org/libosmo-asn1-tcap/.

Libosmo Asn1 Map

Libosmo Asn1 Map is a C-language shared library that utilizes libasn1c to provide encoding and decoding functions for the MAP protocol. It's a valuable tool for developers working with the GSM MAP.

Credit: youtube.com, Introduction to ASN.1

The source code for libosmo-asn1-map can be found at https://git.osmocom.org/libosmo-asn1-map/. This makes it easy to access and use in your own projects.

This library is designed to help with the encoding and decoding of MAP protocol messages, which is a crucial step in many communication systems. By providing a simple and efficient way to work with MAP, libosmo-asn1-map can save developers a lot of time and effort.

Repositories

Repositories are a treasure trove of open-source libraries and tools, and Osmocom has a vast collection of them.

One of the most popular repositories is osmo-ttcn3-hacks, which has 26 commits in the past year and is mirrored from gitea.osmocom.org.

The osmo-bts repository has seen 36 commits in the past year and is a public implementation of the Osmocom GSM Base Transceiver Station (BTS).

The pysim repository is a Python tool to explore and program SIMs / USIMs / ISIMs, with 445 commits in the past year and licensed under GPL-2.0.

Osmocom also has a range of other repositories, including osmo-bsc, osmo-msc, osmo-ccid-firmware, and osmo-el2tpd.

Here's a list of some of the repositories, including their number of commits in the past year and their licenses:

Asn1c / Libasn1c

Close-up view of intertwined black cables and connectors in an outdoor telecom setup.
Credit: pexels.com, Close-up view of intertwined black cables and connectors in an outdoor telecom setup.

Asn1c / Libasn1c is an ASN.1 compiler and code generator developed by Lev Walkin.

asn1c is used to provide encoding and decoding functions for various protocols, including TCAP and MAP.

It's worth noting that the Osmocom fork of asn1c/libasn1c can be found at https://cgit.osmocom.org/asn1c/ and https://cgit.osmocom.org/libasn1c/ respectively.

asn1c has been modified by the Osmocom team to include additional features such as APER support and type name prefixing support.

The original home page of asn1c can be found at https://lionet.info/asn1c/compiler.html.

asn1c is utilized by other libraries, including libosmo-asn1-tcap and libosmo-asn1-map, to provide encoding and decoding functions for the TCAP and MAP protocols respectively.

BB

BB is a free firmware for the baseband processor of mobile phones, handling encoding and radio communication for voice and data.

It's the only existing free implementation of baseband firmware, excluding failed projects.

OsmocomBB implements the GSM protocol stack's three lowest OSI Layers of the client side GSM protocol and device drivers.

Blue and Yellow Phone Modules
Credit: pexels.com, Blue and Yellow Phone Modules

The protocol layers forming the kernel exist on the baseband processor, typically consisting of an ARM processor and a digital signal processor.

It has support for the Calypso chipset produced by Texas Instruments.

Karsten Nohl has extended OsmocomBB to detect IMSI catchers.

More about OsmocomBB can be found at https://bb.osmocom.org/.

Open GGSN

Open GGSN is an open source GPRS Gateway Support Node (GGSN) implementation.

It was originally developed by Jens Jakobsen, who unfortunately abandoned the project in 2005.

For more information about OpenGGSN, you can visit https://openbsc.osmocom.org/trac/wiki/OpenGGSN.

A different take: Open Telecommunications

Simulators and Test Tools

Osmocom has a wide range of simulators and test tools that can be used to test and debug the network.

One of the most popular simulators is the OsmoBTS simulator, which is a software-only implementation of a BTS that can be used to test and debug the network.

The Osmocom simulators and test tools are highly customizable and can be used to simulate various network scenarios.

Credit: youtube.com, OsmoDevCon 2019 - osmo-rfds: Osmocom RF delay simulator

The OsmoBTS simulator can be used to test and debug the BTS protocol, and it can also be used to simulate a BTS in a lab environment.

The simulators and test tools are also highly scalable and can be used to test and debug large networks.

The Osmocom community is actively involved in the development and maintenance of the simulators and test tools, ensuring that they remain up-to-date and relevant.

This makes it easier for developers and network administrators to use and maintain the simulators and test tools.

PySim

PySim is a small utility used to program different programmable SIM cards.

Developed and maintained by Sylvain Munaut, it's a reliable tool for various tasks. I've had the chance to contribute a few patches to it, and it's been a valuable experience.

The source code for PySim is available from https://cgit.osmocom.org/pysim/. For more information, check out https://openbsc.osmocom.org/trac/wiki/OpenBSC_Crypto.

SimTrace

SimTrace is a project that allows protocol tracing of the interface between a SIM card and a phone.

It consists of hardware, device firmware, and host software.

Code Generation and Utilities

Credit: youtube.com, 3G: Osmocom-Cellular-Infrastructure

Code generation is an essential aspect of software development, and Osmocom has an interesting approach to it.

The osmo-codegen project aims to use code generation for the GSM Layer 3 protocol description.

The idea behind osmo-codegen is to describe the L3 message definitions into a domain-specific language (DSL), and then use an ANTLR3 based parser + code generator.

Unfortunately, no actual code generator has been written for osmo-codegen yet.

The source code for osmo-codegen can be found at https://git.osmocom.org/osmo-codegen/.

An earlier version of the project was called osmo-map-masq and is available from https://git.osmocom.org/osmo-map-masq/.

The DSL and ANTLR3 parser for osmo-codegen already exist, but the code generator is still in development.

Erlang and SS7

Erlang is a programming language used in various Osmocom projects, including SS7 protocol implementations.

The Erlang implementation of SS7 protocol layers, including codecs and state machines, can be found in the erlang/osmo_ss7 project. This project includes codecs for various protocols like BSSMAP, IPA, and ISUP.

Credit: youtube.com, OsmoDevCall - SS7 and SIGTRAN in 2G/3G networks

The erlang/osmo_ss7 project forms an Erlang application with a supervisor hierarchy, making it a robust and maintainable solution. The source code is available on the Osmocom Git server.

Erlang is also used in other Osmocom projects related to SS7, such as erlang/mgw_nat, which is a transparent proxy for SIGTRAN connections.

Libosmo-Tcap

Libosmo-Tcap is a 2010 implementation of TCAP state machines and an associated application interface in C language. It uses libosmo-asn1-tcap for encoding and decoding.

The source code for Libosmo-Tcap is available at https://git.osmocom.org/libosmo-tcap/.

Erlang/Osmo SS7

Erlang/Osmo SS7 is an Erlang implementation of various versions of SIGTRAN and SS7 protocol layers. It includes codecs for several protocols like BSSMAP, IPA, ISUP, M2PA, M2UA, M3UA, MTP2, MTP3, and SCCP.

The Erlang/Osmo SS7 code forms an Erlang Application and includes a supervisor hierarchy. This is a key feature that makes it easier to manage and maintain the code.

Erlang/Osmo SS7 includes state machines for M3UA, MTP2, MTP3, and SUA. These state machines are crucial for handling the complex logic of the SS7 protocol.

The code also includes SCTP encapsulation of the various xUA. SCTP is a transport protocol that provides reliable and ordered delivery of packets.

The Erlang/Osmo SS7 code is available at https://git.osmocom.org/erlang/osmo_ss7/. If you're interested in exploring the code further, this is the place to start.

Calvin Connelly

Senior Writer

Calvin Connelly is a seasoned writer with a passion for crafting engaging content on a wide range of topics. With a keen eye for detail and a knack for storytelling, Calvin has established himself as a versatile and reliable voice in the world of writing. In addition to his general writing expertise, Calvin has developed a particular interest in covering important and timely subjects that impact society.

Love What You Read? Stay Updated!

Join our community for insights, tips, and more.