Compare commits

..

8 Commits

Author SHA1 Message Date
Harald Welte
c328371b54 cbch: add debug statements 2014-12-30 00:24:52 +01:00
Harald Welte
ffcdd0da7e CBCH: Implement CBCH block segmentation and RSL_MT_SMS_BC_CMD
* CBCH load indications are not yet sent
* The queue length is not yet limited!
2014-12-30 00:24:45 +01:00
Harald Welte
265d0635f2 Initial CBCH support
This should handle OML channel combinations with CBCH and activate the
CBCH SAPI towards the DSP correspondingly.  What is still missing is
sending any actual information over the CBCH in respons to the
PH-RTS.ind coming up from L1.
2014-12-30 00:24:40 +01:00
Harald Welte
03483cf0f2 etws_p1: Add missing 'Group Call Information' to P1 Rest Octets 2014-12-27 23:43:09 +01:00
Holger Hans Peter Freyther
7f12860f08 wip... encoding and stuff 2014-12-27 23:05:51 +01:00
Holger Hans Peter Freyther
96efd189cc wip... 2014-12-27 19:33:23 +01:00
Holger Hans Peter Freyther
1f27fda194 wip... handle 2014-12-27 19:05:09 +01:00
Holger Hans Peter Freyther
5a906c7b72 sysmobts: WIP: allow to use the serial number as unit id 2014-12-26 16:27:36 +01:00
343 changed files with 3674 additions and 68622 deletions

50
.gitignore vendored
View File

@@ -19,33 +19,16 @@ depcomp
install-sh
missing
stamp-h1
libtool
ltmain.sh
core
core.*
# git-version-gen magic
.tarball-version
.version
contrib/sysmobts-calib/sysmobts-calib
src/osmo-bts-sysmo/sysmobts-calib
src/osmo-bts-sysmo/l1fwd-proxy
src/osmo-bts-sysmo/osmo-bts-sysmo
src/osmo-bts-sysmo/osmo-bts-sysmo-remote
src/osmo-bts-sysmo/sysmobts
src/osmo-bts-sysmo/sysmobts-remote
src/osmo-bts-sysmo/sysmobts-mgr
src/osmo-bts-sysmo/sysmobts-util
src/osmo-bts-litecell15/lc15bts-mgr
src/osmo-bts-litecell15/lc15bts-util
src/osmo-bts-litecell15/misc/.dirstamp
src/osmo-bts-litecell15/osmo-bts-lc15
src/osmo-bts-trx/osmo-bts-trx
src/osmo-bts-octphy/osmo-bts-octphy
src/osmo-bts-virtual/osmo-bts-virtual
src/osmo-bts-omldummy/osmo-bts-omldummy
tests/atconfig
tests/package.m4
@@ -53,10 +36,7 @@ tests/agch/agch_test
tests/paging/paging_test
tests/cipher/cipher_test
tests/sysmobts/sysmobts_test
tests/meas/meas_test
tests/misc/misc_test
tests/handover/handover_test
tests/tx_power/tx_power_test
tests/testsuite
tests/testsuite.log
@@ -64,30 +44,6 @@ tests/testsuite.log
doc/vty_reference.xml
# Backups, vi, merges
*~
*.sw?
*.orig
*.sav
# debian
.tarball-version
debian/autoreconf.after
debian/autoreconf.before
debian/files
debian/*.debhelper.log
debian/*.substvars
debian/osmo-bts-trx-dbg/
debian/osmo-bts-trx/
debian/tmp/
/tests/power/power_test
# manuals
doc/manuals/*.html
doc/manuals/*.svg
doc/manuals/*.pdf
doc/manuals/*__*.png
doc/manuals/*.check
doc/manuals/generated/
doc/manuals/osmomsc-usermanual.xml
doc/manuals/common
doc/manuals/build

View File

@@ -1,3 +0,0 @@
[gerrit]
host=gerrit.osmocom.org
project=osmo-bts

View File

@@ -1,12 +0,0 @@
Harald Welte <laforge@gnumonks.org>
Harald Welte <laforge@gnumonks.org> <laflocal@hanuman.gnumonks.org>
Harald Welte <laforge@gnumonks.org> <laflocal@goeller.de.gnumonks.org>
Holger Hans Peter Freyther <holger@moiji-mobile.com> <zecke@selfish.org>
Holger Hans Peter Freyther <holger@moiji-mobile.com> <ich@tamarin.(none)>
Holger Hans Peter Freyther <holgre@moiji-mobile.com> <holger@freyther.de>
Andreas Eversberg <jolly@eversberg.eu>
Andreas Eversberg <jolly@eversberg.eu> <Andreas.Eversberg@versatel.de>
Andreas Eversberg <jolly@eversberg.eu> <root@nuedel.(none)>
Pablo Neira Ayuso <pablo@soleta.eu> <pablo@gnumonks.org>
Max Suraev <msuraev@sysmocom.de>
Tom Tsou <tom.tsou@ettus.com> <tom@tsou.cc>

View File

@@ -1,23 +1,15 @@
AUTOMAKE_OPTIONS = foreign dist-bzip2 1.6
SUBDIRS = include src tests doc contrib
SUBDIRS = include src tests
# package the contrib and doc
EXTRA_DIST = \
contrib/dump_docs.py contrib/screenrc-l1fwd \
contrib/dump_docs.py contrib/screenrc-l1fwd contrib/sysmobts.service \
contrib/l1fwd.init contrib/screenrc-sysmobts contrib/respawn.sh \
git-version-gen .version \
README.md
AM_DISTCHECK_CONFIGURE_FLAGS = \
--with-systemdsystemunitdir=$$dc_install_base/$(systemdsystemunitdir)
@RELMAKE@
BUILT_SOURCES = $(top_srcdir)/.version
$(top_srcdir)/.version:
echo $(VERSION) > $@-t && mv $@-t $@
dist-hook:
echo $(VERSION) > $(distdir)/.tarball-version
contrib/sysmobts.init contrib/sysmobts-calib/Makefile \
contrib/sysmobts-calib/sysmobts-calib.c \
contrib/sysmobts-calib/sysmobts-layer1.c \
contrib/sysmobts-calib/sysmobts-layer1.h \
doc/examples/osmo-bts.cfg \
doc/examples/sysmobts-mgr.cfg

59
README Normal file
View File

@@ -0,0 +1,59 @@
Repository for new the Osmocom BTS implementation.
This code implementes the Layer 2 and higher of a more or less
conventional GSM BTS (Base Transceiver Station) - however, using an
Abis/IP interface, rather than the old-fashioned E1/T1.
Specificallt, this includes
* BTS-Side implementation of TS 08.58 (RSL) and TS 12.21 (OML)
* BTS-Side implementation of LAPDm (using libosmocore/libosmogsm)
* A somewhat separated interface between those higher layer parts
and the Layer1 interface.
Right now, only one hardware and Layer1 are supported: The sysmocom
sysmoBTS.
There is some experimental and way incomplete code to use a couple of
OsmocomBB phones and run them in the BTS. However, the required code
for the Calypso DSP code have not been written yet. This would still
require a lot of work.
Some additional work is being done in using some parts of the OpenBTS
L1FEC and glue it against omso-bts. However, this is also still in an
early, experimental stage.
== Known Limitations ==
As of June 3, 2012, the following known limitations exist in this
implementation:
=== Common Core ===
* No Extended BCCH support
* System Information limited to 1,2,2bis,2ter,2quater,3,4,5,6,9,13
* No RATSCCH in AMR
* No OML (TS 12.21) alarms yet (temperature, ...)
* Only single-TRX BTS at this point
* Will reject TS 12.21 STARTING TIME in SET BTS ATTR / SET CHAN ATTR
* No support for frequency hopping
* No reporting of interference levels as part of TS 08.58 RF RES IND
* No error reporting in case PAGING COMMAND fails due to queue overflow
* No hand-over support (planned)
* No use of TS 08.58 BS Power and MS Power parameters
* No support of TS 08.58 MultiRate Control
* No support of TS 08.58 Supported Codec Types
* No support of Bter frame / ENHANCED MEASUREMENT REPORT
=== osmo-bts-sysmo ===
* No CSD / ECSD support (not planned)
* No GPRS/EDGE support (planned)
* GSM-R frequency band supported, but no NCH/ASCI/SoLSA
* All timeslots on one TRX have to use same training sequence (TSC)
* No multi-TRX support yet, though hardware+L1 support stacking
* Makes no use of 12.21 Intave Parameters and Interference
Level Boundaries
* Makes no use of TS 12.21 T3105
* Doesn't yet include MAC address in Abis/IP Identity message
* MphConfig.CNF can be returned to the wrong callback. E.g. with Tx Power
and ciphering. The dispatch should take a look at the hLayer3.

126
README.md
View File

@@ -1,126 +0,0 @@
osmo-bts - Osmocom BTS Implementation
====================================
This repository contains a C-language implementation of a GSM Base
Transceiver Station (BTS). It is part of the
[Osmocom](https://osmocom.org/) Open Source Mobile Communications
project.
This code implements Layer 2 and higher of a more or less conventional GSM BTS
(Base Transceiver Station) - however, using an Abis/IP interface, rather than
the old-fashioned E1/T1.
Specifically, this includes
* BTS-side implementation of TS 08.58 (RSL) and TS 12.21 (OML)
* BTS-side implementation of LAPDm (using libosmocore/libosmogsm)
* A somewhat separated interface between those higher layer parts and the
Layer1 interface.
Several kinds of BTS hardware are supported:
* sysmocom sysmoBTS
* Octasic octphy
* Nutaq litecell 1.5
* software-defined radio based osmo-bts-trx (e.g. USRP B210, UmTRX)
Homepage
--------
The official homepage of the project is
https://osmocom.org/projects/osmobts/wiki
GIT Repository
--------------
You can clone from the official osmo-bts.git repository using
git clone git://git.osmocom.org/osmo-bts.git
There is a cgit interface at http://git.osmocom.org/osmo-bts/
Documentation
-------------
We provide a
[User Manual](http://ftp.osmocom.org/docs/latest/osmobts-usermanual.pdf)
as well as a
[VTY Reference Manual](http://ftp.osmocom.org/docs/latest/osmobsc-vty-reference.pdf)
and a
[Abis refrence MAnual](http://ftp.osmocom.org/docs/latest/osmobts-abis.pdf)
describing the OsmoBTS specific A-bis dialect.
Mailing List
------------
Discussions related to osmo-bts are happening on the
openbsc@lists.osmocom.org mailing list, please see
https://lists.osmocom.org/mailman/listinfo/openbsc for subscription
options and the list archive.
Please observe the [Osmocom Mailing List
Rules](https://osmocom.org/projects/cellular-infrastructure/wiki/Mailing_List_Rules)
when posting.
Contributing
------------
Our coding standards are described at
https://osmocom.org/projects/cellular-infrastructure/wiki/Coding_standards
We us a gerrit based patch submission/review process for managing
contributions. Please see
https://osmocom.org/projects/cellular-infrastructure/wiki/Gerrit for
more details
The current patch queue for osmo-bts can be seen at
https://gerrit.osmocom.org/#/q/project:osmo-bts+status:open
Known Limitations
=================
As of March 17, 2017, the following known limitations exist in this
implementation:
Common Core
-----------
* No Extended BCCH support
* System Information limited to 1,2,2bis,2ter,2quater,3,4,5,6,9,13
* No RATSCCH in AMR
* Will reject TS 12.21 STARTING TIME in SET BTS ATTR / SET CHAN ATTR
* No support for frequency hopping
* No reporting of interference levels as part of TS 08.58 RF RES IND
* No error reporting in case PAGING COMMAND fails due to queue overflow
* No use of TS 08.58 BS Power and MS Power parameters
* No support of TS 08.58 MultiRate Control
* No support of TS 08.58 Supported Codec Types
* No support of Bter frame / ENHANCED MEASUREMENT REPORT
osmo-bts-sysmo
--------------
* No CSD / ECSD support (not planned)
* GSM-R frequency band supported, but no NCH/ASCI/SoLSA
* All timeslots on one TRX have to use same training sequence (TSC)
* No multi-TRX support yet, though hardware+L1 support stacking
* Makes no use of 12.21 Intave Parameters and Interference
Level Boundaries
* MphConfig.CNF can be returned to the wrong callback. E.g. with Tx Power
and ciphering. The dispatch should take a look at the hLayer3.
osmo-bts-octphy
---------------
* No support of EFR, HR voice codec (lack of PHY support?)
* No re-transmission of PHY primitives in case of time-out
* Link Quality / Measurement processing incomplete
* impossible to modify encryption parameters using RSL MODE MODIFY
* no clear indication of nominal transmit power, various power related
computations are likely off
* no OML attribute validation during bts_model_check_oml()
osmo-bts-trx
------------
* TCH/F_PDCH cannel not working as voice (https://osmocom.org/issues/1865)
* No BER value delivered to OsmoPCU (https://osmocom.org/issues/1855)
* No 11bit RACH support (https://osmocom.org/issues/1854)

View File

@@ -1,10 +1,7 @@
dnl Process this file with autoconf to produce a configure script
AC_INIT([osmo-bts],
m4_esyscmd([./git-version-gen .tarball-version]),
[openbsc@lists.osmocom.org])
dnl *This* is the root dir, even if an install-sh exists in ../ or ../../
AC_CONFIG_AUX_DIR([.])
[openbsc-devel@lists.openbsc.org])
AM_INIT_AUTOMAKE([dist-bzip2])
AC_CONFIG_TESTDIR(tests)
@@ -12,367 +9,66 @@ AC_CONFIG_TESTDIR(tests)
dnl kernel style compile messages
m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
dnl include release helper
RELMAKE='-include osmo-release.mk'
AC_SUBST([RELMAKE])
dnl checks for programs
AC_PROG_MAKE_SET
AC_PROG_CC
AC_PROG_INSTALL
LT_INIT
dnl check for pkg-config (explained in detail in libosmocore/configure.ac)
AC_PATH_PROG(PKG_CONFIG_INSTALLED, pkg-config, no)
if test "x$PKG_CONFIG_INSTALLED" = "xno"; then
AC_MSG_WARN([You need to install pkg-config])
fi
PKG_PROG_PKG_CONFIG([0.20])
AC_PROG_RANLIB
dnl checks for header files
AC_HEADER_STDC
dnl Checks for typedefs, structures and compiler characteristics
AC_ARG_ENABLE(sanitize,
[AS_HELP_STRING([--enable-sanitize], [Compile with address sanitizer enabled], )],
[sanitize=$enableval], [sanitize="no"])
if test x"$sanitize" = x"yes"
then
CFLAGS="$CFLAGS -fsanitize=address -fsanitize=undefined"
CPPFLAGS="$CPPFLAGS -fsanitize=address -fsanitize=undefined"
fi
AC_ARG_ENABLE(werror,
[AS_HELP_STRING(
[--enable-werror],
[Turn all compiler warnings into errors, with exceptions:
a) deprecation (allow upstream to mark deprecation without breaking builds);
b) "#warning" pragmas (allow to remind ourselves of errors without breaking builds)
]
)],
[werror=$enableval], [werror="no"])
if test x"$werror" = x"yes"
then
WERROR_FLAGS="-Werror"
WERROR_FLAGS+=" -Wno-error=deprecated -Wno-error=deprecated-declarations"
WERROR_FLAGS+=" -Wno-error=cpp" # "#warning"
CFLAGS="$CFLAGS $WERROR_FLAGS"
CPPFLAGS="$CPPFLAGS $WERROR_FLAGS"
fi
dnl checks for libraries
PKG_CHECK_MODULES(LIBOSMOCORE, libosmocore >= 1.0.0)
PKG_CHECK_MODULES(LIBOSMOVTY, libosmovty >= 1.0.0)
PKG_CHECK_MODULES(LIBOSMOGSM, libosmogsm >= 1.0.0)
PKG_CHECK_MODULES(LIBOSMOCTRL, libosmoctrl >= 1.0.0)
PKG_CHECK_MODULES(LIBOSMOCODEC, libosmocodec >= 1.0.0)
PKG_CHECK_MODULES(LIBOSMOCODING, libosmocoding >= 1.0.0)
PKG_CHECK_MODULES(LIBOSMOABIS, libosmoabis >= 0.6.0)
PKG_CHECK_MODULES(LIBOSMOTRAU, libosmotrau >= 0.6.0)
PKG_CHECK_MODULES(LIBOSMOCORE, libosmocore >= 0.3.9)
PKG_CHECK_MODULES(LIBOSMOVTY, libosmovty)
PKG_CHECK_MODULES(LIBOSMOTRAU, libosmotrau >= 0.0.7)
PKG_CHECK_MODULES(LIBOSMOGSM, libosmogsm >= 0.3.3)
PKG_CHECK_MODULES(LIBOSMOCTRL, libosmoctrl)
PKG_CHECK_MODULES(LIBOSMOABIS, libosmoabis)
AC_MSG_CHECKING([whether to enable support for sysmobts calibration tool])
AC_ARG_ENABLE(sysmobts-calib,
AC_HELP_STRING([--enable-sysmobts-calib],
[enable code for sysmobts calibration tool [default=no]]),
[enable_sysmobts_calib="yes"],[enable_sysmobts_calib="no"])
AC_MSG_RESULT([$enable_sysmobts_calib])
AM_CONDITIONAL(ENABLE_SYSMOBTS_CALIB, test "x$enable_sysmobts_calib" = "xyes")
AC_MSG_CHECKING([whether to enable support for sysmoBTS L1/PHY support])
AC_MSG_CHECKING([whether to enable sysmocom-bts hardware support])
AC_ARG_ENABLE(sysmocom-bts,
AC_HELP_STRING([--enable-sysmocom-bts],
[enable code for sysmoBTS L1/PHY [default=no]]),
[enable code for sysmocom femto-bts [default=no]]),
[enable_sysmocom_bts="yes"],[enable_sysmocom_bts="no"])
AC_ARG_WITH([sysmobts], [AS_HELP_STRING([--with-sysmobts=INCLUDE_DIR], [Location of the sysmobts API header files, implies --enable-sysmocom-bts])],
[sysmobts_incdir="$withval"],[sysmobts_incdir="$incdir"])
if test "x$sysmobts_incdir" != "x"; then
# --with-sysmobts was passed, imply enable_sysmocom_bts
enable_sysmocom_bts="yes"
fi
AC_SUBST([SYSMOBTS_INCDIR], -I$sysmobts_incdir)
AC_MSG_RESULT([$enable_sysmocom_bts])
AM_CONDITIONAL(ENABLE_SYSMOBTS, test "x$enable_sysmocom_bts" = "xyes")
if test "$enable_sysmocom_bts" = "yes"; then
# We share gsm_data.h with OpenBSC and need to be pointed to the source
# directory of OpenBSC for now.
AC_ARG_WITH([openbsc],
[AS_HELP_STRING([--with-openbsc=INCLUDE_DIR],
[OpenBSC include directory for openbsc/gsm_data_shared.h])],
[openbsc_incdir="$withval"],
[openbsc_incdir="`cd $srcdir; pwd`/../openbsc/openbsc/include"])
AC_SUBST([OPENBSC_INCDIR], $openbsc_incdir)
oldCPPFLAGS=$CPPFLAGS
CPPFLAGS="$CPPFLAGS $SYSMOBTS_INCDIR -I$srcdir/include"
AC_CHECK_HEADER([sysmocom/femtobts/superfemto.h],[],
[AC_MSG_ERROR([sysmocom/femtobts/superfemto.h can not be found in $sysmobts_incdir])],
[#include <sysmocom/femtobts/superfemto.h>])
CPPFLAGS="$CPPFLAGS -I$OPENBSC_INCDIR -I$srcdir/include $LIBOSMOCORE_CFLAGS"
AC_CHECK_HEADER([openbsc/gsm_data_shared.h],[],
[AC_MSG_ERROR([openbsc/gsm_data_shared.h can not be found in $openbsc_incdir])],
[#include <osmo-bts/tx_power.h>])
CPPFLAGS=$oldCPPFLAGS
# Check for the sbts2050_header.h that was added after the 3.6 release
AC_CHECK_HEADER([sysmocom/femtobts/sbts2050_header.h], [sysmo_uc_header="yes"], [])
oldCPPFLAGS=$CPPFLAGS
CPPFLAGS="$CPPFLAGS -I$OPENBSC_INCDIR $LIBOSMOCORE_CFLAGS"
AC_CHECK_HEADER([sysmocom/femtobts/sbts2050_header.h],
[sysmo_uc_header="yes"],[])
CPPFLAGS=$oldCPPFLAGS
if test "$sysmo_uc_header" = "yes" ; then
AC_DEFINE(BUILD_SBTS2050, 1, [Define if we want to build SBTS2050])
fi
PKG_CHECK_MODULES(LIBGPS, libgps)
CPPFLAGS=$oldCPPFLAGS
fi
AM_CONDITIONAL(BUILD_SBTS2050, test "x$sysmo_uc_header" = "xyes")
AC_MSG_CHECKING([whether to enable support for osmo-trx based L1/PHY support])
AC_ARG_ENABLE(trx,
AC_HELP_STRING([--enable-trx],
[enable code for osmo-trx L1/PHY [default=no]]),
[enable_trx="yes"],[enable_trx="no"])
AC_MSG_RESULT([$enable_trx])
AM_CONDITIONAL(ENABLE_TRX, test "x$enable_trx" = "xyes")
AC_MSG_CHECKING([whether to enable support for Octasic OCTPHY-2G])
AC_ARG_ENABLE(octphy,
AC_HELP_STRING([--enable-octphy],
[enable code for Octasic OCTPHY-2G [default=no]]),
[enable_octphy="yes"],[enable_octphy="no"])
AC_ARG_WITH([octsdr-2g], [AS_HELP_STRING([--with-octsdr-2g], [Location of the OCTSDR-2G API header files])],
[octsdr2g_incdir="$withval"],[octsdr2g_incdir="`cd $srcdir; pwd`/src/osmo-bts-octphy/"])
AC_SUBST([OCTSDR2G_INCDIR], -I$octsdr2g_incdir)
AC_MSG_RESULT([$enable_octphy])
AM_CONDITIONAL(ENABLE_OCTPHY, test "x$enable_octphy" = "xyes")
if test "$enable_octphy" = "yes" ; then
oldCPPFLAGS=$CPPFLAGS
CPPFLAGS="$CPPFLAGS $OCTSDR2G_INCDIR -I$srcdir/include"
AC_CHECK_HEADER([octphy/octvc1/gsm/octvc1_gsm_default.h],[],
[AC_MSG_ERROR([octphy/octvc1/gsm/octvc1_gsm_default.h can not be found in $octsdr2g_incdir])],
[#include <octphy/octvc1/gsm/octvc1_gsm_default.h>])
AC_CHECK_MEMBER([tOCTVC1_GSM_TRX_CONFIG.usCentreArfcn],
AC_DEFINE([OCTPHY_MULTI_TRX],
[1],
[Define to 1 if your octphy header files support multi-trx]),
[],
[#include <octphy/octvc1/gsm/octvc1_gsm_api.h>])
AC_CHECK_MEMBER([tOCTVC1_HW_RF_PORT_RX_STATS.Frequency],
AC_DEFINE([OCTPHY_USE_FREQUENCY],
[1],
[Define to 1 if your octphy header files support tOCTVC1_RADIO_FREQUENCY_VALUE type]),
[],
[#include <octphy/octvc1/hw/octvc1_hw_api.h>])
AC_CHECK_MEMBER([tOCTVC1_HW_MSG_RF_PORT_INFO_ANTENNA_TX_CONFIG_RSP.TxConfig],
AC_DEFINE([OCTPHY_USE_TX_CONFIG],
[1],
[Define to 1 if your octphy header files support tOCTVC1_HW_RF_PORT_ANTENNA_TX_CONFIG type]),
[],
[#include <octphy/octvc1/hw/octvc1_hw_api.h>])
AC_CHECK_MEMBER([tOCTVC1_HW_MSG_RF_PORT_INFO_ANTENNA_RX_CONFIG_RSP.RxConfig],
AC_DEFINE([OCTPHY_USE_RX_CONFIG],
[1],
[Define to 1 if your octphy header files support tOCTVC1_HW_RF_PORT_ANTENNA_RX_CONFIG type]),
[],
[#include <octphy/octvc1/hw/octvc1_hw_api.h>])
AC_CHECK_MEMBER([tOCTVC1_GSM_RF_CONFIG.ulTxAntennaId],
AC_DEFINE([OCTPHY_USE_ANTENNA_ID],
[1],
[Define to 1 if your octphy header files support antenna ids in tOCTVC1_GSM_RF_CONFIG]),
[],
[#include <octphy/octvc1/gsm/octvc1_gsm_api.h>])
AC_CHECK_MEMBER([tOCTVC1_HW_MSG_CLOCK_SYNC_MGR_INFO_RSP.ulClkSourceSelection],
AC_DEFINE([OCTPHY_USE_CLK_SOURCE_SELECTION],
[1],
[Define to 1 if your octphy header files supports ulClkSourceSelection in tOCTVC1_HW_MSG_CLOCK_SYNC_MGR_INFO_RSP]),
[],
[#include <octphy/octvc1/hw/octvc1_hw_api.h>])
AC_CHECK_MEMBER([tOCTVC1_HW_MSG_CLOCK_SYNC_MGR_STATS_RSP.lClockError],
AC_DEFINE([OCTPHY_USE_CLOCK_SYNC_MGR_STATS_CLOCK_ERROR],
[1],
[Define to 1 if your octphy header files supports lClockError in tOCTVC1_HW_MSG_CLOCK_SYNC_MGR_STATS_RSP]),
[],
[#include <octphy/octvc1/hw/octvc1_hw_api.h>])
AC_CHECK_MEMBER([tOCTVC1_HW_MSG_CLOCK_SYNC_MGR_STATS_RSP.lDroppedCycles],
AC_DEFINE([OCTPHY_USE_CLOCK_SYNC_MGR_STATS_DROPPED_CYCLES],
[1],
[Define to 1 if your octphy header files supports lDroppedCycles in tOCTVC1_HW_MSG_CLOCK_SYNC_MGR_STATS_RSP]),
[],
[#include <octphy/octvc1/hw/octvc1_hw_api.h>])
AC_CHECK_MEMBER([tOCTVC1_HW_MSG_CLOCK_SYNC_MGR_STATS_RSP.ulPllFreqHz],
AC_DEFINE([OCTPHY_USE_CLOCK_SYNC_MGR_STATS_PLL_FREQ_HZ],
[1],
[Define to 1 if your octphy header files supports ulPllFreqHz in tOCTVC1_HW_MSG_CLOCK_SYNC_MGR_STATS_RSP]),
[],
[#include <octphy/octvc1/hw/octvc1_hw_api.h>])
AC_CHECK_MEMBER([tOCTVC1_HW_MSG_CLOCK_SYNC_MGR_STATS_RSP.ulPllFractionalFreqHz],
AC_DEFINE([OCTPHY_USE_CLOCK_SYNC_MGR_STATS_PLL_FRACTIONAL_FREQ_HZ],
[1],
[Define to 1 if your octphy header files supports ulPllFractionalFreqHz in tOCTVC1_HW_MSG_CLOCK_SYNC_MGR_STATS_RSP]),
[],
[#include <octphy/octvc1/hw/octvc1_hw_api.h>])
AC_CHECK_MEMBER([tOCTVC1_HW_MSG_CLOCK_SYNC_MGR_STATS_RSP.ulSlipCnt],
AC_DEFINE([OCTPHY_USE_CLOCK_SYNC_MGR_STATS_SLIP_CNT],
[1],
[Define to 1 if your octphy header files supports ulSlipCnt in tOCTVC1_HW_MSG_CLOCK_SYNC_MGR_STATS_RSP]),
[],
[#include <octphy/octvc1/hw/octvc1_hw_api.h>])
AC_CHECK_MEMBER([tOCTVC1_HW_MSG_CLOCK_SYNC_MGR_STATS_RSP.ulSyncLosseCnt],
AC_DEFINE([OCTPHY_USE_CLOCK_SYNC_MGR_STATS_SYNC_LOSSE_CNT],
[1],
[Define to 1 if your octphy header files supports ulSyncLosseCnt in tOCTVC1_HW_MSG_CLOCK_SYNC_MGR_STATS_RSP]),
[],
[#include <octphy/octvc1/hw/octvc1_hw_api.h>])
AC_CHECK_MEMBER([tOCTVC1_HW_MSG_CLOCK_SYNC_MGR_STATS_RSP.ulSyncLossCnt],
AC_DEFINE([OCTPHY_USE_CLOCK_SYNC_MGR_STATS_SYNC_LOSS_CNT],
[1],
[Define to 1 if your octphy header files supports ulSyncLossCnt in tOCTVC1_HW_MSG_CLOCK_SYNC_MGR_STATS_RSP]),
[],
[#include <octphy/octvc1/hw/octvc1_hw_api.h>])
AC_CHECK_MEMBER([tOCTVC1_HW_MSG_CLOCK_SYNC_MGR_STATS_RSP.ulSourceState],
AC_DEFINE([OCTPHY_USE_CLOCK_SYNC_MGR_STATS_SOURCE_STATE],
[1],
[Define to 1 if your octphy header files supports ulSourceState in tOCTVC1_HW_MSG_CLOCK_SYNC_MGR_STATS_RSP]),
[],
[#include <octphy/octvc1/hw/octvc1_hw_api.h>])
AC_CHECK_MEMBER([tOCTVC1_HW_MSG_CLOCK_SYNC_MGR_STATS_RSP.ulDacState],
AC_DEFINE([OCTPHY_USE_CLOCK_SYNC_MGR_STATS_DAC_STATE],
[1],
[Define to 1 if your octphy header files supports ulDacState in tOCTVC1_HW_MSG_CLOCK_SYNC_MGR_STATS_RSP]),
[],
[#include <octphy/octvc1/hw/octvc1_hw_api.h>])
AC_CHECK_MEMBER([tOCTVC1_HW_MSG_CLOCK_SYNC_MGR_STATS_RSP.ulDriftElapseTimeUs],
AC_DEFINE([OCTPHY_USE_CLOCK_SYNC_MGR_STATS_DRIFT_ELAPSE_TIME_US],
[1],
[Define to 1 if your octphy header files supports ulDriftElapseTimeUs in tOCTVC1_HW_MSG_CLOCK_SYNC_MGR_STATS_RSP]),
[],
[#include <octphy/octvc1/hw/octvc1_hw_api.h>])
AC_CHECK_MEMBER([tOCTVC1_GSM_MSG_OVERSAMPLE_SELECT_16X_MODIFY_CMD.ulOversample16xEnableFlag],
AC_DEFINE([OCTPHY_USE_16X_OVERSAMPLING],
[1],
[Define to 1 if your octphy header files support 16x oversampling]),
[],
[#include <octphy/octvc1/gsm/octvc1_gsm_api.h>])
CPPFLAGS=$oldCPPFLAGS
fi
AC_MSG_CHECKING([whether to enable NuRAN Wireless Litecell 1.5 hardware support])
AC_ARG_ENABLE(litecell15,
AC_HELP_STRING([--enable-litecell15],
[enable code for NuRAN Wireless Litecell15 bts [default=no]]),
[enable_litecell15="yes"],[enable_litecell15="no"])
AC_ARG_WITH([litecell15], [AS_HELP_STRING([--with-litecell15=INCLUDE_DIR], [Location of the litecell 1.5 API header files])],
[litecell15_incdir="$withval"],[litecell15_incdir="$incdir"])
AC_SUBST([LITECELL15_INCDIR], -I$litecell15_incdir)
AC_MSG_RESULT([$enable_litecell15])
AM_CONDITIONAL(ENABLE_LC15BTS, test "x$enable_litecell15" = "xyes")
if test "$enable_litecell15" = "yes"; then
oldCPPFLAGS=$CPPFLAGS
CPPFLAGS="$CPPFLAGS $LITECELL15_INCDIR -I$srcdir/include"
AC_CHECK_HEADER([nrw/litecell15/litecell15.h],[],
[AC_MSG_ERROR([nrw/litecell15/litecell15.h can not be found in $litecell15_incdir])],
[#include <nrw/litecell15/litecell15.h>])
PKG_CHECK_MODULES(LIBSYSTEMD, libsystemd)
CPPFLAGS=$oldCPPFLAGS
fi
AC_MSG_CHECKING([whether to enable NuRAN Wireless OC-2G hardware support])
AC_ARG_ENABLE(oc2g,
AC_HELP_STRING([--enable-oc2g],
[enable code for NuRAN Wireless OC-2G bts [default=no]]),
[enable_oc2g="yes"],[enable_oc2g="no"])
AC_ARG_WITH([oc2g], [AS_HELP_STRING([--with-oc2g=INCLUDE_DIR], [Location of the OC-2G API header files])],
[oc2g_incdir="$withval"],[oc2g_incdir="$incdir"])
AC_SUBST([OC2G_INCDIR], -I$oc2g_incdir)
AC_MSG_RESULT([$enable_oc2g])
AM_CONDITIONAL(ENABLE_OC2GBTS, test "x$enable_oc2g" = "xyes")
if test "$enable_oc2g" = "yes"; then
oldCPPFLAGS=$CPPFLAGS
CPPFLAGS="$CPPFLAGS $OC2G_INCDIR -I$srcdir/include"
AC_CHECK_HEADER([nrw/oc2g/oc2g.h],[],
[AC_MSG_ERROR([nrw/oc2g/oc2g.h can not be found in $oc2g_incdir])],
[#include <nrw/oc2g/oc2g.h>])
PKG_CHECK_MODULES(LIBSYSTEMD, libsystemd)
PKG_CHECK_MODULES(LIBGPS, libgps)
CPPFLAGS=$oldCPPFLAGS
fi
# Generate manuals
AC_ARG_ENABLE(manuals,
[AS_HELP_STRING(
[--enable-manuals],
[Generate manual PDFs [default=no]],
)],
[osmo_ac_build_manuals=$enableval], [osmo_ac_build_manuals="no"])
AM_CONDITIONAL([BUILD_MANUALS], [test x"$osmo_ac_build_manuals" = x"yes"])
AC_ARG_VAR(OSMO_GSM_MANUALS_DIR, [path to common osmo-gsm-manuals files, overriding pkg-config and "../osmo-gsm-manuals"
fallback])
if test x"$osmo_ac_build_manuals" = x"yes"
then
# Find OSMO_GSM_MANUALS_DIR (env, pkg-conf, fallback)
if test -n "$OSMO_GSM_MANUALS_DIR"; then
echo "checking for OSMO_GSM_MANUALS_DIR... $OSMO_GSM_MANUALS_DIR (from env)"
else
OSMO_GSM_MANUALS_DIR="$($PKG_CONFIG osmo-gsm-manuals --variable=osmogsmmanualsdir 2>/dev/null)"
if test -n "$OSMO_GSM_MANUALS_DIR"; then
echo "checking for OSMO_GSM_MANUALS_DIR... $OSMO_GSM_MANUALS_DIR (from pkg-conf)"
else
OSMO_GSM_MANUALS_DIR="../osmo-gsm-manuals"
echo "checking for OSMO_GSM_MANUALS_DIR... $OSMO_GSM_MANUALS_DIR (fallback)"
fi
fi
if ! test -d "$OSMO_GSM_MANUALS_DIR"; then
AC_MSG_ERROR("OSMO_GSM_MANUALS_DIR does not exist! Install osmo-gsm-manuals or set OSMO_GSM_MANUALS_DIR.")
fi
# Find and run check-depends
CHECK_DEPENDS="$OSMO_GSM_MANUALS_DIR/check-depends.sh"
if ! test -x "$CHECK_DEPENDS"; then
CHECK_DEPENDS="osmo-gsm-manuals-check-depends"
fi
if ! $CHECK_DEPENDS; then
AC_MSG_ERROR("missing dependencies for --enable-manuals")
fi
# Put in Makefile with absolute path
OSMO_GSM_MANUALS_DIR="$(realpath "$OSMO_GSM_MANUALS_DIR")"
AC_SUBST([OSMO_GSM_MANUALS_DIR])
fi
# https://www.freedesktop.org/software/systemd/man/daemon.html
AC_ARG_WITH([systemdsystemunitdir],
[AS_HELP_STRING([--with-systemdsystemunitdir=DIR], [Directory for systemd service files])],,
[with_systemdsystemunitdir=auto])
AS_IF([test "x$with_systemdsystemunitdir" = "xyes" -o "x$with_systemdsystemunitdir" = "xauto"], [
def_systemdsystemunitdir=$($PKG_CONFIG --variable=systemdsystemunitdir systemd)
AS_IF([test "x$def_systemdsystemunitdir" = "x"],
[AS_IF([test "x$with_systemdsystemunitdir" = "xyes"],
[AC_MSG_ERROR([systemd support requested but pkg-config unable to query systemd package])])
with_systemdsystemunitdir=no],
[with_systemdsystemunitdir="$def_systemdsystemunitdir"])])
AS_IF([test "x$with_systemdsystemunitdir" != "xno"],
[AC_SUBST([systemdsystemunitdir], [$with_systemdsystemunitdir])])
AM_CONDITIONAL([HAVE_SYSTEMD], [test "x$with_systemdsystemunitdir" != "xno"])
AC_MSG_RESULT([CFLAGS="$CFLAGS"])
AC_MSG_RESULT([CPPFLAGS="$CPPFLAGS"])
AM_CONFIG_HEADER(btsconfig.h)
AC_OUTPUT(
src/Makefile
src/common/Makefile
src/osmo-bts-virtual/Makefile
src/osmo-bts-omldummy/Makefile
src/osmo-bts-sysmo/Makefile
src/osmo-bts-litecell15/Makefile
src/osmo-bts-oc2g/Makefile
src/osmo-bts-trx/Makefile
src/osmo-bts-octphy/Makefile
include/Makefile
include/osmo-bts/Makefile
tests/Makefile
@@ -381,13 +77,4 @@ AC_OUTPUT(
tests/cipher/Makefile
tests/sysmobts/Makefile
tests/misc/Makefile
tests/handover/Makefile
tests/tx_power/Makefile
tests/power/Makefile
tests/meas/Makefile
doc/Makefile
doc/examples/Makefile
doc/manuals/Makefile
contrib/Makefile
contrib/systemd/Makefile
Makefile)

View File

@@ -1 +0,0 @@
SUBDIRS = systemd

View File

@@ -1,89 +0,0 @@
#!/usr/bin/gawk -f
# Expected input format: FN TYPE
BEGIN {
DELTA = 0
ERR = 0
FORCE = 0
FN = 0
SILENCE = 0
TYPE = ""
CHK = ""
U_MAX = 8 * 20 + 120 / 26
U_MIN = 8 * 20 - 120 / 26
F_MAX = 3 * 20 + 120 / 26
F_MIN = 3 * 20 - 120 / 26
}
{
if (NR > 2) { # we have data from previous record to compare to
DELTA = ($1 - FN) * 120 / 26
CHK = "OK"
if ("FACCH" == $2 && "ONSET" == TYPE) { # ONSET due to FACCH is NOT a talkspurt
SILENCE = 1
}
if (("UPDATE" == TYPE || "FIRST" == TYPE) && ("FACCH" == $2 || "SPEECH" == $2)) { # check for missing ONSET:
CHK = "FAIL: missing ONSET (" $2 ") after " TYPE "."
ERR++
}
if ("SID_P1" == $2) {
CHK = "FAIL: regular AMR payload with FT SID and STI=0 (should be either pyaload Update or STI=1)."
ERR++
}
if ("FORCED_FIRST" == $2 || "FORCED_NODATA" == $2 || "FORCED_F_P2" == $2 || "FORCED_F_INH" == $2 || "FORCED_U_INH" == $2) {
CHK = "FAIL: event " $2 " inserted by DSP."
FORCE++
ERR++
}
if ("FIRST_P2" != $2 && "FIRST_P1" == TYPE) {
CHK = "FAIL: " TYPE " followed by " $2 " instead of P2."
ERR++
}
if ("FIRST" == $2 && "FIRST" == TYPE) {
CHK = "FAIL: multiple SID FIRST in a row."
ERR++
}
if ("OK" == CHK && "ONSET" != $2) { # check inter-SID distances:
if ("UPDATE" == TYPE) {
if (DELTA > U_MAX) {
CHK = "FAIL: delta (" $1 - FN "fn) from previous SID UPDATE (@" FN ") too big " DELTA "ms > " U_MAX "ms."
ERR++
}
if ("UPDATE" == $2 && DELTA < U_MIN) {
CHK = "FAIL: delta (" $1 - FN "fn) from previous SID UPDATE (@" FN ") too small " DELTA "ms < " U_MIN "ms."
ERR++
}
}
if ("FIRST" == TYPE) {
if (DELTA > F_MAX) {
CHK = "FAIL: delta (" $1 - FN "fn) from previous SID FIRST (@" FN ") too big " DELTA "ms > " F_MAX "ms."
ERR++
}
if ("UPDATE" == $2 && DELTA < F_MIN) {
CHK = "FAIL: delta (" $1 - FN "fn) from previous SID UPDATE (@" FN ") too small " DELTA "ms < " F_MIN "ms."
ERR++
}
}
}
if ("FACCH" == TYPE && "FIRST" != $2 && "FACCH" != $2 && 1 == SILENCE) { # check FACCH handling
CHK = "FAIL: incorrect silence resume with " $2 " after FACCH."
ERR++
}
}
if ("SPEECH" == $2 || "ONSET" == $2) { # talkspurt
SILENCE = 0
}
if ("UPDATE" == $2 || "FIRST" == $2) { # silence
SILENCE = 1
}
print $1, $2, CHK
if ($2 != "EMPTY") { # skip over EMPTY records
TYPE = $2
FN = $1
}
}
END {
print "Check completed: found " ERR " errors (" FORCE " events inserted by DSP) in " NR " records."
}

View File

@@ -10,7 +10,7 @@ env = os.environ
env['L1FWD_BTS_HOST'] = '127.0.0.1'
bts_proc = subprocess.Popen(["./src/osmo-bts-sysmo/sysmobts-remote",
"-c", "./doc/examples/sysmo/osmo-bts.cfg"], env = env,
"-c", "./doc/examples/osmo-bts.cfg"], env = env,
stdin=None, stdout=None)
time.sleep(1)

View File

@@ -1,91 +0,0 @@
/* GPLv3+ to read sysmobts-v2 revD or later EEPROM from userspace */
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <linux/i2c.h>
#include <linux/i2c-dev.h>
#include <sys/ioctl.h>
#include <errno.h>
#include <stdint.h>
#include <unistd.h>
#include <string.h>
/* Can read a 16bit at24 eeprom with 8192 byte in storage (24c64) */
static int dump_eeprom(int fd, int out)
{
#define STEP 8192
#define SIZE 8192
uint8_t buf[STEP + 2];
int rc = 0;
int i;
for (i = 0; i < SIZE; i += STEP) {
/* write the address */
buf[0] = i >> 8;
buf[1] = i;
rc = write(fd, buf, 2);
if (rc != 2) {
fprintf(stderr, "writing address failed: %d/%d/%s\n", rc, errno, strerror(errno));
return 1;
}
/* execute step amount of reads */
rc = read(fd, buf, STEP);
if (rc != STEP) {
fprintf(stderr, "Failed to read: %d/%d/%s\n", rc, errno, strerror(errno));
return 1;
}
write(out, buf, STEP);
}
return 0;
}
int main(int argc, char **argv)
{
int i2c_fd, out_fd;
char *filename = "/dev/i2c-1";
char *out_file = "eeprom.out";
int addr = 0x50;
int rc;
i2c_fd = open(filename, O_RDWR);
if (i2c_fd < 0) {
fprintf(stderr, "Failed to open i2c device %d/%d/%s\n",
i2c_fd, errno, strerror(errno));
return EXIT_FAILURE;
}
/* force using that address it is already bound with a driver */
rc = ioctl(i2c_fd, I2C_SLAVE_FORCE, addr);
if (rc < 0) {
fprintf(stderr, "Failed to claim i2c device %d/%d/%s\n",
rc, errno, strerror(errno));
return EXIT_FAILURE;
}
if (argc >= 2)
out_file = argv[1];
out_fd = open(out_file, O_WRONLY | O_CREAT | O_TRUNC, 0644);
if (out_fd < 0) {
fprintf(stderr, "Failed to open out device %s %d/%d/%s\n",
out_file, rc, errno, strerror(errno));
return EXIT_FAILURE;
}
if (dump_eeprom(i2c_fd, out_fd) != 0) {
unlink(out_file);
return EXIT_FAILURE;
}
return EXIT_SUCCESS;
}

