OpenBTS

The OsmoTRX project is direved from OpenBTS transceiver code. See http://openbts.org/ for details.

The related copyrights:
Most parts copyright 2008-2011 Free Software Foundation.
Some parts copyright 2010 Kestrel Signal Processing, Inc.
Some parts copyright 2011 Range Networks, Inc.


Patent Laws

The use of this software to provide GSM services may result in the use of
patented technologies.  The user of this software is required to take whatever
actions are necessary to avoid patent infringement.


Telecom and Radio Spectrum Laws

The primary function of OsmoTRX is the provision of telecommunications service
over a radio link.  This activity is heavily regulated nearly everywhere in
the world.  Users of this software are expected to comply with local and national
regulations in the jurisdictions where this sortware is used with radio equipment.


Legal Summary

The user of this software is expected to comply with all applicable laws and
regulations, including patent laws, copyright laws, and telecommunications
regulations.

The legal restrictions listed here are not necessarily exhaustive.


Note to US Government Users

The OsmoTRX software applications and associated documentation are "Commercial
Item(s)," as that term is defined at 48 C.F.R. Section 2.101, consisting of
"Commercial Computer Software" and "Commercial Computer Software Documentation,"
as such terms are used in 48 C.F.R. 12.212 or 48 C.F.R. 227.7202, as
applicable. Consistent with 48 C.F.R. 12.212 or 48 C.F.R. Sections 227.7202-1
through 227.7202-4, as applicable, the Commercial Computer Software and
Commercial Computer Software Documentation are being licensed to U.S. Government
end users (a) only as Commercial Items and (b) with only those rights as are
granted to all other end users pursuant to the terms and conditions of GPLv3
and AGPLv3.


Note to US Government Contractors

GPL is not compatible with "government purpose rights" (GPR).  If you receive
OsmoTRX software under a GPL and deliver it under GPR, you will be in violation
of GPL and possibly subject to enforcement actions by the original authors and
copyright holders, including the Free Software Foundation, Inc.


Software Licensing and Distribution

The OsmoTRX is distributed publicly under AGPLv3. See the COPYING file
for more information on the license for this distribution.
