aboutsummaryrefslogtreecommitdiffstats
path: root/doc/manuals/abis
diff options
context:
space:
mode:
Diffstat (limited to 'doc/manuals/abis')
-rw-r--r--doc/manuals/abis/abis-startup.msc23
-rw-r--r--doc/manuals/abis/dyn_ts_ipa_style1.msc23
-rw-r--r--doc/manuals/abis/dyn_ts_ipa_style2.msc22
-rw-r--r--doc/manuals/abis/dyn_ts_osmocom_style1.msc34
-rw-r--r--doc/manuals/abis/dyn_ts_osmocom_style2.msc31
-rw-r--r--doc/manuals/abis/ipa.adoc106
-rw-r--r--doc/manuals/abis/oml-mo-bts.msc26
-rw-r--r--doc/manuals/abis/oml-mo-carrier.msc24
-rw-r--r--doc/manuals/abis/oml-mo-channel.msc20
-rw-r--r--doc/manuals/abis/oml-mo-sitemgr.msc17
-rw-r--r--doc/manuals/abis/oml-mo-transceiver.msc23
-rw-r--r--doc/manuals/abis/oml-startup.msc34
-rw-r--r--doc/manuals/abis/oml-startup2.msc50
-rw-r--r--doc/manuals/abis/oml-startup3.msc51
-rw-r--r--doc/manuals/abis/oml.adoc950
-rw-r--r--doc/manuals/abis/rsl-startup-pri.msc22
-rw-r--r--doc/manuals/abis/rsl-startup-sec.msc16
-rw-r--r--doc/manuals/abis/rsl-tch-rtp.msc56
-rw-r--r--doc/manuals/abis/rsl.adoc944
-rw-r--r--doc/manuals/abis/rtp.adoc33
20 files changed, 2505 insertions, 0 deletions
diff --git a/doc/manuals/abis/abis-startup.msc b/doc/manuals/abis/abis-startup.msc
new file mode 100644
index 00000000..d30fe41d
--- /dev/null
+++ b/doc/manuals/abis/abis-startup.msc
@@ -0,0 +1,23 @@
+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)"];
+}
diff --git a/doc/manuals/abis/dyn_ts_ipa_style1.msc b/doc/manuals/abis/dyn_ts_ipa_style1.msc
new file mode 100644
index 00000000..ee917956
--- /dev/null
+++ b/doc/manuals/abis/dyn_ts_ipa_style1.msc
@@ -0,0 +1,23 @@
+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..." ];
+}
diff --git a/doc/manuals/abis/dyn_ts_ipa_style2.msc b/doc/manuals/abis/dyn_ts_ipa_style2.msc
new file mode 100644
index 00000000..c2877895
--- /dev/null
+++ b/doc/manuals/abis/dyn_ts_ipa_style2.msc
@@ -0,0 +1,22 @@
+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" ];
+}
diff --git a/doc/manuals/abis/dyn_ts_osmocom_style1.msc b/doc/manuals/abis/dyn_ts_osmocom_style1.msc
new file mode 100644
index 00000000..f02f6f60
--- /dev/null
+++ b/doc/manuals/abis/dyn_ts_osmocom_style1.msc
@@ -0,0 +1,34 @@
+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..." ];
+
+}
diff --git a/doc/manuals/abis/dyn_ts_osmocom_style2.msc b/doc/manuals/abis/dyn_ts_osmocom_style2.msc
new file mode 100644
index 00000000..9ea65b69
--- /dev/null
+++ b/doc/manuals/abis/dyn_ts_osmocom_style2.msc
@@ -0,0 +1,31 @@
+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" ];
+}
diff --git a/doc/manuals/abis/ipa.adoc b/doc/manuals/abis/ipa.adoc
new file mode 100644
index 00000000..9768cdd6
--- /dev/null
+++ b/doc/manuals/abis/ipa.adoc
@@ -0,0 +1,106 @@
+== 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
+|===
diff --git a/doc/manuals/abis/oml-mo-bts.msc b/doc/manuals/abis/oml-mo-bts.msc
new file mode 100644
index 00000000..75c283fb
--- /dev/null
+++ b/doc/manuals/abis/oml-mo-bts.msc
@@ -0,0 +1,26 @@
+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)"];
+}
diff --git a/doc/manuals/abis/oml-mo-carrier.msc b/doc/manuals/abis/oml-mo-carrier.msc
new file mode 100644
index 00000000..fc5070f6
--- /dev/null
+++ b/doc/manuals/abis/oml-mo-carrier.msc
@@ -0,0 +1,24 @@
+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)"];
+}
diff --git a/doc/manuals/abis/oml-mo-channel.msc b/doc/manuals/abis/oml-mo-channel.msc
new file mode 100644
index 00000000..624ae724
--- /dev/null
+++ b/doc/manuals/abis/oml-mo-channel.msc
@@ -0,0 +1,20 @@
+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)"];
+}
diff --git a/doc/manuals/abis/oml-mo-sitemgr.msc b/doc/manuals/abis/oml-mo-sitemgr.msc
new file mode 100644
index 00000000..39e4d159
--- /dev/null
+++ b/doc/manuals/abis/oml-mo-sitemgr.msc
@@ -0,0 +1,17 @@
+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"];
+}
diff --git a/doc/manuals/abis/oml-mo-transceiver.msc b/doc/manuals/abis/oml-mo-transceiver.msc
new file mode 100644
index 00000000..d40e7cc0
--- /dev/null
+++ b/doc/manuals/abis/oml-mo-transceiver.msc
@@ -0,0 +1,23 @@
+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)"];
+}
diff --git a/doc/manuals/abis/oml-startup.msc b/doc/manuals/abis/oml-startup.msc
new file mode 100644
index 00000000..de5d0392
--- /dev/null
+++ b/doc/manuals/abis/oml-startup.msc
@@ -0,0 +1,34 @@
+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"];
+}
diff --git a/doc/manuals/abis/oml-startup2.msc b/doc/manuals/abis/oml-startup2.msc
new file mode 100644
index 00000000..8a97e124
--- /dev/null
+++ b/doc/manuals/abis/oml-startup2.msc
@@ -0,0 +1,50 @@
+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"];
+}
diff --git a/doc/manuals/abis/oml-startup3.msc b/doc/manuals/abis/oml-startup3.msc
new file mode 100644
index 00000000..c1fffd2c
--- /dev/null
+++ b/doc/manuals/abis/oml-startup3.msc
@@ -0,0 +1,51 @@
+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)"];
+}
diff --git a/doc/manuals/abis/oml.adoc b/doc/manuals/abis/oml.adoc
new file mode 100644
index 00000000..4afcec04
--- /dev/null
+++ b/doc/manuals/abis/oml.adoc
@@ -0,0 +1,950 @@
+== 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.
+
diff --git a/doc/manuals/abis/rsl-startup-pri.msc b/doc/manuals/abis/rsl-startup-pri.msc
new file mode 100644
index 00000000..a4798df9
--- /dev/null
+++ b/doc/manuals/abis/rsl-startup-pri.msc
@@ -0,0 +1,22 @@
+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"];
+ ...;
+}
diff --git a/doc/manuals/abis/rsl-startup-sec.msc b/doc/manuals/abis/rsl-startup-sec.msc
new file mode 100644
index 00000000..d961412b
--- /dev/null
+++ b/doc/manuals/abis/rsl-startup-sec.msc
@@ -0,0 +1,16 @@
+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"];
+ ...;
+}
diff --git a/doc/manuals/abis/rsl-tch-rtp.msc b/doc/manuals/abis/rsl-tch-rtp.msc
new file mode 100644
index 00000000..55228b48
--- /dev/null
+++ b/doc/manuals/abis/rsl-tch-rtp.msc
@@ -0,0 +1,56 @@
+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"];
+}
diff --git a/doc/manuals/abis/rsl.adoc b/doc/manuals/abis/rsl.adoc
new file mode 100644
index 00000000..33ae26d6
--- /dev/null
+++ b/doc/manuals/abis/rsl.adoc
@@ -0,0 +1,944 @@
+== 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.
+
diff --git a/doc/manuals/abis/rtp.adoc b/doc/manuals/abis/rtp.adoc
new file mode 100644
index 00000000..dde56515
--- /dev/null
+++ b/doc/manuals/abis/rtp.adoc
@@ -0,0 +1,33 @@
+== 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
+|===