View File

@@ -1,57 +0,0 @@
#!/bin/sh
# jenkins build helper script for osmo-bts. This is how we build on jenkins.osmocom.org
#
# environment variables:
# * FIRMWARE_VERSION: which firmware version to build ("master", "femtobts_v2.7", ...)
# * WITH_MANUALS: build manual PDFs if set to "1"
# * PUBLISH: upload manuals after building if set to "1" (ignored without WITH_MANUALS = "1")
#
# usage: jenkins_bts_model.sh BTS_MODEL
# * BTS_MODEL: which BTS model specific script to run ("sysmo", "oct", ...)
#
bts_model="$1"
if [ "x$bts_model" = "x" ]; then
echo "Error: You have to specify the BTS model as first argument, e.g. $0 sysmo"
exit 2
fi
if [ ! -d "./contrib" ]; then
echo "Run ./contrib/jenkins_bts_model.sh from the root of the osmo-bts tree"
exit 1
fi
set -x -e
case "$bts_model" in
sysmo)
./contrib/jenkins_sysmobts.sh
;;
oct)
./contrib/jenkins_oct.sh
;;
lc15)
./contrib/jenkins_lc15.sh
;;
oc2g)
./contrib/jenkins_oc2g.sh
;;
trx)
./contrib/jenkins_bts_trx.sh
;;
oct+trx)
./contrib/jenkins_oct_and_bts_trx.sh
;;
*)
set +x
echo "Unknown BTS model '$bts_model'"
;;
esac

View File

@@ -1,24 +0,0 @@
#!/bin/sh
# jenkins build helper script for osmo-bts-trx
# shellcheck source=contrib/jenkins_common.sh
. $(dirname "$0")/jenkins_common.sh
export PKG_CONFIG_PATH="$inst/lib/pkgconfig:$PKG_CONFIG_PATH"
export LD_LIBRARY_PATH="$inst/lib"
osmo-build-dep.sh libosmocore "" --disable-doxygen
osmo-build-dep.sh libosmo-abis
cd "$deps"
configure_flags="\
--enable-sanitize \
--enable-werror \
--enable-trx \
"
build_bts "osmo-bts-trx" "$configure_flags"
osmo-clean-workspace.sh

View File

@@ -1,60 +0,0 @@
#!/bin/sh
# this is a common helper script that is shared among all BTS model
# specific helper scripts like jenkins_sysmobts.sh. You shouldn't call
# this directly, but rather indirectly via the bts-specific scripts
if ! [ -x "$(command -v osmo-deps.sh)" ]; then
echo "Error: We need to have scripts/osmo-deps.sh from http://git.osmocom.org/osmo-ci/ in PATH !"
exit 2
fi
set -ex
base="$PWD"
deps="$base/deps"
inst="$deps/install"
export deps inst
osmo-clean-workspace.sh
mkdir -p "$deps"
verify_value_string_arrays_are_terminated.py $(find . -name "*.[hc]")
# generic project build function, usage:
# build "PROJECT-NAME" "CONFIGURE OPTIONS"
build_bts() {
set +x
echo
echo
echo
echo " =============================== $1 ==============================="
echo
set -x
cd $deps
osmo-deps.sh libosmocore
cd $base
shift
# Manuals: build
conf_flags="$*"
if [ "$WITH_MANUALS" = "1" ]; then
conf_flags="$conf_flags --enable-manuals"
osmo-build-dep.sh osmo-gsm-manuals
export PATH="$inst/bin:$PATH"
fi
autoreconf --install --force
./configure $conf_flags
$MAKE $PARALLEL_MAKE
$MAKE check || cat-testlogs.sh
DISTCHECK_CONFIGURE_FLAGS="$conf_flags" $MAKE distcheck || cat-testlogs.sh
# Manuals: publish
if [ "$WITH_MANUALS" = "1" ] && [ "$PUBLISH" = "1" ]; then
$MAKE -C "$base/doc/manuals" publish
fi
}

View File

@@ -1,25 +0,0 @@
#!/bin/sh
# jenkins build helper script for osmo-bts-lc15
# shellcheck source=contrib/jenkins_common.sh
. $(dirname "$0")/jenkins_common.sh
osmo-build-dep.sh libosmocore "" --disable-doxygen
export PKG_CONFIG_PATH="$inst/lib/pkgconfig:$PKG_CONFIG_PATH"
export LD_LIBRARY_PATH="$inst/lib"
osmo-build-dep.sh libosmo-abis
cd "$deps"
osmo-layer1-headers.sh lc15 "$FIRMWARE_VERSION"
configure_flags="\
--enable-sanitize \
--with-litecell15=$deps/layer1-headers/inc/ \
--enable-litecell15 \
"
build_bts "osmo-bts-lc15" "$configure_flags"
osmo-clean-workspace.sh

View File

@@ -1,25 +0,0 @@
#!/bin/sh
# jenkins build helper script for osmo-bts-oc2g
# shellcheck source=contrib/jenkins_common.sh
. $(dirname "$0")/jenkins_common.sh
osmo-build-dep.sh libosmocore "" --disable-doxygen
export PKG_CONFIG_PATH="$inst/lib/pkgconfig:$PKG_CONFIG_PATH"
export LD_LIBRARY_PATH="$inst/lib"
osmo-build-dep.sh libosmo-abis
cd "$deps"
osmo-layer1-headers.sh oc2g "$FIRMWARE_VERSION"
configure_flags="\
--enable-sanitize \
--with-oc2g=$deps/layer1-headers/inc/ \
--enable-oc2g \
"
build_bts "osmo-bts-oc2g" "$configure_flags"
osmo-clean-workspace.sh

View File

@@ -1,26 +0,0 @@
#!/bin/sh
# jenkins build helper script for osmo-bts-octphy
# shellcheck source=contrib/jenkins_common.sh
. $(dirname "$0")/jenkins_common.sh
osmo-build-dep.sh libosmocore "" --disable-doxygen
export PKG_CONFIG_PATH="$inst/lib/pkgconfig:$PKG_CONFIG_PATH"
export LD_LIBRARY_PATH="$inst/lib"
osmo-build-dep.sh libosmo-abis
cd "$deps"
osmo-layer1-headers.sh oct "$FIRMWARE_VERSION"
configure_flags="\
--enable-sanitize \
--enable-werror \
--with-octsdr-2g=$deps/layer1-headers/ \
--enable-octphy \
"
build_bts "osmo-bts-octphy" "$configure_flags"
osmo-clean-workspace.sh

View File

@@ -1,27 +0,0 @@
#!/bin/sh
# jenkins build helper script for osmo-bts-octphy + osmo-bts-trx
# shellcheck source=contrib/jenkins_common.sh
. $(dirname "$0")/jenkins_common.sh
export PKG_CONFIG_PATH="$inst/lib/pkgconfig:$PKG_CONFIG_PATH"
export LD_LIBRARY_PATH="$inst/lib"
osmo-build-dep.sh libosmocore "" --disable-doxygen
osmo-build-dep.sh libosmo-abis
cd "$deps"
osmo-layer1-headers.sh oct "$FIRMWARE_VERSION"
configure_flags="\
--enable-werror \
--with-octsdr-2g=$deps/layer1-headers/ \
--enable-octphy \
--enable-trx \
"
build_bts "osmo-bts-octphy+trx" "$configure_flags"
osmo-clean-workspace.sh

View File

