We are happy to announce that the OsmoCon2017 schedule has just become even more exciting with the addition of two talks on two projects that relate to Osmocom: OpenCellular (as a hardware platform to run OsmoBTS, OsmoBSC, OsmoNITB, ...) and Community Cellular Manager as a software to manage Osmocom-based cellular networks.
Community Cellular Manager¶
CCM is a software management and deployment suite enabling the operation of small-scale cellular networks that can also be used with the OpenCellular platform we announced in June. It makes it possible for organizations with limited technical capacity to leverage OpenCellular or third-party radio access network (RAN) solutions to build small-scale cellular networks in their own communities. See here for more information (and source code!).
Speaker: Shaddi Hasan (Facebook)
OpenCellular is an open source and cost-effective, software-defined wireless access platform (for GSM BTS and other standards), aimed to improve connectivity in remote areas of the world. See here for more information about OpenCellular.
Speaker: Kashif Ali (Facebook)
OsmoCon 2017 updates¶
There are some updates related to OsmoCon2017, the first Osmocom Conference, held on April 21st, 2017 in Berlin, Germany.
Summary¶Summary (for those too busy to read the full post):
- Schedule of talks has been released
- Travel Grants available for participants who are otherwise unable to travel to Berlin
- Social Event details available, including menu
- April 21st is approaching fast, make sure you get your Ticket in time. Limited number of seats available.
Schedule has been release¶
The list of talks with their abstracts has been on the website for quite some time, but now we actually have put together a schedule based on those talks.
Please see OsmoCon2017 for the schedule.
As you can see, the day is fully packed with talks about Osmocom cellular infrastructure projects. We had to cut some talk slots short (30min instead of 45min), but I'm confident that it is good to cover a wider range of topics, while at the same time avoiding fragmenting the audience with multiple tracks.
We are happy to announce that we have received donations to permit for providing travel grants!
This means that any attendee who is otherwise not able to cover their travel to OsmoCon 2017 (e.g. because their interest in Osmocom is not related to their work, or because their employer doesn't pay the travel expenses) can now apply for such a travel grant.
Tech Talks are nice and fine, but what many people enjoy even more at conferences is the informal networking combined with good food. For this, we have the social event at night, which is open to all attendees.
See more details about it at OsmoCon2017_SocialEvent.
The Osmocom core network landscape is transforming. Adding full UMTS Authentication support, paired with the 3G developments of the past year, has rocked the boat of the good old OsmoNITB. Here is why:
From previous 3G announcements1, you may already know that the OsmoNITB, the Network-In-The-Box, combines BSC, MSC and HLR (among other things), which has drawbacks. Our MSC code was nicely placed in a separate libmsc, but libmsc never stood on its own. From the start it always had its fingers deep in libbsc data structures. In 3G core networks, there no longer is a BSC, so we needed a clear interface to talk to libmsc, and make it not depend on libbsc. We do have a standalone OsmoBSC, so technically, it could talk to a standalone MSC implementation, instead of having both in the same program. Thus, on the 3G branch, we basically killed off the BSC part of OsmoNITB: the first step towards our brand new standalone OsmoMSC.
But what is a 3G core network without full 3G authentication? UMTS AKA2 was published in Release 1999 of the 3GPP technical specifications (R99) and provides the means for mutual authentication, usually using the Milenage algorithm. Since R99, SIM cards (USIM) not only verify their authenticity to the core network, they also expect the core network to verify its own authenticity, hence the term mutual authentication. 3G USIMs may fall back to pre-R99 authentication, but in general, 3G is expected to be synonymous with UMTS AKA. So far, Osmocom fell short of that.
We have had the Milenage algorithms implemented in libosmocore for years, but our stock OsmoNITB is unable to use it. The main reason: the subscriber database is incapable of managing UMTS AKA tokens. Another shortcoming of this database is that it runs synchronously in the OsmoNITB process: if it is locked or needs a bit longer, our entire core network stalls until the request is completed. And a third clumsy fact is that the OsmoSGSN cannot use OsmoNITB's subscriber database, duplicating the authorization configuration.
It made sense to solve all of these subscriber database problems in one effort, again trimming OsmoNITB, but this time at the other end. Enter stage the brand new OsmoHLR, a separate process managing the subscriber database:
- OsmoHLR has full UMTS AKA support.
- It serves GSUP to both our MSC and SGSN.
- As a separate process, the HLR now runs fully asynchronously.
Of course, the MSC needs to act as a GSUP client to use the separate OsmoHLR server. We needed to teach libmsc to handle GSUP requests asynchronously. In the 3GPP TS specifications, this is handled by the VLR, the Visitor Location Register. So far the VLR existed implicitly within OsmoNITB, basically as an in-RAM storage of subscriber data read directly from the database storage. But the VLR is more than that: it is specified to follow detailed state machines interacting with MSC and HLR, which allow, you guessed it, asynchronous handling of subscriber data. With the HLR moving to a separate process, we needed to implement a VLR proper. A generic finite state machine implementation has been added to libosmocore, and the specs' state machine definitions for the VLR have been implemented, supporting UMTS AKA right from the start.
Adding the new feature set had the logical consequence of profound code changes. In the 3G developments, we have for some time called the OsmoNITB-without-BSC a Circuit-Switched Core Network (OsmoCSCN). As it turns out, OsmoCSCN was merely a working title, it is already gone from code and documentation. Because, what do you get when you also strip from it the HLR? You get an OsmoMSC! (Technically, to accurately call it "OsmoMSC", we would also need to externalize the SMS storage3. It's on the todo list!)
By now it may be clear to you that OsmoNITB will not be around for long. But the transition away from OsmoNITB is not trivial: users have to get familiar with the new OsmoHLR. OsmoNITB's VTY configuration commands for subscriber management no longer exist. And, of course, our OsmoMSC cannot talk to OsmoBSC yet: to fully replace OsmoNITB with OsmoBSC + OsmoMSC + OsmoHLR, we also need a proper A-interface implementation on the OsmoMSC side. Even though OsmoNITB will stick around as a 2G solution until then, the move to an external HLR process in itself is a profound change in admin processes.
In consequence, we have taken yet another profound decision: we will not merge these new developments to openbsc.git's master branch. To clearly mark the move to the new Osmocom core network topology with the VLR-HLR separation and support for 3G by the new OsmoMSC program, we will create a brand new git repository that will be the focus of ongoing development. The current openbsc.git repository will remain as it is; it may see backports in urgent cases, but in essence it will be laid to rest and clearly marked as legacy4. Before we can flip that switch, we still need to sort out some petty details of what should move where, and then agree on a good name for the new repository. Until then, 2G with UMTS AKA support will live on the openbsc.git vlr_2G branch, while 3G with UMTS AKA support will live on the vlr_3G branch. The vlr_2G branch still features an OsmoNITB, but with an external OsmoHLR. The vlr_3G (previously sysmocom/iu) extends the vlr_2G branch to transform OsmoNITB to OsmoMSC and support the IuCS interface.
What about UMTS AKA on packet-switched connections? OsmoSGSN has had a GSUP client for quite some time now5. In fact GSUP was initially named "GPRS Subscriber Update Protocol" -- the G now re-coined to "Generic". Adding UMTS AKA to the OsmoSGSN was a breeze. You don't even need a special branch for that, it's already merged to master.
UMTS AKA is not limited to 3G. Any 2G network that indicates compliance with Release 1999 in the System Information bits can benefit from mutual authentication, and so does Osmocom, now.
Here is an overview of the current landscape:
Legacy 2G without UMTS AKA
┌────────────────────────┐ │ OsmoNITB │ ┌─────┐ ├╌╌╌╌╌┐ ╔═════╤════════╗ │ │ BTS │ <-Abis-> │ BSC ┆ ║ SMS ┆ subscr ║ │ │ │ └─────┴─╨─────┴────────╨─┘ │ │ │ │ ┌──────────┐ ┌──────────┐ │ PCU │ <-Gb---> │ OsmoSGSN │ <-GTP-> │ OpenGGSN │ └─────┘ └──────────┘ └──────────┘
2G with UMTS AKA
┌─────────────────────┐ │ OsmoNITB │ ┌─────┐ ├╌╌╌╌╌┐ ╔═════╗ ┌╌╌╌╌╌┤ ┌────────────┐ │ BTS │ <-Abis-> │ BSC ┆ ║ SMS ║ ┆ VLR │ <-GSUP-> │ OsmoHLR │ │ │ └─────┴─╨─────╨─┴─────┘ │ │ │ │ │ │ │ │ ┌─────────────────────┐ │ ╔════════╗ │ │ PCU │ <-Gb---> │ OsmoSGSN │ <-GSUP-> │ ║ subscr ║ │ └─────┘ │ │ └─╨────────╨─┘ │ │ ┌──────────┐ │ │ <-GTP--> │ OpenGGSN │ └─────────────────────┘ └──────────┘
3G with UMTS AKA
┌─────────────────────┐ │ OsmoMSC │ ┌───────────┐ ┌───────────┐ │ ╔═════╗ ┌╌╌╌╌╌┤ ┌────────────┐ │ 3G hNodeB │ <-Iuh-> │ OsmoHNBGW │ <-IuCS-> │ ║ SMS ║ ┆ VLR │ <-GSUP-> │ OsmoHLR │ └───────────┘ │ │ └───────╨─────╨─┴─────┘ │ │ │ │ │ │ │ │ ┌─────────────────────┐ │ ╔════════╗ │ │ │ <-IuPS-> │ OsmoSGSN │ <-GSUP-> │ ║ subscr ║ │ └───────────┘ │ │ └─╨────────╨─┘ │ │ ┌──────────┐ │ │ <-GTP--> │ OpenGGSN │ └─────────────────────┘ └──────────┘
2G with UMTS AKA and 3G support are not packaged yet. To use them, you need to build the software from source.
- For OsmoNITB with 2G UMTS AKA, you need to build openbsc.git using the vlr_2G branch.
- For 3G including UMTS AKA support, refer to the 3G wiki page.
With the help of Osmocom's sponsors and supporters, including but not limited to NLnet and sysmocom, we were able to invest due time and effort and have reached a remarkable milestone: UMTS AKA is now supported on Osmocom 3G as well as 2G networks, using Free Software all the way. Thank you for making this possible!
1 News post: 3G Voice Works
2 Universal Mobile Telecommunications System, Authentication and Key Agreement protocol
3 So far our OsmoMSC has a local sqlite database to manage SMS persistently, which is still a potential source of stalling due to synchronism.
4 Another reason for moving to a new repository: OpenBSC was the early name of the project, but by now the lack of "Osmo" in its name is a source of confusion among new users, since "OpenBSC" wrongly suggests affiliation with the unrelated OpenBTS project.
5 See config item auth-policy remote.
The lucky receivers of a free nano3G femto cell sponsored by sysmocom have been contacted.
The selected projects will be documented at the accelerate3g5 wiki page.
If your project has been selected, kindly follow the instructions found there and mark the start of your project.
We are glad to have reached many new community members and are looking forward to seeing your projects evolve.
Here is a huge Thank You to all contestants from the Osmocom community and the sysmocom team!
The OsmoCon 2017 is the first technical conference for Osmocom users, operators and
developers and will be held on April 21st, 2017 in Berlin, with kind organizational
support by sysmocom s.f.m.c. GmbH.
For the first time ever, the Osmocom Conference brings together users, operators
and developers of the Osmocom Open Source cellular infrastructure projects, such as
OsmoBTS, OsmoBSC, OsmoSGSN, OpenGGSN and others.
Join us for a day of presentations and discussions with the main developers behind
Open Source Mobile Communications, as well as commercial and non-profit users of
the Osmocom cellular infrastructure software.
Read more on our OsmoCon 2017 wiki page
We are glad to announce that sysmocom extends the invitation to join the Accelerate 3.5G project by two weeks. Send your project proposals to apply for one of 50 free ip.access nano3G femto cells.
- The terms can be found at https://sysmocom.de/downloads/accelerate_3g5_cfp.pdf
- With the new end date for proposals being 15th of February, 2017.
- Here is the original news post.
One week ago at the 33C3 conference, Osmocom core developers Holger and Harald first publicly presented about a new Osmocom project to analyze and reverse engineer a series of Qualcomm-based Cellular modems that run a version of GNU/Linux inside the modem itself. Feel free to see the video recording and/or the slides for more information
At the time the talk was presented, all related information that was gathered by them has been released inside the wiki of a new Osmocom project called Qualcomm Linux Modems by Quectel & Co
We're looking forward to grow this resource further and further - hopefully with your help. Osmocom is a collaborative, community based project, after all.
Osmocom's support for 2G/GSM is mature and widespread. Since 2016, we're taking
on the next level: 3G/3.5G. The key to running your own 3G network is to obtain
actual 3G cell hardware -- here is an exciting opportunity to get started:
No less than 50 femtocells will be given away for free by sysmocom, one of the
main drivers of the Osmocom project. To receive a free 3G femtocell, tell
sysmocom how you will help the Osmocom project drive 3.5G forward if you had
one, before the end of January 2017. This marks the launch of the 3.5G
Acceleration Project, backed by the Osmocom community. Join us!
Find further details on the 3.5G Acceleration Project and receiving your own 3G
femtocell for free at https://sysmocom.de/downloads/accelerate_3g5_cfp.pdf.
There are plenty of cellular modems on the market in the mPCIe form factor.
Playing with such modems is reasonably easy, you can simply insert them in a mPCIe
slot of a laptop or an embedded device (soekris, pc-engines or the like).
However, many of those modems actually export interesting singals like digital PCM
audio or UART ports on some of the mPCIe pins, both in standard and in non-standard ways.
Those signals are inaccessible in those embedded devices or in your laptop.
So I built a small break-out board which performs the basic function of exposing the mPCIe
USB signals on a USB mini-B socket, providing power supply to the mPCIe modem, offering a
SIM card slot at the bottom, and exposing all additional pins of the mPCIe header on a
standard 2.54mm pitch header for further experimentation.
The design of the board (including schematics and PCB layout design files) is available
as open hardware under CC-BY-SA license terms. For more information see mpcie-breakout.
If you don't want to build your own board, fully assembled and tested boards are available
Also available in: Atom