aboutsummaryrefslogtreecommitdiffstats
path: root/doc
diff options
context:
space:
mode:
authorNeels Hofmeyr <neels@hofmeyr.de>2016-07-26 13:50:38 +0200
committerNeels Hofmeyr <neels@hofmeyr.de>2018-11-27 17:54:20 +0100
commitc03c9c81fbf16aa4d22920be6aca649622ac4f80 (patch)
tree5e5672b1453b6a2150af49ee33412aa9831c78ca /doc
parent47d5ba401226474408ff26e91d911f5e26ae7610 (diff)
Document dynamic channels on Abis, both IPA and Osmocom style
Based in ladder diagram and WIP wording for IPA style from Neels Hofmeyr, completed by me.
Diffstat (limited to 'doc')
-rw-r--r--doc/manuals/abis/dyn_ts_ipa_style.msc39
-rw-r--r--doc/manuals/abis/dyn_ts_osmocom_style.msc60
-rw-r--r--doc/manuals/abis/oml.adoc10
-rw-r--r--doc/manuals/abis/rsl.adoc238
-rw-r--r--doc/manuals/chapters/bts-models.adoc3
-rw-r--r--doc/manuals/chapters/dynamic-timeslots.adoc21
-rw-r--r--doc/manuals/osmobts-usermanual.adoc2
7 files changed, 366 insertions, 7 deletions
diff --git a/doc/manuals/abis/dyn_ts_ipa_style.msc b/doc/manuals/abis/dyn_ts_ipa_style.msc
new file mode 100644
index 00000000..ae7c0d0e
--- /dev/null
+++ b/doc/manuals/abis/dyn_ts_ipa_style.msc
@@ -0,0 +1,39 @@
+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..." ];
+ 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" ];
+}
diff --git a/doc/manuals/abis/dyn_ts_osmocom_style.msc b/doc/manuals/abis/dyn_ts_osmocom_style.msc
new file mode 100644
index 00000000..10f89961
--- /dev/null
+++ b/doc/manuals/abis/dyn_ts_osmocom_style.msc
@@ -0,0 +1,60 @@
+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..." ];
+
+ --- [ 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)" ];
+ --- [ 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" ];
+ bts -> bsc [ label = "RSL Channel Activation Ack (PDCH)" ];
+}
diff --git a/doc/manuals/abis/oml.adoc b/doc/manuals/abis/oml.adoc
index f6d7612e..4afcec04 100644
--- a/doc/manuals/abis/oml.adoc
+++ b/doc/manuals/abis/oml.adoc
@@ -498,10 +498,18 @@ combinations are supported:
| 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 | Reserved for Dynamic TCH/F / PDCH
+| 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
diff --git a/doc/manuals/abis/rsl.adoc b/doc/manuals/abis/rsl.adoc
index 331ccb3e..b1b49641 100644
--- a/doc/manuals/abis/rsl.adoc
+++ b/doc/manuals/abis/rsl.adoc
@@ -7,7 +7,7 @@ grouped by their level of compliance with 3GPP TS 08.58.
==== Messages Compliant With TS 08.58
-Specific limitations apply, see the linked sections.
+Specific additions and limitations apply, see the linked sections.
.Messages compliant with TS 08.58
[options="header",cols="10%,20%,45%,5%,20%"]
@@ -26,9 +26,9 @@ Specific limitations apply, see the linked sections.
| 8.3.10 | - | UNIT DATA REQUEST | <- | Received
| 8.3.11 | - | UNIT DATA INDICATION | -> | Sent
5+<| *DEDICATED CHANNEL MANAGEMENT MESSAGES*
-| 8.4.1 | - | CHANNEL ACTIVATION | <- | Received
-| 8.4.2 | - | CHANNEL ACTIVATION ACKNOWLEDGE | -> | Sent
-| 8.4.3 | - | CHANNEL ACTIVATION NEGATIVE ACKNOWLEDGE | -> | Sent
+| 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
@@ -71,6 +71,13 @@ Specific limitations apply, see the linked sections.
| <<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
@@ -110,6 +117,16 @@ Specific limitations apply, see the linked sections.
=== Message Limitation Details
+[[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.
+
+NOTE:: Do not confuse this with the ip.access style _PDCH ACT_ type
+dynamic PDCH protocol employed by nanoBTS devices.
+
[[MEASUREMENT_RESULT]]
==== Measurement Result
@@ -330,6 +347,41 @@ non-acknowledged *RSL Delete Connection (DLCX) Indication* to the BSC.
See <<rsl_dlcx_ind_msg>>
+[[ipa_style_pdch_mgmt]]
+=== IPA style PDCH Management
+
+When using an IPA-style dynamic TCH/F+PDCH channel type on an
+on-air timeslot, there are a couple of non-standard RSL messages used
+in order to activate or deactivate this timeslot in PDCH 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>>
+
+
=== Message Formats and Contents
[[rsl_crcx_msg]]
@@ -524,6 +576,110 @@ Channel number. It is sent in response to the *Delete Connection
| 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
@@ -547,17 +703,24 @@ indicated in 3GPP TS 08.58 Section 9.1:
| 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.1:
+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>>
@@ -568,6 +731,21 @@ addition to those indicated in 3GPP TS 08.58 Section 9.3.1:
| 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
@@ -679,3 +857,53 @@ 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.
+[[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:
+
+==== ip.access style Dynamic Channels
+
+This method is used when OML uses 'NM_CHANC_IPAC_TCHFull_PDCH' (0x80)
+as channel combination for the given time-slot.
+
+When the ip.access 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.
+
+.Example for dynamic channel switchover, for ip.access style dynamic timeslots
+["mscgen"]
+----
+include::dyn_ts_ipa_style.msc[]
+----
+
+==== 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 the
+exception that the 'cbits' part of the '
+
+.Example for dynamic channel switchover, for ip.access style dynamic timeslots
+["mscgen"]
+----
+include::dyn_ts_osmocom_style.msc[]
+----
+
+
diff --git a/doc/manuals/chapters/bts-models.adoc b/doc/manuals/chapters/bts-models.adoc
index 67d75bdf..1c619d3c 100644
--- a/doc/manuals/chapters/bts-models.adoc
+++ b/doc/manuals/chapters/bts-models.adoc
@@ -1,3 +1,4 @@
+[[osmobts_hardware_support]]
== OsmoBTS hardware support
OsmoBTS consists of a _common_ part that applies to all BTS models as well as
@@ -23,7 +24,7 @@ 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_.
+common part calls. Those functions are pre-fixed by _bts_model__.
Each bts_model may offer
diff --git a/doc/manuals/chapters/dynamic-timeslots.adoc b/doc/manuals/chapters/dynamic-timeslots.adoc
new file mode 100644
index 00000000..68d6fe13
--- /dev/null
+++ b/doc/manuals/chapters/dynamic-timeslots.adoc
@@ -0,0 +1,21 @@
+== 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()_). Currently, these BTS models support dynamic
+timeslots:
+
+* _osmo-bts-sysmo_
+* _osmo-bts-litecell15_
+* _osmo-bts-trx_
+
+See also <<osmobts_hardware_support>>.
+
+include::../../common/snippets/dyn_pdch_ladder.adoc[]
+
+include::../../common/snippets/dyn_ts_ladder_TCH_H.adoc[]
diff --git a/doc/manuals/osmobts-usermanual.adoc b/doc/manuals/osmobts-usermanual.adoc
index 0b847334..a05becde 100644
--- a/doc/manuals/osmobts-usermanual.adoc
+++ b/doc/manuals/osmobts-usermanual.adoc
@@ -18,6 +18,8 @@ include::../common/chapters/logging.adoc[]
include::chapters/configuration.adoc[]
+include::chapters/dynamic-timeslots.adoc[]
+
include::chapters/bts-models.adoc[]
include::chapters/architecture.adoc[]