@@ -1,33 +0,0 @@
#!/bin/sh
# jenkins build helper script for osmo-bts-sysmo
# shellcheck source=contrib/jenkins_common.sh
. $(dirname "$0")/jenkins_common.sh
osmo-build-dep.sh libosmocore "" --disable-doxygen
export PKG_CONFIG_PATH="$inst/lib/pkgconfig:$PKG_CONFIG_PATH"
export LD_LIBRARY_PATH="$inst/lib"
osmo-build-dep.sh libosmo-abis
cd "$deps"
osmo-layer1-headers.sh sysmo "$FIRMWARE_VERSION"
mkdir -p "$inst/include/sysmocom/femtobts"
ln -s $deps/layer1-headers/include/* "$inst/include/sysmocom/femtobts/"
configure_flags="\
--enable-sanitize \
--enable-werror \
--enable-sysmocom-bts \
--with-sysmobts=$inst/include/ \
"
# This will not work for the femtobts
if [ $FIRMWARE_VERSION != "femtobts_v2.7" ]; then
configure_flags="$configure_flags --enable-sysmobts-calib"
fi
build_bts "osmo-bts-sysmo" "$configure_flags"
osmo-clean-workspace.sh

View File

@@ -1,5 +1,5 @@
chdir /tmp
screen -t BTS 0 /etc/osmocom/respawn.sh /usr/bin/osmo-bts-sysmo -c /etc/osmocom/osmo-bts.cfg -r 1 -M
screen -t BTS 0 /etc/osmocom/respawn.sh /usr/bin/sysmobts -c /etc/osmocom/osmo-bts.cfg -r 1 -M
screen -t PCU 1 /etc/osmocom/respawn-only.sh /usr/bin/osmo-pcu -c /etc/osmocom/osmo-pcu.cfg -e
screen -t MGR 2 /etc/osmocom/respawn-only.sh /usr/bin/sysmobts-mgr -n -c /etc/osmocom/sysmobts-mgr.cfg
detach

View File

@@ -1,91 +0,0 @@
#!/usr/bin/gawk -f
# Usage example:
# tshark -2 -t r -E 'header=n' -E 'separator=,' -E 'quote=n' -T fields -e gsmtap.frame_nr -e gsmtap.ts -e gsmtap.arfcn -e _ws.col.Info -Y 'gsmtap' -r test.pcapng.gz | grep Information | env ARFCN=878 ./si_check.gawk
# read summary on number of bis/ter messages and adjust BT_BOTH and BT_NONE environment variables accordingly
BEGIN {
FS = ","
FAILED = 0
IGNORE = 0
BIS = 0
TER = 0
QUA = 0
BT_BOTH = ENVIRON["BOTH"]
BT_NONE = ENVIRON["NONE"]
TC_INDEX = 0
TC4[4] = 0
}
{ # expected .csv input as follows: gsmtap.frame_nr,gsmtap.ts,gsmtap.arfcn,_ws.col.Info
if ("ARFCN" in ENVIRON) { # ARFCN filtering is enabled
if (ENVIRON["ARFCN"] != $3) { # ignore other ARFCNs
IGNORE++
next
}
}
type = get_si_type($4)
tc = get_tc($1)
result = "FAIL"
if (1 == check_si_tc(tc, type)) { result = "OK" }
else { FAILED++ }
if (4 == tc) {
TC4[TC_INDEX] = type
TC_INDEX = int((TC_INDEX + 1) % 4)
if (0 == check_tc4c(type) && "OK" == result) {
result = "FAIL"
FAILED++
}
}
if (type == "2bis") { BIS++ }
if (type == "2ter") { TER++ }
if (type == "2quater") { QUA++ }
# for (i in TC4) print TC4[i] # debugging
printf "ARFCN=%d FN=%d TS=%d TC=%d TYPE=%s %s\n", $3, $1, $2, tc, type, result
}
END {
printf "check completed: total %d, failed %d, ignored %d, ok %d\nSI2bis = %d, SI2ter = %d, SI2quater = %d\n", NR, FAILED, IGNORE, NR - FAILED - IGNORE, BIS, TER, QUA
if ((BIS > 0 || TER > 0) && BT_NONE) { printf "please re-run with correct environment: unset 'NONE' variable\n" }
if ((BIS > 0 && TER > 0) && !BT_BOTH) { printf "please re-run with correct environment: set 'BOTH' variable\n" }
}
func get_si_type(s, x) { # we rely on format of Info column in wireshark output - if it's changed we're screwed
return x[split(s, x, " ")]
}
func get_tc(f) { # N. B: all numbers in awk are float
return int(int(f / 51) % 8)
}
func check_tc4c(si, count) { # check for "once in 4 consecutive occurrences" rule
count = 0
if ("2quater" != si || "2ter" != si) { return 1 } # rules is not applicable to other types
if (BT_NONE && "2quater" == si) { return 0 } # should be on TC=5 instead
if (!BT_BOTH && "2ter" == si) { return 0 } # should be on TC=5 instead
if (0 in TC4 && 1 in TC4 && 2 in TC4 && 3 in TC4) { # only check if we have 4 consecutive occurrences already
if (si == TC4[0]) { count++ }
if (si == TC4[1]) { count++ }
if (si == TC4[2]) { count++ }
if (si == TC4[3]) { count++ }
if (0 == count) { return 0 }
}
return 1
}
func check_si_tc(tc, si) { # check that SI scheduling on BCCH Norm is matching rules from 3GPP TS 05.02 § 6.3.1.3
switch (si) {
case "1": return (0 == tc) ? 1 : 0
case "2": return (1 == tc) ? 1 : 0
case "2bis": return (5 == tc) ? 1 : 0
case "13": return (4 == tc) ? 1 : 0
case "9": return (4 == tc) ? 1 : 0
case "2ter": if (BT_BOTH) { return (4 == tc) ? 1 : 0 } else { return (5 == tc) ? 1 : 0 }
case "2quater": if (BT_NONE) { return (5 == tc) ? 1 : 0 } else { return (4 == tc) ? 1 : 0 }
case "3": return (2 == tc || 6 == tc) ? 1 : 0
case "4": return (3 == tc || 7 == tc) ? 1 : 0
}
return 0
}

View File

@@ -1,110 +0,0 @@
#!/bin/sh
# Split common DSP call log file (produced by superfemto-compatible firmware) into 4 separate call leg files (MO/MT & DL/UL) with events in format "FN EVENT_TYPE":
# MO Mobile Originated
# MT Mobile Terminated
# DL DownLink (BTS -> L1)
# UL UpLink (L1 -> BTS)
if [ -z $1 ]; then
echo "expecting DSP log file name as parameter"
exit 1
fi
# MO handle appear 1st in the logs
MO=$(grep 'h=' $1 | head -n 1 | cut -f2 -d',' | cut -f2 -d= | cut -f1 -d']')
# direction markers:
DLST="_CodeBurst"
ULST="_DecodeAndIdentify"
# DL sed filters:
D_EMP='s/ Empty frame request!/EMPTY/i'
D_FAC='s/ Coding a FACCH\/. frame !!/FACCH/i'
D_FST='s/ Coding a RTP SID First frame !!/FIRST/i'
D_FS1='s/ Coding a SID First P1 frame !!/FIRST_P1/i'
D_FS2='s/ Coding a SID First P2 frame !!/FIRST_P2/i'
D_RP1='s/ Coding a RTP SID P1 frame !!/SID_P1/i'
D_UPD='s/ Coding a RTP SID Update frame !!/UPDATE/i'
D_SPE='s/ Coding a RTP Speech frame !!/SPEECH/i'
D_ONS='s/ Coding a Onset frame !!/ONSET/i'
D_FO1='s/ A speech frame is following a NoData or SID First without an Onset./FORCED_FIRST/i'
D_FO2='s/ A speech frame is following a NoData without an Onset./FORCED_NODATA/i'
D_FP2='s/ A speech frame is following a NoData or SID_FIRST_P2 without an Onset./FORCED_F_P2/i'
D_FIN='s/ A speech frame is following a SID_FIRST without inhibit. A SID_FIRST_INH will be inserted./FORCED_F_INH/i'
D_UIN='s/ A speech frame is following a SID_UPDATE without inhibit. A SID_UPDATE_INH will be inserted./FORCED_U_INH/i'
# UL sed filters:
U_NOD='s/ It is a No Data frame !!/NODATA/i'
U_ONS='s/ It is an ONSET frame !!/ONSET/i'
U_UPD='s/ It is a SID UPDATE frame !!/UPDATE/i'
U_FST='s/ It is a SID FIRST frame !!/FIRST/i'
U_FP1='s/ It is a SID-First P1 frame !!/FIRST_P1/i'
U_FP2='s/ It is a SID-First P2 frame !!/FIRST_P2/i'
U_SPE='s/ It is a SPEECH frame *!!/SPEECH/i'
U_UIN='s/ It is a SID update InH frame !!/UPD_INH/i'
U_FIN='s/ It is a SID-First InH frame !!/FST_INH/i'
U_RAT='s/ It is a RATSCCH data frame !!/RATSCCH/i'
DL () { # filter downlink-related entries
grep $DLST $1 > $1.DL.tmp
}
UL () { # uplink does not require special fix
grep $ULST $1 > $1.UL.tmp.fix
}
DL $1
UL $1
FIX() { # add MO/MT marker from preceding line to inserted ONSETs so filtering works as expected
cat $1.DL.tmp | awk 'BEGIN{ FS=" h="; H="" } { if (NF > 1) { H = $2; print $1 "h=" $2 } else { print $1 ", h=" H } }' > $1.DL.tmp.fix
}
FIX $1
MO() { # filter MO call DL or UL logs
grep "h=$MO" $1.tmp.fix > $1.MO.raw
}
MT() { # filter MT call DL or UL logs
grep -v "h=$MO" $1.tmp.fix > $1.MT.raw
}
MO $1.DL
MT $1.DL
MO $1.UL
MT $1.UL
PREP() { # prepare logs for reformatting
cat $1.raw | cut -f2 -d')' | cut -f1 -d',' | cut -f2 -d'>' | sed 's/\[u32Fn/fn/' | sed 's/\[ u32Fn/fn/' | sed 's/fn = /fn=/' | sed 's/fn=//' | sed 's/\[Fn=//' | sed 's/ An Onset will be inserted.//' > $1.tmp1
}
PREP "$1.DL.MT"
PREP "$1.DL.MO"
PREP "$1.UL.MT"
PREP "$1.UL.MO"
RD() { # reformat DL logs for consistency checks
cat $1.tmp1 | sed "$D_FST" | sed "$D_SPE" | sed "$D_FS1" | sed "$D_FS2" | sed "$D_UIN" | sed "$D_FIN" | sed "$D_UPD" | sed "$D_INH" | sed "$D_RP1" | sed "$D_ONS" | sed "$D_EMP" | sed "$D_FAC" | sed "$D_FO1" | sed "$D_FO2" | sed "$D_FP2" > $1.tmp2
}
RU() { # reformat UL logs for consistency checks
cat $1.tmp1 | sed "$U_FST" | sed "$U_SPE" | sed "$U_FP1" | sed "$U_FP2" | sed "$U_UPD" | sed "$U_ONS" | sed "$U_NOD" | sed "$U_UIN" | sed "$U_FIN" | sed "$U_RAT" > $1.tmp2
}
RD "$1.DL.MT"
RD "$1.DL.MO"
RU "$1.UL.MT"
RU "$1.UL.MO"
SW() { # swap fields
cat $1.tmp2 | awk '{ print $2, $1 }' > $1
}
SW "$1.DL.MT"
SW "$1.DL.MO"
SW "$1.UL.MT"
SW "$1.UL.MO"
rm $1.*.tmp*

View File

@@ -0,0 +1,10 @@
CFLAGS=`pkg-config --cflags libosmocore` -Wall -Werror
LIBS=`pkg-config --libs libosmocore libosmogsm`
all: sysmobts-calib
sysmobts-calib: sysmobts-calib.o sysmobts-layer1.o
$(CC) $(CPPFLAGS) $(LDFLAGS) -o $@ $^ -lrt $(LIBS)
clean:
@rm -f sysmobts-calib *.o

View File

@@ -310,36 +310,19 @@ int print_system_info()
#ifdef FEMTOBTS_NO_BOARD_VERSION
#define BOARD_REV(x) -1
#define BOARD_OPT(x) -1
#define COMPILED_MAJOR (FEMTOBTS_API_VERSION >> 16)
#define COMPILED_MINOR ((FEMTOBTS_API_VERSION >> 8) & 0xff)
#define COMPILED_BUILD (FEMTOBTS_API_VERSION & 0xff)
#else
#define BOARD_REV(x) x.u.systemInfoCnf.boardVersion.rev
#define BOARD_OPT(x) x.u.systemInfoCnf.boardVersion.option
#define COMPILED_MAJOR (SUPERFEMTO_API_VERSION >> 16)
#define COMPILED_MINOR ((SUPERFEMTO_API_VERSION >> 8) & 0xff)
#define COMPILED_BUILD (SUPERFEMTO_API_VERSION & 0xff)
#endif
printf("Compiled against: v%u.%u.%u\n",
COMPILED_MAJOR, COMPILED_MINOR, COMPILED_BUILD);
printf("Running DSP v%d.%d.%d FPGA v%d.%d.%d Rev: %d Option: %d\n",
printf("DSP v%d.%d.%d FPGA v%d.%d.%d Rev: %d Option: %d\n",
INFO_DSP(prim).major, INFO_DSP(prim).minor, INFO_DSP(prim).build,
INFO_FPGA(prim).major, INFO_FPGA(prim).minor, INFO_FPGA(prim).build,
BOARD_REV(prim), BOARD_OPT(prim));
if (COMPILED_MAJOR != INFO_DSP(prim).major || COMPILED_MINOR != INFO_DSP(prim).minor) {
printf("WARNING! WARNING! WARNING! WARNING! WARNING\n");
printf("You might run this against an incompatible firmware.\n");
printf("Continuing anyway but the result might be broken\n");
}
#undef INFO_DSP
#undef INFO_FPGA
#undef BOARD_REV
#undef BOARD_OPT
#undef COMPILED_MAJOR
#undef COMPILED_MINOR
#undef COMPILED_BUILD
return 0;
}

View File

@@ -1,5 +1,5 @@
[Unit]
Description=osmo-bts manager for sysmoBTS
Description=sysmocom sysmoBTS manager
[Service]
Type=simple
@@ -9,4 +9,4 @@ RestartSec=2
[Install]
WantedBy=multi-user.target
Alias=osmo-bts-mgr.service

View File

@@ -1,10 +1,10 @@
[Unit]
Description=osmo-bts for sysmocom sysmoBTS
Description=sysmocom sysmoBTS
[Service]
Type=simple
ExecStartPre=/bin/sh -c 'echo 0 > /sys/class/leds/activity_led/brightness'
ExecStart=/usr/bin/osmo-bts-sysmo -s -c /etc/osmocom/osmo-bts-sysmo.cfg -M
ExecStart=/usr/bin/sysmobts -s -c /etc/osmocom/osmo-bts.cfg -M
ExecStopPost=/bin/sh -c 'echo 0 > /sys/class/leds/activity_led/brightness'
ExecStopPost=/bin/sh -c 'cat /lib/firmware/sysmobts-v?.bit > /dev/fpgadl_par0 ; sleep 3s; cat /lib/firmware/sysmobts-v?.out > /dev/dspdl_dm644x_0; sleep 1s'
Restart=always
@@ -17,5 +17,3 @@ CPUSchedulingPriority=1
[Install]
WantedBy=multi-user.target
Alias=sysmobts.service
Alias=osmo-bts.service

View File

@@ -1,28 +0,0 @@
EXTRA_DIST = \
lc15bts-mgr.service \
oc2gbts-mgr.service \
osmo-bts-lc15.service \
osmo-bts-oc2g.service \
osmo-bts-sysmo.service \
osmo-bts-trx.service \
osmo-bts-virtual.service \
sysmobts-mgr.service
if HAVE_SYSTEMD
SYSTEMD_SERVICES = osmo-bts-virtual.service
if ENABLE_SYSMOBTS
SYSTEMD_SERVICES += osmo-bts-sysmo.service sysmobts-mgr.service
endif
if ENABLE_TRX
SYSTEMD_SERVICES += osmo-bts-trx.service
endif
if ENABLE_LC15BTS
SYSTEMD_SERVICES += osmo-bts-lc15.service lc15bts-mgr.service
endif
systemdsystemunit_DATA = $(SYSTEMD_SERVICES)
endif # HAVE_SYSTEMD

View File

@@ -1,29 +0,0 @@
[Unit]
Description=osmo-bts manager for LC15 / sysmoBTS 2100
After=lc15-sysdev-remap.service
Wants=lc15-sysdev-remap.service
[Service]
Type=simple
NotifyAccess=all
WatchdogSec=21780s
Restart=always
RestartSec=2
# Make sure directories and symbolic link exist
ExecStartPre=/bin/sh -c 'test -d /mnt/storage/var/run/lc15bts-mgr || mkdir -p /mnt/storage/var/run/lc15bts-mgr ; test -d /var/run/lc15bts-mgr || ln -sf /mnt/storage/var/run/lc15bts-mgr/ /var/run'
# Make sure BTS operation hour exist
ExecStartPre=/bin/sh -c 'test -f /mnt/storage/var/run/lc15bts-mgr/hours-running || echo 0 > /mnt/storage/var/run/lc15bts-mgr/hours-running'
# Shutdown all PA correctly
ExecStartPre=/bin/sh -c 'echo disabled > /var/lc15/pa-state/pa0/state; echo disabled > /var/lc15/pa-state/pa1/state'
ExecStartPre=/bin/sh -c 'echo 0 > /var/lc15/pa-supply/max_microvolts; echo 0 > /var/lc15/pa-supply/min_microvolts'
ExecStart=/usr/bin/lc15bts-mgr -s -c /etc/osmocom/lc15bts-mgr.cfg
# Shutdown all PA correctly
ExecStopPost=/bin/sh -c 'echo disabled > /var/lc15/pa-state/pa0/state; echo disabled > /var/lc15/pa-state/pa1/state'
ExecStopPost=/bin/sh -c 'echo 0 > /var/lc15/pa-supply/max_microvolts; echo 0 > /var/lc15/pa-supply/min_microvolts'
[Install]
WantedBy=multi-user.target
Alias=osmo-bts-mgr.service

View File

@@ -1,29 +0,0 @@
[Unit]
Description=osmo-bts manager for OC-2G
After=oc2g-sysdev-remap.service
Wants=oc2g-sysdev-remap.service
[Service]
Type=simple
NotifyAccess=all
WatchdogSec=21780s
Restart=always
RestartSec=2
# Make sure directories and symbolic link exist
ExecStartPre=/bin/sh -c 'test -d /mnt/storage/var/run/oc2gbts-mgr || mkdir -p /mnt/storage/var/run/oc2gbts-mgr ; test -d /var/run/oc2gbts-mgr || ln -sf /mnt/storage/var/run/oc2gbts-mgr/ /var/run'
# Make sure BTS operation hour exist
ExecStartPre=/bin/sh -c 'test -f /mnt/storage/var/run/oc2gbts-mgr/hours-running || echo 0 > /mnt/storage/var/run/oc2gbts-mgr/hours-running'
# Shutdown all PA correctly
ExecStartPre=/bin/sh -c 'echo disabled > /var/oc2g/pa-state/pa0/state;'
#ExecStartPre=/bin/sh -c 'echo 0 > /var/oc2g/pa-supply/max_microvolts; echo 0 > /var/oc2g/pa-supply/min_microvolts'
ExecStart=/usr/bin/oc2gbts-mgr -s -c /etc/osmocom/oc2gbts-mgr.cfg
# Shutdown all PA correctly
ExecStopPost=/bin/sh -c 'echo disabled > /var/oc2g/pa-state/pa0/state;'
#ExecStopPost=/bin/sh -c 'echo 0 > /var/oc2g/pa-supply/max_microvolts; echo 0 > /var/oc2g/pa-supply/min_microvolts'
[Install]
WantedBy=multi-user.target
Alias=osmo-bts-mgr.service

View File

@@ -1,21 +0,0 @@
[Unit]
Description=osmo-bts for LC15 / sysmoBTS 2100
[Service]
Type=simple
ExecStartPre=/bin/sh -c 'echo 1 > /sys/class/leds/usr0/brightness'
ExecStartPre=/bin/sh -c 'echo 1 > /sys/class/leds/usr1/brightness'
ExecStart=/usr/bin/osmo-bts-lc15 -t 2 -s -c /etc/osmocom/osmo-bts-lc15.cfg -M
ExecStopPost=/bin/sh -c 'echo 1 > /sys/class/leds/usr0/brightness'
ExecStopPost=/bin/sh -c 'echo 0 > /sys/class/leds/usr1/brightness'
Restart=always
RestartSec=2
RestartPreventExitStatus=1
# The msg queues must be read fast enough
CPUSchedulingPolicy=rr
CPUSchedulingPriority=1
[Install]
WantedBy=multi-user.target
Alias=osmo-bts.service

View File

@@ -1,21 +0,0 @@
[Unit]
Description=osmo-bts for OC-2G
[Service]
Type=simple
ExecStartPre=/bin/sh -c 'echo 1 > /sys/class/leds/usr0/brightness'
ExecStartPre=/bin/sh -c 'echo 1 > /sys/class/leds/usr1/brightness'
ExecStart=/usr/bin/osmo-bts-oc2g -s -c /etc/osmocom/osmo-bts.cfg -M
ExecStopPost=/bin/sh -c 'echo 1 > /sys/class/leds/usr0/brightness'
ExecStopPost=/bin/sh -c 'echo 0 > /sys/class/leds/usr1/brightness'
Restart=always
RestartSec=2
RestartPreventExitStatus=1
# The msg queues must be read fast enough
CPUSchedulingPolicy=rr
CPUSchedulingPriority=1
[Install]
WantedBy=multi-user.target
Alias=osmo-bts.service

View File

@@ -1,15 +0,0 @@
[Unit]
Description=Osmocom osmo-bts for osmo-trx
[Service]
Type=simple
ExecStart=/usr/bin/osmo-bts-trx -s -c /etc/osmocom/osmo-bts-trx.cfg
Restart=always
RestartSec=2
# Let it process messages quickly enough
CPUSchedulingPolicy=rr
CPUSchedulingPriority=1
[Install]
WantedBy=multi-user.target

View File

@@ -1,15 +0,0 @@
[Unit]
Description=Osmocom GSM BTS for virtual Um layer based on GSMTAP/UDP
[Service]
Type=simple
ExecStart=/usr/bin/osmo-bts-virtual -s -c /etc/osmocom/osmo-bts-virtual.cfg
Restart=always
RestartSec=2
# Let it process messages quickly enough
CPUSchedulingPolicy=rr
CPUSchedulingPriority=1
[Install]
WantedBy=multi-user.target

998
debian/changelog vendored
View File

@@ -1,998 +0,0 @@
osmo-bts (1.0.1) unstable; urgency=medium
[ Harald Welte ]
* rsl.c: Add missing #include of gsm0808.h
[ Oliver Smith ]
-- Oliver Smith <osmith@sysmocom.de> Wed, 27 Mar 2019 14:19:45 +0100
osmo-bts (1.0.0) unstable; urgency=medium
[ Stefan Sperling ]
* let osmo-bts log a special notice if OML connection is closed early
* log reception of PCU_IF_MSG_PAG_REQ messages from osmo-pcu
* update sysinfo copies in all lchans upon SACCH FILL
* preserve lchan-specific SI overrides on SACCH FILL
* fix timespec subtraction in compute_elapsed_us()
* fix conditions for sending fill frames during RTS IND
* send TCH/F fill frames in DTX mode (WIP)
* Revert "send TCH/F fill frames in DTX mode (WIP)"
* prevent potential NULL dereference in virtbts's tx_tchh_fn
* properly initialize si3 in test_is_ccch_for_agch_setup()
* add missing check of osmo_wqueue_enqueue() return value
[ Harald Welte ]
* scheduler_trx: Add reminders to use libosmocore functions
* cosmetic: it's n_r in check_for_first_ciphrd(), not n_s
* Add min/max/std-dev measurement reporting for TOA256
* debian/rules: Don't overwrite .tarball-version
* CBCH: Fix rejecting SMS-CB related RSL messages
* [sysmo,lc15]: Consider CBCH channel combinations in chan_nr_by_sapi()
* CBCH: Move processing via L1SAP
* CBCH: Implement CBCH support for osmo-bts-{trx,virtual}
* CBCH: Use llist_first_entry_or_null() instead of reinventing it
* l1sap/scheduler: Consistently print chan_nr as hex number
* CBCH: Fix CBCH via L1SAP for osmo-bts-{sysmo,octphy,litecell15}
* get_lchan_by_chan_nr(): Fix resolution of CBCH
* CBCH: Add FIXME comments on queue overflow/underflow handling
* CBCH: sprinkle some OMSO_ASSERT() and guard against talloc failure
* CBCH: Fix CBCH implementation for osmo-bts-trx
* CBCH: Some more scheduler_mframe cleanup
* ensure all config file examples are well-formed
* lc15bts_mgr_vty: Ensure writing well-formed config files
* paging_test: Fix AGCH/PCH split test for second half of 102 multiframe
* Fix computing CCCH block number from frame number
* sysmo, virtual: properly handle BS-AG-BLKS-RES as received from BSC
* scheduler_trx.c: Switch to osmo_timerfd() of libosmocore >= 0.12.0
* initial checkin of manuals to public repo
* Add link to Asciidoc source code of manual
* spelling: message discriminator, not descriminator
* osmobts-abis: Add Revision log regarding dynamic cannels
* Documentation on AMR RTP in case of DTX
* rtp-amr.adoc: TCH/AFS Uplink
* rtp-amr.adoc: TCH/AFS Downlink: Inhibiting
* rtp-amr: TCH/AHS Uplink: FACCH/H During DTX
* rtp-amr.adoc: New TCH/AHS downlink chapters
* rtp-amr.adoc: Fixes to Message Sequence Charts
* update osmo-bts-virtual documentation, now that code is merged
* vty-ref: Update URI of docbook 5.0 schema
* osmo-bts-trx/loops.c: Add comments documenting TA + MS power control loop
* osmo-bts-trx/loops.[ch]: Make functions "void" if they always return 0
* osmo-bts-trx/loops.c: Use lchan name based logging
* osmo-bts-trx/loops.c: Make code control flow more readable
[ Philipp Maier ]
* rtp: make port range configurable, assign correct port numbers
* octphy: add support for 16x oversampling mode
* cosmetic: separate measurement testcase definitions
* cosmetic: unify measurement sample handling in one function
* measurement: make sure state is reset on chan act.
* measurement: make sure measurement interval end is detected
* measurement: fix measurement interval end detection
* osmo_mcast_sock: make sure SO_REUSEADDR is applied
* cosmetic: fix sourcecode formatting
* cosmetic: remove wrong comment
* measurement: add unit tests for is_meas_complete()
* measurement: fix sub frame table for TCH/H, SS1
* measurement: add unit tests for ts45008_83_is_sub()
* measurement: fix is_meas_overdue() and increase testcoverage
* cosmetic: rename *_meas_rep_fn10* to *_meas_rep_fn10*_by_*s
* cosmetic: test_is_meas_overdue() does not test is_meas_complete()
* measurement: substitue missing measurements
* measurement: add SUB measurements in test_lchan_meas_process_measurement
* paging: add unit-test to check different bs_ag_blks_res settings
* measurement: display fn_mod when measuremnet is added
* cosmetic: fix typo in comment
* measurement: remove missed interval end detection
* measurement: fix unit-test test_lchan_meas_process_measurement
[ Pau Espin Pedrol ]
* bts.c: Log name of RR msg type instead of value
* bts.c: Add missing include for gsm48_rr_msg_name
* bts_agch_enqueue: Decrease queue len hard_limit from 1000 to 100
* compact AGCH queue: Drop too msg diff than IMM_ASS_REJ
* Send DELETE_IND when dropping Imm Assign pending message
* lc15: Use correct type for hLayer1 field
* lc15: Fix incorrect cast of hLayer1
* pcu_sock: Log event pcu_sock created
* l1_if.c: Move decl of vars used in conditional macro
* sysmo: vty: Add missing include for lchan_deactivate
* sysmo: Fix memcmp in RF-MUTE.req for superfemto < 3.6.0
* sysmo: l1if_mute_rf: Declare vars inside ifdef section
* sysmo: l1_if.c: Avoid decl of unused vars and funcs with femtobts_v2.7 build
* sysmo: calib_file.c: Avoid decl of unused vars and funcs with femtobts_v2.7 build
* jenkins_*.sh: add --enable-werror to configure flags
* doc: Move calypsoBTS example into trx subdir
* build: Install example cfg files
* debian: Package installed example doc files
* Remove unneeded direct libortp dependency
* debian: Make osmo-bts-* packages conflict with old osmo-bts package
* debian: Create dbg package for osm-bts-virtual
* rsl: Use value_string to print encryption algo name
* l1sap: add_l1sap_header: Compact msgb_push ret assignment
* sched: Log RX->RTP packet like we do in add_l1sap_header
* scheduler: Log error on fn jump
* trx: scheduler: Keep RTP clock up to date while in DTXu pause
* Move systemd service to contrib/systemd
* Install systemd services with autotools
* Install sample cfg file to /etc/osmocom
* doc/examples/Makefile: Install bts-mgr cfg files used by systemd services
* lc15: vty: Add missing include for lchan_deactivate
* lc15: fsync requires fd instead of file stream
* lc15: rewrite and refactor code to print hwversion description
* lc15: led_sleep_cb: pass correct ptr to llist_move_tail
* abis: inp_s_cbfn: Improve logging signal related information
* lchan_meas_check_compute: Log value during incorrect num of SUB measurementes detected
* l1sap: Log name of chan_nr instead of hex value
* rsl_rx_chan-activ: Improve logging information
* gsm_pchan2chan_nr: Fix conversion of CCCH_LCHAN
* Convert lchan CCCH_LCHAN to chan_nr BCCH and viceversa
* {oc2g,sysmo}-mgr-calib: Fix build against gpsd >= 3.18
* bts: Allocate TRX for BTS dynamically, deprecate -t
* bts-trx: trx_if: Use struct to store CTRL msg parsed responses
* bts-trx: setup timer once at creation time
* common: Implement OML for trx_set_available(1)
* bts-trx: Allow re-try without exit if POWERON fails in osmo-trx
* bts: Fix TRX0 param initialization
* rsl: Log lchan state during dynts PDCH->TCH
* rsl: Avoid sending ipa PDCH DEACT NACK followed by ACK
* bts-trx: early return on POWERON success
* cosmetic: fix whitespace
* bts_model: Allow TS connect to be processed asynchronously
* OsmoBTS/chapters/configuration.adoc: Add bts index in example
* OsmoBTS: Update osmotrx ip to diff between local and remote
* rtp-amr: Describe requirement to recieve all PH-DATA.ind events
* rtp-amr: Fix typo and trailing whitespace
* Allow easily disabling GFDL references
* OsmoBTS: bts-models: Add Lime Microsystems devices as supported osmo-trx
* Introduce chapter trx_if.adoc and add it to OsmoTRX and OsmoBTS
* bts: Fix typo
* oc2g: Fix headers missing during make distcheck
* bts-trx: (n)ack PDCH DEACT only after TRX answered SETSLOT
* sysmobts_mgr: Prepare code for gpsd < 2.96 support
* sysmobts_mgr: Add support for gpsd < 2.96
* rsl: Send PDCH ACT NACK if TCH chan is still active
[ Vadim Yanitskiy ]
* Clarify frame loss counter for l1sched_chan_state
* osmo-bts-trx/l1_if.c: cosmetic: fix typo in debug msg
* common/rsl.c: tweak log message in lapdm_rll_tx_cb()
* contrib/jenkins_*.sh: drop rudimentary '--with-osmo-pcu'
* common/pcu_sock.c: cosmetic: explicitly address lchan
* common/scheduler.c: track TDMA frame loss per logical channels
* common/vty.c: fix deprecated osmo_str2lower() usage
* Fix deprecated gsm_arfcn2band(), use gsm_arfcn2band_rc()
[ Neels Hofmeyr ]
* cosmetic: abis.c: typo "exixt"
* fix ip.access dyn TS for osmo-bts-trx
* fix RSL Chan Mode Modif for dyn TS
* vty: mark 'rtp bind-ip' deprecated, not hidden
* Importing history from osmo-gsm-manuals
* OsmoBTS: typo x2 ('Objects Classes' -> 'Object Classes')
* OsmoBTS: fix typos, streamline language style
* OsmoBTS: s/content of this attribute/this attribute/
* OsmoBTS: explain IEs marked 'ignored' *and* 'Received'
* abis/oml.doc: remove duplicate sentence part
* OsmoBTS: typos
* OsmoBTS: wording tweak
* OsmoBTS: hardware support: remove dup, tweak wording
* Document dynamic channels on Abis, both IPA and Osmocom style
* OsmoBTS/abis/rsl: fix subtitle for ladder diagram of osmo dyn switchover
* OsmoBTS/abis/dyn_ts_osmocom_style.msc: adjust PDCH Act ack
* OsmoBTS/abis/rsl.adoc: fix missing section header
* OsmoBTS/chapters/dynamic-timeslots.adoc: Remove obsolete links
* osmobts-usermanual.adoc: fix link to abis.adoc chapter
* OsmoBTS/chapters/configuration.adoc: fix index numbering
* OsmoBTS/abis/rsl: cosmetic: 'IPA style'
* OsmoBTS/abis/rsl: add missing info for Osmocom Dyn Channels
* make clean: also remove generated image files
* add 'make check' target
* OsmoBTS/abis/rsl: combine separate dyn ts sections
* fix 'make clean': shell glob, ignore failure
* OsmoBTS/abis/rsl: split dyn TS ladder diagrams to fit on page
* fix build: abis: re-add dependencies
* dynamic timeslots: add BSC level config instructions
* refactor Makefile build rules, don't use the FORCE
[ Keith Whyte ]
* log: add error log for RSL Chan Mode Modif
* fix handling of odd pchans in bts_supports_cm()
[ Omar Ramadan ]
* Add OC-2G BTS sources
[ Max ]
* osmo-bts-trx: print TRX socket addresses in 'show transceiver'
* Fix type mismatch
* Drop unused function
* Add OsmoBTS control interface description
* Move RTP AMR doc to top level
* Add DTX implementation details to RTP AMR
* Sync DTX FSM with OsmoBTS code
[ Holger Hans Peter Freyther ]
* OsmoBTS: Fix the author name and mail address
[ Jonathan Brielmaier ]
* fix various typos across all manuals
[ Daniel Willmann ]
* Add section about configuring power-ramping
* OsmoBTS: Print VTY command in fixed-width font
* OsmoBTS: Fix typo
[ Alexander Couzens ]
* OsmoBTS: add vty reference documentation
* OsmoBTS: generate osmobts-abis.pdf again
[ Ivaylo Kostov ]
* BSC,BTS: add diagrams of PCU-BTS-NITB-SGSN relationships
[ Philipp ]
* Describe how to run multiple instances of osmo-nitb and osmo-bts
[ Oliver Smith ]
* build manuals moved here from osmo-gsm-manuals.git
* Fix DISTCHECK_CONFIGURE_FLAGS override
* contrib/jenkins_*.sh: build and publish manuals
* contrib: fix makedistcheck with disabled systemd
-- Harald Welte <laforge@gnumonks.org> Sun, 20 Jan 2019 21:13:37 +0100
osmo-bts (0.8.1) unstable; urgency=medium
[ Neels Hofmeyr ]
* cosmetic: dyn TS: clarify rsl_tx_rf_rel_ack() with a switch
* dyn TS: fix TCH/F_TCH/H_PDCH: properly record release of PDCH TS
* dyn TS: rx_rf_chan_rel: properly mark PDCH rel when no PCU, clarify
* dyn TS: clear TCH state upon reconnecting as PDCH
* cosmetic: dyn TS: clarify chan_nr composition
* ignore RSL RF CHAN REL for inactive lchans
* fix RSL Chan Activ Nack messages
* ip.access dyn ts: properly NACK a PDCH ACT on a still active lchan
* add/improve various logging around dyn ts
* dyn TS: be less strict on chan_nr, to allow arbitrary pchan switches
[ Stefan Sperling ]
* send a State Changed Event Report when rf is locked/unlocked
[ Harald Welte ]
* rsl: log errors when parsing of encryption information fails
* rsl: Make channel activation fail if encryption algorithm not supported
* rsl: Properly NACK CHAN_ACKT / MODE_MODIFY
* rsl: If CHAN ACT or MODE MODIF fails, send respective NACK
* osmo-bts-trx: Enable A5/3 cipher support
-- Pau Espin Pedrol <pespin@sysmocom.de> Tue, 15 May 2018 14:08:47 +0200
osmo-bts (0.8.0) unstable; urgency=medium
[ Neels Hofmeyr ]
* vty: skip installing cmds now always installed by default
* jenkins_common.sh: fix build_bts distcheck for more than one conf_flag
* fix build: tests/sysmobts: add missing -I$(SYSMOBTS_INCDIR)
* fix handover: handle_ph_ra_ind(): evaluate ra_ind before msgb_trim()
* implement support for 3-digit MNC with leading zeros
* configure: add --enable-werror
* use osmo_init_logging2() with proper talloc ctx
[ Pau Espin Pedrol ]
* lc15: Fix cfg indentation
* l1sap: Fix abort on big RTP packet received
* bts-trx: trx_ctrl_cmd: Simplify var assignment logic
* bts-trx: Avoid enqueueing consecutive duplicate messages to TRX
* Fix malformed Resource Indication packet
* debian/control: Remove uneeded dep libosmo-netif-dev
* jenkins.sh: Disable building doxygen for deps
* oml.c: Fix use of htons instead of ntohs
* bts-trx: trx_if.c: Log timedout+retransmitted CMD
* bts-trx: trx_if.c: trx_ctrl_read_cb: Move error handling to end of func
* bts-trx: trx_if.c: Improve parsing of received RSP messages from TRX
* bts-trx: Detect duplicated responses for retransmitted commands
* gsm_pchan2chan_nr: move warning to pragma message and track issue
* Remove unused variables
* bts-trx: scheduler_trx.c: Fix missing header
* l1sap.c: l1sap_tch_rts_ind: Remove unused variables
* octphy: octpkt.c: Remove unused static functions
* vty.c: Remove warning message
* virtual: l1_if.c: Remove unneeded warning message
* main.c: bts_main: fix typo in error message
* l1sap: Validate incoming RTP payload, drop bw-efficient AMR
* l1sap: Avoid assumption that l1sap is at head of msgb
* contrib: jenkins_bts_model: Fix bashism expr
* Include missing headers for osmo_init_logging2
* common/sysinfo.c: Fix no return on on-void function
* gsm_data_shared.h: Remove unused enum gsm_paging_event
* scheduler_trx: Fix signed integer overflow in clock calculations
[ Harald Welte ]
* trx: Better be safe than sorry before calling strlen
* trx: Avoid NULL+1 dereference in trx_ctrl_read_cb()
* trx: Don't call osmo_fr_check_sid with negative 'rc'
* trx: Don't assume phy_instance_by_num() returns non-NULL
* l1sap: fix wrong return value of is_fill_frame()
* measurement.c: Fix various typos in comments
* Comments on individual members of struct gsm_abis_mo
* scheduler: Harmonize log line format; Always print TS name + decoded FN
* scheduler_trx: L1P is for PH (data), L1M for MPH (control)
* l1sap: Fix log subsystem: Use DRTP for RTP related bits, L1C for MPH
* measurment.c: Introduce INFO category for DMEAS logging
* osmo-bts-octphy: Remove bogus warning about BS_AG_BLKS_RES
* rsl.c: Log RTP socket related errors as DRTP, not DRSL
* Put useful information in RTCP SDES.
* osmo-bts-trx: Fix reported frame number during PRIM_INFO_MEAS
* DTX: avoid illegal character contained in DTX FSM allocation which causes BTS crash
* gsm_lchan: remove unused member fields
* Add 'show (bts|trx|ts|lchan)' commands
* Print much more information during 'show lchan'
* vty: don't print "Bound IP / Port" if it isn't bound [yet]
* osmo-bts: Add talloc context introspection via VTY
* sysmo: Fix compiler warnings in eeprom.c
* sysmo+lc15: Add missign include for readv/writev
* trx: make l1if_fill_meas_res() static
* RSL: Properly reject RSL CHAN_NR IE for incompatible PCHAN
* RSL: Ensure we don't accept DCHAN messages for CCHAN
* osmo-bts-virtual: Shut down gracefully on socket creation failure
* osmo-bts-virtual: Generate PRIM_INFO_MEAS (with bogus values)
* Introduce + use LOG/DEBUGP with frame number prefixing/printing
* osmo-bts-virtual: Make use of LOGL1S() macro for context
* osmo-bts-virtual: Make sure PRIM_INFO_MEAS have non-zero frame number
* scheduler.c: Factor out find_sched_mframe_idx() function
* scheduler: add trx_sched_is_sacch_fn() function
* Revert "measurement: fix measurement computation"
* measurement.c: Hand Frame Number into measurement computation
* l1sap: Pass is_sub from L1 primitive into the Uplink Measurement
* osmo-bts-trx: Add missing frame number to l1if_process_meas_res()
* scheduler.c: Print message when burst substitution happens
* load_indication: Fix start of load indication timer
* RSL: Implement DELETE INDICATION on AGCH overflow
* RSL: Send ERROR REPORT on too short/truncated messages + wrong discriminator
* BTS: add rate_ctr about CCCH (paging, agch, pch)
* paging: Drop + Log paging requests for non-existant paging groups
* paging.c: Fix encoding of optional Mobile ID RR PAGING TYPE 1 / 2
* rsl: Improve ERROR REPORTing
* paging: Fix encoding of PAGING TYPE 3 Rest Octets
* RSL IPA DLCX: Avoid null-pointer dereference
* RSL: Fix encoding of ConnectionID in IPA_DLCX_ACK
* RSL IPA DLCX: Avoid another null-pointer dereference
* measurement.c: Fix sdcch4_meas_rep_fn102 / sdcch8_meas_rep_fn102
* counters: split rach:sent into rach:drop, rach:ho, rach:cs and rach:ps
* octphy: Remove code duplication for BER / RSSI conversion
* {sysmo,lc15}: Correctly report BER to L1SAP in INFO_MEAS_IND
* {sysmo,lc15}: Fix RACH reporting in combined CBCH case
* split scheduler_mframe.c from scheduler.c
* measurement: Compute RX{LEV,QUAL}-SUB for SDCCH and non-AMR TCH
* measurement.c: Don't silently copy "FULL" measurements to "SUB"
* scheduler: Add missing \n at end of LOG statement
* Move rach_busy counting above L1SAP
* RACH decoding: Use BER threshold for RACH ghost detection
* trx/scheduler: Use integer math for TOA (Timing of Arrival)
* measurement.c: higher-precision TA/TOA math
* L1SAP: Increase resolution of reported burst timing
* measurement: Keep average of high-accurate ToA value in lchan
* Add high-accuracy ToA value to Uplink Measurement Reports
* pcu_sock: Discard messages that are too short
* pcu_sock: Don't overflow the timeslot array
* pcu_sock: Log an error message and discard PCU primitives for BTS != 0
* pcu_sock: LOG + drop DATA.req from PCU for non-PDCH timeslot
* pcu_sock: LOG + drop PCU DATA.req for inactive lchan
* sysinfo.c: SI1 is optional; Send SI2 at TC=0 if no SI1 exists
* sysmobts: Compatibility with older firmware versions
* cosmetic: Document some SI scheduling related function API
* sysinfo: Fix scheduling of downlink SACCH information
* gsm_data_shared: Remove unused definitions/members/functions
* cosmetic: Move agch_queue to sub-structure of gsm_bts_role_bts
* Get rid of 'struct gsm_bts_role_bts'
* virtual: Correctly set+report BTS variant in OML attributes
* Add 'osmo-bts-omldummy' to bring up only OML without RSL
* fix inverted logic bug in omldummy patch
* omldummy: Suppress RSL transmission errors
* debian: Split osmo-bts-virtual from osmo-bts-trx
* fox chan_nr_is_dchan() for RSL_CHAN_OSMO_PDCH
* rsl_tx_dyn_pdch_ack: Add missing FRAME_NR information element
* fix activation of osmocom-style dynamic PDCH as TCH/F or TCH/H
[ Philipp Maier ]
* octphy: override firmware version check
* cosmetic: meas_test: fix section comment
* cosmetic: tests/Makefile.am: remove excess whitespace
* cosmetic: tests/power: remove unused var "ret"
* cosmetic: tests/agch: remove unused var "static_ilv"
* octphy: l1_oml: check returncode of trx_by_l1h()
* meas_test: fix header file references
* rsl: fix double-free in rsl_rx_mode_modif()
* fix nullpointer deref in rsl_tx_mode_modif_nack()
* rsl: do not allow MODE MODIFY request with unsupp. codec/rate
* gsm_data_shared: extend bts feature list with speech codecs
* octphy: ensure all BTS models set features
* vty: display bts features in vty command show bts
* bts: use feature list instead of speech codec table
* octphy: replace #warning with #pragma message
* ipac: fix log output
* rsl: remove unused variable
* l1_tch: remove dead code
* cosmetic: remove dead code
* cosmetic: remove unused variable
* cosmetic: remove unused variable in osmo-bts-omldummy/main.c
* octphy: integrate octasics latest header release
* osmo-bts-trx: perform error concealment for FR frames
[ Max ]
* Remove leftover comments and checks
* Log filenames on L1 errors
* Add --enable-sanitize configure option
* Use existing function to obtain TSC
* Remove BSC-specific parts
* Print FN delta on L1 errors
* Move sysmobts-calib into osmo-bts-sysmo
* Allow specifying sysmocom headers explicitly
* fix build: tests/misc: missing libosmo-abis and -trau flags
* Enable optional static builds
* Remove unneeded LIBOSMOCORE_CFLAGS from tests
* sysmobts: use proper includes for sbts2050 test
* Move -I inside *INCDIR variable
* sysmobts: remove weird default header location
* sysmobts: move header check to appropriate place
* CI: drop unused OsmoPCU dependency
* Enable sanitize for CI tests
* Add helper to get BCC from BSIC
* osmo-bts-trx: init nbits to know value
* osmo-bts-trx: ignore frame offset error on startup
[ Vadim Yanitskiy ]
* doc/examples: add CalypsoBTS configuration example
* common/pcu_sock.c: fix double field assignment
* scheduler_trx.c: remove ToA (Time of Arrival) hack
* common/l1sap.c: increase the BTS_CTR_RACH_DROP in RACH BER check
* common/l1sap.c: increment valid RACH counter after all checks
* common/l1sap.c: clean up noise / ghost RACH filtering
* common/l1sap.c: perform noise / ghost filtering for handover RACH
* common/l1sap.c: limit the minimal ToA for RACH bursts
* common/vty.c: remove unused variables
* common/main.c: track talloc NULL contexts by default
[ Alexander Huemer ]
* cosmetic: Makefile.am whitespace
* various Makefile.am: add missing CFLAGS
* gitignore: add missing entries
[ Stefan Sperling ]
* Cosmetic fixes for power ramping code.
* respond with NACK for non-hopping BTS with multiple ARFCN
* cosmetic: fix typos in src/common/oml.c
* return NACK codes instead of errno values from oml_tx_attr_resp()
[ Alexander Couzens ]
* pcuif_proto: correct indention of gsm_pcu_if_data
* pcu_if: move definition PCU_SOCK_DEFAULT into pcuif_proto.h
* pcuif_proto: add version 8 features
[ Keith ]
* osmo-bts-sysmo eeprom.c Restore ability to read/write EEPROM
-- Pau Espin Pedrol <pespin@sysmocom.de> Thu, 03 May 2018 17:02:19 +0200
osmo-bts (0.7.0) unstable; urgency=medium
[ Max ]
* Use value string check from osmo-ci
* Support sending SI13 to PCU
* Support removing SI13 from PCU
* trx: avoid deactivating lchan on LCHAN_REL_ACT_REACT
* Check readv() return value to prevent crash
* OML: print actual type of report sent to BSC
* Replace dead code
* vty: print version and description for each phy
* Remove build dependency on legacy OpenBSC
* Fix multiple SI2q reception
* jenkins: remove openbsc dependency
* sysmo: use clock calibration source wrapper
* sysmo: don't override clock source with defaults
* Fix race condition in attribute reporting
* Move power loop to generic tests
* Make power test more verbose
[ Neels Hofmeyr ]
* vty: mgr: sysmobts, lc15: install default commands for ACT_NORM_NODE
* osmo-bts-trx: vty: various fixes of 'write file' and doc
* jenkins: use osmo-clean-workspace.sh before and after build
[ Pau Espin Pedrol ]
* l1sap: Improve log msg when frame diff >1
* vty: Print string for Administrative state
[ Harald Welte ]
* Fix Downlink AMR FSM name to avoid illegal space character
* update dependencies to latest libosmo-*
* configure.ac: Fix Mailing list address
-- Harald Welte <laforge@gnumonks.org> Sat, 28 Oct 2017 20:53:21 +0200
osmo-bts (0.6.0) unstable; urgency=medium
[ Holger Hans Peter Freyther ]
* Initial release.
* misc: Ignore files generated by a debian packaging build
* jenkins: Add the build script from jenkins here
* jenkins: Add the build script from jenkins here
* sysmobts: Add the barebox boot state reservation
* sysmobts: Fix eeprom padding before gpg key
* ci/spatch: Remove the "static" analysis handling
* oct: Attempt to enable the Octphy for the osmo-bts-oct build
* debian: Use the header files installed by openbsc-dev
* build: Do not require more headers from OpenBSC
* sysmobts: Make reservation for mode/netmask/ip and suc
* sysmobts: Store a simple network config in the EEPROM as well
[ Max ]
* Ensure TRX invariant
* Use libosmocore function for uplink measurements
* Fix debug output
* Fix RTP timestamps in case of DTX
* Add DTXd support for sysmoBTS and LC15
* Use libosmocodec for AMR RTP
* octphy: Use the app. info. defaults as base
* Fix debug output
* DTXd: store/repeat last SID
* DTXd: store/repeat last SID
* DTXu: mark beginning of speech burst in RTP
* Fix OML activation
* TRX: Add vty command to power on/off transceiver
* TRX: add configuration example
* Add .gitreview
* DTX: add support for AMR/HR
* Move copy-pasted code into common part
* Use libosmocodec functions for AMR
* Use error values instead of number for RSL error
* Clarify logging message
* Make get_lchan_by_chan_nr globally available
* DTXu: move copy-pasted code to common part
* Remove duplicated nibble shift code
* TRX: add Uplink DTX support for FR/HR
* Mark array as static const
* sysmobts: dump PRACH and PTCCH parameters
* Activate PTCCH UL
* Fix dsp tracing at phy config
* octphy: fix build
* Fill measurements data for L1SAP
* sysmo: ts_connect: log channel combination name instead of number
* DTX: fix last SID saving
* DTX: fix SID repeat scheduling
* DTX: fix SID logic
* lc15, sysmo: Use SID_FIRST_P1 to initiate DTX
* DTX: check Marker bit to send ONSET to L1
* DTX: remove misleading comment
* LC15: Clarify msgb ownership / fix memory leaks
* DTX: move scheduling check inside repeat_last_sid
* DTX: further AMR SID cache fixes (lc15, sysmo)
* DTX: move ONSET detection into separate function
* DTX: send AMR voice alongside with ONSET
* DTX: fix conversion from fn to ms
* Move copy-pasted array into shared header
* DTX DL: use FSM for AMR
* TRX: fix building with latest DTX changes
* DTX: fix array size calculation
* DTX AMR - fix buffer length check
* Replace magic number with define
* Fix lc15 build
* Extend RTP RX callback parameters
* DTX HR - fix array size calculation
* Fix DTX DL AMR SIDscheduling logic
* Add tools to check DTX operation
* DTX DL: split ONSET state handling
* Remove obsolete define
* DTX DL: add AMR HR support to scheduling check
* DTX fix ONSET handling
* dtx_check.gawk: Fix false-positives in DTX check
* Fix tests linking with libosmocodec
* DTX DL: tighten check for enabled operation
* DTX: wrap FSM signal dispatching
* Add libosmocodec for octphy build
* dtx_check.gawk: add check for repetitive SID FIRST
* Remove duplicated code
* Replace link_id constant with define
* DTX DL AMR: rewrite FSM recursion
* Remove duplicated code
* Fix AGCH/PCH proportional allocation
* TRX: prevent segfault upon phy init
* DTX: add explicit check if DTX enabled
* Save RTP metadata in Control Buffer
* osmo-bts-trx: fix lchan deactivation
* DTX: fix TS adjustment for ONSET
* Optionally use adaptive RTP jitter buffering
* Integrate Debian packaging changes
* DTX AMR HR: fix inhibition
* Add copyright for .deb packages
* Move code to libosmocore
* Log socket path on error
* Add Abis OML failure event reporting
* Alarm on various errors
* Remove obsolete define TLVP_PRES_LEN
* scheduler: log lchan on which prim error occured
* deb: use gsm_data_shared.* from openbsc-dev
* OML: internalize failure reporting
* Add ctrl command to send OML alert
* Fix typo in TCH/H interleaving table
* Use oml-alert CTRL command for temp report
* Remove code duplication
* Handle ctrl cmd allocation failures
* Check for suitable lchan type when detecting HO
* osmo-bts-trx: fix scheduling of broken frames
* Sync protocol with OsmoPCU
* vty: reduce code duplication
* Handle TXT indication from OsmoPCU
* Add MS TO to RSL measurements
* Signal to BSC when PCU disconnects
* Prepare for extended SI2quater support
* Set BTS variant while initializing BTS model
* Prepare for BTS attribute reporting via OML
* osmo-bts-trx: use libosmocoding
* Remove redundant test
* Implement basic Get Attribute responder
* Add version to phy_instance
* OML: fix Coverity-reported issues
* Re-add version to phy_instance
* Use systemd template specifiers
* Place *-mgr config examples according to BTS model
* lc15: add example systemd service file
* Extend Get Attribute responder
* Set and report BTS features
* Cleanup SI scheduling
* RSL: receive and send multiple SI2q messages
* RSL: check for abnormal SI2q values
* lc15bts-mgr: use extended config file example
* Move parameter file opening into separate function
* Move common steps into common jenkins helper
* lc15: add jenkins helper
* Use generic L1 headers helper
* Copy sysmobts.service to osmo-bts-sysmo
* OML: move BTS number check into separate function
* lc15: make jenkins helper executable
* lc15: fix jenkins build
* Add missing include for abis.h header file
* RSL: receive and send multiple SI2q messages
* Use release helper from libosmocore
* si2q: do not consider count update as error
* Cleanup example config files
* Fix .deb build
* Unify *.service files
* lc15: cleanup board parameters reading
* lc15-mgr: update parameter read/write
* lc15: fix BTS revision and hw options
* lc15: make default config usable
* lc15: port lc15bts-mgr changes
* lc15bts-mgr: separate service file
* lc15: port lc15bts-mgr dependency changes
* Simplify jenkins build scripts
* OML: use fom_hdr while handling attr. request
* osmo-bts-trx: fix 'osmotrx legacy-setbsic'
* osmo-bts-trx: remove global variables from loops
[ Daniel Laszlo Sitzer ]
* octphy: Update outdated config param name in error message.
[ Jason DSouza ]
* Close TRX session before opening new one
[ Minh-Quang Nguyen ]
* l1sap.h: fix wrong L1SAP_FN2PTCCHBLOCK calculation according to TS 45.002 Table 6
* common/abis.c: fix 100% CPU usage after disconnecting OML/RSL link (Bug #1703)
* LC15: Bring back DSP trace argument
* LC15: Hardware changes
* LC15: TRX nominal TX power can be used from EEPROM or from BTS configuration
* rsl: Fix dropping of LAPDm UA message.
* LC15: properly handle BS-AG-BLKS-RES as received from BSC
[ Neels Hofmeyr ]
* sysmo: add L3 handle to l1prim messages
* pcu_sock: add pcu_connected() to query PCU availability
* tests/stubs.c: remove unused stubs
* fix typo in error message ('at lEast')
* oml, Set Chan Attr: treat unknown PCHAN types as error
* dyn PDCH: rsl rx dchan: also log ip.access message names
* doc: add ladder diagram on dynamic PDCH, add msc-README
* add missing DSUM entry to bts_log_info_cat
* fix compiler warning: printf format for sizeof()
* fix compiler warning: add missing case (PHY_LINK_CONNECTING)
* fix two compiler warnings: add two opaque struct declarations
* dyn PDCH: add bts_model_ts_connect() and _disconnect() stubs
* dyn PDCH: conf_lchans_for_pchan(): handle TCH/F_PDCH
* dyn PDCH: pcu_tx_info_ind(): handle TCH/F_PDCH in PDCH mode
* dyn PDCH: chan_nr_by_sapi(): handle TCH/F_PDCH according to ts->flags
* dyn PDCH: implement main dyn PDCH logic in common/
* dyn PDCH: sysmo-bts/oml.c: add ts_connect_as(), absorbing ts_connect() guts
* dyn PDCH: sysmo: handle TCH/F_PDCH init like TCH/F
* dyn PDCH: complete for sysmo-bts: implement bts_model_ts_*()
* error log: two minor clarifications
* debug log: log lchan state transitions
* debug log: log TS pchan type on connect
* fix lc15 build: put src/common/libbts.a left of -losmogsm
* lc15: add L3 handle to l1prim messages
* dyn PDCH: lc15: chan_nr_by_sapi(): handle TCH/F_PDCH according to ts->flags
* dyn PDCH: lc15: add ts_connect_as(), absorbing ts_connect() guts
* dyn PDCH: lc15: handle TCH/F_PDCH init like TCH/F
* dyn PDCH: lc15: complete for litecell15-bts: implement bts_model_ts_*()
* dyn PDCH: safeguard: exit if nothing pending in dyn_pdch_ts_disconnected()
* vty: install orphaned trx nominal power command
* fix compiler warnings: include bts_model.h in phy_link.c
* fix compiler warning: remove useless 'static' storage class for struct decl
* fix compiler warning: remove unused variable 'i' in calib_verify()
* log: osmo-bts-trx: change access burst logs to DEBUG level
* log: osmo-bts-trx: change PDTCH block logs to DEBUG level
* osmo-bts-trx: init OML only once by sending AVSTATE_OK with OPSTATE_ENABLED
* doc: move dyn_pdch.msc to osmo-gsm-manuals.git
* error log: rsl.c: typo x2
* info log: l1sap.c: add '0x' to hex output
* fix compiler warning: msg_utils.c: fn_chk() constify arg
* fix compiler warning: msg_utils.c: fn_chk() constify arg
* info log: l1sap.c: add '0x' to hex output
* error log: rsl.c: typo x2
* dyn PDCH: code dup: use conf_lchans_as_pchan()
* prepare dyn TS: split/replace conf_lchans_for_pchan()
* code dup: join [rsl_]lchan_lookup() from libbsc and osmo-bts
* dyn TS: common TCH/F_TCH/H_PDCH implementation
* sysmo/oml.c: rename ts_connect() to ts_opstart()
* dyn TS: implement SysmoBTS specifics
* lc15/oml.c: rename ts_connect() to ts_opstart()
* dyn TS: implement litecell15 specifics
* comment typo: common/l1sap.c
* log typo: trx_sched_set_pchan()
* dyn TS: sysmo,lc15: chan_nr_by_sapi(): add missing assertion
* fix comment in common/l1sap.c, function name changed
* dyn TS, dyn PDCH: common/l1sap.c: properly notice PDCH
* dyn PDCH: trx l1_if.c: factor out trx_set_ts_as_pchan() from trx_set_ts()
* dyn PDCH: complete for trx: implement bts_model_ts_[dis]connect()
* dyn PDCH: trx l1_if.c: drop fixme, add comment
* dyn TS: complete for TRX
* dyn TS: measurement.c: replace fixme with comment
* sysmo,lc15: ts_connect_as(): log error also for pchan_as == TCH/F_PDCH
* sysmo: fix dyn TS: Revert "Activate PTCCH UL" [in sysmobts]
* log: l1sap: add 0x to hex output of chan_nr, 5 times
* dyn TS: measurement: use correct nr of subslots, rm code dup
* dyn TS: sysmo,lc15: ph_data_req: fix PDCH mode detection
* Fix ip.access style dyn PDCH, broken in 37af36e85eca546595081246aec010fa7f6fd0be
* common/rsl: move decision whether to chan act ack/nack to common function
* octphy: fix build: Revert "octphy: fix for multiple trx with more than 1 dsp"
* octphy: fix build: Revert "octphy: add support for multiple trx ids"
* octphy: fix build with OCTSDR-OPENBSC-02.07.00-B708: name changed
* dyn TS: if PCU is not connected, allow operation as TCH
* log: sysmo,lc15: tweak log about sapi_cmds queue
* log causing rx event for lchan_lookup errors
* heed VTY 'line vty'/'bind' command
* sysmobts_mgr, lc15bts_mgr: fix tall context for telnet vty
* build: be robust against install-sh files above the root dir
* configure: check for pkg-config presence
* jenkins.sh: use osmo-build-dep.sh, log test failures
* msgb ctx: use new msgb_talloc_ctx_init() in various main()s
* jenkins-oct.sh: fix build: typo in deps path
* fix 'osmo-bts-* --version' segfault
* osmo-bts-trx: remove obsolete include of netif/rtp.h
* add jenkins_bts_trx.sh
* add jenkins_oct_and_bts_trx.sh
* jenkins: add jenkins_bts_model.sh
* bursts test: test_pdtch: pre-init result mem
* fix: dyn ts: uplink measurement report
* fix missing ~ in bit logic for lchan->si.valid in rsl_rx_sacch_inf_mod()
* SACCH: fix sending of SI with an enum value > 7
* SACCH SI: assert that SI enum vals fit in bit mask
* all models: fix vty write: bts_model_config_write_phy
* jenkins: add value_string termination check
* Revert "Add version to phy_instance"
* Revert "RSL: check for abnormal SI2q values"
* Revert "RSL: receive and send multiple SI2q messages"
[ Harald Welte ]
* sysmobts: screnrc/systemd-service: Use osmo-bts-sysmo instead of sysmobts
* Add .mailmap for mapping mail addresses in shortlog
* vty: Ensure to not use negative (error) sapi value
* sysmobts: Add correct nominal transmit power for sysmoBTS 1020
* sysmobts_eeprom.h: Fix/extend model number definitions
* Revert "sysmobts: Add correct nominal transmit power for sysmoBTS 1020"
* tx_power: Change PA calibration tables to use delta vales
* Add new unit-test for transmit power computation code
* sysmobts: fully support trx_power_params
* README: Add general project information and convert to markdown
* README: update some of the limitations
* sysmobts: Don't start with 0dBm TRX output power before ramping
* Remove unusued left-over gsm0503_conv.c
* scheduler_trx.c: Avoid code duplication for BER10k computation
* scheduler_trx: Avoid copy+pasting determining CMR from FN
* rx_tchh_fn(): Avoid copy+pasting formula to determine odd-ness of fn
* Consistently check for minimum attribute/TLV length in RSL and OML
* l1sap.c: Add spec reference to link timeout implementation
* osmo-bts-trx: Remove duplicate parsing of NM_ATT_CONN_FAIL_CRIT
* vty: Remove command for manual channel activation/deactivation
* l1_if: Add inline functions to check dsp/fgpa version at runtime
* sysmobts: Re-order the bit-endianness of every HR codec parameter
* OML Add osmocom-specific way to deactivate radio link timeout
* measurement: Remove dead code
* l1sap.c: Factor out function to limit message queue
* osmo-bts-sysmo/l1_if.c: PH-DATA.ind belongs to L1P, not L1C
* l1sap: if lchan is in loopback, don't accept incoming RTP
* TRX: Use timerfd and CLOCK_MONOTONIC for GSM frame timer (Closes: #2325)
* Add loopback support for PDTCH
* TRX: trx_if: Improve code description / comments
* trx_if: Improve error handling
* TRX: Rename trx_if_data() -> trx_if_send_burst()
* TRX: merge/simplify l1_if and trx_if code
* TRX: don't free l1h in trx_phy_inst_close()
* l1sap: Don't enqueue PTCCH blocks for loopback
* TRX: permit transmission of all-zero loopback frames
* jenkins helpers: some minimal documentation/comments + print errors
* VIRT-PHY: Initial check-in of a new virtual BTS
* VIRT-PHY: Fix handling of default values for vty configuration
* VIRT-PHY: Use IPv4 multicast groups for private / local scope
* VIRT-PHY: cause BTS to terminate in case of recv()/send() on udp socket returns 0
* Ensure we don't send dummy UI frames on BCCH for TC=5
* virt: Don't print NOTICE log message if ARFCN doesn't match
* VIRT-PHY: Report virtual RACH bursts with plausible burst type
* scheduler: Fix wrong log subsystem: L1C is L1 *control* not user data
* VIRT-PHY: Print NOTICE log message from unimplemented stubs
* TRX / VIRT-PHY: Make check for BCCH/CCCH more specific
* L1SAP: Print chan_nr and link_id always as hex
* VIRT-BTS: Support for GPRS
* L1SAP: Use RSL_CHAN_OSMO_PDCH across L1SAP
* GSMTAP: Don't log fill frames via GSMTAP
* TRX: Remove bogus extern global variable declarations
* l1sap/osmo-bts-sysmo: Improve logging
* TRX: Remove global variables, move SETBSIC/SETTSC handling into phy_link
* Fix build after recent gsm_bts_alloc() change
* Treat SIGTERM just like SIGINT in our programs
[ Tom Tsou ]
* trx: Add EGPRS tables, sequences, and mappings
* trx: Add EGPRS coding and decoding procedures
* trx: Enable EGPRS handling through burst lengths
* trx: Fix coverity BER calculation NULL dereference
[ Vadim Yanitskiy ]
* pcu_sock: use osmo_sock_unix_init() from libosmocore
* osmo-bts-trx/l1_if.c: use channel combination III for TCH/H
* scheduler_trx.c: strip unused variable
[ Mike McTernan ]
* osmo-bts-trx: Fix PCS1900 operation
* osmo-bts-trx: log decoder bit errors as DEBUG, not NOTICE
[ bhargava ]
* Change interface in osmo-bts for 11 bit RACH
* Update parameters in osmo-bts-sysmo for 11bit RACH
* 11bit RACH support for osmo-bts-litecell15
* Initialize parameters in osmo-trx for 11bit RACH
[ Philipp ]
* octphy: Fixing missing payload type in ph. chan. activation
* octphy: Fixing band selection for ARFCN 0
* octphy: reintroducing multi-trx support
* octopy: fixing renamed constant
* octphy: prevent mismatch between dsp-firmware and octphy headers
* rsl: improving the log output
* octphy: multi-trx support: fix AC_CHECK order
* RSL: drop obsolete NULL check
* RSL: add assertions to check args of public API
* OML: fix possible segfault: add NULL check in oml_ipa_set_attr()
* CTRL: make the CTRL-Interface IP address configurable
* l1sap: Fix expired rach slot counting
* l1sap: fix missing 'else's causing wrong rach frame expiry counts
* octphy: set tx attenuation via VTY
* octphy: Improve OML ADM state handling
[ Yves Godin ]
* DTX: fix 1st RTP packet drop
[ Alexander Chemeris ]
* l1sap: Fix use-after-free in loopback mode.
* vty: Add commands to manually activate/deactivate a channel.
* trx: Add "maxdlynb" VTY command to control max TA for Normal Bursts.
* rsl: Output RTP stats before closing the socket.
* osmo-bts-trx: Fix MS power control loop.
* osmo-bts-trx: Remove an unused variable. Resolves a compiler warning.
* osmo-bts-trx: Increase a maximum allowed MS power reduction step from 2dB to 4dB.
* Fix static build of osmo-bts-trx and osmo-bts-virtual.
[ Jean-Francois Dionne ]
* DTX: don't always perform AMR HR specific check
* DTX: fix SID-FIRST detection
* lc15,sysmobts l1_if: fix memleak in handle_mph_time_ind()
* sysmo,lc15: fix memory leak at each call placed
* DTX: fix "unexpected burst" error
* Fix AMR HR DTX FSM logic.
* Fix SACCH channel release indication not sent to BSC after location update.
* Fix RTP duration adjustment not done when speech resumes in DTX mode.
[ Ruben Undheim ]
* Fix some spelling errors
[ Holger Freyther ]
* Revert "deb: use gsm_data_shared.* from openbsc-dev"
[ Philipp Maier ]
* octphy VTY: fix vty write output for octphy's phy section
* octphy: Fix VTY commands
* l1sap: fix rach reason (ra) parsing
* l1sap: fix PTCCH detection
* octphy: fix usage of wrong define constant
* octphy: add CBCH support
* l1sap: improve log output
* octphy: print log message for multi-trx support
* octphy: display hint in case of wrongly configured transceiver number
* octphy: add conditional compilation to support latest octasic header release
* octphy: set tx/rx antenne IDs via VTY
* bts: revert trx shutdown order
* octphy: activate CBCH after all physical channels are activated
* octphy: align frame number for new firmware versions
* octphy: ensure that 11 bit rach flag is not set
* measurement: fix measurement reporting period
* measurement: make lchan_meas_check_compute() available to l1sap.c
* measurement: Compute measurement results on measurement idication
* measurement: exclude idle channels from uplink measurement
* octphy: integrate channel measurement handling
* octphy: remove old event control code
* osmo-bts-sysmo: Include frame number in MEAS IND
* measurement: fix measurement computation
* octphy: fix segfault
* Revert "measurement: exclude idle channels from uplink measurement"
* sysmobts: normalize frame number in measurement indication
* measurement: Improve log output
* measurement: improve log output
* octphy: improve log output
* octphy: initalize l1msg and only when needed
* octphy: initalize nmsg only when needed
* octphy: remove log output
* Revert "sysmobts: normalize frame number in measurement indication"
* osmo-bts-trx: fix missing frame number in MEAS IND
* osmo-bts-litecell15: Fix missing frame number in MEAS IND
* Revert "osmo-bts-sysmo: Include frame number in MEAS IND"
* octphy: complete value strings (octphy_cid_vals)
* octphy: do not send empty frames to phy
* osmo-bts-sysmo: Include frame number in MEAS IND
* measurement: fix measurment report
* octphy: remap frame number in MEAS_IND
* octphy: implement support for dynamic timeslots
[ Ivan Klyuchnikov ]
* osmo-trx-bts: Fix incorrect setting of RXGAIN and POWER parameters on second channel (TRX1) of osmo-trx
* osmo-trx-bts: Fix osmo-bts-trx crash on startup during reading phy instance parameters from config file
* osmo-trx-bts: Fix incorrect bts shutdown procedure in case of abis connection closure
* osmo-trx-bts: Fix incorrect bts shutdown procedure in case of clock loss from osmo-trx
[ Ivan Kluchnikov ]
* oml: Fix incorrect usage of const variable abis_nm_att_tlvdef_ipa
[ Pau Espin Pedrol ]
* phy_link: Fix typo in state being printed
* trx: Allow BTS and TRX to be on different IPs
* trx: Save osmotrx base-port vty properties
* sysmo/tch.c: Clean up use of empty buffer
* litecell15/tch.c: Clean up use of empty buffer
* Use L1P instead of L1C for TCH logging and allocation
* Fix annoying trailing whitespace
* sysmo, litecell15: Make sure all TCH events are triggered
* sysmo: Remove non longer valid -p option from help
* Allow passing low link quality buffers to upper layers
* l1sap.c: Avoid sending RTP frame with empty payload
* l1sap.c: fn_ms_adj: Add err logging and always return GSM_RTP_DURATION
* Move dump_gsmtime to libosmocore as osmo_dump_gsmtime
* Use osmo_dump_gsmtime to log fn across different layers
* lc15bts-mgr.cfg: Set default vswr to a value inside valid range
* litecell15: Register in vty limits for paX_pwr
* lc15: Tweak led colors used in service file
* lc-15, sysmo: l1_if: print name on PH-DATA.ind unknwon sapi
* lc15bts-mgr.service: Prepare dirs and sysctls for the process
* osmo-bts-trx: Enable osmotrx tx-attenuation oml by default
* osmo-bts-trx: Relax validation to allow TRX data bursts without padding
[ Sebastian Stumpf ]
* VIRT-PHY: Added example configurations for openbsc and osmobts.
* VIRT-PHY: Fixed timeslot in gsmtap-msg on downlink which was always 0.
* VIRT-PHY: Added test option for fast hyperframe repeat.
-- Max <msuraev@sysmocom.de> Fri, 25 Aug 2017 15:16:56 +0200
osmo-bts (0.5.0) unstable; urgency=medium
* Initial release.
-- Holger Hans Peter Freyther <holger@moiji-mobile.com> Fri, 01 Apr 2016 16:13:40 +0200

1
debian/compat vendored
View File

@@ -1 +0,0 @@
9

50
debian/control vendored
View File

@@ -1,50 +0,0 @@
Source: osmo-bts
Maintainer: Holger Hans Peter Freyther <holger@moiji-mobile.com>
Section: net
Priority: optional
Build-Depends: debhelper (>= 9),
pkg-config,
dh-autoreconf,
dh-systemd (>= 1.5),
autotools-dev,
pkg-config,
libosmocore-dev,
libosmo-abis-dev,
libgps-dev,
txt2man
Standards-Version: 3.9.8
Vcs-Browser: http://git.osmocom.org/osmo-bts/
Vcs-Git: git://git.osmocom.org/osmo-bts
Homepage: https://projects.osmocom.org/projects/osmobts
Package: osmo-bts-trx
Architecture: any
Conflicts: osmo-bts
Depends: ${shlibs:Depends}, ${misc:Depends}
Description: osmo-bts-trx GSM BTS with osmo-trx
osmo-bts-trx to be used with the osmo-trx application
Package: osmo-bts-trx-dbg
Architecture: any
Section: debug
Priority: extra
Depends: osmo-bts-trx (= ${binary:Version}), ${misc:Depends}
Description: Debug symbols for the osmo-bts-trx
Make debugging possible
Package: osmo-bts-virtual
Architecture: any
Conflicts: osmo-bts
Depends: ${shlibs:Depends}, ${misc:Depends}
Description: Virtual Osmocom GSM BTS (no RF hardware; GSMTAP/UDP)
This version of OsmoBTS doesn't use actual GSM PHY/Hardware/RF, but
utilizes GSMTAP-over-UDP frames for the Um interface. This is useful
in fully virtualized setups e.g. in combination with OsmocomBB virt_phy.
Package: osmo-bts-virtual-dbg
Architecture: any
Section: debug
Priority: extra
Depends: osmo-bts-virtual (= ${binary:Version}), ${misc:Depends}
Description: Debug symbols for the osmo-bts-virtual
Make debugging possible

81
debian/copyright vendored
View File

@@ -1,81 +0,0 @@
Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
Upstream-Name: osmo-bts
Source: http://cgit.osmocom.org/osmo-bts/
Files: *
Copyright: 2008-2014 Harald Welte <laforge@gnumonks.org>
2009,2011,2013 Andreas Eversberg <jolly@eversberg.eu>
2010,2011 On-Waves
2012-2015 Holger Hans Peter Freyther
2014 sysmocom s.f.m.c. Gmbh
2015 Alexander Chemeris <Alexander.Chemeris@fairwaves.co>
License: AGPL-3+
Files: src/osmo-bts-sysmo/eeprom.c
src/osmo-bts-sysmo/eeprom.h
Copyright: 2012 Nutaq
License: MIT
Comment: Yves Godin is the author
Files: src/common/pcu_sock.c
Copyright: 2008-2010 Harald Welte <laforge@gnumonks.org>
2009-2012 Andreas Eversberg <jolly@eversberg.eu>
2012 Holger Hans Peter Freyther
License: GPL-2+
Files: debian/*
Copyright: 2015-2016 Ruben Undheim <ruben.undheim@gmail.com>
License: AGPL-3+
License: AGPL-3+
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation; either version 3 of the License, or
(at your option) any later version.
.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
License: GPL-2+
This package is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 2 of the License, or
(at your option) any later version.
.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
.
On Debian systems, the complete text of the GNU General
Public License version 2 can be found in "/usr/share/common-licenses/GPL-2".
License: MIT
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights to
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
of the Software, and to permit persons to whom the Software is furnished to do
so, subject to the following conditions:
.
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

View File

@@ -1,5 +0,0 @@
etc/osmocom/osmo-bts-trx.cfg
lib/systemd/system/osmo-bts-trx.service
usr/bin/osmo-bts-trx
usr/share/doc/osmo-bts/examples/osmo-bts-trx/osmo-bts-trx.cfg
usr/share/doc/osmo-bts/examples/osmo-bts-trx/osmo-bts-trx-calypso.cfg

View File

@@ -1,6 +0,0 @@
etc/osmocom/osmo-bts-virtual.cfg
lib/systemd/system/osmo-bts-virtual.service
usr/bin/osmo-bts-virtual
usr/bin/osmo-bts-omldummy
usr/share/doc/osmo-bts/examples/osmo-bts-virtual/osmo-bts-virtual.cfg
usr/share/doc/osmo-bts/examples/osmo-bts-virtual/openbsc-virtual.cfg

28
debian/rules vendored
View File

@@ -1,28 +0,0 @@
#!/usr/bin/make -f
DEBIAN := $(shell dpkg-parsechangelog | grep ^Version: | cut -d' ' -f2)
DEBVERS := $(shell echo '$(DEBIAN)' | cut -d- -f1)
VERSION := $(shell echo '$(DEBVERS)' | sed -e 's/[+-].*//' -e 's/~//g')
#export DH_VERBOSE=1
export DEB_BUILD_MAINT_OPTIONS = hardening=+all
%:
dh $@ --with=systemd --with autoreconf --fail-missing
override_dh_strip:
dh_strip --package=osmo-bts-virtual --dbg-package=osmo-bts-virtual-dbg
dh_strip --package=osmo-bts-trx --dbg-package=osmo-bts-trx-dbg
override_dh_auto_configure:
dh_auto_configure -- --enable-trx --with-systemdsystemunitdir=/lib/systemd/system
override_dh_clean:
dh_clean
$(RM) tests/package.m4
$(RM) tests/testsuite
# Print test results in case of a failure
override_dh_auto_test:
dh_auto_test || (find . -name testsuite.log -exec cat {} \; ; false)

