= The [wiki:OpenBTS] Project =
The OpenBTS Project is an effort to construct an open-source Unix application that uses the Universal Software Radio Peripheral (USRP) to present a GSM air interface ("Um") to standard GSM handsets and uses the Asterisk software PBX to connect calls. This is in fact very different from a conventional GSM BTS, which is a dumb device that is managed externally by a basestation controller (BSC) and connects calls in a remote "mobile switching center" (MSC). Because of this important architectural difference, the end product of this project is better referred to as an access point, even though the project is called "OpenBTS".
Overall Architecture of the OpenBTS Access PointWhy Build an Open Source GSM Stack?
The combination of the ubiquitous GSM air interface with VoIP backhaul could form the basis of a new type of cellular network that could be deployed and operated at substantially lower cost than existing technologies. Since these new hybrid networks are not readily compatible with legacy networks, and since radical two-tier pricing would be disruptive for existing carriers, we are not likely to see this kind of innovation from the conventional telecom community. This is the primary motivation for starting this project: a vision of truly universal telephone service. The inspiration for this project came from a simultaneous recognition of these elements after several years of experience with GSM, software radios, VoIP and sustainable power systems: * The USRP can be readily adapted as a GSM transceiver and the hardware can be reworked to give a carrier-grade radio for use in a software BTS. * GSM is simple. Once you have a coding framework and understand the specifications, this stuff almost writes itself. * L1 is textbook radio and FEC algorithms. * L2 is simplified HDLC. * L3 is fully defined in GSM 04.08 and ITU-T Q.931 and is immediately familiar to anyone who has worked with ISDN. * Most telephone switching functions, calling features and mobility management functions can be moved into Asterisk, eliminating the need for most of the network infrastructure (HLRs, MSCs, etc.). * Plenty of functional GSM handsets are discarded in rich countries every year that can be reused in developing countries. * With economical software design and careful selection of power amplifiers, it should be possible to run a low-capacity GSM cell from solar panels or micro wind turbines, drastically reducing the cost of service in off-grid environments. GSM is Old and Boring. Why Not CDMA?
GSM is a good choice precisely because it is old and boring. Everyone knows it works and 80% of the world's carriers are still using it. It's a proven technology that is well-suited to the target application and the specification is publicly available.
CDMA physical layers are too complex for an inexpensive all-software radio and do not scale well for low-capacity cells. CMDA capacity comes in increments of 50 or more subscriber lines and the lowest layers of your radio must process all of that bandwidth whether you intend to use it or not. By contrast, GSM capacity comes in increments of 7-8 lines and a well-managed radio can even ignore inactive parts of the signal. Beyond the technical issues, IS-95-style CMDA (including cdma2000) is tightly controlled intellectual property. You can't even get a copy of the specification without signing an NDA and paying several hundred dollars, so open-source CDMA is out of the question.
=== What About GPRS/EDGE and UMTS? ===
Future versions of the OpenBTS may well support GPRS and EDGE. GPRS, when available, should be a software-only upgrade for any installed OpenBTS system. EDGE support may require additional computational resources but the additional software is not complex, at least when compared to the rest of the BTS. UMTS, however, is a radically different CDMA-style physical layer and well outside the current scope of this project.
All that said, let's walk before we run by implementing basic voice services on a single-ARFCN GMSK BTS.
=== What's Wrong with WiMax, !WiWhatever? ===
There are a lot of people out there who would rather not blanket Africa with !WiWhatever than find a way to make GSM dirt cheap. We say "not" because none of those people who talk about it are really going to do it because it's not a realistic goal. It's sexier to talk about the newest air interface and that talk gets a lot a buzz, but the truth is that that !WiWhatever is poorly suited to mobile telephony.
!WiFi range is far too short for mobile coverage in rural areas. For example, you're not going to cover 700 square miles with a single !WiFi tower, but that's exactly what GSM was made to do. If access points are connected through different ISPs, handovers will be unreliable. The phones are expensive and power-hungry, and compared to GSM they always will be. !WiFi may become a decent technology for semi-mobile telephones in dense urban areas, but it's not a mobile phone standard and it's not well-matched to the rural cellular application.
!WiMax has most of the problems of !WiFi. To make matters worse, most !WiMax bands don't penetrate structures very well. Most !WiMax deployers are planning to solve this problem by saturating large buildings with small access points. That's fine in Manhattan and London, but we don't see anyone putting femtocells in a million houses when those households couldn't afford phones in the first place.
More important than all of that is to remember the goal of the OpenBTS: universal telephone service. Our project philosophy is that it is much better to give people basic telephone service with an upgrade path to 250 kb/sec packet service than to generate a lot of hype over a scorching fast broadband technology that can probably never be truly universal.
!WiWhatevers do have a place in OpenBTS, though: backhaul. The standard OpenBTS backhaul is likely to be redundant-path point-to-point !WiFi or !WiMax.Is This Emerging Telephony?
We certainly hope so. Who Are You People, Anyway?
OpenBTS is now part of the GNU Radio project and administered by the Free Software Foundation.
The original founders of this project are David A. Burgess (dburgess00 (at) gnuradio.org) and Harvind S. Samra (hssarmra (at) gnuradio.org). They are still major contributors, but assigned their copyrights to FSF on 20 October 2008. For a number of practical reasons, Harvind and David also conduct a lot of their OpenBTS activities through a California S-Corporation called Kestrel Signal Processing, Inc.Legalities
Every project has the potential for abuse. Let's avoid that.
=== Intellectual Property ===
We can bet this project will get a lot of intellectual property scrutiny from the employers and ex-employers of every experienced telecom engineer who contributes. Please observe these guidelines: * Do '''not''' insert proprietary code into this project. Any code identified as proprietary will be removed and the person who inserts it will be barred from the project. * Do '''not''' insert ETSI material that is subject to non-disclosure agreements, specifically authentication and encryption algorithms. * '''Do''' comment generously and reference specific paragraphs of GSM and ITU-T specifications to show the obvious relationship between the source code and the public specifications * If you have '''ever''' signed a non-disclosure agreement related to GSM software, please contact the project administrators prior to submitting anything.
Note that these are only guidelines and not actual legal advice.
=== License ===
The OpenBTS project is being distributed by FSF under the GPLv3 license.
=== The FCC (or Ofcom, or whatever they call it where you live) ===
Radio transmissions are regulated everywhere in the world. In the United States, these regulations are laid out in CFR 47 and enforced by the Federal Communications Commission (FCC), but every country in the world has functional equivalents. Before turning on any radio equipment or using any of this software you are strongly urged to know your local telecom and radio regulations. Broadly speaking: * If you are transmitting in a licensed band and your transmissions are detectable more than a few meters away then you are probably breaking the law. * If you are receiving signals from a licensed public network in sufficient volume to comprehend conversations, determine the contexts of data transmissions or determine the identities of users then your are probably breaking the law. * If you are outside of North America and Europe and using VoIP over a public network, you may be breaking the law.
Of course, that's just a generalization and sometimes the difference between a routine bench test and a felony is all in the details. Know your local laws and know what your equipment is doing. And again, these are only rough guidelines and not actual legal advice.
=== Criminal Activity ===
Any references to the exploitation of public telephone networks for criminal purposes will be removed from all project documents and forwarded to appropriate authorities. Go build your IMSI-catchers somewhere else.
Start from the project's main GNU Radio wiki page, [wiki:OpenBTS]. Read it all, get a copy and try to use it.
After that, it depends on what you want to do.
=== I Want to Work on the Software ===
We specifically need: * DSP and comms people for the transceiver and L1 FEC, * protocol people and well-rounded C++ programmers for L2 and L3, * embedded people get this code onto a target embedded board and * Asterisk people to help us get the most out of Asterisk.
=== I Want to Work on the Hardware ===
We specifically need: * digital hardware engineers to customize the USRP motherboard * RF engineers to redo USRP layouts and specify external components like amplifiers and filters * mechanical engineers for packaging, cooling and off-grid power systems * power engineers for off-grid power systems
=== I'm Not Technical, but Want to Help ===
There are also ways to support this project in a non-technical capacity. * If you have some rural land in Solano or Yolo Counties in California, you could host a test range. * We are usually in need of equipment: test equipment, power amps, filters, masts, etc. * We could always use money to support the work. OpenBTS can be funded though the [https://www.pubsoft.org/pubsoft.py/viewprojects Public Software Fund].
...or maybe you can offer something we just haven't thought of yet.