View File

@@ -1 +0,0 @@
3.0 (native)

View File

@@ -1,4 +0,0 @@
SUBDIRS = \
examples \
manuals \
$(NULL)

View File

@@ -1,46 +0,0 @@
OSMOCONF_FILES = virtual/osmo-bts-virtual.cfg
doc_virtualdir = $(docdir)/examples/osmo-bts-virtual
doc_virtual_DATA = \
virtual/osmo-bts-virtual.cfg \
virtual/openbsc-virtual.cfg
EXTRA_DIST = $(doc_virtual_DATA)
if ENABLE_SYSMOBTS
doc_sysmodir = $(docdir)/examples/osmo-bts-sysmo
doc_sysmo_DATA = \
sysmo/osmo-bts-sysmo.cfg \
sysmo/sysmobts-mgr.cfg
EXTRA_DIST += $(doc_sysmo_DATA)
OSMOCONF_FILES += sysmo/osmo-bts-sysmo.cfg sysmo/sysmobts-mgr.cfg
endif
if ENABLE_TRX
doc_trxdir = $(docdir)/examples/osmo-bts-trx
doc_trx_DATA = \
trx/osmo-bts-trx.cfg \
trx/osmo-bts-trx-calypso.cfg
EXTRA_DIST += $(doc_trx_DATA)
OSMOCONF_FILES += trx/osmo-bts-trx.cfg
endif
if ENABLE_OCTPHY
doc_octphydir = $(docdir)/examples/osmo-bts-octphy
doc_octphy_DATA = \
octphy/osmo-bts-trx2dsp1.cfg \
octphy/osmo-bts-octphy.cfg
EXTRA_DIST += $(doc_octphy_DATA)
OSMOCONF_FILES += octphy/osmo-bts-octphy.cfg
endif
if ENABLE_LC15BTS
doc_lc15dir = $(docdir)/examples/osmo-bts-lc15
doc_lc15_DATA = \
litecell15/osmo-bts-lc15.cfg \
litecell15/lc15bts-mgr.cfg
EXTRA_DIST += $(doc_lc15_DATA)
OSMOCONF_FILES += litecell15/osmo-bts-lc15.cfg litecell15/lc15bts-mgr.cfg
endif
osmoconfdir = $(sysconfdir)/osmocom
osmoconf_DATA = $(OSMOCONF_FILES)

View File

@@ -1,43 +0,0 @@
!
! lc15bts-mgr (0.3.0.284-a7c2-dirty) configuration saved from vty
!!
!
log stderr
logging filter all 1
logging color 1
logging print category 0
logging timestamp 0
logging level temp info
logging level fw info
logging level find info
logging level calib info
logging level lglobal notice
logging level llapd notice
logging level linp notice
logging level lmux notice
logging level lmi notice
logging level lmib notice
logging level lsms notice
logging level lctrl notice
logging level lgtp notice
!
line vty
no login
!
lc15bts-mgr
limits supply_volt
threshold warning min 17500
threshold critical min 19000
limits tx0_vswr
threshold warning max 1000
limits tx1_vswr
threshold warning max 1000
limits supply_pwr
threshold warning max 110
threshold critical max 120
limits pa0_pwr
threshold warning max 50
threshold critical max 60
limits pa1_pwr
threshold warning max 50
threshold critical max 60

View File

@@ -1,43 +0,0 @@
!
! OsmoBTS (0.0.1.100-0455-dirty) configuration saved from vty
!!
!
log stderr
logging color 1
logging timestamp 0
logging level rsl info
logging level oml info
logging level rll notice
logging level rr notice
logging level meas notice
logging level pag info
logging level l1c info
logging level l1p info
logging level dsp debug
logging level abis notice
logging level rtp notice
logging level lglobal notice
logging level llapd notice
logging level linp notice
logging level lmux notice
logging level lmi notice
logging level lmib notice
logging level lsms notice
!
line vty
no login
!
phy 0
instance 0
trx-calibration-path /mnt/rom/factory/calib
phy 1
instance 0
trx-calibration-path /mnt/rom/factory/calib
bts 0
band 900
ipa unit-id 1500 0
oml remote-ip 192.168.234.185
trx 0
phy 0 instance 0
trx 1
phy 1 instance 0

View File

@@ -1,38 +0,0 @@
!
! OsmoBTS (0.0.1.100-0455-dirty) configuration saved from vty
!!
!
log stderr
logging color 1
logging timestamp 0
logging level rsl info
logging level oml info
logging level rll notice
logging level rr notice
logging level meas notice
logging level pag info
logging level l1c info
logging level l1p info
logging level dsp debug
logging level abis notice
logging level rtp notice
logging level lglobal notice
logging level llapd notice
logging level linp notice
logging level lmux notice
logging level lmi notice
logging level lmib notice
logging level lsms notice
!
line vty
no login
!
phy 0
instance 0
trx-calibration-path /mnt/rom/factory/calib
bts 0
band 900
ipa unit-id 1500 0
oml remote-ip 10.42.0.1
trx 0
phy 0 instance 0

View File

@@ -1,31 +0,0 @@
!
! OsmoBTS () configuration saved from vty
!!
!
log stderr
logging color 1
logging timestamp 0
logging level rsl info
logging level oml info
logging level rll notice
logging level rr notice
logging level meas notice
logging level pag info
logging level l1c info
logging level l1p info
logging level dsp info
logging level abis notice
!
line vty
no login
!
phy 0
octphy hw-addr 00:0C:90:2e:80:1e
octphy net-device eth0.2342
instance 0
bts 0
band 1800
ipa unit-id 1234 0
oml remote-ip 127.0.0.1
trx 0
phy 0 instance 0

View File

@@ -1,34 +0,0 @@
!
! OsmoBTS () configuration saved from vty
!!
!
log stderr
logging color 1
logging timestamp 0
logging level rsl info
logging level oml info
logging level rll notice
logging level rr notice
logging level meas notice
logging level pag info
logging level l1c info
logging level l1p info
logging level dsp info
logging level abis notice
!
line vty
no login
!
phy 0
octphy hw-addr 00:0c:de:ad:fa:ce
octphy net-device eth2
instance 0
instance 1
bts 0
band 1800
ipa unit-id 1234 0
oml remote-ip 127.0.0.1
trx 0
phy 0 instance 0
trx 1
phy 0 instance 1

26
doc/examples/osmo-bts.cfg Normal file
View File

@@ -0,0 +1,26 @@
!
! OsmoBTS () configuration saved from vty
!!
!
log stderr
logging color 0
logging timestamp 0
logging level all everything
logging level rsl info
logging level oml info
logging level rll notice
logging level rr notice
logging level meas notice
logging level pag info
logging level l1c info
logging level l1p info
logging level dsp debug
logging level abis notice
!
line vty
no login
!
bts 0
band 1800
ipa unit-id 1234 0
oml remote-ip 192.168.100.11

View File

@@ -1,29 +0,0 @@
!
! OsmoBTS () configuration saved from vty
!!
!
log stderr
logging color 1
logging timestamp 0
logging level rsl info
logging level oml info
logging level rll notice
logging level rr notice
logging level meas notice
logging level pag info
logging level l1c info
logging level l1p info
logging level dsp info
logging level abis notice
!
line vty
no login
!
phy 0
instance 0
bts 0
band 1800
ipa unit-id 666 0
oml remote-ip 10.1.2.3
trx 0
phy 0 instance 0

View File

@@ -1,23 +0,0 @@
!
! SysmoMgr (0.3.0.141-33e5) configuration saved from vty
!!
!
log stderr
logging filter all 1
logging color 1
logging timestamp 0
logging level temp info
logging level fw info
logging level find info
logging level lglobal notice
logging level llapd notice
logging level linp notice
logging level lmux notice
logging level lmi notice
logging level lmib notice
logging level lsms notice
!
line vty
no login
!
sysmobts-mgr

View File

@@ -1,16 +1,15 @@
!
! oc2gbts-mgr (0.3.0.284-a7c2-dirty) configuration saved from vty
! SysmoMgr (0.3.0.141-33e5) configuration saved from vty
!!
!
log stderr
logging filter all 1
logging color 1
logging print category 0
logging timestamp 0
logging level all everything
logging level temp info
logging level fw info
logging level find info
logging level calib info
logging level lglobal notice
logging level llapd notice
logging level linp notice
@@ -18,16 +17,8 @@ log stderr
logging level lmi notice
logging level lmib notice
logging level lsms notice
logging level lctrl notice
logging level lgtp notice
!
line vty
no login
!
oc2gbts-mgr
limits supply_volt
threshold warning min 17500
threshold critical min 19000
limits supply_pwr
threshold warning max 110
threshold critical max 120
sysmobts-mgr

View File

@@ -1,38 +0,0 @@
!
! OsmoBTS configuration example for CalypsoBTS
! http://osmocom.org/projects/baseband/wiki/CalypsoBTS
!!
!
log stderr
logging color 1
logging timestamp 0
logging level rsl notice
logging level oml notice
logging level rll notice
logging level rr notice
logging level meas error
logging level pag error
logging level l1c error
logging level l1p error
logging level dsp error
logging level abis error
!
line vty
no login
!
phy 0
instance 0
osmotrx rx-gain 1
osmotrx ip local 127.0.0.1
osmotrx ip remote 127.0.0.1
osmotrx timing-advance-loop
osmotrx ms-power-loop -65
osmotrx legacy-setbsic
bts 0
oml remote-ip 127.0.0.1
ipa unit-id 1801 0
gsmtap-sapi pdtch
gsmtap-sapi ccch
band 900
trx 0
phy 0 instance 0

View File

@@ -1,34 +0,0 @@
!
! OsmoBTS () configuration saved from vty
!!
!
log stderr
logging color 1
logging timestamp 0
logging level rsl notice
logging level oml notice
logging level rll notice
logging level rr notice
logging level meas error
logging level pag error
logging level l1c error
logging level l1p error
logging level dsp error
logging level abis error
!
line vty
no login
!
phy 0
instance 0
osmotrx rx-gain 1
osmotrx ip local 127.0.0.1
osmotrx ip remote 127.0.0.1
bts 0
band 1800
ipa unit-id 6969 0
oml remote-ip 192.168.122.1
gsmtap-sapi ccch
gsmtap-sapi pdtch
trx 0
phy 0 instance 0

View File

@@ -1,151 +0,0 @@
!
! OpenBSC (0.15.0.629-34f0-dirty) configuration saved from vty
!!
!
log stderr
logging filter all 1
logging color 0
logging print category 1
logging timestamp 1
logging level all info
logging level rll notice
logging level cc notice
logging level mm debug
logging level rr notice
logging level rsl notice
logging level nm info
logging level mncc notice
logging level pag notice
logging level meas notice
logging level sccp notice
logging level msc notice
logging level mgcp notice
logging level ho notice
logging level db notice
logging level ref notice
logging level gprs debug
logging level ns info
logging level bssgp debug
logging level llc debug
logging level sndcp debug
logging level nat notice
logging level ctrl notice
logging level smpp debug
logging level filter debug
logging level ranap debug
logging level sua debug
logging level lglobal notice
logging level llapd notice
logging level linp notice
logging level lmux notice
logging level lmi notice
logging level lmib notice
logging level lsms notice
logging level lctrl notice
logging level lgtp notice
logging level lstats notice
logging level lgsup notice
logging level loap notice
!
stats interval 5
!
line vty
no login
!
e1_input
e1_line 0 driver ipa
e1_line 0 port 0
no e1_line 0 keepalive
network
network country code 262
mobile network code 42
short name OpenBSC
long name OpenBSC
auth policy accept-all
authorized-regexp .*
location updating reject cause 13
encryption a5 0
neci 1
paging any use tch 0
rrlp mode ms-based
mm info 1
handover 0
handover window rxlev averaging 10
handover window rxqual averaging 1
handover window rxlev neighbor averaging 10
handover power budget interval 6
handover power budget hysteresis 3
handover maximum distance 9999
timer t3101 10
timer t3103 0
timer t3105 0
timer t3107 0
timer t3109 4
timer t3111 0
timer t3113 60
timer t3115 0
timer t3117 0
timer t3119 0
timer t3122 10
timer t3141 0
subscriber-keep-in-ram 0
bts 0
type sysmobts
band DCS1800
cell_identity 6969
location_area_code 1
base_station_id_code 63
ms max power 0
cell reselection hysteresis 4
rxlev access min 0
periodic location update 30
radio-link-timeout 32
channel allocator descending
rach tx integer 9
rach max transmission 7
channel-descrption attach 1
channel-descrption bs-pa-mfrms 5
channel-descrption bs-ag-blks-res 1
ip.access unit_id 6969 0
oml ip.access stream_id 255 line 0
neighbor-list mode automatic
codec-support fr
gprs mode none
no force-combined-si
trx 0
rf_locked 0
arfcn 666
nominal power 0
max_power_red 0
rsl e1 tei 0
timeslot 0
phys_chan_config CCCH+SDCCH4
hopping enabled 0
timeslot 1
phys_chan_config SDCCH8
hopping enabled 0
timeslot 2
phys_chan_config TCH/F
hopping enabled 0
timeslot 3
phys_chan_config TCH/F
hopping enabled 0
timeslot 4
phys_chan_config TCH/F
hopping enabled 0
timeslot 5
phys_chan_config TCH/F
hopping enabled 0
timeslot 6
phys_chan_config TCH/F
hopping enabled 0
timeslot 7
phys_chan_config TCH/F
hopping enabled 0
mncc-int
default-codec tch-f fr
default-codec tch-h hr
nitb
subscriber-create-on-demand
subscriber-create-on-demand random 1 24
assign-tmsi

View File

@@ -1,61 +0,0 @@
!
! OsmoBTS (0.4.0.216-bc49-dirty) configuration saved from vty
!!
!
log stderr
logging filter all 0
logging color 0
logging print category 1
logging timestamp 0
logging level rsl info
logging level oml info
logging level rll notice
logging level rr notice
logging level meas notice
logging level pag info
logging level l1c info
logging level l1p info
logging level dsp error
logging level pcu notice
logging level ho debug
logging level trx notice
logging level loop notice
logging level abis debug
logging level rtp notice
logging level sum error
logging level lglobal notice
logging level llapd notice
logging level linp notice
logging level lmux notice
logging level lmi notice
logging level lmib notice
logging level lsms notice
logging level lctrl notice
logging level lgtp notice
logging level lstats error
!
line vty
no login
!
e1_input
e1_line 0 driver ipa
e1_line 0 port 0
no e1_line 0 keepalive
phy 0
instance 0
bts 0
band DCS1800
ipa unit-id 6969 0
oml remote-ip 127.0.0.1
rtp jitter-buffer 100
paging queue-size 200
paging lifetime 0
uplink-power-target -75
min-qual-rach 50
min-qual-norm -5
trx 0
power-ramp max-initial 23000 mdBm
power-ramp step-size 2000 mdB
power-ramp step-interval 1
ms-power-control dsp
phy 0 instance 0

View File

@@ -1,24 +0,0 @@
EXTRA_DIST = dtx.dot \
osmobts-abis.adoc \
osmobts-abis-docinfo.xml \
osmobts-usermanual.adoc \
osmobts-usermanual-docinfo.xml \
osmobts-vty-reference.xml \
rtp-amr.adoc \
rtp-amr-docinfo.xml \
abis \
chapters \
vty
if BUILD_MANUALS
ASCIIDOC = osmobts-usermanual.adoc osmobts-abis.adoc rtp-amr.adoc
include $(OSMO_GSM_MANUALS_DIR)/build/Makefile.asciidoc.inc
osmobts-usermanual.pdf: $(srcdir)/chapters/*.adoc
osmobts-abis.pdf: $(srcdir)/abis/*.adoc $(srcdir)/abis/*.msc
rtp-amr.pdf: $(srcdir)/dtx.dot
VTY_REFERENCE = osmobts-vty-reference.xml
include $(OSMO_GSM_MANUALS_DIR)/build/Makefile.vty-reference.inc
include $(OSMO_GSM_MANUALS_DIR)/build/Makefile.common.inc
endif

View File

@@ -1,23 +0,0 @@
msc {
bts [label="BTS"], bsc [label="BSC"];
bts => bsc [label="TCP Connect (Port 3002, OML)"];
bts box bsc [label="IPA CCM Identification (Port 3002)"];
bts <= bsc [label="OML Configuration of BTS via OML"];
...;
bts <= bsc [label="OML (TRX=0) IPA RSL CONNECT"];
bts => bsc [label="TCP Connect (Port 3003, RSL, TRX 0)"];
bts box bsc [label="IPA CCM Identification Port 3003"];
bts <= bsc [label="RSL BCCH filling (System Information)"];
bts <= bsc [label="RSL SACCH filling (SI 5/6)"];
...;
bts <= bsc [label="OML (TRX=1) IPA RSL CONNECT"];
bts => bsc [label="TCP Connect (Port 3003, RSL, TRX 1)"];
bts box bsc [label="IPA CCM Identification (Port 3003)"];
bts <= bsc [label="RSL SACCH filling (SI 5/6)"];
...;
bts <= bsc [label="OML (TRX=N) IPA RSL CONNECT"];
bts => bsc [label="TCP Connect (Port 3003, RSL, TRX N)"];
bts box bsc [label="IPA CCM Identification (Port 3003)"];
bts <= bsc [label="RSL SACCH filling (SI 5/6)"];
}

View File

@@ -1,23 +0,0 @@
msc {
hscale = "1.2";
phy,bts,pcu,bsc;
phy box bsc [ label = "PDCH Deactivation" ];
bsc => bts [ label = "IPAC PDCH DEACT" ];
--- [ label = "Disconnect PDTCH" ];
bts => pcu [ label = "info ind (Deactivate)" ];
pcu => bts [ label = "chan Deactivate request" ];
bts => phy [ label = "L1 chan Deactivate PDTCH SAPIs" ];
phy -> bts [ label = "L1 chan Deactivate SAPIs confirm" ];
bts => phy [ label = "L1 chan Disconnect PDTCH" ];
phy -> bts [ label = "L1 chan Disconnect confirm" ];
--- [ label = "Connect TCH" ];
bts => phy [ label = "L1 chan Connect TCH" ];
phy -> bts [ label = "L1 chan Connect confirm" ];
bts => bsc [ label = "IPAC PDCH DEACT ACK" ];
phy box bsc [ label = "Now BSC may use TCH (example)" ];
bsc => bts [ label = "Activate TCH/F" ];
bts => phy [ label = "L1 chan Activate SAPIs" ];
--- [ label = "Voice call..." ];
}

View File

@@ -1,22 +0,0 @@
msc {
hscale = "1.2";
phy,bts,pcu,bsc;
--- [ label = "...Voice call ends" ];
bsc => bts [ label = "Deactivate TCH/F" ];
bts => phy [ label = "L1 chan Deactivate SAPIs" ];
phy box bsc [ label = "PDCH Activation" ];
bsc => bts [ label = "IPAC PDCH ACT" ];
--- [ label = "Disconnect TCH" ];
bts => phy [ label = "L1 chan Disconnect TCH" ];
phy -> bts [ label = "L1 chan Disconnect confirm" ];
--- [ label = "Connect PDTCH" ];
bts => phy [ label = "L1 chan Connect PDTCH" ];
phy -> bts [ label = "L1 chan Connect confirm" ];
bts => pcu [ label = "info ind (Activate)" ];
pcu => bts [ label = "chan Activate request" ];
bts => phy [ label = "L1 chan Activate PDTCH SAPIs" ];
phy -> bts [ label = "L1 chan Activate SAPIs confirm" ];
bts => bsc [ label = "IPAC PDCH ACT ACK" ];
}

View File

@@ -1,34 +0,0 @@
msc {
hscale = "1.5";
phy,bts,pcu,bsc;
bts => bsc [ label = "RSL Chan Requested" ];
phy box bsc [ label = "TS is in PDCH mode, deactivate" ];
bsc => bts [ label = "RSL RF Channel Release (PDCH)" ];
bts => pcu [ label = "Info Ind (Deactivate)" ];
pcu => bts [ label = "Chan Deactivate request" ];
bts => phy [ label = "L1 chan Deactivate PDTCH SAPIs" ];
phy -> bts [ label = "L1 chan Deactivate SAPIs confirm" ];
bts -> bsc [ label = "RSL RF Channel Release Ack (PDCH)" ];
phy box bsc [ label = "Activate TCH/H" ];
bsc => bts [ label = "RSL Channel Activation (TCH/H)" ];
--- [ label = "BTS notices: chan still connected as PDTCH, reconnect" ];
bts => phy [ label = "L1 chan Disconnect PDTCH" ];
phy -> bts [ label = "L1 chan Disconnect confirm" ];
bts => phy [ label = "L1 chan Connect TCH/H" ];
phy -> bts [ label = "L1 chan Connect confirm" ];
--- [ label = "chan reconnect as TCH/H complete" ];
bts => phy [ label = "L1 chan Activate SAPIs" ];
bts -> bsc [ label = "RSL Channel Activation Ack (TCH/H)" ];
--- [ label = "Voice call 1 commences..." ];
phy box bsc [ label = "A second voice call is requested" ];
bts => bsc [ label = "RSL Chan Requested" ];
phy box bsc [ label = "BSC finds second slot on dynamic TS in TCH/H mode" ];
bsc => bts [ label = "RSL Channel Activation (TCH/H)" ];
bts => phy [ label = "L1 chan Activate SAPIs" ];
bts -> bsc [ label = "RSL Channel Activation Ack (TCH/H)" ];
--- [ label = "Voice call 2 commences..." ];
}

View File

@@ -1,31 +0,0 @@
msc {
hscale = "1.5";
phy,bts,pcu,bsc;
--- [ label = "...Voice call 1 ends" ];
bts => bsc [ label = "Release Ind" ];
bsc => bts [ label = "RSL RF Channel Release (TCH/H)" ];
bts => phy [ label = "L1 chan Deactivate SAPIs" ];
bts -> bsc [ label = "RSL RF Channel Release Ack (TCH/H)" ];
--- [ label = "BSC notices: one chan still in use"];
--- [ label = "...Voice call 2 ends" ];
bts => bsc [ label = "Release Ind" ];
bsc => bts [ label = "RSL RF Channel Release (TCH/H)" ];
bts => phy [ label = "L1 chan Deactivate SAPIs" ];
bts -> bsc [ label = "RSL RF Channel Release Ack (TCH/H)" ];
phy box bsc [ label = "If all channels on TS are released, PDCH Activation" ];
bsc => bts [ label = "RSL Channel Activation (PDCH)" ];
bts -> bsc [ label = "RSL Channel Activation Ack (PDCH) (unconditionally)" ];
--- [ label = "BTS notices: chan still connected as TCH/H, reconnect" ];
bts => phy [ label = "L1 chan Disconnect TCH/H" ];
phy -> bts [ label = "L1 chan Disconnect confirm" ];
bts => phy [ label = "L1 chan Connect PDTCH" ];
phy -> bts [ label = "L1 chan Connect confirm" ];
--- [ label = "chan reconnect as PDTCH complete" ];
bts => pcu [ label = "Info Ind (Activate)" ];
pcu => bts [ label = "chan Activate request" ];
bts => phy [ label = "L1 chan Activate PDTCH SAPIs" ];
phy -> bts [ label = "L1 chan Activate SAPIs confirm" ];
}

View File

@@ -1,106 +0,0 @@
== IPA Multiplex
The ETSI/3GPP specifications for A-bis transport (ETSI/3GPP TS 08.56)
specify the transmission of RSL and OML messages over a LAPD based
framing on top of 64kBit/s signalling times slots (B-channels) on E1
lines.
OsmoBTS does not implement this LAPD based transport, but instead
implements A-bis over IP in a flavor first observed by ip.access nanoBTS
products. The OsmoBTS implementation is a clean-room re-implementation
based on the observation and dissection of protocol traces.
LAPD as used in E1 signalling channels provides in-order transmission
and reliable delivery. This is why TCP was chosen as Layer 4 transport
protocol on top of IP. TCP however, is a stream based transport
protocol, which doesn't preserve the boundaries of messages.
To work around this shortcoming, an additional framing layer called the
IPA multiplex was introduced between TCP and the RSL and OML messages.
.Protocol Stacking
[width="30%"]
|===
|RSL + OML (this document)
|IPA (this document)
|TCP (IETF RFC 793)
|IP (IETF RFC 791)
|Ethernet (IEEE 802.3)
|===
=== IPA Header
Each higher-layer PDU is encapsulated by a three-byte IPA header with
the following structure:
.IPA Header Structure
[options="header",cols="10%,15%,15%,60%"]
|===
|Offset (Octets)|Length|Name|Description
|0|2|Length|Length of the variable-length payload section in network
byte order (excluding the length of the IPA Header)
|2|1|Stream Identifier|Identifies the stream of the payload
|3|Variable|Payload|higher-layer PDU (i.e. RSL or OML message)
|===
=== IPA Stream Identifiers
The IPA Stream Identifier serves to differentiate different streams
within the multiplex. In the context of A-bis, it can be seen as
analogous to the LAPD TEI on classic A-bis over E1.
The following IPA stream identifiers are being used in A-bis/IP:
.IPA Stream Identifiers
[options="header",width="70%",cols="20%,20%,60%"]
|===
|Value (Hex)|Name|Description
|0x00|RSL|A-bis RSL according to this document, TRX 0
|0x01|RSL|A-bis RSL according to this document, TRX 1
|0x0n|RSL|A-bis RSL according to this document, TRX n
|0xfe|CCM|IPA Connection Management
|0xff|OML|A-bis OML according to this document
|===
=== IPA Connection Management (CCM)
The IPA Connection Management is a sub-layer underneath the IPA
multiplex which is used to manage the connection itself. It supports
functions like Identity Management and Keep-Alive.
==== Identity Management
When a BTS connects to the BSC, the BSC must identify the connected BTS
somehow. In ETSI/3GPP A-bis, the E1 multiplex + signalling timeslot
number is used for this. In IP, there is no similar usable identity.
Hence, the Unit ID is used for this purpose.
.Procedure for IPA peer identification is as follows
[options="header",cols="20%,80%"]
|===
|Direction|Operation
|BTS -> BSC|BTS connects the TCP connection to be used with IPA
|BTS <- BSC|BSC requests BTS identity with ID_GET
|BTS -> BSC|BTS responds BTS Unit ID with ID_RESP
|BTS <- BSC|BSC responds with ID_ACK, if the Unit ID is known to the BSC
|===
Following the above peer identification procedure, transfer of
higher-level messages such as OML or RSL commences.
==== IPA CCM Messages
IPA CCM supports the following messages
.IPA CCM Messages
[options="header"]
[cols="10%,15%,75%"]
|===
|Value|Name|Purpose
|0x00|PING|Request a PONG from the peer
|0x01|PONG|Response to a PING
|0x04|ID_GET|Request Identity from peer
|0x05|ID_RESP|Response to ID_GET
|0x06|ID_ACK|Identity Acknowledged
|===

View File

@@ -1,26 +0,0 @@
msc {
bts [label="BTS"], bsc [label="BSC"];
# this is for the BTS Object
--- [label="Initial state after establishing OML"];
bts => bsc [label="STATE CHG REP (Disabled/Notinstalled/Locked)"];
--- [label="MO requests software activation"];
bts => bsc [label="SW Activate Req"];
bts <= bsc [label="SW Activate Req Ack"];
--- [label="BTS instructs BTS to activate software"];
bts <= bsc [label="Activate SW"];
bts => bsc [label="Activate SW Ack"];
--- [label="MO reports new state after SW activation"];
bts => bsc [label="STATE CHG REP (Disabled/Dependency)"];
bts => bsc [label="SW Activated Report"];
--- [label="Configure the MO with its attributes"];
bts <= bsc [label="Set BTS Attributes"];
bts => bsc [label="Set BTS Attributes Ack"];
bts <= bsc [label="OPSTART"];
bts => bsc [label="OPSTART ACK"];
--- [label="As this object is locked, we need to unlock it"];
bts <= bsc [label="Change Adm State (Unlocked)"];
bts => bsc [label="Change Adm State Ack (Unlocked)"];
bts => bsc [label="STATE CHG REP (Disabled/Dependency/Unlocked)"];
--- [label="Initialize Radio Transceiver, Radio Carrier, Channels"];
bts => bsc [label="STATE CHG REP (Enabled/OK)"];
}

View File

@@ -1,24 +0,0 @@
msc {
bts [label="Radio Carrier"], bsc [label="BSC"];
--- [label="Initial state after establishing OML"];
bts => bsc [label="STATE CHG REP (Disabled/Notinstalled/Locked)"];
--- [label="MO requests software activation"];
bts => bsc [label="SW Activate Req"];
bts <= bsc [label="SW Activate Req Ack"];
--- [label="BTS instructs BTS to activate software"];
bts <= bsc [label="Activate SW"];
bts => bsc [label="Activate SW Ack"];
--- [label="MO reports new state after SW activation"];
bts => bsc [label="STATE CHG REP (Disabled/Offline)"];
bts => bsc [label="SW Activated Report"];
--- [label="Configure the MO with its attributes"];
bts <= bsc [label="Set Radio Carrier Attributes"];
bts => bsc [label="Set Radio Carrier Attributes Ack"];
bts <= bsc [label="OPSTART"];
bts => bsc [label="OPSTART ACK"];
--- [label="As this object is locked, we need to unlock it"];
bts <= bsc [label="Change Adm State (Unlocked)"];
bts => bsc [label="Change Adm State Ack (Unlocked)"];
bts => bsc [label="STATE CHG REP (Disabled/OK/Unlocked)"];
bts => bsc [label="STATE CHG REP (Enabled)"];
}

View File

@@ -1,20 +0,0 @@
msc {
bts [label="Channel"], bsc [label="BSC"];
--- [label="Initial state after establishing OML"];
bts => bsc [label="STATE CHG REP (Disabled/Notinstalled/Locked)"];
--- [label="MO reports new state after SW activation of Baseband Transceiver"];
bts => bsc [label="STATE CHG REP (Disabled/Dependency)"];
bts => bsc [label="SW Activated Report"];
--- [label="Configure the MO with its attributes"];
bts <= bsc [label="Set Channel Attributes"];
bts => bsc [label="Set Channel Attributes Ack"];
bts <= bsc [label="OPSTART"];
bts => bsc [label="OPSTART ACK"];
--- [label="As this object is locked, we need to unlock it"];
bts <= bsc [label="Change Adm State (Unlocked)"];
bts => bsc [label="Change Adm State Ack (Unlocked)"];
bts => bsc [label="STATE CHG REP (Disabled/Dependency/Unlocked)"];
--- [label="Initialize Radio Carrier / Baseband Transceiver"];
bts => bsc [label="STATE CHG REP (Disabled/Offline)"];
bts => bsc [label="STATE CHG REP (Enabled/OK)"];
}

View File

@@ -1,17 +0,0 @@
msc {
bts [label="Site Manager"], bsc [label="BSC"];
# this is for the Site Manager Object
--- [label="Initial state after establishing OML"];
bts => bsc [label="STATE CHG REP (Disabled/Notinstalled)"];
--- [label="MO requests software activation"];
bts => bsc [label="SW Activate Req"];
bts <= bsc [label="SW Activate Req Ack"];
--- [label="BTS instructs BTS to activate software"];
bts <= bsc [label="Activate SW"];
bts => bsc [label="Activate SW Ack"];
--- [label="MO reports new state after SW activation"];
bts => bsc [label="STATE CHG REP (Enabled)"];
bts => bsc [label="SW Activated Report"];
bts <= bsc [label="OPSTART"];
bts => bsc [label="OPSTART ACK"];
}

View File

@@ -1,23 +0,0 @@
msc {
bts [label="Baseband Transceiver"], bsc [label="BSC"];
--- [label="Initial state after establishing OML"];
bts => bsc [label="STATE CHG REP (Disabled/Notinstalled/Locked)"];
--- [label="MO requests software activation"];
bts => bsc [label="SW Activate Req"];
bts <= bsc [label="SW Activate Req Ack"];
--- [label="BTS instructs BTS to activate software"];
bts <= bsc [label="Activate SW"];
bts => bsc [label="Activate SW Ack"];
--- [label="MO reports new state after SW activation"];
bts => bsc [label="STATE CHG REP (Disabled/Dependency)"];
bts => bsc [label="SW Activated Report"];
--- [label="BSC requests RSL establishment"];
bts <= bsc [label="IPA RSL Connect"];
bts => bsc [label="IPA RSL Connect ACK"];
bts <= bsc [label="OPSTART"];
bts => bsc [label="OPSTART ACK"];
--- [label="As this object is locked, we need to unlock it"];
bts <= bsc [label="Change Adm State (Unlocked)"];
bts => bsc [label="Change Adm State Ack (Unlocked)"];
bts => bsc [label="STATE CHG REP (Disabled/Dependency/Unlocked)"];
}

View File

@@ -1,34 +0,0 @@
msc {
hscale = 2;
chan [label="Channel"], rc [label="Radio Carrier"], smg [label="Site Manager"], bts [label="BTS"], bsc [label="BSC"];
bts => bsc [label="TCP Connect (Port 3003, OML)"];
bts box bsc [label="IPA CCM Identification (Port 3003)"];
|||;
smg => bsc [label="(Site Mgr) STATE CHG REP (Disabled/NotInstalled)"];
bts => bsc [label="(BTS) STATE CHG REP (Disabled/NotInstalled/Locked)"];
rc => bsc [label="(TRANSC) STATE CHG REP (Disabled/NotInstalled/Locked)"];
chan => bsc [label="(Ch 0) STATE CHG REP (Disabled/NotInstalled/Locked)"];
chan => bsc [label="(Ch 1) STATE CHG REP (Disabled/NotInstalled/Locked)"];
chan => bsc [label="(Ch 2) STATE CHG REP (Disabled/NotInstalled/Locked)"];
chan => bsc [label="(Ch 3) STATE CHG REP (Disabled/NotInstalled/Locked)"];
chan => bsc [label="(Ch 4) STATE CHG REP (Disabled/NotInstalled/Locked)"];
chan => bsc [label="(Ch 5) STATE CHG REP (Disabled/NotInstalled/Locked)"];
chan => bsc [label="(Ch 6) STATE CHG REP (Disabled/NotInstalled/Locked)"];
chan => bsc [label="(Ch 7) STATE CHG REP (Disabled/NotInstalled/Locked)"];
rc => bsc [label="(RC) STATE CHG REP (Disabled/NotInstalled/Locked)"];
bts => bsc [label="(GPRS-NSE) STATE CHG REP (Disabled/NotInstalled/Locked)"];
bts => bsc [label="(GPRS-CELL) STATE CHG REP (Disabled/NotInstalled/Locked)"];
bts => bsc [label="(GPRS-NSVC0) STATE CHG REP (Disabled/NotInstalled/Locked)"];
bts => bsc [label="(GPRS-NSVC1) STATE CHG REP (Disabled/NotInstalled/Locked)"];
|||;
smg => bsc [label="(Site Mgr) SW Activate Req"];
smg <= bsc [label="(Site Mgr) SW Activate Req Ack"];
smg <= bsc [label="(Site Mgr) Activate SW"];
smg => bsc [label="(Site Mgr) Activate SW Ack"];
smg => bsc [label="(Site Mgr) STATE CHG REP (Enabled)"];
smg => bsc [label="(Site Mgr) SW Activated Report"];
smg <= bsc [label="(Site Mgr) OPSTART"];
smg => bsc [label="(Site Mgr) OPSTART ACK"];
}

View File

@@ -1,50 +0,0 @@
msc {
hscale = 2;
chan [label="Channel"], rc [label="Radio Carrier"], bts [label="BTS"], bsc [label="BSC"];
bts box bsc [label="OML Connect + Site Manager Init"];
...;
bts => bsc [label="(BTS) SW Activate Req"];
bts <= bsc [label="(BTS) SW Activate Req Ack"];
bts <= bsc [label="(BTS) Activate SW"];
bts => bsc [label="(BTS) Activate SW Ack"];
bts => bsc [label="(BTS) STATE CHG REP (Disabled/Dependency)"];
bts => bsc [label="(BTS) SW Activated Report"];
|||;
rc => bsc [label="(TRANSC) SW Activate Req"];
rc => bsc [label="(RC) SW Activated Req"];
|||;
bts <= bsc [label="(BTS) Set BTS Attributes"];
bts => bsc [label="(BTS) Set BTS Attributes Ack"];
bts <= bsc [label="(BTS) OPSTART"];
bts => bsc [label="(BTS) OPSTART Ack"];
|||;
bts <= bsc [label="(BTS) Change Adm State (Unlocked)"];
bts => bsc [label="(BTS) Change Adm State ACK (Unlocked)"];
bts => bsc [label="(BTS) STATE CHG REP (Disabled/Dependency/Unlcoked)"];
|||;
rc <= bsc [label="(TRANSC) SW Activate Req Ack"];
rc <= bsc [label="(TRANSC) Activate SW"];
rc => bsc [label="(TRANSC) Activate SW Ack"];
rc => bsc [label="(TRANSC) STATE CHG REP (Disabled/Dependency)"];
rc => bsc [label="(TRANSC) SW Activated Report"];
chan => bsc [label="(CHAN 0) STATE CHG REP (Disabled/Dependency)"];
chan => bsc [label="(CHAN 1) STATE CHG REP (Disabled/Dependency)"];
chan => bsc [label="(CHAN 2) STATE CHG REP (Disabled/Dependency)"];
chan => bsc [label="(CHAN 3) STATE CHG REP (Disabled/Dependency)"];
chan => bsc [label="(CHAN 4) STATE CHG REP (Disabled/Dependency)"];
chan => bsc [label="(CHAN 5) STATE CHG REP (Disabled/Dependency)"];
chan => bsc [label="(CHAN 6) STATE CHG REP (Disabled/Dependency)"];
chan => bsc [label="(CHAN 7) STATE CHG REP (Disabled/Dependency)"];
|||;
chan => bsc [label="(CHAN 0) SW Activated Report"];
chan => bsc [label="(CHAN 1) SW Activated Report"];
chan => bsc [label="(CHAN 2) SW Activated Report"];
chan => bsc [label="(CHAN 3) SW Activated Report"];
chan => bsc [label="(CHAN 4) SW Activated Report"];
chan => bsc [label="(CHAN 5) SW Activated Report"];
chan => bsc [label="(CHAN 6) SW Activated Report"];
chan => bsc [label="(CHAN 7) SW Activated Report"];
}

View File

@@ -1,51 +0,0 @@
msc {
hscale = 2;
chan [label="Channel"], rc [label="Radio Carrier"], bts [label="BTS"], bsc [label="BSC"];
...;
rc <= bsc [label="(RC) SW Activate Req Ack"];
rc <= bsc [label="(RC) Activate SW"];
rc => bsc [label="(RC) Activate SW Ack"];
rc => bsc [label="(RC) STATE CHG REP (Disabled/Offline)"];
rc => bsc [label="(RC) SW Activated Report"];
rc <= bsc [label="(TRANSC) IPA RSL Connect"];
rc => bsc [label="(TRANSC) IPA RSL Connect Ack"];
rc <= bsc [label="(TRANSC) OPSTART"];
rc => bsc [label="(TRANSC) OPSTART Ack"];
rc <= bsc [label="(TRANSC) Change Adm State (Unlocked)"];
rc => bsc [label="(TRANSC) Change Adm State Ack (Unlocked)"];
rc => bsc [label="(TRANSC) STATE CHG REP (Disabled/Dependency/Unlocked)"];
|||;
chan <= bsc [label="(CHAN 0) Set Channel Attributes"];
chan => bsc [label="(CHAN 0) Set Channel Attributes Ack"];
chan <= bsc [label="(CHAN 0) OPSTART"];
chan => bsc [label="(CHAN 0) OPSTART Ack"];
chan <= bsc [label="(CHAN 0) Change Adm State (Unlocked)"];
chan => bsc [label="(CHAN 0) Change Adm State Ack (Unlocked)"];
chan => bsc [label="(CHAN 0) STATE CHG REP (Disabled/Dependency/Unlocked)"];
...;
chan <= bsc [label="(CHAN 7) Set Channel Attributes"];
chan => bsc [label="(CHAN 7) Set Channel Attributes Ack"];
chan <= bsc [label="(CHAN 7) OPSTART"];
chan => bsc [label="(CHAN 7) OPSTART Ack"];
chan <= bsc [label="(CHAN 7) Change Adm State (Unlocked)"];
chan => bsc [label="(CHAN 7) Change Adm State Ack (Unlocked)"];
chan => bsc [label="(CHAN 7) STATE CHG REP (Disabled/Dependency/Unlocked)"];
|||;
rc <= bsc [label="(RC) Set Radio Carrier Attributes"];
rc => bsc [label="(RC) Set Radio Carrier Attributes Ack"];
rc <= bsc [label="(RC) OPSTART"];
rc => bsc [label="(RC) OPSTART Ack"];
rc <= bsc [label="(RC) Change Adm State (Unlocked)"];
rc => bsc [label="(RC) Change Adm State Ack (Unlocked)"];
rc => bsc [label="(RC) STATE CHG REP (Disabled/OK/Unlocked)"];
rc => bsc [label="(RC) STATE CHG REP (Enabled)"];
rc => bsc [label="(TRANSC) STATE CHG REP (Disabled/Offline)"];
rc => bsc [label="(TRANSC) STATE CHG REP (Enabled/OK)"];
|||;
chan => bsc [label="(CHAN 0) STATE CHG REP (Disabled/Offline)"];
chan => bsc [label="(CHAN 0) STATE CHG REP (Enabled/OK)"];
|||;
bts => bsc [label="(BTS) STATE CHG REP (Enabled/OK)"];
}

View File

@@ -1,950 +0,0 @@
== Organization & Maintenance Link (OML)
=== List of Messages
The following tables list the OML messages used by OsmoBTS, grouped by their
level of compliance with 3GPP TS 12.21.
==== Messages Compliant With TS 12.21
Specific limitations apply, see the linked sections.
.Messages compliant with TS 12.21
[options="header",cols="10%,10%,20%,35%,5%,20%"]
|===
| TS 12.21 § | type code (hex) | This document § | Message | <-/-> | Received/Sent by OsmoBTS
6+<| *SW Download Management Messages:*
| 8.3.7 | 0x10 | <<sw_act_rep>> | SW Activated Report | -> | Sent
6+<| *Air Interface Management Messages:*
.3+.| 8.6.1 | 0x41 .3+.| <<set_bts_attr>> | Set BTS Attributes | <- | Received
| 0x42 | Set BTS Attributes Ack | -> | Sent
| 0x43 | Set BTS Attributes Nack | -> | Sent
.3+.| 8.6.2 | 0x44 .3+.| <<set_radio_attr>> | Set Radio Carrier Attributes | <- | Received
| 0x45 | Set Radio Carrier Attributes Ack | -> | Sent
| 0x46 | Set Radio Carrier Attributes Nack | -> | Sent
.3+.| 8.6.3 | 0x47 .3+.| <<set_chan_attr>> | Set Channel Attributes | <- | Received
| 0x48 | Set Channel Attributes Ack | -> | Sent
| 0x49 | Set Channel Attributes Nack | -> | Sent
6+<| *State Management and Event Report Messages:*
| 8.8.1 | 0x61 | <<state_changed_rep>> | State Changed Event Report | -> | Sent
.3+.| 8.8.5 | 0x69 .3+.| <<chg_adm_state>> | Change Administrative State | <- | Received
| 0x6A | Change Administrative State Ack | -> | Sent
| 0x6B | Change Administrative State Nack | -> | Sent
6+<| *Equipment Management Messages:*
.3+.| 8.9.2 | 0x74 .3+.| <<opstart>> | Opstart | <- | Received
| 0x75 | Opstart Ack | -> | Sent
| 0x76 | Opstart Nack | -> | Sent
|===
==== Messages Specific to OsmoBTS
.Messages specific to OsmoBTS, not found in 3GPP TS 12.21
[options="header"]
[options="header",cols="20%,55%,5%,20%"]
|===
| This document § | Message | <-/-> | Received/Sent by OsmoBTS
| <<ipacc_set_attr>> | Set Attribute | <- | Received
|===
==== Messages Not Implemented by OsmoBTS
.3GPP TS 12.21 messages not implemented by OsmoBTS
[options="header",cols="10%,10%,80%"]
|===
| TS 12.21 § | type code (hex) | Message
3+<| *SW Download Management Messages:*
.3+.| 8.3.1 | 0x01 | Load Data Initiate
| 0x02 | Load Data Initiate Ack
| 0x03 | Load Data Initiate Nack
.2+.| 8.3.2 | 0x04 | Load Data Segment
| 0x05 | Load Data Segment Ack
| 8.3.3 | 0x06 | Load Data Abort
.3+.| 8.3.4 | 0x07 | Load Data End
| 0x08 | Load Data End Ack
| 0x09 | Load Data End Nack
.3+.| 8.3.5 | 0x0A | SW Activate Request
| 0x0B | SW Activate Request Ack
| 0x0C | SW Activate Request Nack
.3+.| 8.3.6 | 0x0D | Activate SW
| 0x0E | Activate SW Ack
| 0x0F | Activate SW Nack
3+<| *A-bis Interface Management Messages:*
.3+.| 8.4.1 | 0x21 | Establish TEI
| 0x22 | Establish TEI Ack
| 0x23 | Establish TEI Nack
.3+.| 8.4.2 | 0x24 | Connect Terrestrial Signalling
| 0x25 | Connect Terrestrial Signalling Ack
| 0x26 | Connect Terrestrial Signalling Nack
.3+.| 8.4.3 | 0x27 | Disconnect Terrestrial Signalling
| 0x28 | Disconnect Terrestrial Signalling Ack
| 0x29 | Disconnect Terrestrial Signalling Nack
.3+.| 8.4.4 | 0x2A | Connect Terrestrial Traffic
| 0x2B | Connect Terrestrial Traffic Ack
| 0x2C | Connect Terrestrial Traffic Nack
.3+.| 8.4.5 | 0x2D | Disconnect Terrestrial Traffic
| 0x2E | Disconnect Terrestrial Traffic Ack
| 0x2F | Disconnect Terrestrial Traffic Nack
3+<| *Transmission Management Messages:*
.3+.| 8.5.1 | 0x31 | Connect Multi-Drop Link
| 0x32 | Connect Multi-Drop Link Ack
| 0x33 | Connect Multi-Drop Link Nack
.3+.| 8.5.2 | 0x34 | Disconnect Multi-Drop Link
| 0x35 | Disconnect Multi-Drop Link Ack
| 0x36 | Disconnect Multi-Drop Link Nack
3+<| *Test Management Messages:*
.3+.| 8.7.1 | 0x51 | Perform Test
| 0x52 | Perform Test Ack
| 0x53 | Perform Test Nack
.3+.| 8.7.2 | 0x54 | Test Report
| 0x55 | Send Test Report
| 0x56 | Send Test Report Ack
| 8.7.3 | 0x57 | Send Test Report Nack
.3+.| 8.7.4 | 0x58 | Stop Test
| 0x59 | Stop Test Ack
| 0x5A | Stop Test Nack
3+<| *State Management and Event Report Messages:*
| 8.8.2 | 0x62 | Failure Event Report
.3+.| 8.8.3 | 0x63 | Stop Sending Event Reports
| 0x64 | Stop Sending Event Reports Ack
| 0x65 | Stop Sending Event Reports Nack
.3+.| 8.8.4 | 0x66 | Restart Sending Event Reports
| 0x67 | Restart Sending Event Reports Ack
| 0x68 | Restart Sending Event Reports Nack
.3+.| 8.8.6 | 0x6C | Change Administrative State Request
| 0x6D | Change Administrative State Request Ack
| 0x6E | Change Administrative State Request Nack
.3+.| 8.8.7 | 0x93 | Report Outstanding Alarms
| 0x94 | Report Outstanding Alarms Ack
| 0x95 | Report Outstanding Alarms Nack
3+<| *Equipment Management Messages:*
.3+.| 8.9.1 | 0x71 | Changeover
| 0x72 | Changeover Ack
| 0x73 | Changeover Nack
.3+.| 8.9.3 | 0x87 | Reinitialize
| 0x88 | Reinitialize Ack
| 0x89 | Reinitialize Nack
.3+.| 8.9.4 | 0x77 | Set Site Outputs
| 0x78 | Set Site Outputs Ack
| 0x79 | Set Site Outputs Nack
.3+.| 8.9.5 | 0x90 | Change HW Configuration
| 0x91 | Change HW Configuration Ack
| 0x92 | Change HW Configuration Nack
3+<| *Measurement Management Messages:*
| 8.10.1 | 0x8A | Measurement Result Request
| 8.10.2 | 0x8B | Measurement Result Response
| 8.10.3 | 0x8C | Stop Measurement
| 8.10.4 | 0x8D | Start Measurement
3+<| *Other Messages:*
| 8.11.1 | 0x81 | Get Attributes
| 8.11.3 | 0x82 | Get Attribute(s) Response
| 8.11.1 | 0x83 | Get Attributes Nack
.3+.| 8.11.2 | 0x84 | Set Alarm Threshold
| 0x85 | Set Alarm Threshold Ack
| 0x86 | Set Alarm Threshold Nack
|===
=== Details on Compliant OML Messages
[[sw_act_rep]]
==== SW Activated Report
OsmoBTS will send an _SW Activated Report_ when RF has been activated
successfully. The message is compliant with 3GPP TS 12.21 § 8.3.7.
Upon RF activation, two _SW Activated Report_ messages will be sent, for the Object Classes
- Radio Carrier (0x02)
- Baseband Transceiver (0x04)
[[set_bts_attr]]
==== Set BTS Attributes
OsmoBTS will receive a _Set BTS Attributes_ message and reply with a
corresponding ACK message on success. IE handling is fully compliant to TS
12.21, except that a change of BCCH ARFCN or BSIC while in operation is not
supported, and hence the _Starting Time_ IE is rejected.
._Set BTS Attributes_ IEs not handled by OsmoBTS
[options="header",cols="10%,30%,60%"]
|===
| TS 12.21 § | IE Name | Handling
| 9.4.52 | Starting Time | not supported (provokes NACK cause 0x10)
|===
[[set_radio_attr]]
==== Set Radio Carrier Attributes
This message conforms to 3GPP TS 12.21, with the following limitation,
as frequency hopping is not supported by OsmoBTS:
._Set Radio Carrier Attributes_ IE limitations
[options="header",cols="10%,30%,60%"]
|===
| TS 12.21 § | IE Name | Handling
| 9.4.5 | ARFCN List | ignored
|===
[[set_chan_attr]]
==== Set Channel Attributes
This message conforms to 3GPP TS 12.21, with the following limitation: the
following 3GPP TS 12.21 IEs provoke a NACK response when sent to OsmoBTS, as
frequency hopping is not supported:
._Set Channel Attributes_ IE limitations
[options="header",cols="10%,30%,60%"]
|===
| TS 12.21 § | IE Name | Handling
| 9.4.21 | HSN | not supported (provokes NACK cause 0x10)
| 9.4.27 | MAIO | not supported (provokes NACK cause 0x10)
| 9.4.52 | Starting Time | not supported (provokes NACK cause 0x10)
|===
[[state_changed_rep]]
==== State Changed Event Report
This message is compliant with 3GPP TS 12.21. Exactly these IEs are sent by
OsmoBTS:
[options="header"]
[cols="30%,25%,15%,15%,15%"]
|===
| INFORMATION ELEMENT | REFERENCE | PRESENCE | FORMAT | LENGTH
| Message Type (0xf5) | 3GPP TS 12.21 9.1 | M | V | 1
| Object Class | 3GPP TS 12.21 9.2 | M | V | 1
| Object Instance | 3GPP TS 12.21 9.3 | M | V | 3
| Operational State | 3GPP TS 12.21 9.4.38 | O | TV | 2
| Availability Status | 3GPP TS 12.21 9.4.7 | O | TL16V (with length of 1) | 3
|===
[[chg_adm_state]]
==== Change Administrative State
This message is compliant with 3GPP TS 12.21 § 8.8.5. It applies to all of the
Object Classes defined in 3GPP TS 12.21 § 9.2 as well as
<<addnl_obj_classes>>.
[[opstart]]
==== Opstart
This message is compliant with 3GPP TS 12.21 § 8.9.2. It applies to all of the
Object Classes defined in 3GPP TS 12.21 § 9.2 as well as
<<addnl_obj_classes>>.
=== Details on OsmoBTS Specific Messages
[[ipacc_set_attr]]
==== Set Attribute
The message type is 0xf5. This message is sent to OsmoBTS to set
attributes on instances of managed objects of the non-standard
additional Object Classes (see <<addnl_obj_classes>>).
The message specifics depend on the Object Class and are detailed in
<<addnl_obj_classes>>.
[options="header"]
[cols="30%,25%,15%,15%,15%"]
|===
| INFORMATION ELEMENT | REFERENCE | PRESENCE | FORMAT | LENGTH
| Message Type (0xf5) | 3GPP TS 12.21 9.1 | M | V | 1
| Object Class | 3GPP TS 12.21 9.2 | M | V | 1
| Object Instance | 3GPP TS 12.21 9.3 | M | V | 3
5+<| _Object Class specific IEs follow, see <<addnl_obj_classes>>..._
|===
[[addnl_obj_classes]]
=== Additional Object Classes
In addition to 3GPP TS 12.21 Chapter 9.2, the following managed objects
are supported:
.Additional Managed Object Classes
[options="header"]
[cols="20%,20%,60%"]
|===
| Value | Name | Description
| 0xf0 | GPRS NSE | GPRS-NS Entity
| 0xf1 | GPRS CELL | GPRS Cell Entity
| 0xf2 | GPRS NSVC | GPRS NS Virtual Circuit
|===
==== GPRS-NSE Managed Object
There is one NS Entity per BTS. It supports the *Set Attribute* message
with the following Information Elements:
[options="header"]
[cols="30%,25%,15%,15%,15%"]
|===
| INFORMATION ELEMENT | REFERENCE | PRESENCE | FORMAT | LENGTH
| Message Type | 3GPP TS 12.21 9.1 | M | V | 1
| Object Class | 3GPP TS 12.21 9.2 | M | V | 1
| Object Instance | 3GPP TS 12.21 9.3 | M | V | 3
| GPRS NSEI | <<NM_ATT_IPACC_NSEI>> | O | TL16V | >= 5
| GPRS NS Configuration | <<NM_ATT_IPACC_NS_LINK_CFG>> | O | TL16V | >= 10
| GPRS BSSGP Configuration | <<NM_ATT_IPACC_BSSGP_CFG>> | O | TL16V | >= 14
|===
==== GPRS Cell Managed Object
There is one GPRS Cell entity per BTS. It supports the *Set Attribute*
message with the following Information Elements:
[options="header"]
[cols="30%,25%,15%,15%,15%"]
|===
| INFORMATION ELEMENT | REFERENCE | PRESENCE | FORMAT | LENGTH
| Message Type | 3GPP TS 12.21 9.1 | M | V | 1
| Object Class | 3GPP TS 12.21 9.2 | M | V | 1
| Object Instance | 3GPP TS 12.21 9.3 | M | V | 3
| GPRS Routing Area Code | <<NM_ATT_IPACC_RAC>> | O | TL16V | >= 4
| GPRS Paging Configuration | <<NM_ATT_IPACC_GPRS_PAGING_CFG>> | O | TL16V | >= 5
| GPRS RLC Configuration | <<NM_ATT_IPACC_RLC_CFG>> | O | TL16V | >= 12
| GPRS Coding Schemes | <<NM_ATT_IPACC_CODING_SCHEMES>> | O | TL16V | >= 5
| GPRS RLC Configuration 2 | <<NM_ATT_IPACC_RLC_CFG_2>> | O | TL16V | >= 8
| GPRS RLC Configuration 3 | <<NM_ATT_IPACC_RLC_CFG_3>> | O | TL16V | >= 4
|===
==== GPRS NS-VC Managed Object
There are two GPRS NS-VC instances per BTS. It supports the *Set
Attribute* message with the following Information Elements:
[options="header"]
[cols="30%,25%,15%,15%,15%"]
|===
| INFORMATION ELEMENT | REFERENCE | PRESENCE | FORMAT | LENGTH
| Message Type | 3GPP TS 12.21 9.1 | M | V | 1
| Object Class | 3GPP TS 12.21 9.2 | M | V | 1
| Object Instance | 3GPP TS 12.21 9.3 | M | V | 3
| GPRS NSVCI | <<NM_ATT_IPACC_NSVCI>> | O | TL16V | >= 5
| GPRS NS Link Configuration | <<NM_ATT_IPACC_NS_LINK_CFG>> | O | TL16V | >= 11
|===
=== Information Elements Overview
All of the IEs handled by OsmoBTS are listed below, with limitations and
additions to TS 12.21 specified in more detail.
==== IEs Conforming to TS 12.21
The following Information Elements are accepted by OsmoBTS.
IEs marked __ignored__ may be sent to OsmoBTS without causing error
conditions. These IEs are skipped during message parsing and are never
evaluated.
IEs marked __ignored__ and additionally marked as being received by OsmoBTS
(<-) are in fact parsed and their values are stored by OsmoBTS, but these
stored items are currently not used in the OsmoBTS code base.
.IEs conforming to TS 12.21
[options="header",cols="5%,10%,40%,5%,40%"]
|===
| tag (hex) | TS 12.21 § | IE name | <-/-> | Received/Sent by OsmoBTS
| 0x00 | 9.4.1 | Abis Channel | | _ignored_
| 0x01 | 9.4.2 | Additional Info | | _ignored_
| 0x02 | 9.4.3 | Additional Text | | _ignored_
| 0x03 | 9.4.4 | Administrative State | <- -> | Received & Sent
| 0x04 | 9.4.5 | ARFCN List | <- | Received, with exactly 1 ARFCN: see <<NM_ATT_ARFCN_LIST>>;
ignored by _Set Radio Attribute_ message (<<set_radio_attr>>)
| 0x05 | 9.4.6 | Autonomously Report | | _ignored_
| 0x06 | 9.4.7 | Availability Status | -> | Sent
| 0x07 | 9.4.8 | BCCH ARFCN | <- | Received
| 0x08 | 9.4.9 | BSIC | <- | Received
| 0x09 | 9.4.10 | BTS Air Timer | <- | Received
| 0x0a | 9.4.11 | CCCH Load Indication Period | <- | Received
| 0x0b | 9.4.12 | CCCH Load Threshold | <- | Received
| 0x0c | 9.4.13 | Channel Combination | <- | Received, with additional channel combinations: see <<ie_chan_comb>>
| 0x0d | 9.4.14 | Connection Failure Criterion | <- | Received, with limitations see <<ie_conn_fail_crit>>
| 0x0e | 9.4.15 | Destination | | _ignored_
| 0x0f | 9.4.16 | Event Type | | _ignored_
| 0x11 | 9.4.17 | File Data | | _ignored_
| 0x12 | 9.4.18 | File Id | | _ignored_
| 0x13 | 9.4.19 | File Version | | _ignored_
| 0x14 | 9.4.20 | GSM Time | | _ignored_
| 0x16 | 9.4.22 | HW Configuration | | _ignored_
| 0x18 | 9.4.24 | Intave Parameter | <- | _ignored_
| 0x19 | 9.4.25 | Interference level Boundaries | <- | _ignored_
| 0x1a | 9.4.26 | List of Required Attributes | | _ignored_
| 0x1c | 9.4.28 | Manufacturer Dependent State | | _ignored_
| 0x1d | 9.4.29 | Manufacturer Dependent Thresholds | | _ignored_
| 0x1e | 9.4.30 | Manufacturer Id | | _ignored_
| 0x1f | 9.4.31 | Max Timing Advance | <- | Received
| 0x20 | 9.4.34 | Multi-drop BSC Link | | _ignored_
| 0x21 | 9.4.35 | Multi-drop next BTS Link | | _ignored_
| 0x22 | 9.4.36 | Nack Causes | -> | Sent
| 0x23 | 9.4.37 | Ny1 | <- | Received
| 0x24 | 9.4.38 | Operational State | -> | Sent
| 0x25 | 9.4.39 | Overload Period | <- | _ignored_
| 0x26 | 9.4.40 | Physical Config | | _ignored_
| 0x27 | 9.4.41 | Power Class | | _ignored_
| 0x28 | 9.4.42 | Power Output Thresholds | | _ignored_
| 0x29 | 9.4.43 | Probable Cause | | _ignored_
| 0x2a | 9.4.44 | RACH Busy Threshold | <- | Received
| 0x2b | 9.4.45 | RACH Load Averaging Slots | <- | _ignored_
| 0x2c | 9.4.46 | Radio Sub Channel | | _ignored_
| 0x2d | 9.4.47 | RF Max Power Reduction | <- | Received
| 0x2e | 9.4.48 | Site Inputs | | _ignored_
| 0x2f | 9.4.49 | Site Outputs | | _ignored_
| 0x30 | 9.4.50 | Source | | _ignored_
| 0x31 | 9.4.51 | Specific Problems | | _ignored_
| 0x33 | 9.4.53 | T200 | <- | _ignored_ (1s on DCCH, 2s on ACCH)
| 0x34 | 9.4.54 | TEI | | _ignored_
| 0x35 | 9.4.55 | Test Duration | | _ignored_
| 0x36 | 9.4.56 | Test No | | _ignored_
| 0x37 | 9.4.57 | Test Report Info | | _ignored_
| 0x38 | 9.4.58 | VSWR Thresholds | | _ignored_
| 0x39 | 9.4.59 | Window Size | | _ignored_
| 0x40 | 9.4.60 | TSC | <- | Received, with limitations: see <<NM_ATT_TSC>>
| 0x41 | 9.4.61 | SW Configuration | | _ignored_
| 0x43 | 9.4.63 | Perceived Severity | | _ignored_
| 0x44 | 9.4.64 | Get Attribute Response Info | | _ignored_
| 0x45 | 9.4.65 | Outstanding Alarm Sequence | | _ignored_
| 0x46 | 9.4.66 | HW Conf Change Info | | _ignored_
| 0x47 | 9.4.32 | Measurement Result | | _ignored_
|===
==== IEs Not Conforming to TS 12.21
.IEs not conforming to TS 12.21
[options="header",cols="5%,10%,30%,55%"]
|===
| tag (hex) | TS 12.21 § | IE name | Description
| 0x15 | 9.4.21 | HSN | presence causes NACK response
| 0x17 | 9.4.23 | HW Description | _ignored_ by OsmoBTS, but coding may differ, see <<ie_hw_desc>>
| 0x1b | 9.4.27 | MAIO | presence causes NACK response
| 0x32 | 9.4.52 | Starting Time | presence causes NACK response
| 0x42 | 9.4.62 | SW Description | not supported
| 0x48 | 9.4.33 | Measurement Type | not supported
|===
==== Additional Attributes and Parameters
The following Information Elements are defined in addition to those
specified in 3GPP TS 12.21 Chapter 9.4.
All of these additional IEs are _received_ by OsmoBTS.
These attributes are not used by OsmoBTS, but
simply passed to OsmoPCU connected to the PCU socket.
.Additional IEs handled by OsmoBTS but not defined in TS 12.21
[options="header",cols="5%,50%,45%"]
|===
| tag (hex) | IE name | Description
| 0x80 | RSL Destination IP Address | <<NM_ATT_IPACC_DST_IP>>
| 0x81 | RSL Destination TCP Port | <<NM_ATT_IPACC_DST_IP_PORT>>
| 0x85 | RSL IPA Stream ID | <<NM_ATT_IPACC_STREAM_ID>>
| 0x9a | GPRS Routing Area Code | <<NM_ATT_IPACC_RAC>>
| 0x9c | GPRS Paging Configuration | <<NM_ATT_IPACC_GPRS_PAGING_CFG>>
| 0x9d | GPRS NSEI | <<NM_ATT_IPACC_NSEI>>
| 0x9e | GPRS BVCI | <<NM_ATT_IPACC_BVCI>>
| 0x9f | GPRS NSVCI | <<NM_ATT_IPACC_NSVCI>>
| 0xa0 | GPRS NS Configuration | <<NM_ATT_IPACC_NS_CFG>>
| 0xa1 | GPRS BSSGP Configuration | <<NM_ATT_IPACC_BSSGP_CFG>>
| 0xa2 | GPRS NS Link Configuration | <<NM_ATT_IPACC_NS_LINK_CFG>>
| 0xa3 | GPRS RLC Configuration | <<NM_ATT_IPACC_RLC_CFG>>
| 0xa8 | GPRS Coding Schemes | <<NM_ATT_IPACC_CODING_SCHEMES>>
| 0xa9 | GPRS RLC Configuration 2 | <<NM_ATT_IPACC_RLC_CFG_2>>
| 0xac | GPRS RLC Configuration 3 | <<NM_ATT_IPACC_RLC_CFG_3>>
|===
=== Details on IEs
[[ie_hw_desc]]
==== HW Description
TS 12.21 suggests a series of 5 length-value pairs for the _HW Description_ IE.
Instead, OsmoBTS interprets it as a single TL16V. The value of this IE is
ignored by OsmoBTS, yet the coding may affect message parsing.
[width="40%",cols="90%,10%"]
[grid="none"]
|===
| Attribute Identifier (0x17) | 1
| Length | 2-3
| Ignored | N
|===
[[NM_ATT_ARFCN_LIST]]
==== ARFCN List
Since OsmoBTS does not support frequency hopping, the _ARFCN List_ must contain
exactly one ARFCN.
[[ie_chan_comb]]
==== Additional Channel Combinations
In addition to 3GPP TS 12.21 Chapter 9.4.13, the following channel
combinations are supported:
.Additional Channel Combinations
[options="header"]
[cols="10%,90%"]
|===
| Value | Description
| 0x0b | Reserved for PBCCH + PCCCH + PDTCH/F + PACCH/F + PTCCH/F
| 0x0c | Reserved for PBCCH + PDTCH/F + PACCH/F + PTCCH/F
| 0x0d | PDTCH/F + PACCH/F + PTCCH/F
| 0x80 | ip.access style Dynamic TCH/F / PDCH
| 0x81 | Reserved for Dynamic TCH/F / TCH/H
| 0x90 | Osmocom style Dynamic TCH/F / TCH/H / PDCH
|===
The _Reserved_ combinations are not actually supported/implemented
yet, but merely reserved for such functionality, if it is eventually
implemented.
For more information on how the different dynamic channel combinations
work, please see the <<rsl-dynamic-channels>>.
[[ie_conn_fail_crit]]
==== Connection Failure Criterion
3GPP TS 12.21 Chapter 9.4.14 specifies two different options for the
_Connection Failure Criterion_. OsmoBTS only implements the option
coded as 0x01, i.e. based upon uplink SACCH error rate
(RADIO_LINK_TIMEOUT).
[[NM_ATT_TSC]]
==== TSC
Due to limitations in the currently supported PHY implementations,
OsmoBTS supports only one global TSC for all channels on one TRX, rather
than a separate TSC for each timeslot, as expected by 3GPP TS 12.21.
[[NM_ATT_IPACC_DST_IP]]
==== RSL Destination IP Address
The value part of this attribute has a length of 4 octets and is encoded
as IPv4 address in network byte order.
[width="40%",cols="90%,10%"]
[grid="none"]
|===
| Attribute Identifier (0x80) | 1
| IPv4 Address (MSB first) | 2-5
|===
[[NM_ATT_IPACC_DST_IP_PORT]]
==== RSL Destination TCP Port
The value part of this attribute has a length of 2 octets and contains
the TCP destination port for the RSL connection, encoded in network byte
order.
[width="40%",cols="90%,10%"]
[grid="none"]
|===
| Attribute Identifier (0x81) | 1
| Port number (MSB first) | 2-3
|===
[[NM_ATT_IPACC_STREAM_ID]]
==== RSL IPA Stream ID
The value part of this attribute has a length of one octet and specifies
the IPA stream ID to be used for the RSL connection of this TRX.
[width="40%",cols="90%,10%"]
[grid="none"]
|===
| Attribute Identifier (0x85) | 1
| Stream ID | 2
|===
[[NM_ATT_IPACC_RAC]]
==== GPRS Routing Area Code
The value part of the GPRS Routing Area code consists of a single octet
encoding the GPRS Routing Area Code.
This attribute is not used by OsmoBTS, but
simply passed to OsmoPCU connected to the PCU socket.
[[NM_ATT_IPACC_GPRS_PAGING_CFG]]
==== GPRS Paging Configuration
The value part of this attribute consists of two octets encoded as
follows:
[options="header"]
[cols="10%,90%"]
|===
| Offset | Description
| 0 | GPRS Paging repeat time in units of 50ms intervals
| 1 | GPRS Paging repeat count
|===
[[NM_ATT_IPACC_NSEI]]
==== GPRS NSEI
The value part of the GPRS NSEI is encoded as 16bit integer value in
network byte order.
This attribute is not used by OsmoBTS, but
simply passed to OsmoPCU connected to the PCU socket.
[[NM_ATT_IPACC_BVCI]]
==== GPRS BVCI
The value part of this attribute consists of two octets encoding the
BSSGP Virtual Circuit Identifier (BVCI) as unsigned 16 bit integer in
network byte order.
[[NM_ATT_IPACC_NSVCI]]
==== GPRS NSVCI
The value part of the GPRS NSVCI attribute is a 16bit unsigned integer
in network byte order, encoding the GPRS NSVCI as specified in 3GPP TS
08.16.
This attribute is not used by OsmoBTS, but
simply passed to OsmoPCU connected to the PCU socket.
[[NM_ATT_IPACC_NS_CFG]]
==== GPRS NS Configuration
The value part of the GPRS NS Configuration consists of an array of 7 octets,
each describing one GPRS NS related timer:
This attribute is not used by OsmoBTS, but
simply passed to OsmoPCU connected to the PCU socket.
[[NM_ATT_IPACC_BSSGP_CFG]]
==== GPRS BSSGP Configuration
The value part of the GPRS BSSGP configuration consists of an array of
11 octets, each describing one GPRS BSSGP related timer:
[options="header"]
[cols="10%,90%"]
|===
| Offset | Description
| 0 | Blocking Timer (T1)
| 1 | Blocking Retries
| 2 | Unblocking Retries
| 3 | Reset Timer (T2)
| 4 | Reset Retries
| 5 | Suspend Timer (T3) in units of 100ms
| 6 | Suspend Retries
| 7 | Resume Timer (T4) in units of 100ms
| 8 | Resume Retries
| 9 | Capability Update Timer (T5)
| 10 | Capability Update Retries
|===
The detailed description of the meaning of those timers is given in the
GPRS BSSGP specification 3GPP TS 08.18.
This attribute is not used by OsmoBTS, but
simply passed to OsmoPCU connected to the PCU socket.
[[NM_ATT_IPACC_NS_LINK_CFG]]
==== GPRS NS Link Configuration
This attribute is 8 octets long and encoded as follows:
[options="header"]
[cols="10%,10%,80%"]
|===
| Offset | Length | Description
| 0 | 2 | GPRS-NS Remote UDP Port Number (SGSN side)
| 2 | 4 | GPRS-NS Remote IPv4 Address (SGSN side)
| 6 | 2 | GPRS-NS Local UDP Port Number (BTS side)
|===
All values are encoded in network byte order.
This attribute is not used by OsmoBTS, but
simply passed to OsmoPCU connected to the PCU socket.
[[NM_ATT_IPACC_RLC_CFG]]
==== GPRS RLC Configuration
The value part of the GPRS RLC Configuration consists of an array of 9
octets, each describing a RLC timer:
[options="header"]
[width="60%",cols="10%,80%,10%"]
|===
| Offset | Description | Unit
| 0 | GPRS RLC Timer T3142 | s
| 1 | GPRS RLC Timer T3169 | s
| 2 | GPRS RLC Timer T3191 | s
| 3 | GPRS RLC Timer T3193 | 10ms
| 4 | GPRS RLC Timer T3195 | s
| 5 | GPRS RLC Timer T3101 | s
| 6 | GPRS RLC Timer T3103 | s
| 7 | GPRS RLC Timer T3105 | s
| 8 | GPRS RLC CV Countdown | -
|===
The meaning of the RLC timers are specified in 3GPP TS 04.60.
The countdown value specifies the RLC CV value from which the countdown
procedure is started.
This attribute is not used by OsmoBTS, but
simply passed to OsmoPCU connected to the PCU socket.
[[NM_ATT_IPACC_CODING_SCHEMES]]
==== GPRS Coding Schemes
The value part of the GPRS Coding Schemes consists of two octets
encoding the available GPRS and EDGE coding schemes.
[options="header"]
|===
| *bit* | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0
| byte at offset 0 | MCS9 | x | x | x | CS4 | CS3 | CS2 | CS1
| byte at offset 1 | MCS8 | MCS7| MCS6 | MCS5 | MCS4| MCS3 | MCS2 | MCS1
|===
This attribute is not used by OsmoBTS, but
simply passed to OsmoPCU connected to the PCU socket.
[[NM_ATT_IPACC_RLC_CFG_2]]
==== GPRS RLC Configuration 2
The value part of this attribute is 8 octets long and encoded as
follows:
[options="header"]
[width="60%",cols="10%,10%,70%,10%"]
|===
| Offset | Length | Description | Unit
| 0 | 2 | Downlink TBF Extension Timer | 10ms
| 2 | 2 | Uplink TBF Extension Timer | 10ms
| 4 | 2 | Initial GPRS Coding Scheme | -
|===
The Initial GPRS Coding Scheme is encoded as follows:
[options="header"]
[width="40%",cols="50%,50%"]
|===
| Value | Description
| 1 | CS 1
| 2 | CS 2
| 3 | CS 3
| 4 | CS 4
|===
This attribute is not used by OsmoBTS, but
simply passed to OsmoPCU connected to the PCU socket.
[[NM_ATT_IPACC_RLC_CFG_3]]
==== GPRS RLC Configuration 3
This attribute contains information about the initial MCS used for new EDGE
TBFs.
It is encoded as follows:
[options="header"]
[width="40%",cols="50%,50%"]
|===
| Value | Description
| 1 | MCS 1
| 2 | MCS 2
| 3 | MCS 3
| 4 | MCS 4
| 5 | MCS 5
| 6 | MCS 6
| 7 | MCS 7
| 8 | MCS 8
| 9 | MCS 9
|===
This attribute is not used by OsmoBTS, but
simply passed to OsmoPCU connected to the PCU socket.
=== A-bis OML Initialization / BTS bring-up
At the time an Abis/IP BTS connects to via OML to the BSC, it is
initialized according to the procedures described in 3GPP TS 12.21 as
amended by this document.
Each Managed Object (MO) is separately initialized. The initialization
sequence and parameters differ slightly depending on the MO involved.
Some parts of the sequences described below are optional, such as the
Software activation. In the OsmoBTS case, the software is not modular
and thus all MOs start with the software fully activated. In effect, no
__Software Activate Request__ is being sent by the MO to the BSC, nor
does the BSC need to initialize the __Activate Software__ procedure.
Still, the full sequences are shown in order to explain the Abis/IP
protocol.
Also, the initial state of the MOs at time of OML connection
initialization is not always guaranteed to be __Disabled/Notinstalled__.
Rather, the BSC implementation has to deal with the initial state as
reported by the MOs at time of re-connection.
==== Site Manager MO Initialization
.A-bis OML Initialization of Site Manager MO
["mscgen"]
----
include::oml-mo-sitemgr.msc[]
----
The Site Manager MO does not depend on other MOs, nor does it have an
Administrative state (__Locked/Unlocked__), thus it immediately commences in
the __Enabled__ state.
==== BTS MO Initialization
.A-bis OML Initialization of BTS MO
["mscgen"]
----
include::oml-mo-bts.msc[]
----
As shown in the BTS MO, its state is
* Availability state __Dependency__, meaning it depends on other MOs to
be initialized before becoming enabled.
* Administrative state __Locked__, as the object is first waiting to
receive attributes in the __Locked__ state, before the __Change
Administrative State (Unlocked)__ procedure is used to request
transitioning into Unlocked state.
==== Baseband Transceiver MO Initialization
.A-bis OML Initialization of Baseband Transceiver MO
["mscgen"]
----
include::oml-mo-transceiver.msc[]
----
There is one Baseband Transceiver MO per TRX in the BTS. For a
multi-TRX BTS, the above procedure must be repeated for each TRX.
==== Radio Carrier MO Initialization
.A-bis OML Initialization of Radio Carrier MO
["mscgen"]
----
include::oml-mo-carrier.msc[]
----
There is one Radio Carrier MO per TRX in the BTS. For a multi-TRX BTS,
the above procedure must be repeated for each TRX.
==== Channel MO Initialization
.A-bis OML Initialization of Radio Carrier MO
["mscgen"]
----
include::oml-mo-channel.msc[]
----
There are 8 timeslots in each TRX, and correspondingly 8 Channel MOs in
every TRX. The above procedure must thus be repeated for each timeslot
in each transceiver of the BTS.
==== Complete BTS Initialization Procedure
Some of below steps are optional, as is their detailed ordering. In
practice, the procedures for different MOs may overlap. The message
sequence charts in this document have been hand-crafted to avoid such
overlap for the sake of clarity.
[[oml-msc-1]]
.A-bis OML BTS bring-up (1/3)
["mscgen"]
----
include::oml-startup.msc[]
----
As shown in <<oml-msc-1>>, after the OML TCP connection is established,
. the identity is exchanged via IPA CCM,
. the BTS sends an 'OML EVENT STATE CHANGED REPORT' for every
Managed Object, and
. the BTS subsequently requests the activation of its 'Site Manager' Object
which the BSC performs by the 'Activate SW' command.
. After successful activation of the software in the Site Manager,
.. the state changes to 'Enabled', and an event report is generated
accordingly, and
.. the BSC is notified about the SW activation in an associated report.
. Finally, the BSC requests the start of the Site Manager
.. using the 'OPSTART' command,
.. which is subsequently acknowledged by the Site Manager.
[[oml-msc-2]]
.A-bis OML BTS bring-up (2/3)
["mscgen"]
----
include::oml-startup2.msc[]
----
[[oml-msc-3]]
.A-bis OML BTS bring-up (3/3)
["mscgen"]
----
include::oml-startup3.msc[]
----
<<oml-msc-2>> shows:
. Software Activation and associated state transitions of the BTS MO;
. Setting of the BTS Attributes followed by OPSTART;
. Software Activation and associated state transitions of the 'Baseband
Transceiver' MO;
. Software Activation and associated state transitions of the 'Radio
Carrier' MO;
. Once the 'Baseband Transceiver' MO has its software activated, the
'Channel' MOs (one for each timeslot) indicate their state change as
well as software activation.
<<oml-msc-3>> shows:
. The 'Radio Carrier' MO Software Activation;
. The Request to the 'Baseband Transceiver' MO to establish the RSL
signalling connection to the BSC;
. Subsequent OPSTART and Change of Administrative State on the 'Baseband
Transceiver' MO;
. The following procedure takes place for each of the 'Channel' MOs:
.. Set the Channel Attributes (such as channel combination),
.. OPSTART,
.. change the Administrative State to Unlocked,
.. followed by a State Change Event Report with the new state.
. After all 'Channel' MOs are initialized, the Radio Carrier goes through
a similar procedure:
.. Set attributes,
.. OPSTART,
.. change Administrative State to Unlocked,
.. followed by a State Change Event Report with the new State (Enabled/OK)
. All 'Channel' MOs now also report their state as Enabled/OK.
. Finally, the BTS reports its state as Enabled/OK.

View File

@@ -1,22 +0,0 @@
msc {
bts [label="TRX"], bsc [label="BSC"];
bts => bsc [label="TCP Connect (Port 3003, RSL)"];
bts box bsc [label="IPA CCM Identification (Port 3003)"];
|||;
bts <= bsc [label="BCCH Information (SI1)"];
bts <= bsc [label="BCCH Information (SI2)"];
...;
bts <= bsc [label="BCCH Information (SI3)"];
bts <= bsc [label="BCCH Information (SI4)"];
|||;
bts <= bsc [label="SACCH FILLING (SI5)"];
...;
bts <= bsc [label="SACCH FILLING (SI6)"];
|||;
bts => bsc [label="RF Resource Indication"];
...;
bts => bsc [label="RF Resource Indication"];
...;
}

View File

@@ -1,16 +0,0 @@
msc {
bts [label="TRX"], bsc [label="BSC"];
bts => bsc [label="TCP Connect (Port 3003, RSL)"];
bts box bsc [label="IPA CCM Identification (Port 3003)"];
|||;
bts <= bsc [label="SACCH FILLING (SI5)"];
...;
bts <= bsc [label="SACCH FILLING (SI6)"];
|||;
bts => bsc [label="RF Resource Indication"];
...;
bts => bsc [label="RF Resource Indication"];
...;
}

View File

@@ -1,56 +0,0 @@
msc {
hscale = 2;
ms [label="MS"], bts [label="BTS"], bsc [label="BSC"], Msc [label="MSC"], mgw [label="MGW"];
ms => bts [label="L1 RACH burst"];
bts => bsc [label="RSL CHAN RQD"];
bts <= bsc [label="RSL CHAN ACT"];
bts => bsc [label="RSL CHAN ACT ACK"];
bts <= bsc [label="RSL IMM ASS CMD (RR IMM ASS)"];
ms <= bts [label="RR IMMEDIATE ASSIGN"];
ms => bts [label="LAPDm SABM (CM SERVICE REQ)"];
ms <= bts [label="LAPDm FIXME"];
bts => bsc [label="RSL ESTABLISH IND (CM SERVICE REQ)"];
bsc => Msc [label="CR (BSSAP COMPLETE L3 (CM SERVICE REQ))"];
...;
ms box Msc [label="MM Common Procedures (INFO, ID, AUTH, CIPH)"];
...;
ms => bts [label="CC SETUP"];
bts => bsc [label="RSL DATA IND (CC SETUP)"];
bsc => Msc [label="DT1 (DTAP (CC SETUP))"];
...;
ms box Msc [label="CC Signalling"];
...;
bsc <= Msc [label="BSSAP ASSIGNMENT CMD (TCH)"];
bts <= bsc [label="RSL IPA CRCX", id="1"];
bts => bsc [label="RSL IPA CRCX ACK (IP/Port @ BTS)"];
bsc => Msc [label="FIXME"];
Msc => mgw [label="FIXME"];
bts <- mgw [label="Start RTP + RTCP UDP Flows"];
bts <= bsc [label="RSL DATA REQ (RR CHAN MOD MODIFY)"];
ms <= bts [label="RR CHAN MOD MODIFY"];
ms => bts [label="RR CHAN MOD MODIFY ACK"];
bts => bsc [label="RSL DATA IND (RR CHAN MOD MODIFY ACK)"];
|||;
bts <= bsc [label="RSL MODE MODIFY REQ"];
bts => bsc [label="RSL MODE MODIFY ACK"];
Msc <= mgw [label="FIXME"];
bsc <= Msc [label="FIXME"];
bts <= bsc [label="RSL IPA MDCX (IP/Port @ MGW)", id="2"];
bts => bsc [label="RSL IPA MDCX ACK"];
bts -> mgw [label="Start RTP + RTCP UDP Flows"];
ms box mgw [label="Active Voice Call"];
bts => bsc [label="RSL MEAS RES"];
...;
bts <= bsc [label="RSL IPA DLCX"];
bts => bsc [label="RSL IPA DLCX ACK"];
bts -x mgw [label="Stop RTP + RTCP UDP Flows"];
bts <= bsc [label="RSL RF CHAN REL"];
bts => bsc [label="RSL RF CHAN REL ACK"];
}

View File

@@ -1,944 +0,0 @@
== Radio Signalling Link (RSL)
=== List of Messages
The following tables list the RSL messages used by OsmoBTS A-bis/IP,
grouped by their level of compliance with 3GPP TS 08.58.
==== Messages Compliant With TS 08.58
Specific additions and limitations apply, see the linked sections.
.Messages compliant with TS 08.58
[options="header",cols="10%,20%,45%,5%,20%"]
|===
| TS 08.58 § | This document § | Message | <-/-> | Received/Sent by OsmoBTS
5+<| *Radio link layer management messages*
| 8.3.1 | - | DATA REQUEST | <- | Received
| 8.3.2 | - | DATA INDICATION | -> | Sent
| 8.3.3 | - | ERROR INDICATION | -> | Sent
| 8.3.4 | - | ESTABLISH REQUEST | <- | Received
| 8.3.5 | - | ESTABLISH CONFIRM | -> | Sent
| 8.3.6 | - | ESTABLISH INDICATION | -> | Sent
| 8.3.7 | - | RELEASE REQUEST | <- | Received
| 8.3.8 | - | RELEASE CONFIRM | -> | Sent
| 8.3.9 | - | RELEASE INDICATION | -> | Sent
| 8.3.10 | - | UNIT DATA REQUEST | <- | Received
| 8.3.11 | - | UNIT DATA INDICATION | -> | Sent
5+<| *DEDICATED CHANNEL MANAGEMENT MESSAGES*
| 8.4.1 | <<CHANNEL_ACTIVATION>> | CHANNEL ACTIVATION | <- | Received
| 8.4.2 | <<CHANNEL_ACTIVATION>> | CHANNEL ACTIVATION ACKNOWLEDGE | -> | Sent
| 8.4.3 | <<CHANNEL_ACTIVATION>> | CHANNEL ACTIVATION NEGATIVE ACKNOWLEDGE | -> | Sent
| 8.4.4 | - | CONNECTION FAILURE INDICATION | -> | Sent
| 8.4.5 | - | DEACTIVATE SACCH | <- | Received
| 8.4.6 | - | ENCRYPTION COMMAND | <- | Received
| 8.4.7 | - | HANDOVER DETECTION | -> | Sent
| 8.4.8 | <<MEASUREMENT_RESULT>> | MEASUREMENT RESULT | -> | Sent
| 8.4.9 | <<MODE_MODIFY>> | MODE MODIFY | <- | Received
| 8.4.10 | - | MODE MODIFY ACKNOWLEDGE | -> | Sent
| 8.4.11 | - | MODE MODIFY NEGATIVE ACKNOWLEDGE | -> | Sent
| 8.4.14 | - | RF CHANNEL RELEASE | <- | Received
| 8.4.15 | <<MS_POWER_CONTROL>> | MS POWER CONTROL | <- | Received
| 8.4.19 | - | RF CHANNEL RELEASE ACKNOWLEDGE | -> | Sent
| 8.4.20 | <<SACCH_INFO_MODIFY>> | SACCH INFO MODIFY | <- | Received
5+<| *COMMON CHANNEL MANAGEMENT MESSAGES*
| 8.5.1 | <<BCCH_INFORMATION>> | BCCH INFORMATION | <- | Received
| 8.5.2 | - | CCCH LOAD INDICATION | -> | Sent
| 8.5.3 | <<CHANNEL_REQUIRED>> | CHANNEL REQUIRED | -> | Sent
| 8.5.5 | <<PAGING_COMMAND>> | PAGING COMMAND | <- | Received
| 8.5.6 | - | IMMEDIATE ASSIGN COMMAND | <- | Received
| 8.5.8 | <<SMS_BROADCAST_COMMAND>> | SMS BROADCAST COMMAND | <- | Received
5+<| *TRX MANAGEMENT MESSAGES*
| 8.6.1 | <<RF_RESOURCE_INDICATION>> | RF RESOURCE INDICATION | -> | Sent
| 8.6.2 | <<SACCH_FILLING>> | SACCH FILLING | <- | Received
| 8.6.4 | - | ERROR REPORT | -> | Sent
|===
==== Messages Specific to OsmoBTS
.Messages specific to OsmoBTS, not found in 3GPP TS 08.58
[options="header",cols="15%,15%,45%,5%,20%"]
|===
2+| This document § | Message | <-/-> | Received/Sent by OsmoBTS
5+<| *User Plane Transport Management* (<<user_plane_txp_mgmt>>)
.3+.| <<rsl_crcx>> | <<rsl_crcx_msg>> | RSL Create Connection (CRCX) | <- | Received
| <<rsl_crcx_msg_ack>> | RSL Create Connection (CRCX) ACK | -> | Sent
| <<rsl_crcx_msg_nack>> | RSL Create Connection (CRCX) NACK | -> | Sent
.3+.| <<rsl_mdcx>> | <<rsl_mdcx_msg>> | RSL Modify Connection (MDCX) | <- | Received
| <<rsl_mdcx_msg_ack>> | RSL Modify Connection (MDCX) ACK | -> | Sent
| <<rsl_mdcx_msg_nack>> | RSL Modify Connection (MDCX) NACK | -> | Sent
.3+.| <<rsl_dlcx>> | <<rsl_dlcx_msg>> | RSL Delete Connection (DLCX) | <- | Received
| <<rsl_dlcx_msg_ack>> | RSL Delete Connection (DLCX) ACK | -> | Sent
| <<rsl_dlcx_msg_nack>> | RSL Delete Connection (DLCX) NACK | -> | Sent
| <<rsl_dlcx_ind>> | <<rsl_dlcx_ind_msg>> | RSL Delete Connection (DLCX) Indication | -> | Sent
5+<| *IPA style PDCH Management* (<<ipa_style_pdch_mgmt>>)
.3+.| <<pdch_act>> | <<rsl_pdch_act>> | RSL PDCH Activation | <- | Received
| <<rsl_pdch_act_ack>> | RSL PDCH Activation ACK | -> | Sent
| <<rsl_pdch_act_nack>> | RSL PDCH Activation NACK | -> | Sent
.3+.| <<pdch_deact>> | <<rsl_pdch_deact>> | RSL PDCH Deactivation | <- | Received
| <<rsl_pdch_deact_ack>> | RSL PDCH Deactivation ACK | -> | Sent
| <<rsl_pdch_deact_nack>> | RSL PDCH Deactivation NACK | -> | Sent
|===
==== Messages Not Implemented by OsmoBTS
.3GPP TS 08.58 messages not implemented by OsmoBTS
[options="header",cols="10%,90%"]
|===
| TS 08.58 § | Message
2+<| *DEDICATED CHANNEL MANAGEMENT MESSAGES*
| 8.4.12 | PHYSICAL CONTEXT REQUEST
| 8.4.13 | PHYSICAL CONTEXT CONFIRM
| 8.4.16 | BS POWER CONTROL
| 8.4.17 | PREPROCESS CONFIGURE
| 8.4.18 | PREPROCESSED MEASUREMENT RESULT
| 8.4.21 | TALKER DETECTION
| 8.4.22 | LISTENER DETECTION
| 8.4.23 | REMOTE CODEC CONFIGURATION REPORT
| 8.4.24 | ROUND TRIP DELAY REPORT
| 8.4.25 | PRE-HANDOVER NOTIFICATION
| 8.4.26 | MULTIRATE CODEC MODIFICATION REQUEST
| 8.4.27 | MULTIRATE CODEC MODIFICATION ACKNOWLEDGE
| 8.4.28 | MULTIRATE CODEC MODIFICATION NEGATIVE ACKNOWLEDGE
| 8.4.29 | MULTIRATE CODEC MODIFICATION PERFORMED
| 8.4.30 | TFO REPORT
| 8.4.31 | TFO MODIFICATION REQUEST
2+<| *COMMON CHANNEL MANAGEMENT MESSAGES*
| 8.5.4 | DELETE INDICATION
| 8.5.7 | SMS BROADCAST REQUEST
| 8.5.9 | CBCH LOAD INDICATION
| 8.5.10 | NOTIFICATION COMMAND
2+<| *TRX MANAGEMENT MESSAGES*
| 8.6.3 | OVERLOAD
2+<| *LOCATION SERVICES MESSAGES*
| 8.7.1 | LOCATION INFORMATION
|===
=== Message Limitation Details
[[CHANNEL_ACTIVATION]]
==== Channel Activation
When used on a timeslot using the non-standard channel combination
'NM_CHANC_OSMO_TCHFull_TCHHalf_PDCH' as configured by OML, the regular
RSL channel activation procedures can not only be used for activation
of circuit-switched channels, but also for activation of a PDCH.
See <<OSMOCOM_DYN_TS>>.
NOTE:: Do not confuse this with the IPA style _PDCH ACT_ type
dynamic PDCH protocol employed by nanoBTS devices (<<ipa_style_pdch_mgmt>>).
[[MEASUREMENT_RESULT]]
==== Measurement Result
Conforms to 3GPP TS 08.58 § 8.4.8 with this limitation:
._Measurement Result_ IE limitations
[options="header",cols="10%,30%,60%"]
|===
| TS 08.58 § | IE Name | Handling
| 9.3.37 | MS Timing Offset | never sent by OsmoBTS
|===
[[MODE_MODIFY]]
==== Mode Modify
Conforms to 3GPP TS 08.58 § 8.4.9 with these limitations:
._Mode Modify_ IE limitations
[options="header",cols="10%,30%,60%"]
|===
| TS 08.58 § | IE Name | Handling
| 9.3.45 | Main channel reference | _ignored_
| 9.3.53 | MultiRate Control | _ignored_
| 9.3.54 | Supported Codec Types | _ignored_
|===
[[MS_POWER_CONTROL]]
==== MS Power Control
Conforms to 3GPP TS 08.58 § 8.4.15 with these limitations:
._MS Power Control_ IE limitations
[options="header",cols="10%,30%,60%"]
|===
| TS 08.58 § | IE Name | Handling
| 9.3.31 | MS Power Parameters | _ignored_
|===
[[SACCH_INFO_MODIFY]]
==== SACCH Info Modify
Conforms to 3GPP TS 08.58 § 8.4.20, with these exceptions:
._SACCH Info Modify_ IE limitations
[options="header",cols="10%,30%,60%"]
|===
| TS 08.58 § | IE Name | Handling
| 9.3.30 | System Info Type | See below for available types
| 9.3.23 | Starting Time | not supported, provokes an _Error Report_ response
|===
._System Info Type_ values that can occur on the SACCH
[options="header",width="50%",cols="20%,80%"]
|===
| Value | Name
| 0x05 | RSL_SYSTEM_INFO_5
| 0x06 | RSL_SYSTEM_INFO_6
| 0x0d | RSL_SYSTEM_INFO_5bis
| 0x0e | RSL_SYSTEM_INFO_5ter
| 0x47 | RSL_EXT_MEAS_ORDER
| 0x48 | RSL_MEAS_INFO
|===
[[BCCH_INFORMATION]]
==== BCCH Information
Conforms to 3GPP TS 08.58 § 8.5.1, with these limitations and extensions:
._BCCH Information_ IE details
[options="header",cols="10%,30%,60%"]
|===
| TS 08.58 § | IE Name | Handling
| 9.3.30 | System Info Type | See <<SACCH_INFO_MODIFY>> for available types
| 9.3.11 | L3 Info | This IE may be included instead of a 9.3.39 _Full BCCH Info_ IE.
The _Full BCCH Info_ takes precedence over _L3 Info_.
To stop SI transmission, both of these IEs must be omitted.
|===
[[CHANNEL_REQUIRED]]
==== Channel Required
Conforms to 3GPP TS 08.58 § 8.5.3, with these limitations:
._Channel Required_ message IE details
[options="header",cols="10%,30%,60%"]
|===
| TS 08.58 § | IE Name | Handling
| 9.3.16 | Physical Context | never sent by OsmoBTS
|===
[[PAGING_COMMAND]]
==== Paging Command
Conforms to 3GPP TS 08.58 § 8.5.5, with these limitations:
._Paging Command_ message IE details
[options="header",cols="10%,30%,60%"]
|===
| TS 08.58 § | IE Name | Handling
| 9.3.49 | eMLPP Priority | _ignored_
|===
NOTE: If adding the identity to the paging queue fails, the BSC is not notified
in any way.
[[SMS_BROADCAST_COMMAND]]
=== SMS Broadcast Command
Conforms to 3GPP TS 08.58 § 8.5.8, with these limitations:
._Broadcast Command_ message IE details
[options="header",cols="10%,30%,60%"]
|===
| TS 08.58 § | IE Name | Handling
| 9.3.44 | SMSCB Channel Indicator | _ignored_
|===
[[RF_RESOURCE_INDICATION]]
==== RF Resource Indication
This message does not conform to 3GPP TS 08.58 § 8.6.1, in that it omits the
_Resource Information_ IE that would contain the actual payload data, which
renders this message void.
._RF Resource Indication_ message IE exceptions
[options="header",cols="10%,30%,60%"]
|===
| TS 08.58 § | IE Name | Handling
| 9.3.21 | Resource Information | OsmoBTS omits this IE, though TS 08.58
specifies it as mandatory.
|===
[[SACCH_FILLING]]
==== SACCH Filling
Conforms to 3GPP TS 08.58 § 8.6.2, with these limitations:
._SACCH Filling_ message IE limitations
[options="header",cols="10%,30%,60%"]
|===
| TS 08.58 § | IE Name | Handling
| 9.3.30 | System Info Type | See <<SACCH_INFO_MODIFY>> for available types
| 9.3.23 | Starting Time | _ignored_
|===
[[user_plane_txp_mgmt]]
=== User Plane Transport Management
This chapter defines the A-bis/IP specific RSL procedures that are
introduced in addition to the 3GPP TS 08.58 standard procedures.
In classic A-bis over E1, user plane traffic is carried over 16kBps
sub-slots of 64kBps E1 time-slots according to ETSI/3GPP TS 08.60. As
the E1 line is a dedicated line between BTS and BSC, no further
addressing information is required.
In A-bis/IP as described by the present document, new RSL procedures
have been introduced to deal with the different properties of
the underlying IP based transport medium.
[[rsl_crcx]]
==== RSL Create Connection (CRCX)
This procedure is used by the BSC to request the BTS to allocate + bind
to a BTS-local UDP port for the subsequent transmission of user-plane
data via RTP.
To do so, the BSC sends the *Create Connection (CRCX)* message. In case of
successful outcome, the BTS responds with *Create Connection (CRCX)
ACK*. In case of any error, the BTS responds with *Create Connection
(CRCX) NACK*.
See <<rsl_crcx_msg>>, <<rsl_crcx_msg_ack>>, <<rsl_crcx_msg_nack>>
[[rsl_mdcx]]
==== RSL Modify Connection (MDCX)
This procedure is used by the BSC to request the BTS to modify an
already-bound BTS-local UDP port for user-plane RTP. It is used in
particular to configure the remote IP address and UDP port to which the
BTS shall send user-plane RTP traffic. This remote address is normally
either a Media Gateway (MGW) of some sort, but could also be the RTP
socket of the corresponding other leg of a mobile-to-mobile call.
To modify a user-plane connection, the BSC sends the *Modify Connection*
message. In case of successful outcome, the BTS responds with
*Modify Connection (MDCX) ACK*. In case of any error, the BTS responds
with *Modify Connection (MDCX) NACK*.
See <<rsl_mdcx_msg>>, <<rsl_mdcx_msg_ack>>, <<rsl_mdcx_msg_nack>>
[[rsl_dlcx]]
==== RSL Delete Connection (DLCX)
This procedure is used by the BSC to request the BTS to delete an
already-existing BTS-local UDP port for user-plane RTP.
To delete a user-plane connection, the BSC sends the *Delete Connection
(DLCX)* message. In case of successful outcome, the BTS responds with
*Delete Connection (DLCX) ACK*. In case of any error, the BTS responds
with *Delete Connection (DLCX) NACK*.
See <<rsl_dlcx_msg>>, <<rsl_dlcx_msg_ack>>, <<rsl_dlcx_msg_nack>>
[[rsl_dlcx_ind]]
==== RSL Delete Connection (DLCX) Indication
When a BTS-local UDP connection for user-plane RTP is automatically
released at the time of RF CHANNEL RELEASE, the BTS sends a unilateral,
non-acknowledged *RSL Delete Connection (DLCX) Indication* to the BSC.
See <<rsl_dlcx_ind_msg>>
[[rsl-dynamic-channels]]
=== Dynamic Channel Combinations
In the classic data model established by ETSI/3GPP for A-bis, each
timeslot (channel) is configured using a static channel combination by
means of A-bis OML. Particularly in presence of GPRS services, this
is very unflexible and leads to inefficient use of air interface
resources.
As such, several methods have been implemented to overcome this
limitation. The fundamental operation can be outlined like this:
* Configuration of a particular _dynamic_ channel combination via OML
* activation of TCH works like on a classic TCH channel combination
* activation of PDCH requires some specific PDCH activation procedure
There are two variants implemented in the OsmoBTS A-bis dialect:
[[ipa_style_pdch_mgmt]]
==== IPA Style Dynamic Channels
This method is used when OML uses 'NM_CHANC_IPAC_TCHFull_PDCH' (0x80)
as channel combination for the given time-slot.
'IPA style' refers to 'ip.access' compatible PDCH activation and deactivation.
When the IPA style dynamic channel combination _TCH/F or PDCH_
is set, the non-standard 'PDCH ACTIVATE' (<<pdch_act>>) and 'PDCH
DEACTIVATE' (<<pdch_deact>>) procedures are used for switching an idle
channel into PDCH mode and back into idle mode.
When the channel is used as TCH/F, regular circuit-switched activation
is performed, like on any traditional TCH/F. However, the BSC must
make sure to first disable the PDCH on the timeslot, before activating
it as TCH/F. Likewise, any circuit-switched TCH/F on the channel must
be deactivated using standard RSL signalling, before the specific PDCH
related procedures are used to enable the PDCH.
[[pdch_act]]
===== PDCH Activate
This procedure is used by the BSC to request the BTS to activate an
IPA style dynamic TCH/F+PDCH channel in PDCH mode.
The operation is not supported on any other physical channel type.
See <<rsl_pdch_act>>, <<rsl_pdch_act_ack>>, <<rsl_pdch_act_nack>>
[[pdch_deact]]
===== PDCH Deactivate
This procedure is used by the BSC to request the BTS to deactivate an
active PDCH on any an IPA style dynamic TCH/F+PDCH channel.
The operation is not supported on any other physical channel type.
See <<rsl_pdch_deact>>, <<rsl_pdch_deact_ack>>, <<rsl_pdch_deact_nack>>
===== IPA Style Dynamic Switchover Example
.Part 1: example for dynamic channel switchover, for IPA style dynamic timeslots
["mscgen"]
----
include::dyn_ts_ipa_style1.msc[]
----
.Part 2: example for dynamic channel switchover, for IPA style dynamic timeslots
["mscgen"]
----
include::dyn_ts_ipa_style2.msc[]
----
[[OSMOCOM_DYN_TS]]
==== Osmocom Style Dynamic Channels
This method is in use when OML uses
'NM_CHANC_OSMO_TCHFull_TCHHalf_PDCH' (0x90) for the given time-slot.
The activation of PDCH is performed by using the regular 'RSL CHANNEL ACTIVATE'
procedure according to <<CHANNEL_ACTIVATION>>, with these modifications:
* The 'C-bits' part of the 'Channel Number' IE take the non-standard binary
value 11000 (C5 thru C1 as seen in 3GPP TS 08.58 § 9.3.1).
* The 'A-bits' part of the 'Activation Type' IE take the non-standard binary
value 1111, with an additional fourth bit (add A4 to A3 thru A1 as seen in
3GPP TS 08.58 § 9.3.3; all remaining reserved bits as well as the 'R' bit are
coded as zero).
* The normally mandatory 'Channel Mode' IE is omitted; none of the optional IEs
are included.
Hence the message consists of exactly these IEs:
.PDCH type _Channel Activation_ message IEs
[options="header",cols="10%,30%,60%"]
|===
| TS 08.58 § | IE Name | Handling
| 9.1 | Message discriminator | Dedicated Channel Management
| 9.2 | Message type | CHANnel ACTIVation
| 9.3.1 | Channel number | 'C-bits' 11000, plus TS bits as usual
| 9.3.3 | Activation type | 'A-bits' 1111
|===
===== Osmocom Style Dynamic Switchover Example
.Part 1: example for dynamic channel switchover, for Osmocom style dynamic timeslots
["mscgen"]
----
include::dyn_ts_osmocom_style1.msc[]
----
.Part 2: example for dynamic channel switchover, for Osmocom style dynamic timeslots
["mscgen"]
----
include::dyn_ts_osmocom_style2.msc[]
----
=== Message Formats and Contents
[[rsl_crcx_msg]]
==== Create Connection (CRCX)
This message is sent by the BSC to the BTS to request the
creation of a user-plane RTP connection for the specified *Channel
number*.
[options="header"]
[cols="30%,25%,15%,15%,15%"]
|===
| INFORMATION ELEMENT | REFERENCE | PRESENCE | FORMAT | LENGTH
| Message discriminator | 08.58 9.1 | M | V | 1
| Message type | <<own_msg_types>> | M | V | 1
| Channel number | 08.58 9.3.1 | M | TV | 2
| Destination IP Address | <<RSL_IE_IPAC_REMOTE_IP>> | O | TV | 5
| Destination IP Port | <<RSL_IE_IPAC_REMOTE_PORT>> | O | TV | 3
| IP Speech Mode | <<RSL_IE_IPAC_SPEECH_MODE>> | O | TV | 2
| RTP Payload Type 2 | <<RSL_IE_IPAC_RTP_PAYLOAD2>> | O | TV | 2
|===
[[rsl_crcx_msg_ack]]
==== Create Connection (CRCX) ACK
This message is sent by the BTS to the BSC to acknowledge the
successful outcome of creating a user-plane RTP connection. It is sent
in response to the *Create Connection (CRCX)*.
[options="header"]
[cols="30%,25%,15%,15%,15%"]
|===
| INFORMATION ELEMENT | REFERENCE | PRESENCE | FORMAT | LENGTH
| Message discriminator | 08.58 9.1 | M | V | 1
| Message type | <<own_msg_types>> | M | V | 1
| Channel number | 08.58 9.3.1 | M | TV | 2
| Connection Id | <<RSL_IE_IPAC_CONN_ID>> | M | TV | 3
| Source IP Address | <<RSL_IE_IPAC_LOCAL_IP>> | O | TV | 5
| Source IP Port | <<RSL_IE_IPAC_LOCAL_PORT>> | O | TV | 3
| RTP Payload Type 2 | <<RSL_IE_IPAC_RTP_PAYLOAD2>> | O | TV | 2
|===
[[rsl_crcx_msg_nack]]
==== Create Connection (CRCX) NACK
This message is sent by the BTS to the BSC to signal the
unsuccessful outcome of creating a user-plane RTP connection. It is
sent in response to the *Create Connection (CRCX)*.
[options="header"]
[cols="30%,25%,15%,15%,15%"]
|===
| INFORMATION ELEMENT | REFERENCE | PRESENCE | FORMAT | LENGTH
| Message discriminator | 08.58 9.1 | M | V | 1
| Message type | <<own_msg_types>> | M | V | 1
| Channel number | 08.58 9.3.1 | M | TV | 2
| Destination IP Address | <<RSL_IE_IPAC_REMOTE_IP>> | O | TV | 5
| Destination IP Port | <<RSL_IE_IPAC_REMOTE_PORT>> | O | TV | 3
| Cause | 08.58 9.3.26 | O | TLV | >= 3
|===
[[rsl_mdcx_msg]]
==== Modify Connection (MDCX)
This message is sent by the BSC to the BTS to modify the
properties of a user-plane RTP connection.
[options="header"]
[cols="30%,25%,15%,15%,15%"]
|===
| INFORMATION ELEMENT | REFERENCE | PRESENCE | FORMAT | LENGTH
| Message discriminator | 08.58 9.1 | M | V | 1
| Message type | <<own_msg_types>> | M | V | 1
| Channel number | 08.58 9.3.1 | M | TV | 2
| Connection Id | <<RSL_IE_IPAC_CONN_ID>> | O | TV | 3
| Destination IP Address | <<RSL_IE_IPAC_REMOTE_IP>> | O | TV | 5
| Destination IP Port | <<RSL_IE_IPAC_REMOTE_PORT>> | O | TV | 3
| IP Speech Mode | <<RSL_IE_IPAC_SPEECH_MODE>> | O | TV | 2
| RTP Payload Type 2 | <<RSL_IE_IPAC_RTP_PAYLOAD2>> | O | TV | 2
|===
[[rsl_mdcx_msg_ack]]
==== Modify Connection (MDCX) ACK
This message is sent by the BTS to the BSC to acknowledge the
successful modification of a user-plane RTP connection. It is sent in
response to a *Modify Connection (MDCX)*
[options="header"]
[cols="30%,25%,15%,15%,15%"]
|===
| INFORMATION ELEMENT | REFERENCE | PRESENCE | FORMAT | LENGTH
| Message discriminator | 08.58 9.1 | M | V | 1
| Message type | <<own_msg_types>> | M | V | 1
| Channel number | 08.58 9.3.1 | M | TV | 2
| Connection Id | <<RSL_IE_IPAC_CONN_ID>> | O | TV | 3
| Source IP Address | <<RSL_IE_IPAC_LOCAL_IP>> | C | TV | 5
| Source IP Port | <<RSL_IE_IPAC_LOCAL_PORT>> | C | TV | 3
| RTP Payload Type 2 | <<RSL_IE_IPAC_RTP_PAYLOAD2>> | O | TV | 2
|===
[[rsl_mdcx_msg_nack]]
==== Modify Connection (MDCX) NACK
This message is sent by the BTS to the BSC to signal the
unsuccessful outcome of modifying the user-plane RTP connection for the
specified Channel number. It is sent in response to the *Modify
Connection (MDCX)*.
[options="header"]
[cols="30%,25%,15%,15%,15%"]
|===
| INFORMATION ELEMENT | REFERENCE | PRESENCE | FORMAT | LENGTH
| Message discriminator | 08.58 9.1 | M | V | 1
| Message type | <<own_msg_types>> | M | V | 1
| Channel number | 08.58 9.3.1 | M | TV | 2
| Cause | 08.58 9.3.26 | M | TLV | >= 3
|===
[[rsl_dlcx_ind_msg]]
==== Delete Connection (DLCX) Indication
This message is sent by the BTS to indicate the automatic
deletion of a BTS-local UDP connection for user-plane RTP traffic at the
time of RF Channel release.
[options="header"]
[cols="30%,25%,15%,15%,15%"]
|===
| INFORMATION ELEMENT | REFERENCE | PRESENCE | FORMAT | LENGTH
| Message discriminator | 08.58 9.1 | M | V | 1
| Message type | <<own_msg_types>> | M | V | 1
| Channel number | 08.58 9.3.1 | M | TV | 2
| Connection Id | <<RSL_IE_IPAC_CONN_ID>> | M | TV | 3
| Connection Id | <<RSL_IE_IPAC_CONN_STAT>> | M | TV | 3
| Cause | 08.58 9.3.26 | M | TLV | >= 3
|===
[[rsl_dlcx_msg]]
==== Delete Connection (DLCX)
This message is sent by the BSC to the BTS to request the
disconnection of a user-plane RTP connection for the specified Channel
number.
[options="header"]
[cols="30%,25%,15%,15%,15%"]
|===
| INFORMATION ELEMENT | REFERENCE | PRESENCE | FORMAT | LENGTH
| Message discriminator | 08.58 9.1 | M | V | 1
| Message type | <<own_msg_types>> | M | V | 1
| Channel number | 08.58 9.3.1 | M | TV | 2
| Connection Id | <<RSL_IE_IPAC_CONN_ID>> | O | TV | 3
|===
[[rsl_dlcx_msg_ack]]
==== Delete Connection (DLCX) ACK
This message is sent by the BTS to signal the successful
outcome of deleting the user-plane RTP connection for the specified
Channel number. It is sent in response to the *Delete Connection
(DLCX)*.
[options="header"]
[cols="30%,25%,15%,15%,15%"]
|===
| INFORMATION ELEMENT | REFERENCE | PRESENCE | FORMAT | LENGTH
| Message discriminator | 08.58 9.1 | M | V | 1
| Message type | <<own_msg_types>> | M | V | 1
| Channel number | 08.58 9.3.1 | M | TV | 2
| Connection Id | <<RSL_IE_IPAC_CONN_ID>> | O | TV | 3
| Connection Statistics | <<RSL_IE_IPAC_CONN_STAT>> | C | TV | 29
|===
[[rsl_dlcx_msg_nack]]
==== Delete Connection (DLCX) NACK
This message is sent by the BTS to signal the unsuccessful
outcome of deleting the user-plane RTP connection for the specified
Channel number. It is sent in response to the *Delete Connection
(DLCX)*.
[options="header"]
[cols="30%,25%,15%,15%,15%"]
|===
| INFORMATION ELEMENT | REFERENCE | PRESENCE | FORMAT | LENGTH
| Message discriminator | 08.58 9.1 | M | V | 1
| Message type | <<own_msg_types>> | M | V | 1
| Channel number | 08.58 9.3.1 | M | TV | 2
| Connection Id | <<RSL_IE_IPAC_CONN_ID>> | O | TV | 3
| Cause | 08.58 9.3.26 | M | TLV | >= 3
|===
[[rsl_pdch_act]]
==== PDCH Activate
This message is sent by the BSC to request the activation of a PDCH on
a IPA style dynamic TCH/F+PDCH channel.
[options="header"]
[cols="30%,25%,15%,15%,15%"]
|===
| INFORMATION ELEMENT | REFERENCE | PRESENCE | FORMAT | LENGTH
| Message discriminator | 08.58 9.1 | M | V | 1
| Message type | <<own_msg_types>> | M | V | 1
| Channel number | 08.58 9.3.1 | M | TV | 2
|===
NOTE:: This message is *not* used by Osmocom style dynamic channels
[[rsl_pdch_act_ack]]
==== PDCH Activate ACK
This message is sent by the BTS to confirm the successful activation
of a PDCH on a IPA style dynamic TCH/F+PDCH channel.
[options="header"]
[cols="30%,25%,15%,15%,15%"]
|===
| INFORMATION ELEMENT | REFERENCE | PRESENCE | FORMAT | LENGTH
| Message discriminator | 08.58 9.1 | M | V | 1
| Message type | <<own_msg_types>> | M | V | 1
| Channel number | 08.58 9.3.1 | M | TV | 2
| Frame Number | 08.58 9.3.8 | O | TV | 3
|===
NOTE:: This message is *not* used by Osmocom style dynamic channels
[[rsl_pdch_act_nack]]
==== PDCH Activate NACK
This message is sent by the BTS to reject the successful activation
of a PDCH on a IPA style dynamic TCH/F+PDCH channel.
[options="header"]
[cols="30%,25%,15%,15%,15%"]
|===
| INFORMATION ELEMENT | REFERENCE | PRESENCE | FORMAT | LENGTH
| Message discriminator | 08.58 9.1 | M | V | 1
| Message type | <<own_msg_types>> | M | V | 1
| Channel number | 08.58 9.3.1 | M | TV | 2
| Cause | 08.58 9.3.26 | M | TLV | >= 3
|===
NOTE:: This message is *not* used by Osmocom style dynamic channels
[[rsl_pdch_deact]]
==== PDCH Deactivate
This message is sent by the BSC to request the deactivation of a PDCH
on a IPA style dynamic TCH/F+PDCH channel.
[options="header"]
[cols="30%,25%,15%,15%,15%"]
|===
| INFORMATION ELEMENT | REFERENCE | PRESENCE | FORMAT | LENGTH
| Message discriminator | 08.58 9.1 | M | V | 1
| Message type | <<own_msg_types>> | M | V | 1
| Channel number | 08.58 9.3.1 | M | TV | 2
|===
NOTE:: This message is *not* used by Osmocom style dynamic channels
[[rsl_pdch_deact_ack]]
==== PDCH Deactivate ACK
This message is sent by the BTS to confirm the successful deactivation
of a PDCH on a IPA style dynamic TCH/F+PDCH channel.
[options="header"]
[cols="30%,25%,15%,15%,15%"]
|===
| INFORMATION ELEMENT | REFERENCE | PRESENCE | FORMAT | LENGTH
| Message discriminator | 08.58 9.1 | M | V | 1
| Message type | <<own_msg_types>> | M | V | 1
| Channel number | 08.58 9.3.1 | M | TV | 2
|===
NOTE:: This message is *not* used by Osmocom style dynamic channels
[[rsl_pdch_deact_nack]]
==== PDCH Deactivate NACK
This message is sent by the BTS to reject the deactivation of a PDCH
on a IPA style dynamic TCH/F+PDCH channel.
[options="header"]
[cols="30%,25%,15%,15%,15%"]
|===
| INFORMATION ELEMENT | REFERENCE | PRESENCE | FORMAT | LENGTH
| Message discriminator | 08.58 9.1 | M | V | 1
| Message type | <<own_msg_types>> | M | V | 1
| Channel number | 08.58 9.3.1 | M | TV | 2
| Cause | 08.58 9.3.26 | M | TLV | >= 3
|===
NOTE:: This message is *not* used by Osmocom style dynamic channels
=== Information Element Codings
[[own_msg_types]]
==== A-bis/IP specific RSL Message discriminators
The following message discriminators are used in addition to those
indicated in 3GPP TS 08.58 Section 9.1:
.OsmoBTS specific new message discriminators
[options="header",cols="10%,50%,40%"]
|===
| Message Type | Message | This document §
| 0x70 | Create Connection (CRCX) | <<rsl_crcx_msg>>
| 0x71 | Create Connection (CRCX) ACK | <<rsl_crcx_msg_ack>>
| 0x72 | Create Connection (CRCX) NACK | <<rsl_crcx_msg_nack>>
| 0x73 | Modify Connection (MDCX) | <<rsl_mdcx_msg>>
| 0x74 | Modify Connection (MDCX) ACK | <<rsl_mdcx_msg_ack>>
| 0x75 | Modify Connection (MDCX) NACK | <<rsl_mdcx_msg_nack>>
| 0x76 | Delete Connection (DLCX) Indication | <<rsl_dlcx_ind_msg>>
| 0x77 | Delete Connection (DLCX) | <<rsl_dlcx_msg>>
| 0x78 | Delete Connection (DLCX) ACK | <<rsl_dlcx_msg_ack>>
| 0x79 | Delete Connection (DLCX) NACK | <<rsl_dlcx_msg_nack>>
| 0x48 | PDCH Activate | <<rsl_pdch_act>>
| 0x49 | PDCH Activate ACK | <<rsl_pdch_act_ack>>
| 0x4a | PDCH Activate NACK | <<rsl_pdch_act_nack>>
| 0x4b | PDCH Deactivate | <<rsl_pdch_deact>>
| 0x4c | PDCH Deactivate ACK | <<rsl_pdch_deact_ack>>
| 0x4d | PDCH Deactivate NACK | <<rsl_pdch_deact_nack>>
|===
==== A-bis/IP specific RSL IEIs
The following Information Element Identifiers (IEIs) are used in
addition to those indicated in 3GPP TS 08.58 Section 9.3:
.A-bis/IP specific information elements
[options="header",cols="10%,50%,40%"]
|===
| IEI | Name | This document §
| 0x01 | RSL_IE_CHAN_NR | <<RSL_IE_CHAN_NR>>
| 0xf0 | RSL_IE_IPAC_REMOTE_IP | <<RSL_IE_IPAC_REMOTE_IP>>
| 0xf1 | RSL_IE_IPAC_REMOTE_PORT | <<RSL_IE_IPAC_REMOTE_PORT>>
| 0xf3 | RSL_IE_IPAC_LOCAL_PORT | <<RSL_IE_IPAC_LOCAL_PORT>>
| 0xf4 | RSL_IE_IPAC_SPEECH_MODE | <<RSL_IE_IPAC_SPEECH_MODE>>
| 0xf5 | RSL_IE_IPAC_LOCAL_IP | <<RSL_IE_IPAC_LOCAL_IP>>
| 0xf6 | RSL_IE_IPAC_CONN_STAT | <<RSL_IE_IPAC_CONN_STAT>>
| 0xf8 | RSL_IE_IPAC_CONN_ID | <<RSL_IE_IPAC_CONN_ID>>
| 0xfc | RSL_IE_IPAC_RTP_PAYLOAD2 | <<RSL_IE_IPAC_RTP_PAYLOAD2>>
|===
[[RSL_IE_CHAN_NR]]
==== RSL_IE_CHAN_NR
This information element is coded like 3GPP TS 08.58 Section 9.3.1,
but in addition supports the following extended coding:
* C5..C1 bits 0b11000 for PDCH type channels
The TN-Bits are not re-defined in this case but use the same encoding
as specified in TS 08.58 Section 9.3.1.
NOTE:: The above extension is only valid on an Osmocom-style dynamic
channel, having configured the 'NM_CHANC_IPAC_TCHFull_PDCH' channel
combination by OML.
[[RSL_IE_IPAC_REMOTE_IP]]
==== RSL_IE_IPAC_REMOTE_IP
This information element contains the remote (MGW side) IPv4 address in
network byte order. It is encoded as fixed-size element with one byte
IEI followed by four bytes IPv4 address.
[[RSL_IE_IPAC_REMOTE_PORT]]
==== RSL_IE_IPAC_REMOTE_PORT
This information element contains the remote (MGW side) UDP port in
network byte order. It is encoded as fixed-size element with one byte
IEI followed by two bytes UDP port number.
[[RSL_IE_IPAC_LOCAL_PORT]]
==== RSL_IE_IPAC_LOCAL_PORT
This information element contains the local (BTS side) IPv4 address in
network byte order. It is encoded as fixed-size element with one byte
IEI followed by two bytes UDP port number.
[[RSL_IE_IPAC_SPEECH_MODE]]
==== RSL_IE_IPAC_SPEECH_MODE
This information element encodes the speech mode. It is set according
to the voice codec used on the connection. It is encoded as a fixed-size
element of two bytes, with one byte IEI followed by one byte Speech mode
indicator.
.A-bis/IP Speech Mode Indicator Values
[options="header",width="40%",cols="20%,80%"]
|===
| Value | Description
| 0x00 | TCH/F with FR codec
| 0x01 | TCH/F with EFR codec
| 0x02 | TCH/F with AMR codec
| 0x03 | TCH/H with HR codec
| 0x05 | TCH/H with AMR codec
|===
[[RSL_IE_IPAC_LOCAL_IP]]
==== RSL_IE_IPAC_LOCAL_IP
This information element contains the local (BTS side) IPv4 address in
network byte order. It is encoded as fixed-size element with one byte
IEI followed by four bytes IPv4 address.
[[RSL_IE_IPAC_CONN_STAT]]
==== RSL_IE_IPAC_CONN_STAT
This information element contains statistics about the RTP connection.
It is encoded as 29 bytes, with the first byte as IEI and 28 bytes
fixed-length payload encoded as follows:
.A-bis/IP Connection Statistics
[options="header",width="60%",cols="15%,15%,70%"]
|===
| Offset | Size | Description
| 0 | 4 | Total number of RTP packets sent
| 4 | 4 | Total number of octets sent
| 8 | 4 | Total number of RTP packets received
| 12 | 4 | Total number of octets received
| 16 | 4 | Total number of lost packets in Rx direction
| 20 | 4 | Inter-arrival Jitter
| 24 | 4 | Average transmission delay
|===
All the above values are encoded in network byte order.
A detailed definition of the individual values is given in RFC 1889.
[[RSL_IE_IPAC_CONN_ID]]
==== RSL_IE_IPAC_CONN_ID
This IE is a TV with a value length of two bytes. The value is a 16 bit
connection ID in network byte order.
[[RSL_IE_IPAC_RTP_PAYLOAD2]]
==== RSL_IE_IPAC_RTP_PAYLOAD2
This information element contains the RTP payload identifier, which is
used in the PT (Payload Type) field of the RTP header in subsequent
transmissions of the RTP flow.
=== A-bis RSL Initialization / BTS bring-up
Upon receiving the 'IPA RSL CONNECT' OML message by the respective
'Baseband Transceiver' MO, the BTS proceeds with establishing a separate
TCP connection for the given TRX.
[[rsl-msc-pri]]
.A-bis RSL BTS bring-up for primary TRX
["mscgen"]
----
include::rsl-startup-pri.msc[]
----
[[rsl-msc-sec]]
.A-bis RSL BTS bring-up for secondary TRXs
["mscgen"]
----
include::rsl-startup-sec.msc[]
----
The initialization of the primary and secondary TRX slightly differ, as
illustrated by the differences of <<rsl-msc-pri>> and <<rsl-msc-sec>>.
Since the secondary TRX has no BCCH, it does not (need to) receive any 'RSL
BCCH INFORMATION' messages from the BSC.

View File

@@ -1,33 +0,0 @@
== User-Plane Traffic via RTP
RTP (Realtime Transfer Protocol) is a protocol for streaming audio
and video data. It is specified by IETF RFC 1889.
OsmoBTS A-bis/IP implements RTP as transport medium for circuit-switched
user-plane traffic, contrary to the E1 sub-slot based transport
specified in 3GPP TS 08.60.
The RTP transport endpoint parameters are configured using the RSL User
Plane Transport Management procedures described in <<user_plane_txp_mgmt>>.
RTCP is implemented in addition to RTP, on a UDP port number of the RTP
port incremented by one.
=== RTP Payload Formats
The RTP payload format depends on the voice codec used on the radio
channel. The OsmoBTS is simply passing the GSM speech frames between
the Um radio interface channels and the RTP payload (and vice-versa).
No transcoding function is implemented in the BTS!
.RTP Payload formats
[options="header",width="60%",cols="15%,15%,70%"]
|===
| TCH | Codec | RTP payload format specification
| TCH/F | FR | IETF RFC 3551 Section 4.5.8
| TCH/F | EFR | IETF RFC 3551 Section 4.5.9
| TCH/F | AMR | IETF RFC 4867
| TCH/H | HR | IETF RFC 5993
| TCH/H | AMR | IETF RFC 4867
|===

View File

@@ -1,120 +0,0 @@
== OsmoBTS software architecture
=== OsmoBTS PHY interface abstraction
The OsmoBTS PHY interface serves as an internal abstraction layer
between given PHY hardware (as provided by the bts_model) and the actual
logical transceivers (TRXs) of a BTS inside the OsmoBTS code base.
==== PHY link
A PHY link is a physical connection / link towards a given PHY. This
might be, for example,
* a set of file descriptors to device nodes in the /dev/ directory
(sysmobts, litecell15)
* a packet socket for sending raw Ethernet frames to an OCTPHY
* a set of UDP sockets for interacting with OsmoTRX
Each PHY interface has a set of attribute/parameters and a list of 1 to
n PHY instances.
PHY links are numbered 0..n globally inside OsmoBTS.
Each PHY link is configured via the VTY using its individual top-level
vty node. Given the different bts-model / phy specific properties, the
VTY configuration options (if any) of the PHY instance differ between
BTS models.
The PHY links and instances must be configured above the BTS/TRX nodes
in the configuration file. If the file is saved via the VTY, the code
automatically ensures this.
==== PHY instance
A PHY instance is an instance of a PHY, accessed via a PHY link.
In the case of osmo-bts-sysmo and osmo-bts-trx, there is only one
instance in every PHY link. This is due to the fact that the API inside
that PHY link does not permit for distinguishing multiple different
logical TRXs.
Other PHY implementations like the OCTPHY however do support addressing
multiple PHY instances via a single PHY link.
PHY instances are numbered 0..n inside each PHY link.
Each PHY instance is configured via the VTY as a separate node beneath each
PHY link. Given the different bts-model / phy specific properties, the
VTY configuration options (if any) of the PHY instance differ between
BTS models.
==== Mapping PHY instances to TRXs
Each TRX node in the VTY must use the 'phy N instance M' command in
order to specify which PHY instance is allocated to this specific TRX.
=== Internal control flow
==== start-up / sequencing during OsmoBTS start
.Control flow at OsmoBTS start-up procedure
[options="header",cols="10%,35%,55%"]
|===
| section | function | description
| bts-specific | main() | Entering main() from glibc
| common | bts_main() | initialization of talloc contexts
| common | bts_log_init() | initialization of logging
| common | handle_options() | common option parsing
| bts-specific | bts_model_handle_options() | model-specific option parsing
| common | gsm_bts_alloc() | allocation of BTS/TRX/TS data structures
| common | vty_init() | Initialziation of VTY core, libosmo-abis and osmo-bts VTY
| common | main() | Setting of scheduler RR priority (if configured)
| common | main() | Initialization of GSMTAP (if configured)
| common | bts_init() | configuration of defaults in bts/trx/s object
| bts-specific | bts_model_init | ?
| common | abis_init() | Initialization of libosmo-abis
| common | vty_read_config_file() | Reading of configuration file
| bts-specific | bts_model_phy_link_set_defaults() | Called for every PHY link created
| bts-specific | bts_model_phy_instance_set_defaults() | Called for every PHY Instance created
| common | bts_controlif_setup() | Initialization of Control Interface
| bts-specific | bts_model_ctrl_cmds_install() | Install model-specific control interface commands
| common | telnet_init() | Initialization of telnet interface
| common | pcu_sock_init() | Initialization of PCU socket
| common | main() | Installation of signal handlers
| common | abis_open() | Start of the A-bis connection to BSC
| common | phy_links_open() | Iterate over list of configured PHY links
| bts-specific | bts_model_phy_link_open() | Open each of the configured PHY links
| common | write_pid_file() | Generate the pid file
| common | osmo_daemonize() | Fork as daemon in background (if configured)
| common | bts_main() | Run main loop until global variable quit >= 2
|===
==== At time of OML establishment
.Control flow at time of OML establishment
[options="header",cols="10%,35%,55%"]
|===
| section | function | description
| bts-specific | bts_model_oml_estab() | Called by core once OML link is established
| bts-specific | bts_model_check_oml() | called each time OML sets some attributes on a MO, checks if attributes are valid
| bts-specific | bts_model_apply_oml() | called each time OML sets some attributes on a MO, stores attribute contents in data structures
| bts-specific | bts_model_opstart() | for NM_OC_BTS, NM_OC_SITE_MANAGER, NM_OC_GPRS_NSE, NM_OC_GPRS_CELL, NMO_OC_GPRS_NSVC
| bts-specific | bts_model_opstart() | for NM_OC_RADIO_CARRIER for each trx
| bts-specific | bts_model_opstart() | for NM_OC_BASEB_TRANSC for each trx
| bts-specific | bts_model_opstart() | for NM_OC_CHANNEL for each timeslot on each trx
| bts-specific | bts_model_change_power() | change transmit power for each trx (power ramp-up/ramp-down)
|===
==== At time of RSL connection loss
.Control flow at time of RSL connection loss
[options="header",cols="10%,35%,55%"]
|===
| section | function | description
| bts-specific | bts_model_abis_close() | called when either one of the RSL links or the OML link are down
|===

View File

@@ -1,441 +0,0 @@
[[osmobts_hardware_support]]
== OsmoBTS hardware support
OsmoBTS consists of a _common_ part that applies to all BTS models as well as
_hardware-specific_ parts for each BTS model. The hardware specific parts are
generally referred to as the _bts_model_ code.
The common part includes the core BTS architecture as well as code for
implementing the external interfaces such as Abis, control, PCU socket and
GSMTAP.
The bts_model parts include support for driving one particular
implementation of a GSM physical layer (PHY). Such a physical layer
implementation can come in many forms. Sometimes it runs on a general
purpose CPU, sometimes on a dedicated ARM core, a dedicated DSP, a
combination of DSP and FPGA.
Every PHY implementation offers some kind of primitives by which the PHY
can be controlled, and by which the PHY exchanges data with the higher
layers of the protocol stack in the OsmoBTS code.
The PHY-specific primitives are encapsulated in the bts_model code, and
offered as a PHY-independent _L1SAP_ interface towards the common part of
OsmoBTS.
In addition, each bts_model implements a set of functions that the
common part calls. Those functions are pre-fixed by _bts_model__.
Each bts_model may offer
* model-specific VTY commands for both configuration and run-time interaction
* model-specific command line arguments
* model-specific control interface commands
== `osmo-bts-sysmo` for sysmocom sysmoBTS
The sysmocom sysmoBTS is a range of GSM BTSs based around an embedded
system implementing the PHY in a combination of DSP+FPGA. The PHY is
configured by a set of primitives described by header files. Those
primitives are exchanged over a set of message queues exposed on the
Linux-running ARM core via device nodes in `/dev/msgq/`. Internally,
the message queues map to shared memory between the Linux-running ARM
core and the DSP running the PHY implementation.
The OsmoBTS bts_model code for the sysmoBTS can be found in the
`src/osmo-bts-sysmo` sub-directory of the OsmoBTS code base.
`osmo-bts-sysmo` has been the primary target platform for
OsmoBTS for many years and is thus the most feature-complete and mature
platform supported by OsmoBTS at this point.
The sysmoBTS PHY supports a direct PHY interface to OsmoPCU, reducing
the latency and amount of primitives that OsmoBTS would otherwise need
to pass through from the PHY message queues to the PCU socket and
vice-versa.
=== `osmo-bts-sysmo` specific command line arguments
*--dsp-trace 'DSPMASK'*::
Set the DSP trace flags (a single hexadecimal 32bit value).
This has been deprecated by VTY based commands, see
<<osmo-bts-sysmo-dsp-trace>> for further information.
*--pcu-direct*::
Indicate that an external PCU (e.g. OsmoPCU) will directly
open the DSP message queues to the PHY / PH-SAP, and only MPH
primitives are passed via OsmoBTS.
=== `osmo-bts-sysmo` specific VTY commands
For a auto-generated complete syntax reference of the VTY commands,
please see the associated _OsmoBTS VTY reference manual_
<<vty-ref-osmobts>>. The section
below only lists the most important commands.
==== at the 'SHOW' node
===== `show trx 0 clock-source`
Display the currently active clock source configuration for the TRX
[[osmo-bts-sysmo-dsp-trace]]
===== `show trx 0 dsp-trace-flags`
Show the currently active DSP trace flags for the TRX
===== `trx 0 dsp-trace-flag`
Use this command to enable/disable/configure the DSP tracing flags that
define what debug messages will appear on `/dev/rtfifo/dsp_trace`.
==== at the 'ENABLE' node
===== `trx 0 tx-power <-110-100>`
Change the current TRX transmit power to the given value in dBm.
===== `trx 0 rf-clock-info reset`
Part of the clock calibration procedure:
Reset the clock correction value.
===== `trx 0 rf-clock-info correct`
Part of the clock calibration procedure:
Apply the current measured correction value between the reference clock
and the local clock.
==== at the 'PHY instance' node
==== `clock-calibration eeprom`
Obtain clock calibration value from EEPROM.
==== `clock-calibration default`
Use hardware default clock calibration value.
==== `clock-calibration <-4095-4095>`
Use specified clock calibration value (not EEPROM/default).
==== `clock-source (tcxo|ocxo|ext|gps)`
Specify the clock source for the PHY:
tcxo::
Use the TCXO. This is the default on sysmoBTS 2050.
ocxo::
Use the OCXO (only valid on units equipped with OCXO). This is
the default on all sysmoBTS 1002/1020/1100 and SOB-BTS.
ext::
Use the external clock input.
gps::
Use the clock derived from GPS. You shouldn't use this clock
directly, but rather use the TCXO and regularly re-calibrate
against GPS.
==== `trx-calibration-path PATH`
Use calibration files from the given 'PATH', rather tan calibration
values from the EEPROM.
=== `osmo-bts-sysmo` specific control interface commands
==== trx.0.clock-info
Obtain information on the current clock status:
----
bsc_control.py -d localhost -p 4238 -g trx.0.clock-info
Got message: GET_REPLY 1 trx.0.clock-info -100,ocxo,0,0,gps
----
which is to be interpreted as:
* current clock correction value is -100 ppb
* current clock source is OCXO
* deviation between clock source and calibration source is 0 ppb
* resolution of clock error measurement is 0 ppt (0 means no result yet)
* current calibration source is GPS
When this attribute is set, any value passed on is discarded, but the clock
calibration process is re-started.
==== trx.0.clock-correction
This attribute can get and set the current clock correction value:
----
bsc_control.py -d localhost -p 4238 -g trx.0.clock-correction
Got message: GET_REPLY 1 trx.0.clock-correction -100
----
----
bsc_control.py -d localhost -p 4238 -s trx.0.clock-correction -- -99
Got message: SET_REPLY 1 trx.0.clock-correction success
----
== `osmo-bts-trx` for OsmoTRX
OsmoTRX is a C-language implementation of the GSM radio modem,
originally developed as the 'Transceiver' part of OpenBTS. This radio
modem offers an interface based on top of UDP streams.
The OsmoBTS bts_model code for OsmoTRX is called
`osmo-bts-trx`. It implements the UDP stream interface of
OsmoTRX, so both parts can be used together to implement a complete GSM
BTS based on general-purpose computing SDR.
As OsmoTRX is general-purpose software running on top of Linux, it is thus not
tied to any specific physical hardware. At the time of this writing, OsmoTRX
supports a variety of Lime Microsystems and Ettus USRP SDRs via the UHD driver,
as well as the Fairwaves UmTRX and derived products.
OsmoTRX is not a complete GSM PHY but 'just' the radio modem. This
means that all of the Layer 1 functionality such as scheduling,
convolutional coding, etc. is actually also implemented inside OsmoBTS.
As such, the boundary between OsmoTRX and `osmo-bts-trx` is at
a much lower interface, which is an internal interface of other more
traditional GSM PHY implementations.
Besides OsmoTRX, there are also other implementations (both Free
Software and proprietary) that implement the same UDP stream based radio
modem interface.
=== `osmo-bts-trx` specific VTY commands
For a auto-generated complete syntax reference of the VTY commands,
pleas see the associated _OsmoBTS VTY reference manual_
<<vty-ref-osmobts>>. The section below only lists the most important
commands.
==== at the 'SHOW' node
===== `show transceivers`
Display information about configured/connected OsmoTRX transceivers in
human-readable format to current VTY session.
==== at the 'PHY' configuration node
===== `osmotrx ip HOST`
Set the IP address for the OsmoTRX interface for both the local (OsmoBTS) and
remote (OsmoTRX) side of the UDP flows. This option has been deprecated by the
more detailed option `osmotrx ip (local|remote) A.B.C.D`.
===== `osmotrx ip (local|remote) A.B.C.D`
Set the IP address for the OsmoTRX interface for either the local (OsmoBTS) or
remote (OsmoTRX) side of the UDP flows.
===== `osmotrx base-port (local|remote) <0-65535>`
Configure the base UDP port for the OsmoTRX interface for either the
local (OsmoBTS) or remote (OsmoTRX) side of the UDP flows.
===== `osmotrx fn-advance <0-30>`
Set the number of frames to be transmitted to transceiver in advance of
current GSM frame number.
===== `osmotrx rts-advance <0-30>`
Set the number of frames to be requested from PCU in advance of current
frame number. Do not change this unless you have a good reason!
===== `osmotrx rx-gain <0-50>`
Set the receiver gain (configured in the hardware) in dB.
===== `osmotrx tx-attenuation <0-50>`
Set the transmitter attenuation (configured in the hardware) in dB.
===== `osmotrx tx-attenuation oml`
Use the Value in the A-bis OML Attribute `MAX_POWER_REDUCTION` as
transmitter attenuation.
==== at the 'PHY Instance' configuration node
===== `slotmask (1|0) (1|0) (1|0) (1|0) (1|0) (1|0) (1|0) (1|0)`
Configure which timeslots should be active on this TRX. Normally all
timeslots are enabled, unless you are running on a cpu-constrained
deeply embedded system.
===== `osmotrx maxdly <0-31>`
Set the maximum delay for received symbols (in number of GSM symbols).
== `osmo-bts-octphy` for Octasic OCTPHY-2G
The Octasic OCTPHY-2G is a GSM PHY implementation inside an Octasic
proprietary 24-core DSP called OCTDSP.
This DSP has a built-in Gigabit Ethernet interface, over which it
exchanges PHY-layer primitives in raw Ethernet frames with the upper
layers running on another CPU attached to the same Ethernet. Those
primitives are described in a set of C-language header files.
OsmoBTS implements the raw Ethernet frame based primitives as well as
the associated transport protocol (OKTPKT/OCTVC1) in the
`osmo-btso-octphy` bts_model code.
You can run the `osmo-bts-octphy` on any system connected to the same
Ethernet as the OCTDSP running the OCTPHY. This can be either an
embedded ARM or x86 SoM part of the OCTBTS hardware, or it can be any
other Linux system attached via an Ethernet switch.
Each OCTDSP running OCTSDR-2G offers a set of primitives part of a
OCTPKT session, which is mapped to an OsmoBTS PHY link. Depending on
the OCTSDR-2G software version, you may create multiple software TRX by
creating multiple OsmoBTS PHY instances inside that PHY link.
Multiple DSPs may exist in one circuit board, then each of the DSPs is
interfaced by one OsmoBTS PHY link, and each of them may have one or
more OsmoBTS PHY instances creating a Multi-TRX configuration.
== `osmo-bts-litecell15` for Nutaq/Nuran LiteCell 1.5
The Nutaq/Nuran LiteCell 1.5 implements a dual-transceiver GSM BTS based
on a mixed ARM/DSP/FPGA architecture. The PHY layer is implemented on
DSP/FPGA and similar to that of the sysmoBTS: It exchanges primitives
described in a set of C-language header files over message queues
between the ARM and the DSP.
This interface is implemented in the `osmo-bts-litecell15` bts_model of
OsmoBTS. You would run `osmo-bts-litecell15` on the ARM/Linux processor
of the Litecell 1.5.
The two transceivers of the Litecell 1.5 each have their own set of DSP
message queues. Each set of message queues is wrapped into one OsmoBTS
PHY link, offering one OsmoBTS PHY instance.
The Litecell 1.5 PHY supports a direct PHY interface to OsmoPCU,
reducing the latency and amount of primitives that OsmoBTS would
otherwise need to pass through from the PHY message queues to the PCU
socket and vice-versa.
=== `osmo-bts-trx` specific VTY commands
For a auto-generated complete syntax reference of the VTY commands,
please see the associated _OsmoBTS VTY reference manual_
<<vty-ref-osmobts>>. The section below only lists the most important
commands.
==== at the 'SHOW' node
===== `show phy <0-255> system-information`
Show information about the hardware platform, DSP and OCTPHY-2G software
version.
===== `show phy <0-255> rf-port-stats <0-1>`
Show information about the RF port interfaces.
===== `show phy <0-255> clk-sync-stats`
Show information about the clock synchronization manager.
==== at the 'PHY' configuration node
===== `octphy hw-addr HWADDR`
Specify the Ethernet hardware address (mac address) of the DSP running
the OCTPHY-2G software for this PHY link.
===== `octphy net-device NAME`
Specify the Ethernet network device (like `eth0`) through which the DSP
can be reached from OsmoBTS.
===== `octphy rf-port-index <0-255>`
Specify which RF port should be used for this PHY link.
===== `octphy rx-gain <0-73>`
Configure the receiver gain in dB.
===== `octphy tx-attenuation <0-359>`
Configure the transmitter attenuation in quarter-dB
== `osmo-bts-virtual` for Virtual Um Interface
This is a special BTS model used for research, simulation and testing.
Rather than communicating over a wireless RF interface, the GSM Um
messages are encapsulated over GSMTAP/UDP/IP.
The Virtual Um interface (i.e. virtual radio layer) between OsmoBTS and
OsmocomBB 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 `osmo-bts-virtual` BTS model.
Setting up OsmoBTS in its `osmo-bts-virtual` flavor isn't really much
different from setting it up with real hardware. The amount of required
configuration at the BTS configuration file is (as always) very minimal,
as in the GSM network architecture provides almost all relevant
configuration to the BTS from the BSC.
An example configuratin file is provided as part of the osmo-bts source
code: `doc/examples/virtual/osmobts-virtual.cfg`
For more information see
http://osmocom.org/projects/cellular-infrastructure/wiki/Virtual_Um
=== `osmo-bts-virtual` specific VTY commands
For a auto-generated complete syntax reference of the VTY commands,
please see the associated _OsmoBTS VTY reference manual_
<<vty-ref-osmobts>>. The section below only lists the most important
commands.
==== at the 'PHY' config node
===== `virtual-um net-device NETDEV`
Configure the network device used for sending/receiving the virtual Um
interface messages (e.g. `eth0`).
===== `virtual-um ms-udp-port <0-65535>`
Configure the UDP port used for sending virtual Um
downlink messages towards the MS (default: GSMTAP 4729).
===== `virtual-um ms-multicast-group GROUP`
Configure the IP multicast group used for sending virtual
Um downlink messages towards the MS (default: 239.193.23.1)
===== `virtual-um bts-udp-port <0-65535>`
Configure the UDP port used for receiving virtual Um
uplink messages from the MS (default: GSMTAP 4729).
===== `virtual-um bts-multicast-group GROUP`
Configure the IP multicast group used for receiving virtual
Um uplink messages from the MS (default: 239.193.23.2)

View File

@@ -1,210 +0,0 @@
== BTS Configuration
The role of the BTS is to handle the GSM radio interface. When the BTS
application is starting, the A-bis OML connection is established towards
the BSC. Almost all BTS configuration (such as ARFCN, channel
configuration, transmit power, etc.) will be sent from the BSC to the
BTS via OML messages. After OML start-up has completed, the BSC will
instruct the BTS to establish the RSL connections.
Given that most configuration is downloaded from the BSC into the BTS at
start-up time, only some very basic settings have to be made in the
OsmoBTS software.
=== Command Line Options
Ths OsmoBTS executables (`osmo-bts-sysmo`, `osmo-bts-trx`,
`osmo-bts-octphy`, `osmo-bts-litecell15`, ...) share the following
generic command line options:
==== SYNOPSIS
*osmo-bts-sysmo* [-h|-V] [-d 'DBGMASK'] [-D] [-c 'CONFIGFILE' ] [-s] [-T] [-e 'LOGLEVEL'] [-r 'PRIO'] [-i 'GSMTAP-IP'] [-t <1-255>]
==== OPTIONS
*-h, --help*::
Print a short help message about the supported options
*-V, --version*::
Print the compile-time version number of the OsmoBTS program
*-d, --debug 'DBGMASK','DBGLEVELS'*::
Set the log subsystems and levels for logging to stderr. This
has mostly been superseded by VTY-based logging configuration,
see <<logging>> for further information.
*-D, --daemonize*::
Fork the process as a daemon into background.
*-c, --config-file 'CONFIGFILE'*::
Specify the file and path name of the configuration file to be
used. If none is specified, use `osmo-bts.cfg` in the current
working directory.
*-s, --disable-color*::
Disable colors for logging to stderr. This has mostly been
deprecated by VTY based logging configuration, see <<logging>>
for further information.
*-T, --timestamp*::
Enable time-stamping of log messages to stderr. This has mostly
been deprecated by VTY based logging configuration, see
<<logging>> for further information.
*-e, --log-level 'LOGLEVEL'*::
Set the global log level for logging to stderr. This has mostly
been deprecated by VTY based logging configuration, see
<<logging>> for further information.
*-r, --realtime 'PRIO'*::
Enable use of the Linux kernel realtime priority scheduler with
the specified priority.
It is recommended you use this option on low-performance
embedded systems or systems that encounter high non-GSM/GPRS
load.
*-i, --gsmtap-ip 'GSMTAP-IP'*::
Specify the destination IP address for GSMTAP messages.
*-t, --trx-num <1-255>*::
Specify the number of TRX supported by this BTS.
There may be additional, hardware specific command line options by the
different bts_model implementations.
=== Configuration using the VTY
Most configuration as well as run-time monitoring and system
introspection is implemented using a command-line based interface
called _VTY_. A full reference syntax of all existing VTY command is
available as a separate document.
See <<vty>> for further information on the VTY.
==== Required BTS/TRX configuration
There are some settings that have to be configured locally in the
sysmoBTS, as they cannot be set remotely from the BSC. Those
settings are stored in the OsmoBTS configuration file, which commonly
is stored in `/etc/osmocom/osmo-bts.cfg`.
.Example Minimal configuration file
----
!
! OsmoBTS (0.0.1.100-0455) configuration saved from vty
!!
!
phy 0 <1>
instance 0 <2>
bts 0 <3>
band DCS1800
ipa unit-id 1801 0 <4>
oml remote-ip 192.168.100.11 <5>
trx 0 <6>
phy 0 instance 0 <7>
----
<1> You must configure at least one PHY link by means of the PHY node
<2> You must configure at least one PHY instance in the PHY link
<3> There is always exactly one BTS (`bts 0`) configured in OsmoBTS
<4> The `ipa unit-id` is what is used to identify this BTS to the BSC
<5> The OML Remote IP is the IP address of the BSC, to which the BTS shall connect to.
<6> There must be at least one trx (`trx 0`) in each BTS
<7> Every TRX must be mapped to a specific PHY instance this way
For a full reference of all available VTY configuration parameters,
please refer to the OsmoBTS VTY Reference document.
[[gsmtap]]
==== Configuring GSMTAP tracing
In addition to being able to obtain pcap protocol traces of the A-bis
communication and the text-based logging from the OsmoBTS
software, there is also the capability of tracing all communication on
the radio interface. To do so, OsmoBTS can encapsulate
MAC blocks (23byte messages at the L2-L1 interface) into _GSMTAP_ and send
them via UDP/IP. At that point, they can be captured with utilities like
*tcpdump* or *tshark* for further analysis by the *wireshark* protocol
analyzer.
In order to activate this feature, you first need to make sure to start
OsmoBTS using the `-i` or `--gsmtap-ip` command line option, specifying
the destination IP address for the GSMTAP messages. In most cases,
using 127.0.0.1 for passing the messages over the loopback (`lo`) device
will be sufficient.
OsmoBTS can selectively trace such messages by their L1 SAPI, for both
Rx and Tx. For a complete list of L1 SAPI values, please refer to the
_OsmoBTS VTY reference manual_ <<vty-ref-osmobts>>.
For example, to enable GSMTAP tracing for messages on all SDCCH
channels, you can use the gsmtap-sapi sdcch command at the CONFIG TRX
node of the OsmoBTS VTY.
.Example: Enabling GSMTAP for SDCCH
----
OsmoBTS> enable
OsmoBTS# configure terminal
OsmoBTS(config)# bts 0
OsmoBTS(bts)# trx 0
OsmoBTS(trx)# gsmtap-sapi sdcch
OsmoBTS(trx)# write <1>
----
<1> the `write` command will make the configuration persistent in the
configuration file. This is not required if you wish to enable GSMTAP
only in the current session of OsmoBTS.
De-activation can be performed similarly by using the `no gsmtap-sapi
sdcch` command at the `trx` node of the OsmoBTS VTY.
From the moment they are enabled via VTY, GSMTAP messages will be
generated and sent in UDP encapsulation to the IANA-registered UDP port
for GSMTAP (4729) at the IP address specified in the command line
argument.
==== Configuring power ramping
OsmoBTS can ramp up the power of its trx over time. This helps reduce
cell congestion in busy environments.
In this example, the trx starts with 5dBm output power which increases by 1dB
every two seconds until it reaches nominal power.
Power ramping can use the power-ramp commands at the CONFIG TRX node of the
OsmoBTS VTY.
.Example: Configure power ramping on trx 0
----
OsmoBTS> enable
OsmoBTS# configure terminal
OsmoBTS(config)# bts 0
OsmoBTS(bts)# trx 0
OsmoBTS(trx)# power-ramp max-initial 5 dBm
OsmoBTS(trx)# power-ramp step-size 1 dB
OsmoBTS(trx)# power-ramp step-interval 2
OsmoBTS(trx)# write <1>
----
<1> the `write` command will make the configuration persistent in the
configuration file.
De-activating power-ramping can be performed by setting the max-initial value
to the nominal power. The default max-initial value is 23 dBm.
==== Running multiple instances
It is possible to run multiple instances of `osmo-bts` on one and the same
machine, if the phy-interface is flexible enough to distinguish between
different phy hardware interfaces.
Since usually a BTS instance runs in conjunction with a dedicated PCU instance,
the socket path between PCU and BTS has to be distinguished between the running
instances. It is possible to change the default socket path via VTY config:
.Example: Personalize PCU socket path
----
bts 0
pcu-socket /tmp/pcu_bts_2
----
It is also necessary to separate the VTY anc CTRL interfaces of the different
instances. The VTY, as well as the CTRL interface can be bound to a free IP
address from the loopback range:
.Example: Binding VTY and CTRL interface to a specific IP address
----
line vty
bind 127.0.0.2
ctrl
bind 127.0.0.2
----

View File

@@ -1,24 +0,0 @@
[[control]]
== Control interface
The actual protocol is described in <<common-control-if>>, the variables
common to all programs using it are described in <<ctrl_common_vars>>. Here we
describe variables specific to OsmoBTS. The commands starting with prefix
"net.btsN." are specific to a certain BTS so N have to be replaced with BTS
number when issuing command. Similarly the
TRX-specific commands are additionally prefixed with TRX number e. g.
"net.bts1.trx2.thermal-attenuation".
.Variables available over control interface
[options="header",width="100%",cols="20%,5%,5%,50%,20%"]
|===
|Name|Access|Trap|Value|Comment
|net.btsN.trxM.thermal-attenuation|RW|No|integer|See <<ther>> for details.
|===
[[ther]]
=== thermal-attenuation
Allowed SET value for thermal attenuation is between 0 to 40 dB. Note: the value
is SET in dB units but GET will return value in mdB units used internally.

View File

@@ -1,20 +0,0 @@
== Support for Dynamic Timeslots (TCH/F, TCH/H, PDCH)
OsmoBTS supports dynamic switchover of timeslots between different physical
channel configurations, initiated by the BSC via (non-standard) Abis messages
-- see the _OsmoBTS Abis Protocol Specification_ <<osmobts-abis-spec>>.
The Abis message handling for dynamic timeslots is independent of the BTS
model. However, dynamic switchover will only work for BTS models that implement
the internal API to reconnect a timeslot (_bts_model_ts_disconnect()_ and
_bts_model_ts_connect()_, see also <<osmobts_hardware_support>>).
Currently, these OsmoBTS models support dynamic timeslots:
* _osmo-bts-sysmo_
* _osmo-bts-litecell15_
* _osmo-bts-trx_
Dynamic timeslots are driven by the BSC and need to be configured there. When
using OsmoBSC or OsmoNITB, see the BTS configuration chapter on dynamic
timeslots in <<userman-osmobsc>> or <<userman-osmonitb>>, respectively.

View File

@@ -1,156 +0,0 @@
== OsmoBTS Interfaces
OsmoBTS offers a set of interfaces to interact with external entities:
* A-bis/IP interface to talk to the BSC
* bts_model specific PHY interface
* VTY interface
* Osmocom control interface
* GSMTAP interface
* PCU interface
=== OsmoBTS Abis/IP Interface
OsmoBTS implements the GSM A-bis interface as described in the relevant
3GPP specifications:
* A-bis RSL according to 3GPP TS 08.58
* A-bis OML according to 3GPP TS 12.21
As the 3GPP specifies A-bis only over E1 interfaces and not over IP,
significant enhancements and modifications to the 3GPP specifications are
employed. Nevertheless, the implementation tries to stay as close as
possible to the 3GPP specifications.
Please see the _OsmoBTS Abis Protocol Specification_
<<osmobts-abis-spec>> for more information on this subject.
=== bts_model specific PHY interface
This interface is specific to the bts_model that OsmoBTS was compiled
for. It can take any form as required by the respective hardware.
Please see the PHY documentation of your respective BTS hardware for more
details.
=== OsmoBTS VTY Interface
See <<vty>> for further information.
=== OsmoBTS Control Interface
The general structure of the Omsocom control interface is described in
<<common-control-if>>.
The number of control interface commands/attributes is currently quite
limited and largely depends on the bts_model used.
==== trx.N.thermal-attenuation
The idea of this parameter is to attenuate the system output power as part of
thermal management. In some cases the PA might be passing a critical level,
so an external control process can use this attribute to reduce the system
output power.
Please note that all values in the context of transmit power calculation
are integers in milli-dB (1/10000 bel), so the below example is setting
the attenuation at 3 dB:
----
bsc_control.py -d localhost -p 4238 -s trx.0.thermal-attenuation 3000
Got message: SET_REPLY 1 trx.0.thermal-attenuation 3000
----
----
bsc_control.py -d localhost -p 4238 -g trx.0.thermal-attenuation
Got message: GET_REPLY 1 trx.0.thermal-attenuation 3000
----
=== OsmoBTS GSMTAP Interface
GSMTAP is a standard created by Osmocom to UDP-encapsulate GSM protocol
messages normally communicated over non-IP interfaces for the primary
purpose of protocol analysis in the wireshark dissector.
The initial purpose was to encapsulate GSM Um frames including some
meta-data like ARFCN and GSM frame number into something that can be
parsed and dispatched within the wireshark dissector.
This interface has since been extended to many other
GSM/GPRS/UMTS interfaces and protocols, and even to TETRA and GMR.
In OsmoBTS, it is possible to export both uplink and downlink Um
messages via GSMTAP. There is a set of VTY configuration options to
specify for which logical channels of the Um interface GSMTAP messages
shall be emitted, and to which destination IP address they shall be
sent.
Using GSMTAP it is possible to place a virtual tap at the air interface
between BTS and MS, without going through the trouble of setting up an
actual radio receiver at the same frequencies. Also, GSMTAP export is
performed before the Um air-interface encryption (A5) is performed, so
all frames are always in plain text.
Please refer to <<gsmtap>> for more information on how to configure and
use this interface.
=== OsmoBTS PCU Socket Interface
In order to assist the provisioning of GPRS services over the same radio
interface as circuit-switched GSM, OsmoBTS exposes a Unix domain socket
based interface towards OsmoPCU.
OsmoPCU is the Osmocom implementation of the GPRS Packet Control Unit
(PCU), which is co-located with the BTS in the Osmocom implementation.
Contrary to that, many classic E1-based implementations of the GSM RAN
co-locate the PCU with the BSC. However, the GSM specifications keep
the location up to the implementor.
The GPRS network architecture is shown in <<fig-gprs-pcubts>>.
[[fig-gprs-pcubts]]
.GPRS network architecture
[graphviz]
----
digraph G {
rankdir=LR;
MS0 [label="MS"];
MS1 [label="MS"];
BTS;
BSC;
MSC;
PCU;
SGSN;
GGSN;
MS0->BTS [label="Um"];
MS1->BTS [label="Um"];
BTS->BSC [label="Abis"];
BSC->MSC [label="A"];
BTS->PCU [label="pcu_sock"];
PCU->SGSN [label="Gb"];
SGSN->GGSN [label="GTP"];
}
----
The PCU socket interface serves the following purposes:
* to pass PCU relevant configuration from BTS to PCU
* to forward paging requests from BTS to PCU
* to forward RACH Requests from BTS to PCU
Depending on your bts_model, the PCU may also be passing actual
PH-DATA.request / PH-DATA.indication / PH-RTS.indication primitives for
the PDCH. This is considered sub-optimal, and some BTS models offer a
direct interface by which the PCU can exchange those primitives directly
with the PHY.
The default PCU socket interface name is `/tmp/pcu_sock`, but this can
be overridden by the `pcu-socket` VTY command in the BTS configuration
VTY node.

View File

@@ -1,105 +0,0 @@
== Overview
=== About this manual
This manual should help you getting started with the OsmoBTS software.
It will cover aspects of configuring and running OsmoBTS as well as some
introduction about its internal architecture and external interfaces.
=== About OsmoBTS
OsmoBTS is an implementation of a GSM BTS (Base Transceiver Station). A
BTS serves as the interface between the Um radio interface towards
phones and the wired Abis interface towards the BSC (Base Station
Controller). It also implements the network side of the Layer 2 of the
Um radio interface: The LAPDm protocol.
OsmoBTS is licensed as Free and Open Source Software (FOSS) under _GNU
AGPLv3_ <<gnu-agplv3>>. It is developed as one GSM network
infrastructure component part of the overall Osmocom project.
As perhaps the first implementation of a GSM BTS ever in the industry,
OsmoBTS is implemented in a vendor-independent way and supports a large
variety of transceiver hardware and physical layer implementations from
many vendors.
=== Credits
OsmoBTS was originally developed in 2011 by Andreas Eversberg and Harald
Welte. It has since been maintained by Harald Welte and Holger Freyther
at sysmocom.
=== OsmoBTS in the Osmocom GSM network architecture
OsmoBTS can be used in combination with the various other GSM network
elements developed under the umbrella of the Osmocom project.
Typical configurations either use OsmoBTS with OsmoBSC, or with
OsmoNITB, as can be seen in the following figures.
[[fig-gsm-classic]]
.Classic GSM archtiecture using OsmoBTS with OsmoBTS components
[graphviz]
----
digraph G {
rankdir=LR;
MS0 [label="MS"]
MS1 [label="MS"]
MS2 [label="MS"]
MS3 [label="MS"]
BTS0 [label="OsmoBTS"]
BTS1 [label="OsmoBTS"]
BSC [label="OsmoBSC"]
MSC [label="MSC/VLR"]
HLR [label="HLR/AUC"]
MS0->BTS0 [label="Um"]
MS1->BTS0 [label="Um"]
MS2->BTS1 [label="Um"]
MS3->BTS1 [label="Um"]
BTS0->BSC [label="Abis"]
BTS1->BSC [label="Abis"]
BSC->MSC [label="A"]
MSC->HLR [label="C"]
MSC->EIR [label="F"]
MSC->SMSC
}
----
[[fig-gsm-nitb]]
.GSM architecture using OsmoBTS + OsmoNITB
[graphviz]
----
digraph G {
rankdir=LR;
MS0 [label="MS"]
MS1 [label="MS"]
MS2 [label="MS"]
MS3 [label="MS"]
BTS0 [label="OsmoBTS"]
BTS1 [label="OsmoBTS"]
MS0->BTS0 [label="Um"]
MS1->BTS0 [label="Um"]
MS2->BTS1 [label="Um"]
MS3->BTS1 [label="Um"]
BTS0->BSC [label="Abis"]
BTS1->BSC [label="Abis"]
subgraph cluster_nitb {
label = "OsmoNITB";
BSC
MSC [label="MSC/VLR"]
HLR [label="HLR/AUC"]
BSC->MSC [label="A"]
MSC->HLR [label="C"]
MSC->EIR [label="F"]
MSC->SMSC;
}
}
----
If intended by the user, it is of course also possible to implement an
OsmoBTS-compatible Abis-over-IP interface in any third party BSC. The
Abis/IP interface and its protocol are documented in the _OsmoBTS
Abis Protocol Specification_ <<osmobts-abis-spec>>. However, be advised
that such a configuration is currently not officially supported by
Osmocom.

View File

@@ -1,85 +0,0 @@
digraph dtx_dl_amr_fsm {
node [shape = doublecircle] ST_VOICE ST_FACCH ST_U_NOINH
node [shape = circle]
// default state for non-DTX and DTX when SPEECH is in progress
ST_VOICE -> ST_SID_F1 [ label = "E_SID_F" ]
ST_VOICE -> ST_F1_INH_V [ label = "E_INHIB" ]
ST_VOICE -> ST_U_NOINH [ label = "E_SID_U" ]
ST_VOICE -> ST_VOICE [ label = "E_VOICE" ]
ST_VOICE -> ST_VOICE [ label = "E_FACCH" ]
// SID-FIRST or SID-FIRST-P1 in case of AMR HR: start of silence period (might be interrupted in case of AMR HR)
ST_SID_F1 -> ST_SID_F1 [ label = "E_SID_F" ]
ST_SID_F1 -> ST_U_NOINH [ label = "E_SID_U" ]
ST_SID_F1 -> ST_F1_INH_F [ label = "E_FACCH" ]
ST_SID_F1 -> ST_SID_F2 [ label = "E_FIRST" ]
ST_SID_F1 -> ST_ONSET_V [ label = "E_ONSET" ]
// SID-FIRST P2 (only for AMR HR): actual start of silence period in case of AMR HR
ST_SID_F2 -> ST_U_NOINH [ label = "E_COMPL" ]
ST_SID_F2 -> ST_ONSET_F [ label = "E_FACCH" ]
ST_SID_F2 -> ST_ONSET_V [ label = "E_ONSET" ]
// SID-FIRST Inhibited: incoming SPEECH (only for AMR HR)
ST_F1_INH_V -> ST_F1_INH_V_REC [ label = "E_COMPL" ]
// SID-FIRST Inhibited: incoming FACCH frame (only for AMR HR)
ST_F1_INH_F -> ST_F1_INH_F_REC [ label = "E_COMPL" ]
// SID-UPDATE Inhibited: incoming SPEECH (only for AMR HR)
ST_U_INH_V -> ST_U_INH_V_REC [ label = "E_COMPL" ]
// SID-UPDATE Inhibited: incoming FACCH frame (only for AMR HR)
ST_U_INH_F -> ST_U_INH_F_REC [ label = "E_COMPL" ]
// Silence period with periodic comfort noise data updates (no Inhibition)
ST_U_NOINH -> ST_ONSET_F [ label = "E_FACCH" ]
ST_U_NOINH -> ST_VOICE [ label = "E_VOICE" ]
ST_U_NOINH -> ST_U_NOINH [ label = "E_SID_U" ]
ST_U_NOINH -> ST_U_NOINH [ label = "E_SID_F" ]
ST_U_NOINH -> ST_ONSET_V [ label = "E_ONSET" ]
ST_U_NOINH -> ST_SID_U [ label = "E_COMPL" ]
// SID-FIRST Inhibition recursion in progress: Inhibit itself was already sent, now have to send the voice that caused it
ST_F1_INH_V_REC -> ST_VOICE [ label = "E_COMPL" ]
ST_F1_INH_V_REC -> ST_VOICE [ label = "E_VOICE" ]
// SID-FIRST Inhibition recursion in progress: Inhibit itself was already sent, now have to send the voice that caused it
ST_F1_INH_F_REC -> ST_FACCH [ label = "E_COMPL" ]
ST_F1_INH_F_REC -> ST_FACCH [ label = "E_VOICE" ]
// SID-UPDATE Inhibition recursion in progress: Inhibit itself was already sent, now have to send the voice that caused it
ST_U_INH_V_REC -> ST_VOICE [ label = "E_COMPL" ]
ST_U_INH_V_REC -> ST_VOICE [ label = "E_VOICE" ]
// SID-UPDATE Inhibition recursion in progress: Inhibit itself was already sent, now have to send the voice that caused it
ST_U_INH_F_REC -> ST_FACCH [ label = "E_COMPL" ]
ST_U_INH_F_REC -> ST_FACCH [ label = "E_VOICE" ]
// Silence period with periodic comfort noise data updates (can be inhibited)
ST_SID_U -> ST_U_INH_F [ label = "E_FACCH" ]
ST_SID_U -> ST_VOICE [ label = "E_VOICE" ]
ST_SID_U -> ST_U_INH_V [ label = "E_INHIB" ]
ST_SID_U -> ST_U_NOINH [ label = "E_SID_U" ]
ST_SID_U -> ST_U_NOINH [ label = "E_SID_F" ]
// ONSET - end of silent period due to incoming SPEECH frame
ST_ONSET_V -> ST_ONSET_V_REC [ label = "E_COMPL" ]
// ONSET - end of silent period due to incoming FACCH frame
ST_ONSET_F -> ST_ONSET_F_REC [ label = "E_COMPL" ]
// ONSET recursion in progress: ONSET itself was already sent, now have to send the data that caused it
ST_ONSET_F_REC -> ST_FACCH [ label = "E_COMPL" ]
// ONSET recursion in progress: ONSET itself was already sent, now have to send the voice that caused it
ST_ONSET_V_REC -> ST_VOICE [ label = "E_COMPL" ]
// FACCH sending state
ST_FACCH -> ST_VOICE [ label = "E_VOICE" ]
ST_FACCH -> ST_FACCH [ label = "E_FACCH" ]
ST_FACCH -> ST_FACCH [ label = "E_SID_U" ]
ST_FACCH -> ST_FACCH [ label = "E_SID_F" ]
ST_FACCH -> ST_SID_F1 [ label = "E_COMPL" ]
}

View File

@@ -1,83 +0,0 @@
<revhistory>
<revision>
<revnumber>1</revnumber>
<date>December 2015</date>
<authorinitials>NJH, HW</authorinitials>
<revremark>
Initial version, reflecting OsmoBTS master branch as on 2015-Dec-7
(commit e28a20a2d9d049cd6312e218a7646593bbc43431).
</revremark>
</revision>
<revision>
<revnumber>2</revnumber>
<date>February 2016</date>
<authorinitials>HW</authorinitials>
<revremark>
Updated version with Message Sequence Chart of OML and RSL bring-up.
</revremark>
</revision>
<revision>
<revnumber>2.1</revnumber>
<date>February 2016</date>
<authorinitials>HW</authorinitials>
<revremark>
Fix A-bis OML/RSL port number swap in message seqeuence charts.
</revremark>
</revision>
<revision>
<revnumber>2.2</revnumber>
<date>July 2016</date>
<authorinitials>NJH, HW</authorinitials>
<revremark>
Add description on Dynamic Channel Configuration in OML and activation in RSL.
</revremark>
</revision>
</revhistory>
<authorgroup>
<author>
<firstname>Neels</firstname>
<surname>Hofmeyr</surname>
<email>nhofmeyr@sysmocom.de</email>
<authorinitials>NJH</authorinitials>
<affiliation>
<shortaffil>sysmocom</shortaffil>
<orgname>sysmocom - s.f.m.c. GmbH</orgname>
<jobtitle>Senior Software Developer</jobtitle>
</affiliation>
</author>
<author>
<firstname>Harald</firstname>
<surname>Welte</surname>
<email>hwelte@sysmocom.de</email>
<authorinitials>HW</authorinitials>
<affiliation>
<shortaffil>sysmocom</shortaffil>
<orgname>sysmocom - s.f.m.c. GmbH</orgname>
<jobtitle>Managing Director</jobtitle>
</affiliation>
</author>
</authorgroup>
<copyright>
<year>2015-2016</year>
<holder>sysmocom - s.f.m.c. GmbH</holder>
</copyright>
<legalnotice>
<para>
Permission is granted to copy, distribute and/or modify this
document under the terms of the GNU Free Documentation License,
Version 1.3 or any later version published by the Free Software
Foundation; with no Invariant Sections, no Front-Cover Texts,
and no Back-Cover Texts. A copy of the license is included in
the section entitled "GNU Free Documentation License".
</para>
<para>
The Asciidoc source code of this manual can be found at
<ulink url="http://git.osmocom.org/osmo-gsm-manuals/">
http://git.osmocom.org/osmo-gsm-manuals/
</ulink>
</para>
</legalnotice>

View File

@@ -1,92 +0,0 @@
:gfdl-enabled:
OsmoBTS Abis Protocol Specification
===================================
Neels Hofmeyr <nhofmeyr@sysmocom.de>
== Introduction
This document describes the A-bis interface of *OsmoBTS*. Based on 3GPP TS
12.21 and 08.58, this document indicates which of the 3GPP specified A-bis
messages and IEs are implemented according to 3GPP specifications, which of
these are not or not fully implemented, as well as OsmoBTS-specific extensions
to the A-bis interface not specified by 3GPP.
Extensions to the A-bis interface specific to OsmoBTS are detailed in this
document. For details on the messages and IEs that comply with above mentioned
3GPP specifications, please refer to those documents.
.3GPP document versions referred to by this document
[cols="20%,80%"]
|===
|3GPP TS 08.56 | version 8.0.1 Release 1999
|3GPP TS 08.58 | version 8.6.0 Release 1999
|3GPP TS 08.60 | version 8.2.1 Release 1999
|3GPP TS 12.21 | version 8.0.0 Release 1999
|===
.IETF documents referred to by his document
[cols="20%,80%"]
|===
|IETF RFC 768 | User Datagram Protocol
|IETF RFC 791 | Internet Protocol
|IETF RFC 793 | Transmission Control Protocol
|IETF RFC 1889 | RTP: A Transport Protocol for Real-Time Applications
|IETF RFC 3551 | RTP Profle for Audio and Video Conferences with Minimal Control
|IETF RFC 4867 | RTP Payload Format and Files Storage Format for the Adaptive Multi-Rate (AMR) and Adaptive Multi-Rate Wideband (AMR-WB) Audio Codecs
|IETF RFC 5993 | RTP Payload Format for Global Systems for Mobile Communications Half Rate (GSM-HR)
|===
== Overview
The OsmoBTS A-bis interface consists of traffic management messages (RSL, Radio
Signalling Link) and network management messages (OML, Operation & Maintenance
Link), encapsulated in an IPA multiplex.
OML and RSL each use a separate TCP connection.
.TCP port numbers used by OsmoBTS Abis/IP
[options="header",width="50%",cols="35%,65%"]
|===
|TCP Port Number|Usage
|3002|A-bis OML (inside IPA multiplex)
|3003|A-bis RSL (inside IPA multiplex)
|===
Both TCP connections for OML and RSL are established in the BTS -> BSC
direction, i.e. the BTS is running as a TCP client, while the BSC is
running as a TCP server.
The BTS first establishes the TCP connection for OML. Via OML, the BSC
instructs the BTS to which IP address the RSL connection shall be
established.
.Overview of A-bis connection establishment
["mscgen"]
----
include::{srcdir}/abis/abis-startup.msc[]
----
=== Identities
The BTS is locally configured (via administrative means, out of band of
this specification) to have a Unit ID. The Unit ID consists of three
parts:
* The Site Number
* The BTS number at the site
* The TRX number within the BTS
include::{srcdir}/abis/ipa.adoc[]
include::{srcdir}/abis/oml.adoc[]
include::{srcdir}/abis/rsl.adoc[]
include::{srcdir}/abis/rtp.adoc[]
include::./common/chapters/port_numbers.adoc[]
include::./common/chapters/glossary.adoc[]
include::./common/chapters/gfdl.adoc[]

View File

@@ -1,42 +0,0 @@
<revhistory>
<revision>
<revnumber>1</revnumber>
<date>January 2016</date>
<authorinitials>HW</authorinitials>
<revremark>
Initial version, reflecting OsmoBTS master branch as on FIXME
(commit FIXME).
</revremark>
</revision>
</revhistory>
<authorgroup>
<author>
<firstname>Harald</firstname>
<surname>Welte</surname>
<email>hwelte@sysmocom.de</email>
<authorinitials>HW</authorinitials>
<affiliation>
<shortaffil>sysmocom</shortaffil>
<orgname>sysmocom - s.f.m.c. GmbH</orgname>
<jobtitle>Managing Director</jobtitle>
</affiliation>
</author>
</authorgroup>
<copyright>
<year>2016</year>
<holder>sysmocom - s.f.m.c. GmbH</holder>
</copyright>
<legalnotice>
<para>
Permission is granted to copy, distribute and/or modify this
document under the terms of the GNU Free Documentation License,
Version 1.3 or any later version published by the Free Software
Foundation; with the Invariant Sections being just 'Foreword',
'Acknowledgements' and 'Preface', with no Front-Cover Texts,
and no Back-Cover Texts. A copy of the license is included in
the section entitled "GNU Free Documentation License".
</para>
</legalnotice>

View File

@@ -1,39 +0,0 @@
:gfdl-enabled:
OsmoBTS User Manual
===================
Harald Welte <hwelte@sysmocom.de>
include::./common/chapters/preface.adoc[]
include::{srcdir}/chapters/overview.adoc[]
include::./common/chapters/abis.adoc[]
include::{srcdir}/chapters/interfaces.adoc[]
include::{srcdir}/chapters/control.adoc[]
include::./common/chapters/vty.adoc[]
include::./common/chapters/logging.adoc[]
include::{srcdir}/chapters/configuration.adoc[]
include::{srcdir}/chapters/dynamic-timeslots.adoc[]
include::{srcdir}/chapters/bts-models.adoc[]
include::{srcdir}/chapters/architecture.adoc[]
include::./common/chapters/trx_if.adoc[]
include::./common/chapters/control_if.adoc[]
include::./common/chapters/port_numbers.adoc[]
include::./common/chapters/bibliography.adoc[]
include::./common/chapters/glossary.adoc[]
include::./common/chapters/gfdl.adoc[]

View File

@@ -1,38 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
ex:ts=2:sw=42sts=2:et
-*- tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*-
-->
<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML 5.0//EN"
"http://docbook.org/xml/5.0/dtd/docbook.dtd" [
<!ENTITY chapter-vty SYSTEM "./common/chapters/vty.xml" >
<!ENTITY sections-vty SYSTEM "generated/docbook_vty.xml" >
]>
<book>
<info>
<revhistory>
<revision>
<revnumber>v1</revnumber>
<date>13th October 2016</date>
<authorinitials>hw</authorinitials>
<revremark>Initial</revremark>
</revision>
</revhistory>
<title>OsmoBTS VTY Reference</title>
<copyright>
<year>2016</year>
</copyright>
<legalnotice>
<para>This work is copyright by <orgname>sysmocom - s.f.m.c. GmbH</orgname>. All rights reserved.
</para>
</legalnotice>
</info>
<!-- Main chapters-->
&chapter-vty;
</book>

View File

@@ -1,73 +0,0 @@
<revhistory>
<revision>
<revnumber>1</revnumber>
<date>October 2016</date>
<authorinitials>HW</authorinitials>
<revremark>
Initial version
</revremark>
</revision>
<revision>
<revnumber>2</revnumber>
<date>November 2016</date>
<authorinitials>MS</authorinitials>
<revremark>
FSM added
</revremark>
</revision>
<revision>
<revnumber>3</revnumber>
<date>July 2017</date>
<authorinitials>PE</authorinitials>
<revremark>
Add section and update sequence charts to describe requirement to receive all PH-DATA.ind events
</revremark>
</revision>
</revhistory>
<authorgroup>
<author>
<firstname>Harald</firstname>
<surname>Welte</surname>
<email>hwelte@sysmocom.de</email>
<authorinitials>HW</authorinitials>
<affiliation>
<shortaffil>sysmocom</shortaffil>
<orgname>sysmocom - s.f.m.c. GmbH</orgname>
<jobtitle>Managing Director</jobtitle>
</affiliation>
</author>
<author>
<firstname>Max</firstname>
<surname>Suraev</surname>
<email>msuraev@sysmocom.de</email>
<authorinitials>MS</authorinitials>
<affiliation>
<shortaffil>sysmocom</shortaffil>
<orgname>sysmocom - s.f.m.c. GmbH</orgname>
<jobtitle>Software Developer</jobtitle>
</affiliation>
</author>
</authorgroup>
<copyright>
<year>2016</year>
<holder>sysmocom - s.f.m.c. GmbH</holder>
</copyright>
<legalnotice>
<para>
Permission is granted to copy, distribute and/or modify this
document under the terms of the GNU Free Documentation License,
Version 1.3 or any later version published by the Free Software
Foundation; with no Invariant Sections, no Front-Cover Texts,
and no Back-Cover Texts. A copy of the license is included in
the section entitled "GNU Free Documentation License".
</para>
<para>
The Asciidoc source code of this manual can be found at
<ulink url="http://git.osmocom.org/osmo-gsm-manuals/">
http://git.osmocom.org/osmo-gsm-manuals/
</ulink>
</para>
</legalnotice>

File diff suppressed because it is too large Load Diff

View File

@@ -1 +0,0 @@
<vtydoc xmlns='urn:osmocom:xml:libosmocore:vty:doc:1.0'/>

File diff suppressed because it is too large Load Diff

View File

@@ -1,57 +0,0 @@
== OsmoBTS PHY interface abstraction
The OsmoBTS PHY interface serves as an abstraction layer between given
PHY hardware and the actual logical transceivers (TRXs) of a BTS inside
the OsmoBTS code base.
=== PHY link
A PHY link is a physical connection / link towards a given PHY. This
might be, for example,
* a set of file descriptors to device nodes in the /dev/ directory
(sysmobts, litecell15)
* a packet socket for sending raw Ethernet frames to an OCTPHY
* a set of UDP sockets for interacting with OsmoTRX
Each PHY interface has a set of attribute/parameters and a list of 1 to
n PHY instances.
PHY links are numbered 0..n globally inside OsmoBTS.
Each PHY link is configured via the VTY using its individual top-level
vty node. Given the different bts-model / phy specific properties, the
VTY configuration options (if any) of the PHY instance differ between
BTS models.
The PHY links and instances must be configured above the BTS/TRX nodes
in the configuration file. If the file is saved via the VTY, the code
automatically ensures this.
=== PHY instance
A PHY instance is an instance of a PHY, accessed via a PHY link.
In the case of osmo-bts-sysmo and osmo-bts-trx, there is only one
instance in every PHY link. This is due to the fact that the API inside
that PHY link does not permit for distinguishing multiple different
logical TRXs.
Other PHY implementations like the OCTPHY however do support addressing
multiple PHY instances via a single PHY link.
PHY instances are numbered 0..n inside each PHY link.
Each PHY instance is configured via the VTY as a separate node beneath each
PHY link. Given the different bts-model / phy specific properties, the
VTY configuration options (if any) of the PHY instance differ between
BTS models.
=== Mapping PHY instances to TRXs
Each TRX node in the VTY must use the 'phy N instance M' command in
order to specify which PHY instance is allocated to this specific TRX.

View File

@@ -1,42 +0,0 @@
== start-up / sequencing during OsmoBTS start
The start-up procedure of OsmoBTS can be described as follows:
|===
| bts-specific | main() |
| common | bts_main() | initialization of talloc contexts
| common | osmo_init_logging2() | initialization of logging
| common | handle_options() | common option parsing
| bts-specific | bts_model_handle_options() | model-specific option parsing
| common | gsm_bts_alloc() | allocation of BTS/TRX/TS data structures
| common | vty_init() | Initialziation of VTY core, libosmo-abis and osmo-bts VTY
| common | main() | Setting of scheduler RR priority (if configured)
| common | main() | Initialization of GSMTAP (if configured)
| common | bts_init() | configuration of defaults in bts/trx/s object
| bts-specific | bts_model_init | ?
| common | abis_init() | Initialization of libosmo-abis
| common | vty_read_config_file() | Reading of configuration file
| bts-specific | bts_model_phy_link_set_defaults() | Called for every PHY link created
| bts-specific | bts_model_phy_instance_set_defaults() | Called for every PHY Instance created
| common | bts_controlif_setup() | Initialization of Control Interface
| bts-specific | bts_model_ctrl_cmds_install()
| common | telnet_init() | Initialization of telnet interface
| common | pcu_sock_init() | Initializaiton of PCU socket
| common | main() | Installation of signal handlers
| common | abis_open() | Start of the A-bis connection to BSC
| common | phy_links_open() | Iterate over list of configured PHY links
| bts-specific | bts_model_phy_link_open() | Open each of the configured PHY links
| common | write_pid_file() | Generate the pid file
| common | osmo_daemonize() | Fork as daemon in background (if configured)
| common | bts_main() | Run main loop until global variable quit >= 2
| bts-specific | bts_model_oml_estab() | Called by core once OML link is established
| bts-specific | bts_model_check_oml() | called each time OML sets some attributes on a MO, checks if attributes are valid
| bts-specific | bts_model_apply_oml() | called each time OML sets some attributes on a MO, stores attribute contents in data structures
| bts-specific | bts_model_opstart() | for NM_OC_BTS, NM_OC_SITE_MANAGER, NM_OC_GPRS_NSE, NM_OC_GPRS_CELL, NMO_OC_GPRS_NSVC
| bts-specific | bts_model_opstart() | for NM_OC_RADIO_CARRIER for each trx
| bts-specific | bts_model_opstart() | for NM_OC_BASEB_TRANSC for each trx
| bts-specific | bts_model_opstart() | for NM_OC_CHANNEL for each timeslot on each trx
| bts-specific | bts_model_change_power() | change transmit power for each trx (power ramp-up/ramp-down
| bts-specific | bts_model_abis_close() | called when either one of the RSL links or the OML link are down

View File

@@ -1 +1,3 @@
SUBDIRS = osmo-bts
noinst_HEADERS = openbsc/gsm_data.h

1
include/openbsc/gsm_data.h Symbolic link
View File

@@ -0,0 +1 @@
../osmo-bts/gsm_data.h

Some files were not shown because too many files have changed in this diff Show More