mirror of
https://gitea.osmocom.org/cellular-infrastructure/osmo-bts.git
synced 2025-11-17 04:11:42 +00:00
Compare commits
489 Commits
0.8.1
...
keith/lc15
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
9192c6c6c2 | ||
|
|
ae4d85d891 | ||
|
|
dbb5addf7d | ||
|
|
e2f9d0eabe | ||
|
|
4e07b83a64 | ||
|
|
f1efd727fb | ||
|
|
e36fbca15f | ||
|
|
5914d76d5c | ||
|
|
cb4340b8a4 | ||
|
|
58d79e88ad | ||
|
|
6a5039674f | ||
|
|
3f35ab258d | ||
|
|
f9e7ccce27 | ||
|
|
2b948a3d17 | ||
|
|
1f932689fc | ||
|
|
7364ef15d9 | ||
|
|
24f98a0df9 | ||
|
|
6ea3b28321 | ||
|
|
eba074e081 | ||
|
|
5184576572 | ||
|
|
ac61baed2e | ||
|
|
aea29c7249 | ||
|
|
52d7eafcea | ||
|
|
cb69d607c9 | ||
|
|
d4f67591c7 | ||
|
|
8969adc5d9 | ||
|
|
a0403d3769 | ||
|
|
e7d835ca8c | ||
|
|
113712c728 | ||
|
|
e5711efbb5 | ||
|
|
f9115ae67a | ||
|
|
b54f1bf122 | ||
|
|
ee8f4b0a91 | ||
|
|
24e702b7d0 | ||
|
|
66c17cfc2d | ||
|
|
a2392f0f9e | ||
|
|
e1766f1b7d | ||
|
|
7544f5a45b | ||
|
|
99ba515985 | ||
|
|
397a43c38a | ||
|
|
e571fd60e6 | ||
|
|
80f9b84a64 | ||
|
|
bd3eabc13e | ||
|
|
6bb700e9d2 | ||
|
|
e3a4530919 | ||
|
|
0d8cd8ce39 | ||
|
|
3cb61d902c | ||
|
|
a070e863e2 | ||
|
|
1d9f6efccb | ||
|
|
522fc939e0 | ||
|
|
595eb576fc | ||
|
|
5c5ad3cb4a | ||
|
|
ae5e1d7110 | ||
|
|
19857fbdaa | ||
|
|
8a98255fb5 | ||
|
|
b37b3263a9 | ||
|
|
c693067b7e | ||
|
|
d0a2caa021 | ||
|
|
38c12e9df9 | ||
|
|
2149b0ff47 | ||
|
|
f0e66d90f8 | ||
|
|
e717aec2f7 | ||
|
|
869091011c | ||
|
|
18bfa91a26 | ||
|
|
e5e1226301 | ||
|
|
d8d459c7e2 | ||
|
|
d93669289b | ||
|
|
80f2bc4855 | ||
|
|
000b13ef52 | ||
|
|
a9d88af594 | ||
|
|
132987daf4 | ||
|
|
3533c3f6ad | ||
|
|
725b3158e2 | ||
|
|
5a60287e44 | ||
|
|
1e9d4feba5 | ||
|
|
a456f2bd15 | ||
|
|
be1651bb51 | ||
|
|
e4abc63e42 | ||
|
|
583f2b86c9 | ||
|
|
fc5f20a713 | ||
|
|
b378fccef1 | ||
|
|
b58fb35754 | ||
|
|
8ff35d3c91 | ||
|
|
5fee4d1ff5 | ||
|
|
a4c54b531c | ||
|
|
df51be6329 | ||
|
|
d73832bc35 | ||
|
|
2cbdeba5cf | ||
|
|
43a8ed2b55 | ||
|
|
d8284eec63 | ||
|
|
eb43c947c1 | ||
|
|
29e47ffc20 | ||
|
|
d7103f9172 | ||
|
|
91fc2b9e30 | ||
|
|
e83c1196b8 | ||
|
|
1c6a56fb97 | ||
|
|
dc4d36d7bb | ||
|
|
b6be055e6b | ||
|
|
ca574b19d3 | ||
|
|
9e1f0e1a13 | ||
|
|
96cb0c54a9 | ||
|
|
4b72ee924c | ||
|
|
520954cd93 | ||
|
|
accbf5bc73 | ||
|
|
972c243146 | ||
|
|
41c7b05283 | ||
|
|
0772cd0460 | ||
|
|
df5b813c0f | ||
|
|
76837bddb7 | ||
|
|
16da58d0c0 | ||
|
|
ccf9498865 | ||
|
|
35d4291a5e | ||
|
|
c91997b2cc | ||
|
|
474eeed78d | ||
|
|
a1f2b6931b | ||
|
|
b86e9260e8 | ||
|
|
3061e1d14a | ||
|
|
ec228cc08c | ||
|
|
e6a72c2b80 | ||
|
|
454b034521 | ||
|
|
9d5acaad5c | ||
|
|
af2a8a6c81 | ||
|
|
faf861b881 | ||
|
|
2588b2abf6 | ||
|
|
f53fde91a3 | ||
|
|
cb57028d52 | ||
|
|
fc917d91bf | ||
|
|
258856b329 | ||
|
|
ca8aa07127 | ||
|
|
f9e67f44d4 | ||
|
|
b4d8f5cf13 | ||
|
|
cb0cb897ad | ||
|
|
e8e864b219 | ||
|
|
89f06e6c54 | ||
|
|
160b624da8 | ||
|
|
291468694b | ||
|
|
e6372cff1b | ||
|
|
aa54224e56 | ||
|
|
4ff47ff39a | ||
|
|
b777c0f3ec | ||
|
|
9649a42d5a | ||
|
|
db6c786350 | ||
|
|
37ea11e072 | ||
|
|
33ed0f8876 | ||
|
|
2131a7931e | ||
|
|
af6f39025f | ||
|
|
1ea7fd0609 | ||
|
|
dc48fd8810 | ||
|
|
54e104496a | ||
|
|
01cc8c0d21 | ||
|
|
55dbafc497 | ||
|
|
139b8caa79 | ||
|
|
e059aa3db7 | ||
|
|
04e980dd10 | ||
|
|
7d1d294807 | ||
|
|
3f2283cd3c | ||
|
|
a99c41bac5 | ||
|
|
b06cd9f439 | ||
|
|
d1e7d0dafa | ||
|
|
b5c23092c7 | ||
|
|
f2271d0888 | ||
|
|
5b9212d6c5 | ||
|
|
876edd5e35 | ||
|
|
5a3eb6470d | ||
|
|
46d62b984a | ||
|
|
1ff0a2addd | ||
|
|
8ea9ba6af8 | ||
|
|
b24ef23570 | ||
|
|
01c539284e | ||
|
|
2dec9fff1c | ||
|
|
8576477de1 | ||
|
|
a52c78dd3e | ||
|
|
f6b6c48c8b | ||
|
|
aaca1217be | ||
|
|
8ec940ce9a | ||
|
|
9d083ab236 | ||
|
|
e50903df9d | ||
|
|
e05279a296 | ||
|
|
5abae93dad | ||
|
|
34711de016 | ||
|
|
1e96e31c10 | ||
|
|
347fea69a0 | ||
|
|
9ef6fa0798 | ||
|
|
0cb2829f17 | ||
|
|
dfa3bb8a10 | ||
|
|
b8265c63cc | ||
|
|
7f1b61df5f | ||
|
|
f2419bf8c3 | ||
|
|
03e3fae639 | ||
|
|
095654d361 | ||
|
|
b1a9a77727 | ||
|
|
839b0f264f | ||
|
|
bf5d8eed11 | ||
|
|
29aee05f75 | ||
|
|
b07e271994 | ||
|
|
482564b422 | ||
|
|
590b23ce3c | ||
|
|
d7be09caf8 | ||
|
|
57f9a279e0 | ||
|
|
519f588715 | ||
|
|
396dc59ae8 | ||
|
|
0f9595f462 | ||
|
|
067824841f | ||
|
|
89bfea63c9 | ||
|
|
5567d71d39 | ||
|
|
0b682f4997 | ||
|
|
dde2f1d5cf | ||
|
|
8294368b23 | ||
|
|
7240062b75 | ||
|
|
1873a30a4a | ||
|
|
bac9224b3b | ||
|
|
d96fd011d6 | ||
|
|
2f251843f9 | ||
|
|
ad7b8bee71 | ||
|
|
c6c2aa9ecd | ||
|
|
a7ee918284 | ||
|
|
5b1c1b2184 | ||
|
|
5f9e42a891 | ||
|
|
9354474b0f | ||
|
|
27ee75e4c0 | ||
|
|
038a1fa047 | ||
|
|
5efbd4e862 | ||
|
|
40b1b4b20d | ||
|
|
57e26c3e16 | ||
|
|
ab5eff60e1 | ||
|
|
19bd4f818d | ||
|
|
d16b69f29e | ||
|
|
43033e6923 | ||
|
|
d16322f5ed | ||
|
|
77b98d4a16 | ||
|
|
d1e9ded94d | ||
|
|
b873b91c5f | ||
|
|
ac3924e093 | ||
|
|
73d174e35f | ||
|
|
720971c6a0 | ||
|
|
620c74b7fe | ||
|
|
a89581b22d | ||
|
|
668d20cc1d | ||
|
|
45a8d4b2be | ||
|
|
41723e1508 | ||
|
|
945c09381d | ||
|
|
a5a03d6b35 | ||
|
|
891ba1568a | ||
|
|
c49df5d144 | ||
|
|
749b878eb1 | ||
|
|
2f5e7093bf | ||
|
|
dd7cc3cc7c | ||
|
|
7b96b8832f | ||
|
|
eac4d23421 | ||
|
|
a4332be9e9 | ||
|
|
6bc6d78b36 | ||
|
|
965b911583 | ||
|
|
708adf1a1f | ||
|
|
3dd90a09e4 | ||
|
|
fc17dc763f | ||
|
|
f748c4530c | ||
|
|
b509023d34 | ||
|
|
de3262fd27 | ||
|
|
5eddf98dfc | ||
|
|
b3fb33adea | ||
|
|
d8afcc143a | ||
|
|
6b5bbee25f | ||
|
|
546056c9c8 | ||
|
|
f3fa1d384d | ||
|
|
45b9021eb8 | ||
|
|
b3e7a888c9 | ||
|
|
3713b59368 | ||
|
|
f788aefe6f | ||
|
|
12d362fe09 | ||
|
|
fa8b9e2aa3 | ||
|
|
de9e2092c9 | ||
|
|
3933e930c3 | ||
|
|
906357c5e2 | ||
|
|
e160ac6ea5 | ||
|
|
96bded3ebd | ||
|
|
ccc7ba17c0 | ||
|
|
055c29bc6b | ||
|
|
e57a62deee | ||
|
|
268ba55a6e | ||
|
|
742dad5b69 | ||
|
|
02231177a9 | ||
|
|
893e499e0c | ||
|
|
3c89e2c36a | ||
|
|
9c9232c993 | ||
|
|
5c205639f1 | ||
|
|
3bf27cefbb | ||
|
|
e8ebbe300c | ||
|
|
e1dade0471 | ||
|
|
5a266511bf | ||
|
|
a4649308eb | ||
|
|
5c93677be5 | ||
|
|
5d9cb9f555 | ||
|
|
a4f5622408 | ||
|
|
3379250b51 | ||
|
|
719c6a9135 | ||
|
|
8564ececa5 | ||
|
|
17ffb08de0 | ||
|
|
fc88d8e7dc | ||
|
|
9c4a6facdb | ||
|
|
c606103d9f | ||
|
|
19ff607e99 | ||
|
|
11465b5ba1 | ||
|
|
26701bbe85 | ||
|
|
0133b65da1 | ||
|
|
b7eaf282dd | ||
|
|
473be4f89f | ||
|
|
9bcda3742d | ||
|
|
094b22ea82 | ||
|
|
035d209809 | ||
|
|
446f368fd0 | ||
|
|
0a421119c8 | ||
|
|
ea9d5b9499 | ||
|
|
2283831b64 | ||
|
|
eaef0af3a2 | ||
|
|
fa53c9eafe | ||
|
|
683b775c7a | ||
|
|
7000ef5dea | ||
|
|
3b835505bf | ||
|
|
8a1dfa0b77 | ||
|
|
f87f1113ca | ||
|
|
dd4160e003 | ||
|
|
08b14a2fac | ||
|
|
5fd42960d6 | ||
|
|
dbb4c0389e | ||
|
|
932f6753d1 | ||
|
|
a9b521e2cb | ||
|
|
d61b59bb18 | ||
|
|
d7f1457bed | ||
|
|
529c1f04cb | ||
|
|
8be01aac1e | ||
|
|
c1ac0d8b6a | ||
|
|
2c160a5dc4 | ||
|
|
a4683812ed | ||
|
|
8580b9717f | ||
|
|
236e9d575e | ||
|
|
3537fa6224 | ||
|
|
8b633e885b | ||
|
|
e332b4ca4e | ||
|
|
de954a1aa0 | ||
|
|
e834518123 | ||
|
|
9c74ccc4c8 | ||
|
|
2729bcfb93 | ||
|
|
ad4866b35f | ||
|
|
00d13cf84c | ||
|
|
00ad09612e | ||
|
|
e10b4d3713 | ||
|
|
51c04e0fd7 | ||
|
|
7a3ec76a2f | ||
|
|
c03c9c81fb | ||
|
|
47d5ba4012 | ||
|
|
a998d1040a | ||
|
|
8f1eae6642 | ||
|
|
b14f6569fd | ||
|
|
e61a2eb734 | ||
|
|
1454a2c752 | ||
|
|
bfb1257dce | ||
|
|
e0064a8d2a | ||
|
|
d7c4778aca | ||
|
|
f450f40c12 | ||
|
|
0078ba7af2 | ||
|
|
391c057769 | ||
|
|
524fdd3ac8 | ||
|
|
a6a18b66ee | ||
|
|
e3cb8715f5 | ||
|
|
47c8f37c9f | ||
|
|
3c12325d28 | ||
|
|
133a3d96dc | ||
|
|
52fdef79cc | ||
|
|
ecfb83d3cc | ||
|
|
faf501e432 | ||
|
|
70eb683622 | ||
|
|
07af4e1751 | ||
|
|
6dacc35c75 | ||
|
|
36a61df7a6 | ||
|
|
825797cfcb | ||
|
|
9d17840f83 | ||
|
|
fc2ff394e0 | ||
|
|
20284c4dbc | ||
|
|
0716a20f98 | ||
|
|
116ac855cc | ||
|
|
eebb6a4216 | ||
|
|
e5f4654ee3 | ||
|
|
2910b78305 | ||
|
|
9c75c387c0 | ||
|
|
ee9e8e9eb2 | ||
|
|
34018dd4c9 | ||
|
|
e6ce1718ae | ||
|
|
44bfa4c7fd | ||
|
|
2fb4a8d825 | ||
|
|
0bbc56b8f3 | ||
|
|
84f3ec644a | ||
|
|
36413548e0 | ||
|
|
2d21c9ff22 | ||
|
|
3ee09a47c1 | ||
|
|
173555dab7 | ||
|
|
2c1a46a2dd | ||
|
|
85485c3db4 | ||
|
|
eeba57652a | ||
|
|
4e3fdbc738 | ||
|
|
73dd4ff027 | ||
|
|
080302f870 | ||
|
|
b9f3e14ba6 | ||
|
|
9ce4d91948 | ||
|
|
b222f6666d | ||
|
|
6434ba9f90 | ||
|
|
c799c70c59 | ||
|
|
3c87f5c3ea | ||
|
|
3941cf4479 | ||
|
|
7c82b4a872 | ||
|
|
19795c5ab2 | ||
|
|
a8041edb5b | ||
|
|
5fceb9fc3a | ||
|
|
0c1ca01084 | ||
|
|
755088a79c | ||
|
|
27a86005f3 | ||
|
|
c78759055a | ||
|
|
6d701d0e05 | ||
|
|
8a6f6c5a16 | ||
|
|
65d3cc7753 | ||
|
|
17577b7c00 | ||
|
|
734eb40e72 | ||
|
|
cb01259804 | ||
|
|
386c33fa84 | ||
|
|
d9a1cd994c | ||
|
|
02d99db08b | ||
|
|
4280829dfa | ||
|
|
dcde6145bf | ||
|
|
cfc052743b | ||
|
|
0b6c1762c5 | ||
|
|
bd3462f355 | ||
|
|
bf87717cc8 | ||
|
|
9680a4746f | ||
|
|
fb70a2edda | ||
|
|
42495a156d | ||
|
|
324a3cd66e | ||
|
|
9b41b36e97 | ||
|
|
76c292ea5d | ||
|
|
510158256b | ||
|
|
1dcd63d36a | ||
|
|
9f5203d243 | ||
|
|
02c79f12a4 | ||
|
|
08062e6dcc | ||
|
|
0e11bea2a7 | ||
|
|
0b2893f6fc | ||
|
|
092e4e85b3 | ||
|
|
9bffa87c11 | ||
|
|
0ab50934d5 | ||
|
|
4553890d70 | ||
|
|
9feddb7edf | ||
|
|
b5a28bd967 | ||
|
|
829263afc4 | ||
|
|
1c3240c2f1 | ||
|
|
2222091560 | ||
|
|
5d17b97a5b | ||
|
|
6575f0c3e9 | ||
|
|
eee7247ebe | ||
|
|
ed9a13e670 | ||
|
|
20278252b5 | ||
|
|
e04e4d423d | ||
|
|
319b1d5bd7 | ||
|
|
a9a35419ed | ||
|
|
91e7bd7d30 | ||
|
|
a1f09d9105 | ||
|
|
500b7945f0 | ||
|
|
2cefb87a48 | ||
|
|
46491d15cd | ||
|
|
cf55fbede9 | ||
|
|
b7b5c4219c | ||
|
|
685ded1929 | ||
|
|
0257f52835 | ||
|
|
954e4d8321 | ||
|
|
9215f76443 | ||
|
|
70fb6d70b1 | ||
|
|
74fce9e12d | ||
|
|
ba3fa11ae2 | ||
|
|
5fd4aaaebb | ||
|
|
63051b96cc | ||
|
|
31b113774b | ||
|
|
d03f311406 | ||
|
|
f926d9549c | ||
|
|
db330522ea | ||
|
|
868c67fed3 | ||
|
|
a1a2556c2a | ||
|
|
ef1356c06c | ||
|
|
44a35902ad | ||
|
|
f1e2d08022 | ||
|
|
ae3da5f8c3 | ||
|
|
19080d531f | ||
|
|
5a0f85d00b |
17
.gitignore
vendored
17
.gitignore
vendored
@@ -47,6 +47,11 @@ src/osmo-bts-octphy/osmo-bts-octphy
|
|||||||
src/osmo-bts-virtual/osmo-bts-virtual
|
src/osmo-bts-virtual/osmo-bts-virtual
|
||||||
src/osmo-bts-omldummy/osmo-bts-omldummy
|
src/osmo-bts-omldummy/osmo-bts-omldummy
|
||||||
|
|
||||||
|
src/osmo-bts-oc2g/osmo-bts-oc2g
|
||||||
|
src/osmo-bts-oc2g/oc2gbts-mgr
|
||||||
|
src/osmo-bts-oc2g/oc2gbts-util
|
||||||
|
src/osmo-bts-oc2g/misc/.dirstamp
|
||||||
|
|
||||||
tests/atconfig
|
tests/atconfig
|
||||||
tests/package.m4
|
tests/package.m4
|
||||||
tests/agch/agch_test
|
tests/agch/agch_test
|
||||||
@@ -57,6 +62,7 @@ tests/meas/meas_test
|
|||||||
tests/misc/misc_test
|
tests/misc/misc_test
|
||||||
tests/handover/handover_test
|
tests/handover/handover_test
|
||||||
tests/tx_power/tx_power_test
|
tests/tx_power/tx_power_test
|
||||||
|
tests/ta_control/ta_control_test
|
||||||
tests/testsuite
|
tests/testsuite
|
||||||
tests/testsuite.log
|
tests/testsuite.log
|
||||||
|
|
||||||
@@ -80,3 +86,14 @@ debian/osmo-bts-trx-dbg/
|
|||||||
debian/osmo-bts-trx/
|
debian/osmo-bts-trx/
|
||||||
debian/tmp/
|
debian/tmp/
|
||||||
/tests/power/power_test
|
/tests/power/power_test
|
||||||
|
|
||||||
|
# manuals
|
||||||
|
doc/manuals/*.html
|
||||||
|
doc/manuals/*.svg
|
||||||
|
doc/manuals/*.pdf
|
||||||
|
doc/manuals/*__*.png
|
||||||
|
doc/manuals/*.check
|
||||||
|
doc/manuals/generated/
|
||||||
|
doc/manuals/osmomsc-usermanual.xml
|
||||||
|
doc/manuals/common
|
||||||
|
doc/manuals/build
|
||||||
|
|||||||
12
Makefile.am
12
Makefile.am
@@ -1,19 +1,17 @@
|
|||||||
AUTOMAKE_OPTIONS = foreign dist-bzip2 1.6
|
AUTOMAKE_OPTIONS = foreign dist-bzip2 1.6
|
||||||
|
|
||||||
SUBDIRS = include src tests
|
SUBDIRS = include src tests doc contrib
|
||||||
|
|
||||||
|
|
||||||
# package the contrib and doc
|
# package the contrib and doc
|
||||||
EXTRA_DIST = \
|
EXTRA_DIST = \
|
||||||
contrib/dump_docs.py contrib/screenrc-l1fwd contrib/osmo-bts-sysmo.service \
|
contrib/dump_docs.py \
|
||||||
contrib/l1fwd.init contrib/screenrc-sysmobts contrib/respawn.sh \
|
|
||||||
doc/examples/sysmo/osmo-bts.cfg \
|
|
||||||
doc/examples/sysmo/sysmobts-mgr.cfg \
|
|
||||||
doc/examples/virtual/openbsc-virtual.cfg \
|
|
||||||
doc/examples/virtual/osmobts-virtual.cfg \
|
|
||||||
git-version-gen .version \
|
git-version-gen .version \
|
||||||
README.md
|
README.md
|
||||||
|
|
||||||
|
AM_DISTCHECK_CONFIGURE_FLAGS = \
|
||||||
|
--with-systemdsystemunitdir=$$dc_install_base/$(systemdsystemunitdir)
|
||||||
|
|
||||||
@RELMAKE@
|
@RELMAKE@
|
||||||
|
|
||||||
BUILT_SOURCES = $(top_srcdir)/.version
|
BUILT_SOURCES = $(top_srcdir)/.version
|
||||||
|
|||||||
12
README.md
12
README.md
@@ -20,7 +20,7 @@ Several kinds of BTS hardware are supported:
|
|||||||
* sysmocom sysmoBTS
|
* sysmocom sysmoBTS
|
||||||
* Octasic octphy
|
* Octasic octphy
|
||||||
* Nutaq litecell 1.5
|
* Nutaq litecell 1.5
|
||||||
* software-defined radio based osmo-bts-trx (e.g. USRP B210, UmTRX)
|
* software-defined radio based osmo-bts-trx (e.g. USRP B210, UmTRX, LimeSDR)
|
||||||
|
|
||||||
Homepage
|
Homepage
|
||||||
--------
|
--------
|
||||||
@@ -45,7 +45,7 @@ We provide a
|
|||||||
as well as a
|
as well as a
|
||||||
[VTY Reference Manual](http://ftp.osmocom.org/docs/latest/osmobsc-vty-reference.pdf)
|
[VTY Reference Manual](http://ftp.osmocom.org/docs/latest/osmobsc-vty-reference.pdf)
|
||||||
and a
|
and a
|
||||||
[Abis refrence MAnual](http://ftp.osmocom.org/docs/latest/osmobts-abis.pdf)
|
[Abis reference MAnual](http://ftp.osmocom.org/docs/latest/osmobts-abis.pdf)
|
||||||
describing the OsmoBTS specific A-bis dialect.
|
describing the OsmoBTS specific A-bis dialect.
|
||||||
|
|
||||||
Mailing List
|
Mailing List
|
||||||
@@ -117,11 +117,3 @@ osmo-bts-octphy
|
|||||||
* no clear indication of nominal transmit power, various power related
|
* no clear indication of nominal transmit power, various power related
|
||||||
computations are likely off
|
computations are likely off
|
||||||
* no OML attribute validation during bts_model_check_oml()
|
* no OML attribute validation during bts_model_check_oml()
|
||||||
|
|
||||||
osmo-bts-trx
|
|
||||||
------------
|
|
||||||
|
|
||||||
* TCH/F_PDCH cannel not working as voice (https://osmocom.org/issues/1865)
|
|
||||||
* No BER value delivered to OsmoPCU (https://osmocom.org/issues/1855)
|
|
||||||
* No 11bit RACH support (https://osmocom.org/issues/1854)
|
|
||||||
* No CBCH support (https://osmocom.org/issues/1617)
|
|
||||||
|
|||||||
110
configure.ac
110
configure.ac
@@ -62,15 +62,14 @@ then
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
dnl checks for libraries
|
dnl checks for libraries
|
||||||
PKG_CHECK_MODULES(LIBOSMOCORE, libosmocore >= 0.11.0)
|
PKG_CHECK_MODULES(LIBOSMOCORE, libosmocore >= 1.3.0)
|
||||||
PKG_CHECK_MODULES(LIBOSMOVTY, libosmovty >= 0.11.0)
|
PKG_CHECK_MODULES(LIBOSMOVTY, libosmovty >= 1.3.0)
|
||||||
PKG_CHECK_MODULES(LIBOSMOGSM, libosmogsm >= 0.11.0)
|
PKG_CHECK_MODULES(LIBOSMOGSM, libosmogsm >= 1.3.0)
|
||||||
PKG_CHECK_MODULES(LIBOSMOCTRL, libosmoctrl >= 0.11.0)
|
PKG_CHECK_MODULES(LIBOSMOCTRL, libosmoctrl >= 1.3.0)
|
||||||
PKG_CHECK_MODULES(LIBOSMOCODEC, libosmocodec >= 0.11.0)
|
PKG_CHECK_MODULES(LIBOSMOCODEC, libosmocodec >= 1.3.0)
|
||||||
PKG_CHECK_MODULES(LIBOSMOCODING, libosmocoding >= 0.11.0)
|
PKG_CHECK_MODULES(LIBOSMOCODING, libosmocoding >= 1.3.0)
|
||||||
PKG_CHECK_MODULES(LIBOSMOABIS, libosmoabis >= 0.5.0)
|
PKG_CHECK_MODULES(LIBOSMOABIS, libosmoabis >= 0.6.0)
|
||||||
PKG_CHECK_MODULES(LIBOSMOTRAU, libosmotrau >= 0.5.0)
|
PKG_CHECK_MODULES(LIBOSMOTRAU, libosmotrau >= 0.6.0)
|
||||||
PKG_CHECK_MODULES(ORTP, ortp)
|
|
||||||
|
|
||||||
AC_MSG_CHECKING([whether to enable support for sysmobts calibration tool])
|
AC_MSG_CHECKING([whether to enable support for sysmobts calibration tool])
|
||||||
AC_ARG_ENABLE(sysmobts-calib,
|
AC_ARG_ENABLE(sysmobts-calib,
|
||||||
@@ -250,6 +249,13 @@ if test "$enable_octphy" = "yes" ; then
|
|||||||
[],
|
[],
|
||||||
[#include <octphy/octvc1/hw/octvc1_hw_api.h>])
|
[#include <octphy/octvc1/hw/octvc1_hw_api.h>])
|
||||||
|
|
||||||
|
AC_CHECK_MEMBER([tOCTVC1_GSM_MSG_OVERSAMPLE_SELECT_16X_MODIFY_CMD.ulOversample16xEnableFlag],
|
||||||
|
AC_DEFINE([OCTPHY_USE_16X_OVERSAMPLING],
|
||||||
|
[1],
|
||||||
|
[Define to 1 if your octphy header files support 16x oversampling]),
|
||||||
|
[],
|
||||||
|
[#include <octphy/octvc1/gsm/octvc1_gsm_api.h>])
|
||||||
|
|
||||||
CPPFLAGS=$oldCPPFLAGS
|
CPPFLAGS=$oldCPPFLAGS
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@@ -273,6 +279,85 @@ if test "$enable_litecell15" = "yes"; then
|
|||||||
CPPFLAGS=$oldCPPFLAGS
|
CPPFLAGS=$oldCPPFLAGS
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
AC_MSG_CHECKING([whether to enable NuRAN Wireless OC-2G hardware support])
|
||||||
|
AC_ARG_ENABLE(oc2g,
|
||||||
|
AC_HELP_STRING([--enable-oc2g],
|
||||||
|
[enable code for NuRAN Wireless OC-2G bts [default=no]]),
|
||||||
|
[enable_oc2g="yes"],[enable_oc2g="no"])
|
||||||
|
AC_ARG_WITH([oc2g], [AS_HELP_STRING([--with-oc2g=INCLUDE_DIR], [Location of the OC-2G API header files])],
|
||||||
|
[oc2g_incdir="$withval"],[oc2g_incdir="$incdir"])
|
||||||
|
AC_SUBST([OC2G_INCDIR], -I$oc2g_incdir)
|
||||||
|
AC_MSG_RESULT([$enable_oc2g])
|
||||||
|
AM_CONDITIONAL(ENABLE_OC2GBTS, test "x$enable_oc2g" = "xyes")
|
||||||
|
if test "$enable_oc2g" = "yes"; then
|
||||||
|
oldCPPFLAGS=$CPPFLAGS
|
||||||
|
CPPFLAGS="$CPPFLAGS $OC2G_INCDIR -I$srcdir/include"
|
||||||
|
AC_CHECK_HEADER([nrw/oc2g/oc2g.h],[],
|
||||||
|
[AC_MSG_ERROR([nrw/oc2g/oc2g.h can not be found in $oc2g_incdir])],
|
||||||
|
[#include <nrw/oc2g/oc2g.h>])
|
||||||
|
PKG_CHECK_MODULES(LIBSYSTEMD, libsystemd)
|
||||||
|
PKG_CHECK_MODULES(LIBGPS, libgps)
|
||||||
|
CPPFLAGS=$oldCPPFLAGS
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Generate manuals
|
||||||
|
AC_ARG_ENABLE(manuals,
|
||||||
|
[AS_HELP_STRING(
|
||||||
|
[--enable-manuals],
|
||||||
|
[Generate manual PDFs [default=no]],
|
||||||
|
)],
|
||||||
|
[osmo_ac_build_manuals=$enableval], [osmo_ac_build_manuals="no"])
|
||||||
|
AM_CONDITIONAL([BUILD_MANUALS], [test x"$osmo_ac_build_manuals" = x"yes"])
|
||||||
|
AC_ARG_VAR(OSMO_GSM_MANUALS_DIR, [path to common osmo-gsm-manuals files, overriding pkg-config and "../osmo-gsm-manuals"
|
||||||
|
fallback])
|
||||||
|
if test x"$osmo_ac_build_manuals" = x"yes"
|
||||||
|
then
|
||||||
|
# Find OSMO_GSM_MANUALS_DIR (env, pkg-conf, fallback)
|
||||||
|
if test -n "$OSMO_GSM_MANUALS_DIR"; then
|
||||||
|
echo "checking for OSMO_GSM_MANUALS_DIR... $OSMO_GSM_MANUALS_DIR (from env)"
|
||||||
|
else
|
||||||
|
OSMO_GSM_MANUALS_DIR="$($PKG_CONFIG osmo-gsm-manuals --variable=osmogsmmanualsdir 2>/dev/null)"
|
||||||
|
if test -n "$OSMO_GSM_MANUALS_DIR"; then
|
||||||
|
echo "checking for OSMO_GSM_MANUALS_DIR... $OSMO_GSM_MANUALS_DIR (from pkg-conf)"
|
||||||
|
else
|
||||||
|
OSMO_GSM_MANUALS_DIR="../osmo-gsm-manuals"
|
||||||
|
echo "checking for OSMO_GSM_MANUALS_DIR... $OSMO_GSM_MANUALS_DIR (fallback)"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
if ! test -d "$OSMO_GSM_MANUALS_DIR"; then
|
||||||
|
AC_MSG_ERROR("OSMO_GSM_MANUALS_DIR does not exist! Install osmo-gsm-manuals or set OSMO_GSM_MANUALS_DIR.")
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Find and run check-depends
|
||||||
|
CHECK_DEPENDS="$OSMO_GSM_MANUALS_DIR/check-depends.sh"
|
||||||
|
if ! test -x "$CHECK_DEPENDS"; then
|
||||||
|
CHECK_DEPENDS="osmo-gsm-manuals-check-depends"
|
||||||
|
fi
|
||||||
|
if ! $CHECK_DEPENDS; then
|
||||||
|
AC_MSG_ERROR("missing dependencies for --enable-manuals")
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Put in Makefile with absolute path
|
||||||
|
OSMO_GSM_MANUALS_DIR="$(realpath "$OSMO_GSM_MANUALS_DIR")"
|
||||||
|
AC_SUBST([OSMO_GSM_MANUALS_DIR])
|
||||||
|
fi
|
||||||
|
|
||||||
|
# https://www.freedesktop.org/software/systemd/man/daemon.html
|
||||||
|
AC_ARG_WITH([systemdsystemunitdir],
|
||||||
|
[AS_HELP_STRING([--with-systemdsystemunitdir=DIR], [Directory for systemd service files])],,
|
||||||
|
[with_systemdsystemunitdir=auto])
|
||||||
|
AS_IF([test "x$with_systemdsystemunitdir" = "xyes" -o "x$with_systemdsystemunitdir" = "xauto"], [
|
||||||
|
def_systemdsystemunitdir=$($PKG_CONFIG --variable=systemdsystemunitdir systemd)
|
||||||
|
|
||||||
|
AS_IF([test "x$def_systemdsystemunitdir" = "x"],
|
||||||
|
[AS_IF([test "x$with_systemdsystemunitdir" = "xyes"],
|
||||||
|
[AC_MSG_ERROR([systemd support requested but pkg-config unable to query systemd package])])
|
||||||
|
with_systemdsystemunitdir=no],
|
||||||
|
[with_systemdsystemunitdir="$def_systemdsystemunitdir"])])
|
||||||
|
AS_IF([test "x$with_systemdsystemunitdir" != "xno"],
|
||||||
|
[AC_SUBST([systemdsystemunitdir], [$with_systemdsystemunitdir])])
|
||||||
|
AM_CONDITIONAL([HAVE_SYSTEMD], [test "x$with_systemdsystemunitdir" != "xno"])
|
||||||
|
|
||||||
AC_MSG_RESULT([CFLAGS="$CFLAGS"])
|
AC_MSG_RESULT([CFLAGS="$CFLAGS"])
|
||||||
AC_MSG_RESULT([CPPFLAGS="$CPPFLAGS"])
|
AC_MSG_RESULT([CPPFLAGS="$CPPFLAGS"])
|
||||||
|
|
||||||
@@ -285,6 +370,7 @@ AC_OUTPUT(
|
|||||||
src/osmo-bts-omldummy/Makefile
|
src/osmo-bts-omldummy/Makefile
|
||||||
src/osmo-bts-sysmo/Makefile
|
src/osmo-bts-sysmo/Makefile
|
||||||
src/osmo-bts-litecell15/Makefile
|
src/osmo-bts-litecell15/Makefile
|
||||||
|
src/osmo-bts-oc2g/Makefile
|
||||||
src/osmo-bts-trx/Makefile
|
src/osmo-bts-trx/Makefile
|
||||||
src/osmo-bts-octphy/Makefile
|
src/osmo-bts-octphy/Makefile
|
||||||
include/Makefile
|
include/Makefile
|
||||||
@@ -296,7 +382,13 @@ AC_OUTPUT(
|
|||||||
tests/sysmobts/Makefile
|
tests/sysmobts/Makefile
|
||||||
tests/misc/Makefile
|
tests/misc/Makefile
|
||||||
tests/handover/Makefile
|
tests/handover/Makefile
|
||||||
|
tests/ta_control/Makefile
|
||||||
tests/tx_power/Makefile
|
tests/tx_power/Makefile
|
||||||
tests/power/Makefile
|
tests/power/Makefile
|
||||||
tests/meas/Makefile
|
tests/meas/Makefile
|
||||||
|
doc/Makefile
|
||||||
|
doc/examples/Makefile
|
||||||
|
doc/manuals/Makefile
|
||||||
|
contrib/Makefile
|
||||||
|
contrib/systemd/Makefile
|
||||||
Makefile)
|
Makefile)
|
||||||
|
|||||||
1
contrib/Makefile.am
Normal file
1
contrib/Makefile.am
Normal file
@@ -0,0 +1 @@
|
|||||||
|
SUBDIRS = systemd
|
||||||
@@ -10,7 +10,7 @@ env = os.environ
|
|||||||
env['L1FWD_BTS_HOST'] = '127.0.0.1'
|
env['L1FWD_BTS_HOST'] = '127.0.0.1'
|
||||||
|
|
||||||
bts_proc = subprocess.Popen(["./src/osmo-bts-sysmo/sysmobts-remote",
|
bts_proc = subprocess.Popen(["./src/osmo-bts-sysmo/sysmobts-remote",
|
||||||
"-c", "./doc/examples/sysmo/osmo-bts.cfg"], env = env,
|
"-c", "./doc/examples/sysmo/osmo-bts-sysmo.cfg"], env = env,
|
||||||
stdin=None, stdout=None)
|
stdin=None, stdout=None)
|
||||||
time.sleep(1)
|
time.sleep(1)
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,14 @@
|
|||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
# this is a dispatcher script which will call the bts-model-specific
|
# jenkins build helper script for osmo-bts. This is how we build on jenkins.osmocom.org
|
||||||
# script based on the bts model specified as command line argument
|
#
|
||||||
|
# environment variables:
|
||||||
|
# * FIRMWARE_VERSION: which firmware version to build ("master", "femtobts_v2.7", ...)
|
||||||
|
# * WITH_MANUALS: build manual PDFs if set to "1"
|
||||||
|
# * PUBLISH: upload manuals after building if set to "1" (ignored without WITH_MANUALS = "1")
|
||||||
|
#
|
||||||
|
# usage: jenkins_bts_model.sh BTS_MODEL
|
||||||
|
# * BTS_MODEL: which BTS model specific script to run ("sysmo", "oct", ...)
|
||||||
|
#
|
||||||
|
|
||||||
bts_model="$1"
|
bts_model="$1"
|
||||||
|
|
||||||
@@ -30,6 +38,10 @@ case "$bts_model" in
|
|||||||
./contrib/jenkins_lc15.sh
|
./contrib/jenkins_lc15.sh
|
||||||
;;
|
;;
|
||||||
|
|
||||||
|
oc2g)
|
||||||
|
./contrib/jenkins_oc2g.sh
|
||||||
|
;;
|
||||||
|
|
||||||
trx)
|
trx)
|
||||||
./contrib/jenkins_bts_trx.sh
|
./contrib/jenkins_bts_trx.sh
|
||||||
;;
|
;;
|
||||||
|
|||||||
@@ -14,9 +14,9 @@ osmo-build-dep.sh libosmo-abis
|
|||||||
cd "$deps"
|
cd "$deps"
|
||||||
|
|
||||||
configure_flags="\
|
configure_flags="\
|
||||||
--with-osmo-pcu=$deps/osmo-pcu/include \
|
|
||||||
--enable-trx \
|
|
||||||
--enable-sanitize \
|
--enable-sanitize \
|
||||||
|
--enable-werror \
|
||||||
|
--enable-trx \
|
||||||
"
|
"
|
||||||
|
|
||||||
build_bts "osmo-bts-trx" "$configure_flags"
|
build_bts "osmo-bts-trx" "$configure_flags"
|
||||||
|
|||||||
@@ -38,10 +38,25 @@ build_bts() {
|
|||||||
osmo-deps.sh libosmocore
|
osmo-deps.sh libosmocore
|
||||||
cd $base
|
cd $base
|
||||||
shift
|
shift
|
||||||
|
|
||||||
|
# Manuals: build
|
||||||
conf_flags="$*"
|
conf_flags="$*"
|
||||||
|
if [ "$WITH_MANUALS" = "1" ]; then
|
||||||
|
conf_flags="$conf_flags --enable-manuals"
|
||||||
|
osmo-build-dep.sh osmo-gsm-manuals
|
||||||
|
export PATH="$inst/bin:$PATH"
|
||||||
|
fi
|
||||||
|
|
||||||
autoreconf --install --force
|
autoreconf --install --force
|
||||||
./configure $conf_flags
|
./configure $conf_flags
|
||||||
$MAKE $PARALLEL_MAKE
|
$MAKE $PARALLEL_MAKE
|
||||||
$MAKE check || cat-testlogs.sh
|
$MAKE check || cat-testlogs.sh
|
||||||
DISTCHECK_CONFIGURE_FLAGS="$conf_flags" $MAKE distcheck || cat-testlogs.sh
|
DISTCHECK_CONFIGURE_FLAGS="$conf_flags" $MAKE distcheck || cat-testlogs.sh
|
||||||
|
|
||||||
|
# Manuals: publish
|
||||||
|
if [ "$WITH_MANUALS" = "1" ] && [ "$PUBLISH" = "1" ]; then
|
||||||
|
$MAKE -C "$base/doc/manuals" publish
|
||||||
|
fi
|
||||||
|
|
||||||
|
$MAKE maintainer-clean
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -14,7 +14,11 @@ osmo-build-dep.sh libosmo-abis
|
|||||||
cd "$deps"
|
cd "$deps"
|
||||||
osmo-layer1-headers.sh lc15 "$FIRMWARE_VERSION"
|
osmo-layer1-headers.sh lc15 "$FIRMWARE_VERSION"
|
||||||
|
|
||||||
configure_flags="--enable-sanitize --with-litecell15=$deps/layer1-headers/inc/ --enable-litecell15"
|
configure_flags="\
|
||||||
|
--enable-sanitize \
|
||||||
|
--with-litecell15=$deps/layer1-headers/inc/ \
|
||||||
|
--enable-litecell15 \
|
||||||
|
"
|
||||||
|
|
||||||
build_bts "osmo-bts-lc15" "$configure_flags"
|
build_bts "osmo-bts-lc15" "$configure_flags"
|
||||||
|
|
||||||
|
|||||||
25
contrib/jenkins_oc2g.sh
Executable file
25
contrib/jenkins_oc2g.sh
Executable file
@@ -0,0 +1,25 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
# jenkins build helper script for osmo-bts-oc2g
|
||||||
|
|
||||||
|
# shellcheck source=contrib/jenkins_common.sh
|
||||||
|
. $(dirname "$0")/jenkins_common.sh
|
||||||
|
|
||||||
|
osmo-build-dep.sh libosmocore "" --disable-doxygen
|
||||||
|
|
||||||
|
export PKG_CONFIG_PATH="$inst/lib/pkgconfig:$PKG_CONFIG_PATH"
|
||||||
|
export LD_LIBRARY_PATH="$inst/lib"
|
||||||
|
|
||||||
|
osmo-build-dep.sh libosmo-abis
|
||||||
|
|
||||||
|
cd "$deps"
|
||||||
|
osmo-layer1-headers.sh oc2g "$FIRMWARE_VERSION"
|
||||||
|
|
||||||
|
configure_flags="\
|
||||||
|
--enable-sanitize \
|
||||||
|
--with-oc2g=$deps/layer1-headers/inc/ \
|
||||||
|
--enable-oc2g \
|
||||||
|
"
|
||||||
|
|
||||||
|
build_bts "osmo-bts-oc2g" "$configure_flags"
|
||||||
|
|
||||||
|
osmo-clean-workspace.sh
|
||||||
@@ -14,7 +14,12 @@ osmo-build-dep.sh libosmo-abis
|
|||||||
cd "$deps"
|
cd "$deps"
|
||||||
osmo-layer1-headers.sh oct "$FIRMWARE_VERSION"
|
osmo-layer1-headers.sh oct "$FIRMWARE_VERSION"
|
||||||
|
|
||||||
configure_flags="--enable-sanitize --with-octsdr-2g=$deps/layer1-headers/ --enable-octphy"
|
configure_flags="\
|
||||||
|
--enable-sanitize \
|
||||||
|
--enable-werror \
|
||||||
|
--with-octsdr-2g=$deps/layer1-headers/ \
|
||||||
|
--enable-octphy \
|
||||||
|
"
|
||||||
|
|
||||||
build_bts "osmo-bts-octphy" "$configure_flags"
|
build_bts "osmo-bts-octphy" "$configure_flags"
|
||||||
|
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ cd "$deps"
|
|||||||
osmo-layer1-headers.sh oct "$FIRMWARE_VERSION"
|
osmo-layer1-headers.sh oct "$FIRMWARE_VERSION"
|
||||||
|
|
||||||
configure_flags="\
|
configure_flags="\
|
||||||
--with-osmo-pcu=$deps/osmo-pcu/include \
|
--enable-werror \
|
||||||
--with-octsdr-2g=$deps/layer1-headers/ \
|
--with-octsdr-2g=$deps/layer1-headers/ \
|
||||||
--enable-octphy \
|
--enable-octphy \
|
||||||
--enable-trx \
|
--enable-trx \
|
||||||
|
|||||||
@@ -16,7 +16,12 @@ osmo-layer1-headers.sh sysmo "$FIRMWARE_VERSION"
|
|||||||
mkdir -p "$inst/include/sysmocom/femtobts"
|
mkdir -p "$inst/include/sysmocom/femtobts"
|
||||||
ln -s $deps/layer1-headers/include/* "$inst/include/sysmocom/femtobts/"
|
ln -s $deps/layer1-headers/include/* "$inst/include/sysmocom/femtobts/"
|
||||||
|
|
||||||
configure_flags="--enable-sanitize --enable-sysmocom-bts --with-sysmobts=$inst/include/"
|
configure_flags="\
|
||||||
|
--enable-sanitize \
|
||||||
|
--enable-werror \
|
||||||
|
--enable-sysmocom-bts \
|
||||||
|
--with-sysmobts=$inst/include/ \
|
||||||
|
"
|
||||||
|
|
||||||
# This will not work for the femtobts
|
# This will not work for the femtobts
|
||||||
if [ $FIRMWARE_VERSION != "femtobts_v2.7" ]; then
|
if [ $FIRMWARE_VERSION != "femtobts_v2.7" ]; then
|
||||||
|
|||||||
@@ -1,31 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
### BEGIN INIT INFO
|
|
||||||
# Provides: l1fwd
|
|
||||||
# Required-Start:
|
|
||||||
# Required-Stop: $local_fs
|
|
||||||
# Default-Start: 5
|
|
||||||
# Default-Stop: 0 6
|
|
||||||
# Short-Description: Start screen session with l1fwd software
|
|
||||||
# Description:
|
|
||||||
### END INIT INFO
|
|
||||||
|
|
||||||
. /etc/default/rcS
|
|
||||||
|
|
||||||
case "$1" in
|
|
||||||
start)
|
|
||||||
/usr/bin/screen -d -m -c /etc/osmocom/screenrc-l1fwd
|
|
||||||
;;
|
|
||||||
stop)
|
|
||||||
echo "This script doesn't support stop"
|
|
||||||
exit 1
|
|
||||||
;;
|
|
||||||
restart|reload|force-reload)
|
|
||||||
exit 0
|
|
||||||
;;
|
|
||||||
show)
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
echo "Usage: sysmobts {start|stop|show|reload|restart}" >&2
|
|
||||||
exit 1
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
@@ -1,13 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
|
|
||||||
PID=$$
|
|
||||||
echo "-1000" > /proc/$PID/oom_score_adj
|
|
||||||
|
|
||||||
trap "{ kill 0; kill -2 0; }" EXIT
|
|
||||||
|
|
||||||
while [ -f $1 ]; do
|
|
||||||
(echo "0" > /proc/self/oom_score_adj && exec nice -n -20 $*) &
|
|
||||||
LAST_PID=$!
|
|
||||||
wait $LAST_PID
|
|
||||||
sleep 10s
|
|
||||||
done
|
|
||||||
@@ -1,18 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
|
|
||||||
PID=$$
|
|
||||||
echo "-1000" > /proc/$PID/oom_score_adj
|
|
||||||
|
|
||||||
trap "kill 0" EXIT
|
|
||||||
|
|
||||||
while [ -e /etc/passwd ]; do
|
|
||||||
cat /lib/firmware/sysmobts-v?.bit > /dev/fpgadl_par0
|
|
||||||
sleep 2s
|
|
||||||
cat /lib/firmware/sysmobts-v?.out > /dev/dspdl_dm644x_0
|
|
||||||
sleep 1s
|
|
||||||
echo "0" > /sys/class/leds/activity_led/brightness
|
|
||||||
(echo "0" > /proc/self/oom_score_adj && exec nice -n -20 $*) &
|
|
||||||
LAST_PID=$!
|
|
||||||
wait $LAST_PID
|
|
||||||
sleep 10s
|
|
||||||
done
|
|
||||||
@@ -1,3 +0,0 @@
|
|||||||
chdir /tmp
|
|
||||||
screen -t BTS 0 /etc/osmocom/respawn.sh /usr/bin/l1fwd-proxy
|
|
||||||
detach
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
chdir /tmp
|
|
||||||
screen -t BTS 0 /etc/osmocom/respawn.sh /usr/bin/osmo-bts-sysmo -c /etc/osmocom/osmo-bts.cfg -r 1 -M
|
|
||||||
screen -t PCU 1 /etc/osmocom/respawn-only.sh /usr/bin/osmo-pcu -c /etc/osmocom/osmo-pcu.cfg -e
|
|
||||||
screen -t MGR 2 /etc/osmocom/respawn-only.sh /usr/bin/sysmobts-mgr -n -c /etc/osmocom/sysmobts-mgr.cfg
|
|
||||||
detach
|
|
||||||
@@ -1,20 +0,0 @@
|
|||||||
[Unit]
|
|
||||||
Description=sysmocom sysmoBTS
|
|
||||||
|
|
||||||
[Service]
|
|
||||||
Type=simple
|
|
||||||
ExecStartPre=/bin/sh -c 'echo 0 > /sys/class/leds/activity_led/brightness'
|
|
||||||
ExecStart=/usr/bin/osmo-bts-sysmo -s -c /etc/osmocom/osmo-bts.cfg -M
|
|
||||||
ExecStopPost=/bin/sh -c 'echo 0 > /sys/class/leds/activity_led/brightness'
|
|
||||||
ExecStopPost=/bin/sh -c 'cat /lib/firmware/sysmobts-v?.bit > /dev/fpgadl_par0 ; sleep 3s; cat /lib/firmware/sysmobts-v?.out > /dev/dspdl_dm644x_0; sleep 1s'
|
|
||||||
Restart=always
|
|
||||||
RestartSec=2
|
|
||||||
RestartPreventExitStatus=1
|
|
||||||
|
|
||||||
# The msg queues must be read fast enough
|
|
||||||
CPUSchedulingPolicy=rr
|
|
||||||
CPUSchedulingPriority=1
|
|
||||||
|
|
||||||
[Install]
|
|
||||||
WantedBy=multi-user.target
|
|
||||||
Alias=osmo-bts-sysmo.service
|
|
||||||
32
contrib/systemd/Makefile.am
Normal file
32
contrib/systemd/Makefile.am
Normal file
@@ -0,0 +1,32 @@
|
|||||||
|
EXTRA_DIST = \
|
||||||
|
lc15bts-mgr.service \
|
||||||
|
oc2gbts-mgr.service \
|
||||||
|
osmo-bts-lc15.service \
|
||||||
|
osmo-bts-oc2g.service \
|
||||||
|
osmo-bts-sysmo.service \
|
||||||
|
osmo-bts-trx.service \
|
||||||
|
osmo-bts-virtual.service \
|
||||||
|
sysmobts-mgr.service
|
||||||
|
|
||||||
|
if HAVE_SYSTEMD
|
||||||
|
SYSTEMD_SERVICES = osmo-bts-virtual.service
|
||||||
|
|
||||||
|
|
||||||
|
if ENABLE_SYSMOBTS
|
||||||
|
SYSTEMD_SERVICES += osmo-bts-sysmo.service sysmobts-mgr.service
|
||||||
|
endif
|
||||||
|
|
||||||
|
if ENABLE_TRX
|
||||||
|
SYSTEMD_SERVICES += osmo-bts-trx.service
|
||||||
|
endif
|
||||||
|
|
||||||
|
if ENABLE_LC15BTS
|
||||||
|
SYSTEMD_SERVICES += osmo-bts-lc15.service lc15bts-mgr.service
|
||||||
|
endif
|
||||||
|
|
||||||
|
if ENABLE_OC2GBTS
|
||||||
|
SYSTEMD_SERVICES += osmo-bts-oc2g.service oc2gbts-mgr.service
|
||||||
|
endif
|
||||||
|
|
||||||
|
systemdsystemunit_DATA = $(SYSTEMD_SERVICES)
|
||||||
|
endif # HAVE_SYSTEMD
|
||||||
29
contrib/systemd/oc2gbts-mgr.service
Normal file
29
contrib/systemd/oc2gbts-mgr.service
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
[Unit]
|
||||||
|
Description=osmo-bts manager for OC-2G
|
||||||
|
After=oc2g-sysdev-remap.service
|
||||||
|
Wants=oc2g-sysdev-remap.service
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
Type=simple
|
||||||
|
NotifyAccess=all
|
||||||
|
WatchdogSec=21780s
|
||||||
|
Restart=always
|
||||||
|
RestartSec=2
|
||||||
|
|
||||||
|
# Make sure directories and symbolic link exist
|
||||||
|
ExecStartPre=/bin/sh -c 'test -d /mnt/storage/var/run/oc2gbts-mgr || mkdir -p /mnt/storage/var/run/oc2gbts-mgr ; test -d /var/run/oc2gbts-mgr || ln -sf /mnt/storage/var/run/oc2gbts-mgr/ /var/run'
|
||||||
|
# Make sure BTS operation hour exist
|
||||||
|
ExecStartPre=/bin/sh -c 'test -f /mnt/storage/var/run/oc2gbts-mgr/hours-running || echo 0 > /mnt/storage/var/run/oc2gbts-mgr/hours-running'
|
||||||
|
# Shutdown all PA correctly
|
||||||
|
ExecStartPre=/bin/sh -c 'echo disabled > /var/oc2g/pa-state/pa0/state;'
|
||||||
|
#ExecStartPre=/bin/sh -c 'echo 0 > /var/oc2g/pa-supply/max_microvolts; echo 0 > /var/oc2g/pa-supply/min_microvolts'
|
||||||
|
|
||||||
|
ExecStart=/usr/bin/oc2gbts-mgr -s -c /etc/osmocom/oc2gbts-mgr.cfg
|
||||||
|
|
||||||
|
# Shutdown all PA correctly
|
||||||
|
ExecStopPost=/bin/sh -c 'echo disabled > /var/oc2g/pa-state/pa0/state;'
|
||||||
|
#ExecStopPost=/bin/sh -c 'echo 0 > /var/oc2g/pa-supply/max_microvolts; echo 0 > /var/oc2g/pa-supply/min_microvolts'
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=multi-user.target
|
||||||
|
Alias=osmo-bts-mgr.service
|
||||||
@@ -3,11 +3,8 @@ Description=osmo-bts for LC15 / sysmoBTS 2100
|
|||||||
|
|
||||||
[Service]
|
[Service]
|
||||||
Type=simple
|
Type=simple
|
||||||
ExecStartPre=/bin/sh -c 'echo 1 > /sys/class/leds/usr0/brightness'
|
ExecStart=/usr/bin/osmo-bts-lc15 -t 2 -s -c /etc/osmocom/osmo-bts-lc15.cfg -M
|
||||||
ExecStartPre=/bin/sh -c 'echo 1 > /sys/class/leds/usr1/brightness'
|
RuntimeDirectory=osmo-bts
|
||||||
ExecStart=/usr/bin/osmo-bts-lc15 -t 2 -s -c /etc/osmocom/osmo-bts.cfg -M
|
|
||||||
ExecStopPost=/bin/sh -c 'echo 1 > /sys/class/leds/usr0/brightness'
|
|
||||||
ExecStopPost=/bin/sh -c 'echo 0 > /sys/class/leds/usr1/brightness'
|
|
||||||
Restart=always
|
Restart=always
|
||||||
RestartSec=2
|
RestartSec=2
|
||||||
RestartPreventExitStatus=1
|
RestartPreventExitStatus=1
|
||||||
18
contrib/systemd/osmo-bts-oc2g.service
Normal file
18
contrib/systemd/osmo-bts-oc2g.service
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
[Unit]
|
||||||
|
Description=osmo-bts for OC-2G
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
Type=simple
|
||||||
|
ExecStart=/usr/bin/osmo-bts-oc2g -s -c /etc/osmocom/osmo-bts-oc2g.cfg -M
|
||||||
|
RuntimeDirectory=osmo-bts
|
||||||
|
Restart=always
|
||||||
|
RestartSec=2
|
||||||
|
RestartPreventExitStatus=1
|
||||||
|
|
||||||
|
# The msg queues must be read fast enough
|
||||||
|
CPUSchedulingPolicy=rr
|
||||||
|
CPUSchedulingPriority=1
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=multi-user.target
|
||||||
|
Alias=osmo-bts.service
|
||||||
@@ -4,7 +4,7 @@ Description=osmo-bts for sysmocom sysmoBTS
|
|||||||
[Service]
|
[Service]
|
||||||
Type=simple
|
Type=simple
|
||||||
ExecStartPre=/bin/sh -c 'echo 0 > /sys/class/leds/activity_led/brightness'
|
ExecStartPre=/bin/sh -c 'echo 0 > /sys/class/leds/activity_led/brightness'
|
||||||
ExecStart=/usr/bin/osmo-bts-sysmo -s -c /etc/osmocom/osmo-bts.cfg -M
|
ExecStart=/usr/bin/osmo-bts-sysmo -s -c /etc/osmocom/osmo-bts-sysmo.cfg -M
|
||||||
ExecStopPost=/bin/sh -c 'echo 0 > /sys/class/leds/activity_led/brightness'
|
ExecStopPost=/bin/sh -c 'echo 0 > /sys/class/leds/activity_led/brightness'
|
||||||
ExecStopPost=/bin/sh -c 'cat /lib/firmware/sysmobts-v?.bit > /dev/fpgadl_par0 ; sleep 3s; cat /lib/firmware/sysmobts-v?.out > /dev/dspdl_dm644x_0; sleep 1s'
|
ExecStopPost=/bin/sh -c 'cat /lib/firmware/sysmobts-v?.bit > /dev/fpgadl_par0 ; sleep 3s; cat /lib/firmware/sysmobts-v?.out > /dev/dspdl_dm644x_0; sleep 1s'
|
||||||
Restart=always
|
Restart=always
|
||||||
@@ -3,7 +3,7 @@ Description=Osmocom osmo-bts for osmo-trx
|
|||||||
|
|
||||||
[Service]
|
[Service]
|
||||||
Type=simple
|
Type=simple
|
||||||
ExecStart=/usr/bin/osmo-bts-trx -s -c /etc/osmocom/osmo-bts.cfg
|
ExecStart=/usr/bin/osmo-bts-trx -s -c /etc/osmocom/osmo-bts-trx.cfg
|
||||||
Restart=always
|
Restart=always
|
||||||
RestartSec=2
|
RestartSec=2
|
||||||
|
|
||||||
532
debian/changelog
vendored
532
debian/changelog
vendored
@@ -1,3 +1,535 @@
|
|||||||
|
osmo-bts (1.2.0) unstable; urgency=medium
|
||||||
|
|
||||||
|
[ Oliver Smith ]
|
||||||
|
* Cosmetic: virtual: l1sap.c: fix typos
|
||||||
|
* virtual: set link quality for GSMTAP_CHANNEL_RACH
|
||||||
|
* pcu_sock: fix endian-swapped CellID
|
||||||
|
* gitignore: add oc2g generated files
|
||||||
|
* log: set L1 SAPI log context
|
||||||
|
* vty: add "logging filter l1-sapi"
|
||||||
|
* vty.c: don't ignore get_string_value() errors
|
||||||
|
* vty.c: avoid coverity BAD_SHIFT issues
|
||||||
|
* osmo-bts-virtual.cfg: ms-power-control dsp -> osmo
|
||||||
|
|
||||||
|
[ Harald Welte ]
|
||||||
|
* ETWS Primary Notification via P1 Rest Octets
|
||||||
|
* pcu_interface: Forward ETWS Primary Notification to PCU
|
||||||
|
* doc: Update Abis manual RSL section with ETWS related infomration
|
||||||
|
* osmo-bts-trx/scheduler: prevent uninitialized memory access
|
||||||
|
* osmo-bts-trx: migrate to new generic ECU abstraction
|
||||||
|
* rach_pass_filter(): Add information about channel type
|
||||||
|
|
||||||
|
[ Vadim Yanitskiy ]
|
||||||
|
* common/rsl.c: fix possible NULL-pointer dereference
|
||||||
|
* osmo-bts-trx/scheduler: fix tx_tch_common(): do not send AMR BFI twice
|
||||||
|
* osmo-bts-trx/scheduler: add FIXME note about FACCH/H and BFI
|
||||||
|
* osmo-bts-trx/scheduler: fix: check rc of osmo_ecu_frame_out()
|
||||||
|
* scheduler: fix handling of PTCCH/U and PTCCH/D logical channels
|
||||||
|
* osmo-bts-trx/scheduler: also detect TSC for Access Bursts on PDCH
|
||||||
|
* common/l1sap: increase ToA precision for packet Access Bursts
|
||||||
|
* L1SAP: use RSL_CHAN_* definitions from libosmogsm
|
||||||
|
* L1SAP: also consider RSL_CHAN_OSMO_CBCH8 as CBCH
|
||||||
|
* L1SAP: clarify debug messages in rach_pass_filter()
|
||||||
|
* L1SAP: do not pass unused parameter to l1sap_handover_rach()
|
||||||
|
* L1SAP: refactor handling of Access Bursts on PDCH
|
||||||
|
* L1SAP: properly handle 11-bit encoded RACH.ind in gsmtap_ph_rach()
|
||||||
|
* L1SAP: use the actual ARFCN for outgoing PCUIF messages
|
||||||
|
* L1SAP: fix gsmtap_pdch(): there can be no DATA.ind on PTCCH/U
|
||||||
|
* L1SAP: use GSMTAP_CHANNEL_PDTCH for PDTCH blocks by default
|
||||||
|
* L1SAP: there can be no DATA.ind primitives on PTCCH/U, reject them
|
||||||
|
* README.md: update osmo-bts-trx specific limitations
|
||||||
|
* osmo-bts-trx/scheduler: fix: print the last frame number in rx_data_fn()
|
||||||
|
* osmo-bts-trx: general handling of NOPE / IDLE indications
|
||||||
|
* osmo-bts-trx/trx_if.c: fix: always initialize bi->burst_len for NOPE.ind
|
||||||
|
* osmo-bts-trx/trx_if.c: also print both RSSI and ToA256 for NOPE.ind
|
||||||
|
* osmo-bts-trx/trx_if.c: fix: NOPE.ind also contains C/I field
|
||||||
|
* pcuif_proto.h: extend RACH.ind with TRX and timeslot number fields
|
||||||
|
* common/vty.c: fix: properly assert() the result of get_string_value()
|
||||||
|
* common/abis.c: pass gsm_bts_trx to e1inp_sign_link_create()
|
||||||
|
* common/abis.c: use tall_bts_ctx as talloc-context for libosmo_abis_init()
|
||||||
|
* osmo-bts-trx/vty: ensure backwards compatibility with older config files
|
||||||
|
|
||||||
|
[ Pau Espin Pedrol ]
|
||||||
|
* bts-trx: Log case where no SETFORMAT is sent
|
||||||
|
* bts-trx: Change super verbose IDLE ind not-supported line to DEBUG
|
||||||
|
* doc: bts-models.adoc: Fix typos in rts-advance section
|
||||||
|
* bts-trx: vty: Use API to get poweron state
|
||||||
|
* bts.h: Remove non-existent function definitions
|
||||||
|
* scheduler.c: Move some message log level to DEBUG
|
||||||
|
* scheduler: Use OSMO_ASSERT instead of abort
|
||||||
|
* l1sap: Log conn dropped due to radio link counter timeout
|
||||||
|
* struct gsm_bts: Add model_priv pointer handing bts_model specific data
|
||||||
|
* bts-trx: Allocate struct osmo_trx_clock_state as part of bts-trx private data
|
||||||
|
* bts-trx: vty: Print phy link state in cmd 'show transceiver'
|
||||||
|
* bts-trx: trx_set_bts(): Avoid double loop by checking current trx
|
||||||
|
* bts-trx: Rework code handling poweron state
|
||||||
|
* bts-trx: Don't reset transceiver_available in scheduler_trx.c
|
||||||
|
* bts-trx: Get rid of messy transceiver_available state handler
|
||||||
|
* bts-trx: Drop unused func check_transceiver_availability()
|
||||||
|
* bts-trx: Log TRXC and TRXD socket recv()/send() failures
|
||||||
|
* bts-trx: Time out if no clock ind recvd after RSP POWERON
|
||||||
|
* cosmetic: bts-trx: document variable power level
|
||||||
|
* bts-trx: loops.c: Take into account RSL CHAN ACT ms power level limits
|
||||||
|
* loops.h: Fix missing include for struct l1sched_trx
|
||||||
|
* power_control.c: Take into account RSL CHAN ACT ms power level limits
|
||||||
|
* cosmetic: l1sap.c: Fix typo
|
||||||
|
* rsl: Assign recv pwr to lchan's max ms power
|
||||||
|
* bts-trx: Implement MS Power control loop calculations using dBm instead of ctl levels
|
||||||
|
* rsl: Fix logged value in rx MS Power Control
|
||||||
|
* cosmetic: Fix trailing whitespace
|
||||||
|
* Change gsm_bts_trx field to bool and rename it
|
||||||
|
* Change gsm_lchan field fixed to bool
|
||||||
|
* rsl: Remove unneeded duplicate reset on some lchan fields
|
||||||
|
* Move and rename gsm_lchan.ms_power field
|
||||||
|
* bts-trx: loops.c: Avoid always clamping MS power to MS power class 1
|
||||||
|
* power_control.c: Apply latests improvements from loops.c
|
||||||
|
* power_control.c: Log rx current and target signal levels
|
||||||
|
* power_control.c: Fix ms pwr ctrl skipped if MS doesn't support announced MS Power Level
|
||||||
|
* Introduce BTS feature BTS_FEAT_MS_PWR_CTRL_DSP
|
||||||
|
* power_control.c: Don't use announced MS Power level as input for loop calculations
|
||||||
|
* power_control.c: Limit speed of announced MS Power Level value changes
|
||||||
|
* scheduler_trx.c: cast ptrdiff value to fix printf format
|
||||||
|
* bts-trx: Drop low layer MS Power Control Loop algo
|
||||||
|
* rsl_rx_chan_act: Apply bitmask when parsing IE MS_POWER
|
||||||
|
* rsl: Clarify when autnonoums MS Power Ctrl Loop is used
|
||||||
|
* power_control.c: Log maximum allowed MS Power Level
|
||||||
|
* power_control.c: Clarify loop algo vars and use correct ones during log
|
||||||
|
* l1sap: is_fille_frame(): verify len of data compared
|
||||||
|
|
||||||
|
[ Martin Hauke ]
|
||||||
|
* Fix common misspellings and typos
|
||||||
|
* Rename variable: CALIB_SUCESS -> CALIB_SUCCESS
|
||||||
|
|
||||||
|
[ Philipp Maier ]
|
||||||
|
* scheduler_trx: use gsm0502_fn_remap() to calculate frame number
|
||||||
|
* scheduler_trx: initalize n_errors, n_bursts_bits, n_bits_total
|
||||||
|
* scheduler_trx.c: avoid division by zero when calculating BER
|
||||||
|
* rsl: ensure measurement reports are sent
|
||||||
|
* l1sap.c: ensure ms power control loop is running
|
||||||
|
|
||||||
|
-- Pau Espin Pedrol <pespin@sysmocom.de> Fri, 03 Jan 2020 17:18:44 +0100
|
||||||
|
|
||||||
|
osmo-bts (1.1.0) unstable; urgency=medium
|
||||||
|
|
||||||
|
[ Daniel Willmann ]
|
||||||
|
* Rename oc2g config file to match new naming scheme
|
||||||
|
* dump_docs: Use new config file naming scheme
|
||||||
|
* systemd: Install OC2G service files with autotools
|
||||||
|
* doc/examples: Install OC2G config files with autotools
|
||||||
|
* osmo-bts-oc2g: Fix status LED responsibilities
|
||||||
|
* osmo-bts-lc15: Change LED behaviour to be the same as oc2g
|
||||||
|
* manuals: Add script to regenerate counter/vty documentation
|
||||||
|
* manuals: Add counter documentation
|
||||||
|
* manuals: Update vty documentation
|
||||||
|
|
||||||
|
[ Harald Welte ]
|
||||||
|
* Bump version: 0.8.1.199-5c93-dirty → 1.0.0
|
||||||
|
* scheduler_trx: Fix erroneous multiply-by-four
|
||||||
|
* OML: some more comments on what functions do
|
||||||
|
* OML: Return attributes in ACK/NACK messages
|
||||||
|
* OML: Ensure MOs are initialized with valid "Administrative State'
|
||||||
|
* OML: Don't overwrite MO instance before oml_tx_failure_event_rep()
|
||||||
|
* OML: remove double-logging on oml_tx_failure_event_rep()
|
||||||
|
* OML: send proper OML alerts in case of errors
|
||||||
|
* OML: Reduce code duplication in down_mom/down_fom
|
||||||
|
* OML: Report short messages even for invalid TRX numbers in down_fom()
|
||||||
|
* OML: Use 'const struct abis_oml_mo *' whenever users only read
|
||||||
|
* OML: Reject segmented OML messages
|
||||||
|
* OML: Properly reject short messages and truncate over-long messages
|
||||||
|
* OML: Work around OsmoBSC sending "GET ATTRIBUTES" with short length
|
||||||
|
* OML: Store merged attributes of IPA OML Managed Objects
|
||||||
|
* OML: Don't advertise baseband transceiver as UNLOCKED at startup
|
||||||
|
* OC-2G: Nominal transmit power is 25 dBm, not 40
|
||||||
|
* rsl.c: Add missing #include of gsm0808.h
|
||||||
|
* Forward GPRS SUSPEND REQ from DCCH to PCU socket
|
||||||
|
* handle NULL return from rate_ctr_group_alloc()
|
||||||
|
* rsl: Send RSL Error Report in case of unknown/unsupported msg_type
|
||||||
|
* rsl: Include Channel Nr and Link ID in Error reports whenever possible
|
||||||
|
* RSL: Reject RLL messages for lchans that are not active yet
|
||||||
|
* RSL: Fix off-by-one error when parsing SACCH INFO IE in RSL CHAN ACT
|
||||||
|
* cbch: Implement handling of "Schedule" message
|
||||||
|
* cbch: Refactor get_smscb_block() / remove smscb_msg.next_seg
|
||||||
|
* cbch: Log every RSL SMSCB COMMAND with type and number of blocks
|
||||||
|
* cbch: Implement support for DEFAULT message
|
||||||
|
* cbch: Fix memory leak and send error message on invalid SMSCB command
|
||||||
|
* cbch: Support Extended CBCH
|
||||||
|
* cbch: Keep SMSCB queue length counter
|
||||||
|
* manual: We now support RSL CBCH LOAD INDICATION
|
||||||
|
* manual: SMSCB BROADCAST COMMAND has no limitations anymore
|
||||||
|
* README.md: Mention LimeSDR as SDR device
|
||||||
|
* sysmo: Fix "nominal power" / BS power display in VTY
|
||||||
|
* cbch: Add counters; queue length limits and CBCH LOAD reporting
|
||||||
|
* cbch: Improve verbosity and extend logging; Always indicate BASIC/EXTD CBCH
|
||||||
|
* Use LOGPLCHAN whenever possible
|
||||||
|
* rsl.adoc: DELETE INDICATION is implemented since Feb '18
|
||||||
|
* RSL: Fix logic about fixed/dynamic MS power control in MS POWER COMMAND
|
||||||
|
* rsl: Implement parsing of BS Power Control message
|
||||||
|
* rsl: MS POWER COCNTROL isn't (only) about "forcing" power levels
|
||||||
|
* load_indication: Fix missing re-set of RACH parameters
|
||||||
|
* l1sap: Correctly count RACH slots in calc_exprd_rach_frames()
|
||||||
|
* l1sap: Fix calculation of expired RACH slots in case of missing frame numbers
|
||||||
|
* oml: Print more context from FOM Header or using MO
|
||||||
|
* oml: Have one generic log message for all transmitted messages
|
||||||
|
* Add severity to OML FAILURE EVENT REPORT
|
||||||
|
* Fix passing of RR SUSPEND REQ from DCCH to PCU socket
|
||||||
|
* clear GPRS indicator in SI3 while PCU is disconnected
|
||||||
|
* trx: Update documentation for fn-advance and rts-advance
|
||||||
|
* l1sap: Compute statistics on FN advance in PH-RTS.ind
|
||||||
|
* [correctly] use the LAPDm T200 values received via OML
|
||||||
|
* Update T200 timer default values
|
||||||
|
* lapdm: Use new libosmocore API to ensure per-channel-type N200 values
|
||||||
|
* sysmo/l1_if.c: Annotate fall-through in switch statement
|
||||||
|
* osmo-bts-trx: Don't increment rssi_valid_count twice
|
||||||
|
* osmo-bts-trx: Don't attemtp to adjust MS power if fixed
|
||||||
|
* scheduler_trx: Handle negative return of gsm0503_tch_hr_decode()
|
||||||
|
|
||||||
|
[ Vadim Yanitskiy ]
|
||||||
|
* common/vty.c: fix 'cfg_phy_no_inst_cmd' command description
|
||||||
|
* common/oml.c: fix: properly push abis_nm_ipa_magic
|
||||||
|
* common/pcu_sock.c: fix possible memleaks in pcu_sock_read()
|
||||||
|
* common/oml.c: constify argument 'trx' of handle_attrs_trx()
|
||||||
|
* common/oml.c: use proper NACK reason in oml_tx_attr_resp()
|
||||||
|
* common/oml.c: use proper OML object for Get Attribute Response
|
||||||
|
* common/oml.c: fix total length calculation in cleanup_attr_msg()
|
||||||
|
* common/l1sap.c: fix: add missing new line to a debug message
|
||||||
|
* common/rsl.c: fix size argument in memcmp() call
|
||||||
|
* common/rsl.c: fix unaligned pointers in rsl_add_rtp_stats()
|
||||||
|
* common/paging.c: fix unaligned pointer access
|
||||||
|
* common/oml.c: introduce and use both LOGPFOH and DEBUGPFOH
|
||||||
|
* common/oml.c: use proper format specifier for uint16_t
|
||||||
|
* common/oml.c: fix broken debug print in down_mom()
|
||||||
|
* common/oml.c: refactor Get Attribute Response message generation
|
||||||
|
* common/oml.c: fix: properly encode NM_ATT_SW_CONFIG
|
||||||
|
* osmo-bts-trx: distinguish 11-bit Access Bursts by synch. sequence
|
||||||
|
* osmo-bts-sysmo: fix: indicate BTS_FEAT_CBCH support on OML
|
||||||
|
* README.md: remove OS#1865 from 'Known limitations'
|
||||||
|
* common/rsl.c: fix NULL-pointer dereference in rsl_rx_rll()
|
||||||
|
* osmo-bts-trx/trx_if.c: dropping Tx bursts is a noticeable event
|
||||||
|
* osmo-bts-trx/l1_if.h: drop unused ho_rach_detect from trx_l1h
|
||||||
|
* osmo-bts/scheduler.h: cosmetic: use bool for ho_rach_detect
|
||||||
|
* common/rsl.c: RSL_IE_HANDO_REF is mandatory for handover CHAN ACT
|
||||||
|
* common/bts.c: bts_supports_cm(): take care about GSM48_CMODE_SIGN
|
||||||
|
* Use #define RSL_CHAN_RACH for RSL Channel Number of RACH
|
||||||
|
* common/scheduler.c: refactor description of TRXC_* lchans
|
||||||
|
* osmo-bts-trx/trx_if.c: use osmo_loadXXbe() for TDMA FN and ToA256
|
||||||
|
* osmo-bts-trx/trx_if.c: rename and clarify TRX_MAX_BURST_LEN
|
||||||
|
* osmo-bts-trx/trx_if.c: introduce TRXD header version handling
|
||||||
|
* osmo-bts-trx/trx_if.c: introduce TRXD header version 0x01 support
|
||||||
|
* osmo-bts-trx/trx_if.c: drop RSSI / ToA debugging code
|
||||||
|
* osmo-bts-trx/trx_if.c: properly describe TRXD messages in logs
|
||||||
|
* osmo-bts-trx/trx_if.c: add TRXD header version negotiation
|
||||||
|
* osmo-bts-trx/trx_if.c: encode actual TRXD header version
|
||||||
|
* osmo-bts-trx/scheduler: pass trx_ul_burst_ind to lchan handlers
|
||||||
|
* osmo-bts/scheduler: provide actual C/I values to OsmoPCU
|
||||||
|
* osmo-bts-trx/scheduler: rx_rach_fn(): use optional TSC info from TRX
|
||||||
|
* osmo-bts-trx/scheduler: rx_rach_fn(): clarify handover RACH handling
|
||||||
|
* osmo-bts-trx/scheduler: rx_rach_fn(): enrich debug message
|
||||||
|
* common/rsl.c: fix: properly handle SI3 Rest Octets
|
||||||
|
* Clarify and refactor link quality (C/I) handling
|
||||||
|
* Move Access Burst link quality handling to L1SAP
|
||||||
|
* osmo-bts-trx/scheduler: rx_rach_fn(): provide actual C/I ratio to L1SAP
|
||||||
|
* osmo-bts-trx/scheduler: rx_data_fn(): provide actual C/I ratio to L1SAP
|
||||||
|
|
||||||
|
[ Max ]
|
||||||
|
* osmo-bts-trx: add extended (11-bit) RACH support
|
||||||
|
* Log lchan kind on PCU-related error
|
||||||
|
* Enable statsd support
|
||||||
|
* Make gsm_pchan2chan_nr() static
|
||||||
|
* Constify pcu_rx_*() parameters
|
||||||
|
|
||||||
|
[ Philipp Maier ]
|
||||||
|
* scheduler_trx: use stored fn for pdtch data indications
|
||||||
|
* oc2g: remove unused define constant FACTORY_ROM_PATH
|
||||||
|
* lc15: remove unused define constant FACTORY_ROM_PATH
|
||||||
|
* oml: make oml_tx_failure_event_rep() public
|
||||||
|
* oc2gbts_mgr_vty: remove calls to vty_install_default()
|
||||||
|
* oc2g: l1if: delay trx initialization to avoid race condition
|
||||||
|
* oc2gbts_mgr: use msgb_talloc_ctx_init() instead of msgb_set_talloc_ctx()
|
||||||
|
* oc2g: generate failure event report in case of bad calibration
|
||||||
|
* oc2g: change log level for calibration file errors to FATAL
|
||||||
|
* vty: add function gsmnet_from_vty() to vty.h
|
||||||
|
* main: remove wrong call to oml_fail_rep() on SIGUSR1/2 and SIGABRT
|
||||||
|
* oml: use oml_tx_failure_event_rep() instead of oml_fail_rep()
|
||||||
|
* oml: use oml_tx_failure_event_rep() instead of signals to SS_FAIL
|
||||||
|
* l1_if: add include for missing header file
|
||||||
|
* oc2gbts_mgr_calib: don't use fsync() on *FILE pointer
|
||||||
|
* oc2gbts_mgr_calib: do not return NULL on integer function
|
||||||
|
* oc2gbts_mgr: use osmo_init_logging2() instead of osmo_init_logging()
|
||||||
|
* pcu_sock: use %zu conversion specifier for printing sizeof() result
|
||||||
|
|
||||||
|
[ Pau Espin Pedrol ]
|
||||||
|
* oc2g: Fix compilation error (comment mark inside comment)
|
||||||
|
* oc2g: Add get_hwversion_desc to header file
|
||||||
|
* oc2g: Cleanup of get_hwversion_desc
|
||||||
|
* oc2g: led_sleep_cb: pass correct ptr to llist_move_tail
|
||||||
|
* oc2g: fsync requires fd instead of file stream
|
||||||
|
* oc2g: Remove unused variables
|
||||||
|
* oc2g: Remove unused static function
|
||||||
|
* oc2g: vty: Compilation error fixes due to commented code
|
||||||
|
* contrib: Remove deprecated screen script helpers
|
||||||
|
* bts-trx: trx_if.c: Introduce logging macro LOGPPHI
|
||||||
|
* gsm_data_shared.h: Remove unused loc_list from struct gsm_bts
|
||||||
|
* bts: Bypass T200 DCCH values for CCCH
|
||||||
|
* bts-trx: Introduce VTY command osmotrx trxd-max-version
|
||||||
|
* trx: Use LOGPPHI instead of LOGP in some more messages
|
||||||
|
* Remove undefined param passed to {logging,osmo_stats}_vty_add_cmds
|
||||||
|
* configure.ac: Require libosmocore 1.2.0
|
||||||
|
|
||||||
|
[ Alexander Huemer ]
|
||||||
|
* Remove 11-bit RACH support from 'Known Limitations'
|
||||||
|
|
||||||
|
[ Oliver Smith ]
|
||||||
|
* debian: create -doc subpackage with pdf manuals
|
||||||
|
* Revert "debian: create -doc subpackage with pdf manuals"
|
||||||
|
* debian: create -doc subpackage with pdf manuals
|
||||||
|
* contrib/jenkins.sh: run "make maintainer-clean"
|
||||||
|
|
||||||
|
[ Neels Hofmeyr ]
|
||||||
|
* lc15,sysmo,oc2g: fix dsp-trace-flag command
|
||||||
|
|
||||||
|
[ Eric Wild ]
|
||||||
|
* revert changes to T200
|
||||||
|
* RSL: Fix fixed MS power control in RSL CHAN ACTIV
|
||||||
|
|
||||||
|
[ Thorsten Alteholz ]
|
||||||
|
* fix spelling stuff mentioned by lintian
|
||||||
|
|
||||||
|
-- Pau Espin Pedrol <pespin@sysmocom.de> Wed, 07 Aug 2019 15:59:02 +0200
|
||||||
|
|
||||||
|
osmo-bts (1.0.0) unstable; urgency=medium
|
||||||
|
|
||||||
|
[ Stefan Sperling ]
|
||||||
|
* let osmo-bts log a special notice if OML connection is closed early
|
||||||
|
* log reception of PCU_IF_MSG_PAG_REQ messages from osmo-pcu
|
||||||
|
* update sysinfo copies in all lchans upon SACCH FILL
|
||||||
|
* preserve lchan-specific SI overrides on SACCH FILL
|
||||||
|
* fix timespec subtraction in compute_elapsed_us()
|
||||||
|
* fix conditions for sending fill frames during RTS IND
|
||||||
|
* send TCH/F fill frames in DTX mode (WIP)
|
||||||
|
* Revert "send TCH/F fill frames in DTX mode (WIP)"
|
||||||
|
* prevent potential NULL dereference in virtbts's tx_tchh_fn
|
||||||
|
* properly initialize si3 in test_is_ccch_for_agch_setup()
|
||||||
|
* add missing check of osmo_wqueue_enqueue() return value
|
||||||
|
|
||||||
|
[ Harald Welte ]
|
||||||
|
* scheduler_trx: Add reminders to use libosmocore functions
|
||||||
|
* cosmetic: it's n_r in check_for_first_ciphrd(), not n_s
|
||||||
|
* Add min/max/std-dev measurement reporting for TOA256
|
||||||
|
* debian/rules: Don't overwrite .tarball-version
|
||||||
|
* CBCH: Fix rejecting SMS-CB related RSL messages
|
||||||
|
* [sysmo,lc15]: Consider CBCH channel combinations in chan_nr_by_sapi()
|
||||||
|
* CBCH: Move processing via L1SAP
|
||||||
|
* CBCH: Implement CBCH support for osmo-bts-{trx,virtual}
|
||||||
|
* CBCH: Use llist_first_entry_or_null() instead of reinventing it
|
||||||
|
* l1sap/scheduler: Consistently print chan_nr as hex number
|
||||||
|
* CBCH: Fix CBCH via L1SAP for osmo-bts-{sysmo,octphy,litecell15}
|
||||||
|
* get_lchan_by_chan_nr(): Fix resolution of CBCH
|
||||||
|
* CBCH: Add FIXME comments on queue overflow/underflow handling
|
||||||
|
* CBCH: sprinkle some OMSO_ASSERT() and guard against talloc failure
|
||||||
|
* CBCH: Fix CBCH implementation for osmo-bts-trx
|
||||||
|
* CBCH: Some more scheduler_mframe cleanup
|
||||||
|
* ensure all config file examples are well-formed
|
||||||
|
* lc15bts_mgr_vty: Ensure writing well-formed config files
|
||||||
|
* paging_test: Fix AGCH/PCH split test for second half of 102 multiframe
|
||||||
|
* Fix computing CCCH block number from frame number
|
||||||
|
* sysmo, virtual: properly handle BS-AG-BLKS-RES as received from BSC
|
||||||
|
* scheduler_trx.c: Switch to osmo_timerfd() of libosmocore >= 0.12.0
|
||||||
|
* initial checkin of manuals to public repo
|
||||||
|
* Add link to Asciidoc source code of manual
|
||||||
|
* spelling: message discriminator, not descriminator
|
||||||
|
* osmobts-abis: Add Revision log regarding dynamic cannels
|
||||||
|
* Documentation on AMR RTP in case of DTX
|
||||||
|
* rtp-amr.adoc: TCH/AFS Uplink
|
||||||
|
* rtp-amr.adoc: TCH/AFS Downlink: Inhibiting
|
||||||
|
* rtp-amr: TCH/AHS Uplink: FACCH/H During DTX
|
||||||
|
* rtp-amr.adoc: New TCH/AHS downlink chapters
|
||||||
|
* rtp-amr.adoc: Fixes to Message Sequence Charts
|
||||||
|
* update osmo-bts-virtual documentation, now that code is merged
|
||||||
|
* vty-ref: Update URI of docbook 5.0 schema
|
||||||
|
* osmo-bts-trx/loops.c: Add comments documenting TA + MS power control loop
|
||||||
|
* osmo-bts-trx/loops.[ch]: Make functions "void" if they always return 0
|
||||||
|
* osmo-bts-trx/loops.c: Use lchan name based logging
|
||||||
|
* osmo-bts-trx/loops.c: Make code control flow more readable
|
||||||
|
|
||||||
|
[ Philipp Maier ]
|
||||||
|
* rtp: make port range configurable, assign correct port numbers
|
||||||
|
* octphy: add support for 16x oversampling mode
|
||||||
|
* cosmetic: separate measurement testcase definitions
|
||||||
|
* cosmetic: unify measurement sample handling in one function
|
||||||
|
* measurement: make sure state is reset on chan act.
|
||||||
|
* measurement: make sure measurement interval end is detected
|
||||||
|
* measurement: fix measurement interval end detection
|
||||||
|
* osmo_mcast_sock: make sure SO_REUSEADDR is applied
|
||||||
|
* cosmetic: fix sourcecode formatting
|
||||||
|
* cosmetic: remove wrong comment
|
||||||
|
* measurement: add unit tests for is_meas_complete()
|
||||||
|
* measurement: fix sub frame table for TCH/H, SS1
|
||||||
|
* measurement: add unit tests for ts45008_83_is_sub()
|
||||||
|
* measurement: fix is_meas_overdue() and increase testcoverage
|
||||||
|
* cosmetic: rename *_meas_rep_fn10* to *_meas_rep_fn10*_by_*s
|
||||||
|
* cosmetic: test_is_meas_overdue() does not test is_meas_complete()
|
||||||
|
* measurement: substitue missing measurements
|
||||||
|
* measurement: add SUB measurements in test_lchan_meas_process_measurement
|
||||||
|
* paging: add unit-test to check different bs_ag_blks_res settings
|
||||||
|
* measurement: display fn_mod when measuremnet is added
|
||||||
|
* cosmetic: fix typo in comment
|
||||||
|
* measurement: remove missed interval end detection
|
||||||
|
* measurement: fix unit-test test_lchan_meas_process_measurement
|
||||||
|
|
||||||
|
[ Pau Espin Pedrol ]
|
||||||
|
* bts.c: Log name of RR msg type instead of value
|
||||||
|
* bts.c: Add missing include for gsm48_rr_msg_name
|
||||||
|
* bts_agch_enqueue: Decrease queue len hard_limit from 1000 to 100
|
||||||
|
* compact AGCH queue: Drop too msg diff than IMM_ASS_REJ
|
||||||
|
* Send DELETE_IND when dropping Imm Assign pending message
|
||||||
|
* lc15: Use correct type for hLayer1 field
|
||||||
|
* lc15: Fix incorrect cast of hLayer1
|
||||||
|
* pcu_sock: Log event pcu_sock created
|
||||||
|
* l1_if.c: Move decl of vars used in conditional macro
|
||||||
|
* sysmo: vty: Add missing include for lchan_deactivate
|
||||||
|
* sysmo: Fix memcmp in RF-MUTE.req for superfemto < 3.6.0
|
||||||
|
* sysmo: l1if_mute_rf: Declare vars inside ifdef section
|
||||||
|
* sysmo: l1_if.c: Avoid decl of unused vars and funcs with femtobts_v2.7 build
|
||||||
|
* sysmo: calib_file.c: Avoid decl of unused vars and funcs with femtobts_v2.7 build
|
||||||
|
* jenkins_*.sh: add --enable-werror to configure flags
|
||||||
|
* doc: Move calypsoBTS example into trx subdir
|
||||||
|
* build: Install example cfg files
|
||||||
|
* debian: Package installed example doc files
|
||||||
|
* Remove unneeded direct libortp dependency
|
||||||
|
* debian: Make osmo-bts-* packages conflict with old osmo-bts package
|
||||||
|
* debian: Create dbg package for osm-bts-virtual
|
||||||
|
* rsl: Use value_string to print encryption algo name
|
||||||
|
* l1sap: add_l1sap_header: Compact msgb_push ret assignment
|
||||||
|
* sched: Log RX->RTP packet like we do in add_l1sap_header
|
||||||
|
* scheduler: Log error on fn jump
|
||||||
|
* trx: scheduler: Keep RTP clock up to date while in DTXu pause
|
||||||
|
* Move systemd service to contrib/systemd
|
||||||
|
* Install systemd services with autotools
|
||||||
|
* Install sample cfg file to /etc/osmocom
|
||||||
|
* doc/examples/Makefile: Install bts-mgr cfg files used by systemd services
|
||||||
|
* lc15: vty: Add missing include for lchan_deactivate
|
||||||
|
* lc15: fsync requires fd instead of file stream
|
||||||
|
* lc15: rewrite and refactor code to print hwversion description
|
||||||
|
* lc15: led_sleep_cb: pass correct ptr to llist_move_tail
|
||||||
|
* abis: inp_s_cbfn: Improve logging signal related information
|
||||||
|
* lchan_meas_check_compute: Log value during incorrect num of SUB measurementes detected
|
||||||
|
* l1sap: Log name of chan_nr instead of hex value
|
||||||
|
* rsl_rx_chan-activ: Improve logging information
|
||||||
|
* gsm_pchan2chan_nr: Fix conversion of CCCH_LCHAN
|
||||||
|
* Convert lchan CCCH_LCHAN to chan_nr BCCH and viceversa
|
||||||
|
* {oc2g,sysmo}-mgr-calib: Fix build against gpsd >= 3.18
|
||||||
|
* bts: Allocate TRX for BTS dynamically, deprecate -t
|
||||||
|
* bts-trx: trx_if: Use struct to store CTRL msg parsed responses
|
||||||
|
* bts-trx: setup timer once at creation time
|
||||||
|
* common: Implement OML for trx_set_available(1)
|
||||||
|
* bts-trx: Allow re-try without exit if POWERON fails in osmo-trx
|
||||||
|
* bts: Fix TRX0 param initialization
|
||||||
|
* rsl: Log lchan state during dynts PDCH->TCH
|
||||||
|
* rsl: Avoid sending ipa PDCH DEACT NACK followed by ACK
|
||||||
|
* bts-trx: early return on POWERON success
|
||||||
|
* cosmetic: fix whitespace
|
||||||
|
* bts_model: Allow TS connect to be processed asynchronously
|
||||||
|
* OsmoBTS/chapters/configuration.adoc: Add bts index in example
|
||||||
|
* OsmoBTS: Update osmotrx ip to diff between local and remote
|
||||||
|
* rtp-amr: Describe requirement to recieve all PH-DATA.ind events
|
||||||
|
* rtp-amr: Fix typo and trailing whitespace
|
||||||
|
* Allow easily disabling GFDL references
|
||||||
|
* OsmoBTS: bts-models: Add Lime Microsystems devices as supported osmo-trx
|
||||||
|
* Introduce chapter trx_if.adoc and add it to OsmoTRX and OsmoBTS
|
||||||
|
* bts: Fix typo
|
||||||
|
* oc2g: Fix headers missing during make distcheck
|
||||||
|
* bts-trx: (n)ack PDCH DEACT only after TRX answered SETSLOT
|
||||||
|
* sysmobts_mgr: Prepare code for gpsd < 2.96 support
|
||||||
|
* sysmobts_mgr: Add support for gpsd < 2.96
|
||||||
|
* rsl: Send PDCH ACT NACK if TCH chan is still active
|
||||||
|
|
||||||
|
[ Vadim Yanitskiy ]
|
||||||
|
* Clarify frame loss counter for l1sched_chan_state
|
||||||
|
* osmo-bts-trx/l1_if.c: cosmetic: fix typo in debug msg
|
||||||
|
* common/rsl.c: tweak log message in lapdm_rll_tx_cb()
|
||||||
|
* contrib/jenkins_*.sh: drop rudimentary '--with-osmo-pcu'
|
||||||
|
* common/pcu_sock.c: cosmetic: explicitly address lchan
|
||||||
|
* common/scheduler.c: track TDMA frame loss per logical channels
|
||||||
|
* common/vty.c: fix deprecated osmo_str2lower() usage
|
||||||
|
* Fix deprecated gsm_arfcn2band(), use gsm_arfcn2band_rc()
|
||||||
|
|
||||||
|
[ Neels Hofmeyr ]
|
||||||
|
* cosmetic: abis.c: typo "exixt"
|
||||||
|
* fix ip.access dyn TS for osmo-bts-trx
|
||||||
|
* fix RSL Chan Mode Modif for dyn TS
|
||||||
|
* vty: mark 'rtp bind-ip' deprecated, not hidden
|
||||||
|
* Importing history from osmo-gsm-manuals
|
||||||
|
* OsmoBTS: typo x2 ('Objects Classes' -> 'Object Classes')
|
||||||
|
* OsmoBTS: fix typos, streamline language style
|
||||||
|
* OsmoBTS: s/content of this attribute/this attribute/
|
||||||
|
* OsmoBTS: explain IEs marked 'ignored' *and* 'Received'
|
||||||
|
* abis/oml.doc: remove duplicate sentence part
|
||||||
|
* OsmoBTS: typos
|
||||||
|
* OsmoBTS: wording tweak
|
||||||
|
* OsmoBTS: hardware support: remove dup, tweak wording
|
||||||
|
* Document dynamic channels on Abis, both IPA and Osmocom style
|
||||||
|
* OsmoBTS/abis/rsl: fix subtitle for ladder diagram of osmo dyn switchover
|
||||||
|
* OsmoBTS/abis/dyn_ts_osmocom_style.msc: adjust PDCH Act ack
|
||||||
|
* OsmoBTS/abis/rsl.adoc: fix missing section header
|
||||||
|
* OsmoBTS/chapters/dynamic-timeslots.adoc: Remove obsolete links
|
||||||
|
* osmobts-usermanual.adoc: fix link to abis.adoc chapter
|
||||||
|
* OsmoBTS/chapters/configuration.adoc: fix index numbering
|
||||||
|
* OsmoBTS/abis/rsl: cosmetic: 'IPA style'
|
||||||
|
* OsmoBTS/abis/rsl: add missing info for Osmocom Dyn Channels
|
||||||
|
* make clean: also remove generated image files
|
||||||
|
* add 'make check' target
|
||||||
|
* OsmoBTS/abis/rsl: combine separate dyn ts sections
|
||||||
|
* fix 'make clean': shell glob, ignore failure
|
||||||
|
* OsmoBTS/abis/rsl: split dyn TS ladder diagrams to fit on page
|
||||||
|
* fix build: abis: re-add dependencies
|
||||||
|
* dynamic timeslots: add BSC level config instructions
|
||||||
|
* refactor Makefile build rules, don't use the FORCE
|
||||||
|
|
||||||
|
[ Keith Whyte ]
|
||||||
|
* log: add error log for RSL Chan Mode Modif
|
||||||
|
* fix handling of odd pchans in bts_supports_cm()
|
||||||
|
|
||||||
|
[ Omar Ramadan ]
|
||||||
|
* Add OC-2G BTS sources
|
||||||
|
|
||||||
|
[ Max ]
|
||||||
|
* osmo-bts-trx: print TRX socket addresses in 'show transceiver'
|
||||||
|
* Fix type mismatch
|
||||||
|
* Drop unused function
|
||||||
|
* Add OsmoBTS control interface description
|
||||||
|
* Move RTP AMR doc to top level
|
||||||
|
* Add DTX implementation details to RTP AMR
|
||||||
|
* Sync DTX FSM with OsmoBTS code
|
||||||
|
|
||||||
|
[ Holger Hans Peter Freyther ]
|
||||||
|
* OsmoBTS: Fix the author name and mail address
|
||||||
|
|
||||||
|
[ Jonathan Brielmaier ]
|
||||||
|
* fix various typos across all manuals
|
||||||
|
|
||||||
|
[ Daniel Willmann ]
|
||||||
|
* Add section about configuring power-ramping
|
||||||
|
* OsmoBTS: Print VTY command in fixed-width font
|
||||||
|
* OsmoBTS: Fix typo
|
||||||
|
|
||||||
|
[ Alexander Couzens ]
|
||||||
|
* OsmoBTS: add vty reference documentation
|
||||||
|
* OsmoBTS: generate osmobts-abis.pdf again
|
||||||
|
|
||||||
|
[ Ivaylo Kostov ]
|
||||||
|
* BSC,BTS: add diagrams of PCU-BTS-NITB-SGSN relationships
|
||||||
|
|
||||||
|
[ Philipp ]
|
||||||
|
* Describe how to run multiple instances of osmo-nitb and osmo-bts
|
||||||
|
|
||||||
|
[ Oliver Smith ]
|
||||||
|
* build manuals moved here from osmo-gsm-manuals.git
|
||||||
|
* Fix DISTCHECK_CONFIGURE_FLAGS override
|
||||||
|
* contrib/jenkins_*.sh: build and publish manuals
|
||||||
|
* contrib: fix makedistcheck with disabled systemd
|
||||||
|
|
||||||
|
-- Harald Welte <laforge@gnumonks.org> Sun, 20 Jan 2019 21:13:37 +0100
|
||||||
|
|
||||||
osmo-bts (0.8.1) unstable; urgency=medium
|
osmo-bts (0.8.1) unstable; urgency=medium
|
||||||
|
|
||||||
[ Neels Hofmeyr ]
|
[ Neels Hofmeyr ]
|
||||||
|
|||||||
23
debian/control
vendored
23
debian/control
vendored
@@ -11,8 +11,8 @@ Build-Depends: debhelper (>= 9),
|
|||||||
libosmocore-dev,
|
libosmocore-dev,
|
||||||
libosmo-abis-dev,
|
libosmo-abis-dev,
|
||||||
libgps-dev,
|
libgps-dev,
|
||||||
libortp-dev,
|
txt2man,
|
||||||
txt2man
|
osmo-gsm-manuals-dev
|
||||||
Standards-Version: 3.9.8
|
Standards-Version: 3.9.8
|
||||||
Vcs-Browser: http://git.osmocom.org/osmo-bts/
|
Vcs-Browser: http://git.osmocom.org/osmo-bts/
|
||||||
Vcs-Git: git://git.osmocom.org/osmo-bts
|
Vcs-Git: git://git.osmocom.org/osmo-bts
|
||||||
@@ -20,6 +20,7 @@ Homepage: https://projects.osmocom.org/projects/osmobts
|
|||||||
|
|
||||||
Package: osmo-bts-trx
|
Package: osmo-bts-trx
|
||||||
Architecture: any
|
Architecture: any
|
||||||
|
Conflicts: osmo-bts
|
||||||
Depends: ${shlibs:Depends}, ${misc:Depends}
|
Depends: ${shlibs:Depends}, ${misc:Depends}
|
||||||
Description: osmo-bts-trx GSM BTS with osmo-trx
|
Description: osmo-bts-trx GSM BTS with osmo-trx
|
||||||
osmo-bts-trx to be used with the osmo-trx application
|
osmo-bts-trx to be used with the osmo-trx application
|
||||||
@@ -34,8 +35,26 @@ Description: Debug symbols for the osmo-bts-trx
|
|||||||
|
|
||||||
Package: osmo-bts-virtual
|
Package: osmo-bts-virtual
|
||||||
Architecture: any
|
Architecture: any
|
||||||
|
Conflicts: osmo-bts
|
||||||
Depends: ${shlibs:Depends}, ${misc:Depends}
|
Depends: ${shlibs:Depends}, ${misc:Depends}
|
||||||
Description: Virtual Osmocom GSM BTS (no RF hardware; GSMTAP/UDP)
|
Description: Virtual Osmocom GSM BTS (no RF hardware; GSMTAP/UDP)
|
||||||
This version of OsmoBTS doesn't use actual GSM PHY/Hardware/RF, but
|
This version of OsmoBTS doesn't use actual GSM PHY/Hardware/RF, but
|
||||||
utilizes GSMTAP-over-UDP frames for the Um interface. This is useful
|
utilizes GSMTAP-over-UDP frames for the Um interface. This is useful
|
||||||
in fully virtualized setups e.g. in combination with OsmocomBB virt_phy.
|
in fully virtualized setups e.g. in combination with OsmocomBB virt_phy.
|
||||||
|
|
||||||
|
Package: osmo-bts-virtual-dbg
|
||||||
|
Architecture: any
|
||||||
|
Section: debug
|
||||||
|
Priority: extra
|
||||||
|
Depends: osmo-bts-virtual (= ${binary:Version}), ${misc:Depends}
|
||||||
|
Description: Debug symbols for the osmo-bts-virtual
|
||||||
|
Make debugging possible
|
||||||
|
|
||||||
|
Package: osmo-bts-doc
|
||||||
|
Architecture: all
|
||||||
|
Section: doc
|
||||||
|
Priority: optional
|
||||||
|
Depends: ${misc:Depends}
|
||||||
|
Description: ${misc:Package} PDF documentation
|
||||||
|
Various manuals: user manual, VTY reference manual and/or
|
||||||
|
protocol/interface manuals.
|
||||||
|
|||||||
1
debian/osmo-bts-doc.install
vendored
Normal file
1
debian/osmo-bts-doc.install
vendored
Normal file
@@ -0,0 +1 @@
|
|||||||
|
usr/share/doc/osmo-bts-doc/*.pdf
|
||||||
4
debian/osmo-bts-trx.install
vendored
4
debian/osmo-bts-trx.install
vendored
@@ -1 +1,5 @@
|
|||||||
|
etc/osmocom/osmo-bts-trx.cfg
|
||||||
|
lib/systemd/system/osmo-bts-trx.service
|
||||||
usr/bin/osmo-bts-trx
|
usr/bin/osmo-bts-trx
|
||||||
|
usr/share/doc/osmo-bts/examples/osmo-bts-trx/osmo-bts-trx.cfg
|
||||||
|
usr/share/doc/osmo-bts/examples/osmo-bts-trx/osmo-bts-trx-calypso.cfg
|
||||||
|
|||||||
4
debian/osmo-bts-virtual.install
vendored
4
debian/osmo-bts-virtual.install
vendored
@@ -1,2 +1,6 @@
|
|||||||
|
etc/osmocom/osmo-bts-virtual.cfg
|
||||||
|
lib/systemd/system/osmo-bts-virtual.service
|
||||||
usr/bin/osmo-bts-virtual
|
usr/bin/osmo-bts-virtual
|
||||||
usr/bin/osmo-bts-omldummy
|
usr/bin/osmo-bts-omldummy
|
||||||
|
usr/share/doc/osmo-bts/examples/osmo-bts-virtual/osmo-bts-virtual.cfg
|
||||||
|
usr/share/doc/osmo-bts/examples/osmo-bts-virtual/openbsc-virtual.cfg
|
||||||
|
|||||||
12
debian/rules
vendored
12
debian/rules
vendored
@@ -12,14 +12,11 @@ export DEB_BUILD_MAINT_OPTIONS = hardening=+all
|
|||||||
dh $@ --with=systemd --with autoreconf --fail-missing
|
dh $@ --with=systemd --with autoreconf --fail-missing
|
||||||
|
|
||||||
override_dh_strip:
|
override_dh_strip:
|
||||||
dh_strip --dbg-package=osmo-bts-trx-dbg
|
dh_strip --package=osmo-bts-virtual --dbg-package=osmo-bts-virtual-dbg
|
||||||
|
dh_strip --package=osmo-bts-trx --dbg-package=osmo-bts-trx-dbg
|
||||||
override_dh_autoreconf:
|
|
||||||
echo $(VERSION) > .tarball-version
|
|
||||||
dh_autoreconf
|
|
||||||
|
|
||||||
override_dh_auto_configure:
|
override_dh_auto_configure:
|
||||||
dh_auto_configure -- --enable-trx
|
dh_auto_configure -- --enable-trx --with-systemdsystemunitdir=/lib/systemd/system --enable-manuals
|
||||||
|
|
||||||
override_dh_clean:
|
override_dh_clean:
|
||||||
dh_clean
|
dh_clean
|
||||||
@@ -30,3 +27,6 @@ override_dh_clean:
|
|||||||
override_dh_auto_test:
|
override_dh_auto_test:
|
||||||
dh_auto_test || (find . -name testsuite.log -exec cat {} \; ; false)
|
dh_auto_test || (find . -name testsuite.log -exec cat {} \; ; false)
|
||||||
|
|
||||||
|
# Don't create .pdf.gz files (barely saves space and they can't be opened directly by most pdf readers)
|
||||||
|
override_dh_compress:
|
||||||
|
dh_compress -X.pdf
|
||||||
|
|||||||
4
doc/Makefile.am
Normal file
4
doc/Makefile.am
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
SUBDIRS = \
|
||||||
|
examples \
|
||||||
|
manuals \
|
||||||
|
$(NULL)
|
||||||
@@ -4,7 +4,7 @@ h2. generic
|
|||||||
|
|
||||||
h3. trx.0.thermal-attenuation
|
h3. trx.0.thermal-attenuation
|
||||||
|
|
||||||
The idea of this paramter is to attenuate the system output power as part of
|
The idea of this parameter is to attenuate the system output power as part of
|
||||||
thermal management. In some cases the PA might be passing a critical level,
|
thermal management. In some cases the PA might be passing a critical level,
|
||||||
so an external control process can use this attribute to reduce the system
|
so an external control process can use this attribute to reduce the system
|
||||||
output power.
|
output power.
|
||||||
|
|||||||
55
doc/examples/Makefile.am
Normal file
55
doc/examples/Makefile.am
Normal file
@@ -0,0 +1,55 @@
|
|||||||
|
OSMOCONF_FILES = virtual/osmo-bts-virtual.cfg
|
||||||
|
|
||||||
|
doc_virtualdir = $(docdir)/examples/osmo-bts-virtual
|
||||||
|
doc_virtual_DATA = \
|
||||||
|
virtual/osmo-bts-virtual.cfg \
|
||||||
|
virtual/openbsc-virtual.cfg
|
||||||
|
EXTRA_DIST = $(doc_virtual_DATA)
|
||||||
|
|
||||||
|
if ENABLE_SYSMOBTS
|
||||||
|
doc_sysmodir = $(docdir)/examples/osmo-bts-sysmo
|
||||||
|
doc_sysmo_DATA = \
|
||||||
|
sysmo/osmo-bts-sysmo.cfg \
|
||||||
|
sysmo/sysmobts-mgr.cfg
|
||||||
|
EXTRA_DIST += $(doc_sysmo_DATA)
|
||||||
|
OSMOCONF_FILES += sysmo/osmo-bts-sysmo.cfg sysmo/sysmobts-mgr.cfg
|
||||||
|
endif
|
||||||
|
|
||||||
|
if ENABLE_TRX
|
||||||
|
doc_trxdir = $(docdir)/examples/osmo-bts-trx
|
||||||
|
doc_trx_DATA = \
|
||||||
|
trx/osmo-bts-trx.cfg \
|
||||||
|
trx/osmo-bts-trx-calypso.cfg
|
||||||
|
EXTRA_DIST += $(doc_trx_DATA)
|
||||||
|
OSMOCONF_FILES += trx/osmo-bts-trx.cfg
|
||||||
|
endif
|
||||||
|
|
||||||
|
if ENABLE_OCTPHY
|
||||||
|
doc_octphydir = $(docdir)/examples/osmo-bts-octphy
|
||||||
|
doc_octphy_DATA = \
|
||||||
|
octphy/osmo-bts-trx2dsp1.cfg \
|
||||||
|
octphy/osmo-bts-octphy.cfg
|
||||||
|
EXTRA_DIST += $(doc_octphy_DATA)
|
||||||
|
OSMOCONF_FILES += octphy/osmo-bts-octphy.cfg
|
||||||
|
endif
|
||||||
|
|
||||||
|
if ENABLE_LC15BTS
|
||||||
|
doc_lc15dir = $(docdir)/examples/osmo-bts-lc15
|
||||||
|
doc_lc15_DATA = \
|
||||||
|
litecell15/osmo-bts-lc15.cfg \
|
||||||
|
litecell15/lc15bts-mgr.cfg
|
||||||
|
EXTRA_DIST += $(doc_lc15_DATA)
|
||||||
|
OSMOCONF_FILES += litecell15/osmo-bts-lc15.cfg litecell15/lc15bts-mgr.cfg
|
||||||
|
endif
|
||||||
|
|
||||||
|
if ENABLE_OC2GBTS
|
||||||
|
doc_oc2gdir = $(docdir)/examples/osmo-bts-oc2g
|
||||||
|
doc_oc2g_DATA = \
|
||||||
|
oc2g/osmo-bts-oc2g.cfg \
|
||||||
|
oc2g/oc2gbts-mgr.cfg
|
||||||
|
EXTRA_DIST += $(doc_oc2g_DATA)
|
||||||
|
OSMOCONF_FILES += oc2g/osmo-bts-oc2g.cfg oc2g/oc2gbts-mgr.cfg
|
||||||
|
endif
|
||||||
|
|
||||||
|
osmoconfdir = $(sysconfdir)/osmocom
|
||||||
|
osmoconf_DATA = $(OSMOCONF_FILES)
|
||||||
43
doc/examples/litecell15/osmo-bts-lc15.cfg
Normal file
43
doc/examples/litecell15/osmo-bts-lc15.cfg
Normal file
@@ -0,0 +1,43 @@
|
|||||||
|
!
|
||||||
|
! OsmoBTS (0.0.1.100-0455-dirty) configuration saved from vty
|
||||||
|
!!
|
||||||
|
!
|
||||||
|
log stderr
|
||||||
|
logging color 1
|
||||||
|
logging timestamp 0
|
||||||
|
logging level rsl info
|
||||||
|
logging level oml info
|
||||||
|
logging level rll notice
|
||||||
|
logging level rr notice
|
||||||
|
logging level meas notice
|
||||||
|
logging level pag info
|
||||||
|
logging level l1c info
|
||||||
|
logging level l1p info
|
||||||
|
logging level dsp debug
|
||||||
|
logging level abis notice
|
||||||
|
logging level rtp notice
|
||||||
|
logging level lglobal notice
|
||||||
|
logging level llapd notice
|
||||||
|
logging level linp notice
|
||||||
|
logging level lmux notice
|
||||||
|
logging level lmi notice
|
||||||
|
logging level lmib notice
|
||||||
|
logging level lsms notice
|
||||||
|
!
|
||||||
|
line vty
|
||||||
|
no login
|
||||||
|
!
|
||||||
|
phy 0
|
||||||
|
instance 0
|
||||||
|
trx-calibration-path /mnt/rom/factory/calib
|
||||||
|
phy 1
|
||||||
|
instance 0
|
||||||
|
trx-calibration-path /mnt/rom/factory/calib
|
||||||
|
bts 0
|
||||||
|
band 900
|
||||||
|
ipa unit-id 1500 0
|
||||||
|
oml remote-ip 192.168.234.185
|
||||||
|
trx 0
|
||||||
|
phy 0 instance 0
|
||||||
|
trx 1
|
||||||
|
phy 1 instance 0
|
||||||
33
doc/examples/oc2g/oc2gbts-mgr.cfg
Normal file
33
doc/examples/oc2g/oc2gbts-mgr.cfg
Normal file
@@ -0,0 +1,33 @@
|
|||||||
|
!
|
||||||
|
! oc2gbts-mgr (0.3.0.284-a7c2-dirty) configuration saved from vty
|
||||||
|
!!
|
||||||
|
!
|
||||||
|
log stderr
|
||||||
|
logging filter all 1
|
||||||
|
logging color 1
|
||||||
|
logging print category 0
|
||||||
|
logging timestamp 0
|
||||||
|
logging level temp info
|
||||||
|
logging level fw info
|
||||||
|
logging level find info
|
||||||
|
logging level calib info
|
||||||
|
logging level lglobal notice
|
||||||
|
logging level llapd notice
|
||||||
|
logging level linp notice
|
||||||
|
logging level lmux notice
|
||||||
|
logging level lmi notice
|
||||||
|
logging level lmib notice
|
||||||
|
logging level lsms notice
|
||||||
|
logging level lctrl notice
|
||||||
|
logging level lgtp notice
|
||||||
|
!
|
||||||
|
line vty
|
||||||
|
no login
|
||||||
|
!
|
||||||
|
oc2gbts-mgr
|
||||||
|
limits supply_volt
|
||||||
|
threshold warning min 17500
|
||||||
|
threshold critical min 19000
|
||||||
|
limits supply_pwr
|
||||||
|
threshold warning max 110
|
||||||
|
threshold critical max 120
|
||||||
@@ -30,14 +30,9 @@ line vty
|
|||||||
phy 0
|
phy 0
|
||||||
instance 0
|
instance 0
|
||||||
trx-calibration-path /mnt/rom/factory/calib
|
trx-calibration-path /mnt/rom/factory/calib
|
||||||
phy 1
|
|
||||||
instance 0
|
|
||||||
trx-calibration-path /mnt/rom/factory/calib
|
|
||||||
bts 0
|
bts 0
|
||||||
band 900
|
band 900
|
||||||
ipa unit-id 1500 0
|
ipa unit-id 1500 0
|
||||||
oml remote-ip 192.168.234.185
|
oml remote-ip 10.42.0.1
|
||||||
trx 0
|
trx 0
|
||||||
phy 0 instance 0
|
phy 0 instance 0
|
||||||
trx 1
|
|
||||||
phy 1 instance 0
|
|
||||||
31
doc/examples/octphy/osmo-bts-octphy.cfg
Normal file
31
doc/examples/octphy/osmo-bts-octphy.cfg
Normal file
@@ -0,0 +1,31 @@
|
|||||||
|
!
|
||||||
|
! OsmoBTS () configuration saved from vty
|
||||||
|
!!
|
||||||
|
!
|
||||||
|
log stderr
|
||||||
|
logging color 1
|
||||||
|
logging timestamp 0
|
||||||
|
logging level rsl info
|
||||||
|
logging level oml info
|
||||||
|
logging level rll notice
|
||||||
|
logging level rr notice
|
||||||
|
logging level meas notice
|
||||||
|
logging level pag info
|
||||||
|
logging level l1c info
|
||||||
|
logging level l1p info
|
||||||
|
logging level dsp info
|
||||||
|
logging level abis notice
|
||||||
|
!
|
||||||
|
line vty
|
||||||
|
no login
|
||||||
|
!
|
||||||
|
phy 0
|
||||||
|
octphy hw-addr 00:0C:90:2e:80:1e
|
||||||
|
octphy net-device eth0.2342
|
||||||
|
instance 0
|
||||||
|
bts 0
|
||||||
|
band 1800
|
||||||
|
ipa unit-id 1234 0
|
||||||
|
oml remote-ip 127.0.0.1
|
||||||
|
trx 0
|
||||||
|
phy 0 instance 0
|
||||||
@@ -1,31 +0,0 @@
|
|||||||
!
|
|
||||||
! OsmoBTS () configuration saved from vty
|
|
||||||
!!
|
|
||||||
!
|
|
||||||
log stderr
|
|
||||||
logging color 1
|
|
||||||
logging timestamp 0
|
|
||||||
logging level rsl info
|
|
||||||
logging level oml info
|
|
||||||
logging level rll notice
|
|
||||||
logging level rr notice
|
|
||||||
logging level meas notice
|
|
||||||
logging level pag info
|
|
||||||
logging level l1c info
|
|
||||||
logging level l1p info
|
|
||||||
logging level dsp info
|
|
||||||
logging level abis notice
|
|
||||||
!
|
|
||||||
line vty
|
|
||||||
no login
|
|
||||||
!
|
|
||||||
phy 0
|
|
||||||
octphy hw-addr 00:0C:90:2e:80:1e
|
|
||||||
octphy net-device eth0.2342
|
|
||||||
instance 0
|
|
||||||
bts 0
|
|
||||||
band 1800
|
|
||||||
ipa unit-id 1234 0
|
|
||||||
oml remote-ip 127.0.0.1
|
|
||||||
trx 0
|
|
||||||
phy 0 instance 0
|
|
||||||
29
doc/examples/sysmo/osmo-bts-sysmo.cfg
Normal file
29
doc/examples/sysmo/osmo-bts-sysmo.cfg
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
!
|
||||||
|
! OsmoBTS () configuration saved from vty
|
||||||
|
!!
|
||||||
|
!
|
||||||
|
log stderr
|
||||||
|
logging color 1
|
||||||
|
logging timestamp 0
|
||||||
|
logging level rsl info
|
||||||
|
logging level oml info
|
||||||
|
logging level rll notice
|
||||||
|
logging level rr notice
|
||||||
|
logging level meas notice
|
||||||
|
logging level pag info
|
||||||
|
logging level l1c info
|
||||||
|
logging level l1p info
|
||||||
|
logging level dsp info
|
||||||
|
logging level abis notice
|
||||||
|
!
|
||||||
|
line vty
|
||||||
|
no login
|
||||||
|
!
|
||||||
|
phy 0
|
||||||
|
instance 0
|
||||||
|
bts 0
|
||||||
|
band 1800
|
||||||
|
ipa unit-id 666 0
|
||||||
|
oml remote-ip 10.1.2.3
|
||||||
|
trx 0
|
||||||
|
phy 0 instance 0
|
||||||
@@ -1,29 +0,0 @@
|
|||||||
!
|
|
||||||
! OsmoBTS () configuration saved from vty
|
|
||||||
!!
|
|
||||||
!
|
|
||||||
log stderr
|
|
||||||
logging color 1
|
|
||||||
logging timestamp 0
|
|
||||||
logging level rsl info
|
|
||||||
logging level oml info
|
|
||||||
logging level rll notice
|
|
||||||
logging level rr notice
|
|
||||||
logging level meas notice
|
|
||||||
logging level pag info
|
|
||||||
logging level l1c info
|
|
||||||
logging level l1p info
|
|
||||||
logging level dsp info
|
|
||||||
logging level abis notice
|
|
||||||
!
|
|
||||||
line vty
|
|
||||||
no login
|
|
||||||
!
|
|
||||||
phy 0
|
|
||||||
instance 0
|
|
||||||
bts 0
|
|
||||||
band 1800
|
|
||||||
ipa unit-id 666 0
|
|
||||||
oml remote-ip 10.1.2.3
|
|
||||||
trx 0
|
|
||||||
phy 0 instance 0
|
|
||||||
@@ -22,7 +22,6 @@ line vty
|
|||||||
!
|
!
|
||||||
phy 0
|
phy 0
|
||||||
instance 0
|
instance 0
|
||||||
osmotrx rx-gain 1
|
|
||||||
osmotrx ip local 127.0.0.1
|
osmotrx ip local 127.0.0.1
|
||||||
osmotrx ip remote 127.0.0.1
|
osmotrx ip remote 127.0.0.1
|
||||||
osmotrx timing-advance-loop
|
osmotrx timing-advance-loop
|
||||||
33
doc/examples/trx/osmo-bts-trx.cfg
Normal file
33
doc/examples/trx/osmo-bts-trx.cfg
Normal file
@@ -0,0 +1,33 @@
|
|||||||
|
!
|
||||||
|
! OsmoBTS () configuration saved from vty
|
||||||
|
!!
|
||||||
|
!
|
||||||
|
log stderr
|
||||||
|
logging color 1
|
||||||
|
logging timestamp 0
|
||||||
|
logging level rsl notice
|
||||||
|
logging level oml notice
|
||||||
|
logging level rll notice
|
||||||
|
logging level rr notice
|
||||||
|
logging level meas error
|
||||||
|
logging level pag error
|
||||||
|
logging level l1c error
|
||||||
|
logging level l1p error
|
||||||
|
logging level dsp error
|
||||||
|
logging level abis error
|
||||||
|
!
|
||||||
|
line vty
|
||||||
|
no login
|
||||||
|
!
|
||||||
|
phy 0
|
||||||
|
instance 0
|
||||||
|
osmotrx ip local 127.0.0.1
|
||||||
|
osmotrx ip remote 127.0.0.1
|
||||||
|
bts 0
|
||||||
|
band 1800
|
||||||
|
ipa unit-id 6969 0
|
||||||
|
oml remote-ip 192.168.122.1
|
||||||
|
gsmtap-sapi ccch
|
||||||
|
gsmtap-sapi pdtch
|
||||||
|
trx 0
|
||||||
|
phy 0 instance 0
|
||||||
@@ -1,34 +0,0 @@
|
|||||||
!
|
|
||||||
! OsmoBTS () configuration saved from vty
|
|
||||||
!!
|
|
||||||
!
|
|
||||||
log stderr
|
|
||||||
logging color 1
|
|
||||||
logging timestamp 0
|
|
||||||
logging level rsl notice
|
|
||||||
logging level oml notice
|
|
||||||
logging level rll notice
|
|
||||||
logging level rr notice
|
|
||||||
logging level meas error
|
|
||||||
logging level pag error
|
|
||||||
logging level l1c error
|
|
||||||
logging level l1p error
|
|
||||||
logging level dsp error
|
|
||||||
logging level abis error
|
|
||||||
!
|
|
||||||
line vty
|
|
||||||
no login
|
|
||||||
!
|
|
||||||
phy 0
|
|
||||||
instance 0
|
|
||||||
osmotrx rx-gain 1
|
|
||||||
osmotrx ip local 127.0.0.1
|
|
||||||
osmotrx ip remote 127.0.0.1
|
|
||||||
bts 0
|
|
||||||
band 1800
|
|
||||||
ipa unit-id 6969 0
|
|
||||||
oml remote-ip 192.168.122.1
|
|
||||||
gsmtap-sapi ccch
|
|
||||||
gsmtap-sapi pdtch
|
|
||||||
trx 0
|
|
||||||
phy 0 instance 0
|
|
||||||
61
doc/examples/virtual/osmo-bts-virtual.cfg
Normal file
61
doc/examples/virtual/osmo-bts-virtual.cfg
Normal file
@@ -0,0 +1,61 @@
|
|||||||
|
!
|
||||||
|
! OsmoBTS (0.4.0.216-bc49-dirty) configuration saved from vty
|
||||||
|
!!
|
||||||
|
!
|
||||||
|
log stderr
|
||||||
|
logging filter all 0
|
||||||
|
logging color 0
|
||||||
|
logging print category 1
|
||||||
|
logging timestamp 0
|
||||||
|
logging level rsl info
|
||||||
|
logging level oml info
|
||||||
|
logging level rll notice
|
||||||
|
logging level rr notice
|
||||||
|
logging level meas notice
|
||||||
|
logging level pag info
|
||||||
|
logging level l1c info
|
||||||
|
logging level l1p info
|
||||||
|
logging level dsp error
|
||||||
|
logging level pcu notice
|
||||||
|
logging level ho debug
|
||||||
|
logging level trx notice
|
||||||
|
logging level loop notice
|
||||||
|
logging level abis debug
|
||||||
|
logging level rtp notice
|
||||||
|
logging level sum error
|
||||||
|
logging level lglobal notice
|
||||||
|
logging level llapd notice
|
||||||
|
logging level linp notice
|
||||||
|
logging level lmux notice
|
||||||
|
logging level lmi notice
|
||||||
|
logging level lmib notice
|
||||||
|
logging level lsms notice
|
||||||
|
logging level lctrl notice
|
||||||
|
logging level lgtp notice
|
||||||
|
logging level lstats error
|
||||||
|
!
|
||||||
|
line vty
|
||||||
|
no login
|
||||||
|
!
|
||||||
|
e1_input
|
||||||
|
e1_line 0 driver ipa
|
||||||
|
e1_line 0 port 0
|
||||||
|
no e1_line 0 keepalive
|
||||||
|
phy 0
|
||||||
|
instance 0
|
||||||
|
bts 0
|
||||||
|
band DCS1800
|
||||||
|
ipa unit-id 6969 0
|
||||||
|
oml remote-ip 127.0.0.1
|
||||||
|
rtp jitter-buffer 100
|
||||||
|
paging queue-size 200
|
||||||
|
paging lifetime 0
|
||||||
|
uplink-power-target -75
|
||||||
|
min-qual-rach 50
|
||||||
|
min-qual-norm -5
|
||||||
|
trx 0
|
||||||
|
power-ramp max-initial 23000 mdBm
|
||||||
|
power-ramp step-size 2000 mdB
|
||||||
|
power-ramp step-interval 1
|
||||||
|
ms-power-control osmo
|
||||||
|
phy 0 instance 0
|
||||||
@@ -1,61 +0,0 @@
|
|||||||
!
|
|
||||||
! OsmoBTS (0.4.0.216-bc49-dirty) configuration saved from vty
|
|
||||||
!!
|
|
||||||
!
|
|
||||||
log stderr
|
|
||||||
logging filter all 0
|
|
||||||
logging color 0
|
|
||||||
logging print category 1
|
|
||||||
logging timestamp 0
|
|
||||||
logging level rsl info
|
|
||||||
logging level oml info
|
|
||||||
logging level rll notice
|
|
||||||
logging level rr notice
|
|
||||||
logging level meas notice
|
|
||||||
logging level pag info
|
|
||||||
logging level l1c info
|
|
||||||
logging level l1p info
|
|
||||||
logging level dsp error
|
|
||||||
logging level pcu notice
|
|
||||||
logging level ho debug
|
|
||||||
logging level trx notice
|
|
||||||
logging level loop notice
|
|
||||||
logging level abis debug
|
|
||||||
logging level rtp notice
|
|
||||||
logging level sum error
|
|
||||||
logging level lglobal notice
|
|
||||||
logging level llapd notice
|
|
||||||
logging level linp notice
|
|
||||||
logging level lmux notice
|
|
||||||
logging level lmi notice
|
|
||||||
logging level lmib notice
|
|
||||||
logging level lsms notice
|
|
||||||
logging level lctrl notice
|
|
||||||
logging level lgtp notice
|
|
||||||
logging level lstats error
|
|
||||||
!
|
|
||||||
line vty
|
|
||||||
no login
|
|
||||||
!
|
|
||||||
e1_input
|
|
||||||
e1_line 0 driver ipa
|
|
||||||
e1_line 0 port 0
|
|
||||||
no e1_line 0 keepalive
|
|
||||||
phy 0
|
|
||||||
instance 0
|
|
||||||
bts 0
|
|
||||||
band DCS1800
|
|
||||||
ipa unit-id 6969 0
|
|
||||||
oml remote-ip 127.0.0.1
|
|
||||||
rtp jitter-buffer 100
|
|
||||||
paging queue-size 200
|
|
||||||
paging lifetime 0
|
|
||||||
uplink-power-target -75
|
|
||||||
min-qual-rach 50
|
|
||||||
min-qual-norm -5
|
|
||||||
trx 0
|
|
||||||
power-ramp max-initial 23000 mdBm
|
|
||||||
power-ramp step-size 2000 mdB
|
|
||||||
power-ramp step-interval 1
|
|
||||||
ms-power-control dsp
|
|
||||||
phy 0 instance 0
|
|
||||||
26
doc/manuals/Makefile.am
Normal file
26
doc/manuals/Makefile.am
Normal file
@@ -0,0 +1,26 @@
|
|||||||
|
EXTRA_DIST = dtx.dot \
|
||||||
|
osmobts-abis.adoc \
|
||||||
|
osmobts-abis-docinfo.xml \
|
||||||
|
osmobts-usermanual.adoc \
|
||||||
|
osmobts-usermanual-docinfo.xml \
|
||||||
|
osmobts-vty-reference.xml \
|
||||||
|
rtp-amr.adoc \
|
||||||
|
rtp-amr-docinfo.xml \
|
||||||
|
regen_doc.sh \
|
||||||
|
abis \
|
||||||
|
chapters \
|
||||||
|
vty
|
||||||
|
|
||||||
|
if BUILD_MANUALS
|
||||||
|
ASCIIDOC = osmobts-usermanual.adoc osmobts-abis.adoc rtp-amr.adoc
|
||||||
|
include $(OSMO_GSM_MANUALS_DIR)/build/Makefile.asciidoc.inc
|
||||||
|
osmobts-usermanual.pdf: $(srcdir)/chapters/*.adoc
|
||||||
|
osmobts-abis.pdf: $(srcdir)/abis/*.adoc $(srcdir)/abis/*.msc
|
||||||
|
rtp-amr.pdf: $(srcdir)/dtx.dot
|
||||||
|
|
||||||
|
VTY_REFERENCE = osmobts-vty-reference.xml
|
||||||
|
include $(OSMO_GSM_MANUALS_DIR)/build/Makefile.vty-reference.inc
|
||||||
|
|
||||||
|
OSMO_REPOSITORY = osmo-bts
|
||||||
|
include $(OSMO_GSM_MANUALS_DIR)/build/Makefile.common.inc
|
||||||
|
endif
|
||||||
23
doc/manuals/abis/abis-startup.msc
Normal file
23
doc/manuals/abis/abis-startup.msc
Normal file
@@ -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)"];
|
||||||
|
}
|
||||||
23
doc/manuals/abis/dyn_ts_ipa_style1.msc
Normal file
23
doc/manuals/abis/dyn_ts_ipa_style1.msc
Normal file
@@ -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..." ];
|
||||||
|
}
|
||||||
22
doc/manuals/abis/dyn_ts_ipa_style2.msc
Normal file
22
doc/manuals/abis/dyn_ts_ipa_style2.msc
Normal file
@@ -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" ];
|
||||||
|
}
|
||||||
34
doc/manuals/abis/dyn_ts_osmocom_style1.msc
Normal file
34
doc/manuals/abis/dyn_ts_osmocom_style1.msc
Normal file
@@ -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..." ];
|
||||||
|
|
||||||
|
}
|
||||||
31
doc/manuals/abis/dyn_ts_osmocom_style2.msc
Normal file
31
doc/manuals/abis/dyn_ts_osmocom_style2.msc
Normal file
@@ -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" ];
|
||||||
|
}
|
||||||
106
doc/manuals/abis/ipa.adoc
Normal file
106
doc/manuals/abis/ipa.adoc
Normal file
@@ -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
|
||||||
|
|===
|
||||||
26
doc/manuals/abis/oml-mo-bts.msc
Normal file
26
doc/manuals/abis/oml-mo-bts.msc
Normal file
@@ -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)"];
|
||||||
|
}
|
||||||
24
doc/manuals/abis/oml-mo-carrier.msc
Normal file
24
doc/manuals/abis/oml-mo-carrier.msc
Normal file
@@ -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)"];
|
||||||
|
}
|
||||||
20
doc/manuals/abis/oml-mo-channel.msc
Normal file
20
doc/manuals/abis/oml-mo-channel.msc
Normal file
@@ -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)"];
|
||||||
|
}
|
||||||
17
doc/manuals/abis/oml-mo-sitemgr.msc
Normal file
17
doc/manuals/abis/oml-mo-sitemgr.msc
Normal file
@@ -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"];
|
||||||
|
}
|
||||||
23
doc/manuals/abis/oml-mo-transceiver.msc
Normal file
23
doc/manuals/abis/oml-mo-transceiver.msc
Normal file
@@ -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)"];
|
||||||
|
}
|
||||||
34
doc/manuals/abis/oml-startup.msc
Normal file
34
doc/manuals/abis/oml-startup.msc
Normal file
@@ -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"];
|
||||||
|
}
|
||||||
50
doc/manuals/abis/oml-startup2.msc
Normal file
50
doc/manuals/abis/oml-startup2.msc
Normal file
@@ -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"];
|
||||||
|
}
|
||||||
51
doc/manuals/abis/oml-startup3.msc
Normal file
51
doc/manuals/abis/oml-startup3.msc
Normal file
@@ -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)"];
|
||||||
|
}
|
||||||
950
doc/manuals/abis/oml.adoc
Normal file
950
doc/manuals/abis/oml.adoc
Normal file
@@ -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.
|
||||||
|
|
||||||
22
doc/manuals/abis/rsl-startup-pri.msc
Normal file
22
doc/manuals/abis/rsl-startup-pri.msc
Normal file
@@ -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"];
|
||||||
|
...;
|
||||||
|
}
|
||||||
16
doc/manuals/abis/rsl-startup-sec.msc
Normal file
16
doc/manuals/abis/rsl-startup-sec.msc
Normal file
@@ -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"];
|
||||||
|
...;
|
||||||
|
}
|
||||||
56
doc/manuals/abis/rsl-tch-rtp.msc
Normal file
56
doc/manuals/abis/rsl-tch-rtp.msc
Normal file
@@ -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"];
|
||||||
|
}
|
||||||
980
doc/manuals/abis/rsl.adoc
Normal file
980
doc/manuals/abis/rsl.adoc
Normal file
@@ -0,0 +1,980 @@
|
|||||||
|
== 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.16 | - | BS 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.4 | - | DELETE INDICATION | -> | Sent
|
||||||
|
| 8.5.5 | <<PAGING_COMMAND>> | PAGING COMMAND | <- | Received
|
||||||
|
| 8.5.6 | - | IMMEDIATE ASSIGN COMMAND | <- | Received
|
||||||
|
| 8.5.8 | - | SMS BROADCAST COMMAND | <- | Received
|
||||||
|
| 8.5.9 | - | CBCH LOAD INDICATION | -> | Sent
|
||||||
|
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
|
||||||
|
5+<| *COMMON CHANNEL MANAGEMENT MESSAGES*
|
||||||
|
.3+.| <<etws>> | <<OSMO_ETWS_CMD>> | Osmocom ETWS Command | <- | Received
|
||||||
|
|===
|
||||||
|
|
||||||
|
==== 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.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.7 | SMS BROADCAST REQUEST
|
||||||
|
| 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.
|
||||||
|
|
||||||
|
|
||||||
|
[[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 inflexible 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 through 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 through 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[]
|
||||||
|
----
|
||||||
|
|
||||||
|
[[etws]]
|
||||||
|
=== ETWS (Earthquake and Tsunami Warning System)
|
||||||
|
|
||||||
|
ETWS as specified in 3GPP TS 23.041 includes not only notification via
|
||||||
|
SMSCB, but also so-called Primary Notifications (PN). The ETWS PN are
|
||||||
|
transmitted
|
||||||
|
|
||||||
|
* by the BSC to all subscribers with active dedicated channels
|
||||||
|
* by the BTS on the PCH to all subscribers in idle mode
|
||||||
|
* by the PCU on the PACCH to all subscribers with active TBF
|
||||||
|
|
||||||
|
Unfortunately, 3GPP forgot to update their specifications with any
|
||||||
|
information as to how the ETWS PN is transmitted from BSC to BTS in
|
||||||
|
a portable way, and Osmocom had to invent their own non-standard
|
||||||
|
signaling for it.
|
||||||
|
|
||||||
|
See <<OSMO_ETWS_CMD>> for the Osmocom implementation.
|
||||||
|
|
||||||
|
|
||||||
|
=== 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
|
||||||
|
|
||||||
|
[[OSMO_ETWS_CMD]]
|
||||||
|
==== Osmocom ETWS Command
|
||||||
|
|
||||||
|
This message is sent by the BSC to transfer the ETWS Primary Notification (PN)
|
||||||
|
from BSC to BTS and enable/disable transmission of ETWS PN by the BTS. For more
|
||||||
|
information about ETWS, see 3GPP TS 23.041.
|
||||||
|
|
||||||
|
If the ETWS PN length is > 0, the BTS will immediately start transmission
|
||||||
|
of the received ETWS PN on the PCH using P1 Rest Octets. It will also forward
|
||||||
|
he ETWS PN to the PCU to enable the PCU to transmit it via PACCH on active TBF.
|
||||||
|
|
||||||
|
If the ETWS PN length is 0, the BTS will stop any ETWS PN broadcast via the PCH.
|
||||||
|
|
||||||
|
The Channel Number IE is set to the Downlink CCCH (PCH).
|
||||||
|
|
||||||
|
[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
|
||||||
|
| SMSCB Message | 08.58 9.3.42 | M | TLV | 2-58
|
||||||
|
|===
|
||||||
|
|
||||||
|
|
||||||
|
=== 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>>
|
||||||
|
| 0x7f | Osmocom ETWS Command | <<OSMO_ETWS_CMD>>
|
||||||
|
| 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.
|
||||||
|
|
||||||
33
doc/manuals/abis/rtp.adoc
Normal file
33
doc/manuals/abis/rtp.adoc
Normal file
@@ -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
|
||||||
|
|===
|
||||||
120
doc/manuals/chapters/architecture.adoc
Normal file
120
doc/manuals/chapters/architecture.adoc
Normal file
@@ -0,0 +1,120 @@
|
|||||||
|
== OsmoBTS software architecture
|
||||||
|
|
||||||
|
=== OsmoBTS PHY interface abstraction
|
||||||
|
|
||||||
|
The OsmoBTS PHY interface serves as an internal abstraction layer
|
||||||
|
between given PHY hardware (as provided by the bts_model) and the actual
|
||||||
|
logical transceivers (TRXs) of a BTS inside the OsmoBTS code base.
|
||||||
|
|
||||||
|
|
||||||
|
==== PHY link
|
||||||
|
|
||||||
|
A PHY link is a physical connection / link towards a given PHY. This
|
||||||
|
might be, for example,
|
||||||
|
|
||||||
|
* a set of file descriptors to device nodes in the /dev/ directory
|
||||||
|
(sysmobts, litecell15)
|
||||||
|
* a packet socket for sending raw Ethernet frames to an OCTPHY
|
||||||
|
* a set of UDP sockets for interacting with OsmoTRX
|
||||||
|
|
||||||
|
Each PHY interface has a set of attribute/parameters and a list of 1 to
|
||||||
|
n PHY instances.
|
||||||
|
|
||||||
|
PHY links are numbered 0..n globally inside OsmoBTS.
|
||||||
|
|
||||||
|
Each PHY link is configured via the VTY using its individual top-level
|
||||||
|
vty node. Given the different bts-model / phy specific properties, the
|
||||||
|
VTY configuration options (if any) of the PHY instance differ between
|
||||||
|
BTS models.
|
||||||
|
|
||||||
|
The PHY links and instances must be configured above the BTS/TRX nodes
|
||||||
|
in the configuration file. If the file is saved via the VTY, the code
|
||||||
|
automatically ensures this.
|
||||||
|
|
||||||
|
|
||||||
|
==== PHY instance
|
||||||
|
|
||||||
|
A PHY instance is an instance of a PHY, accessed via a PHY link.
|
||||||
|
|
||||||
|
In the case of osmo-bts-sysmo and osmo-bts-trx, there is only one
|
||||||
|
instance in every PHY link. This is due to the fact that the API inside
|
||||||
|
that PHY link does not permit for distinguishing multiple different
|
||||||
|
logical TRXs.
|
||||||
|
|
||||||
|
Other PHY implementations like the OCTPHY however do support addressing
|
||||||
|
multiple PHY instances via a single PHY link.
|
||||||
|
|
||||||
|
PHY instances are numbered 0..n inside each PHY link.
|
||||||
|
|
||||||
|
Each PHY instance is configured via the VTY as a separate node beneath each
|
||||||
|
PHY link. Given the different bts-model / phy specific properties, the
|
||||||
|
VTY configuration options (if any) of the PHY instance differ between
|
||||||
|
BTS models.
|
||||||
|
|
||||||
|
|
||||||
|
==== Mapping PHY instances to TRXs
|
||||||
|
|
||||||
|
Each TRX node in the VTY must use the 'phy N instance M' command in
|
||||||
|
order to specify which PHY instance is allocated to this specific TRX.
|
||||||
|
|
||||||
|
=== Internal control flow
|
||||||
|
|
||||||
|
==== start-up / sequencing during OsmoBTS start
|
||||||
|
|
||||||
|
.Control flow at OsmoBTS start-up procedure
|
||||||
|
[options="header",cols="10%,35%,55%"]
|
||||||
|
|===
|
||||||
|
| section | function | description
|
||||||
|
| bts-specific | main() | Entering main() from glibc
|
||||||
|
| common | bts_main() | initialization of talloc contexts
|
||||||
|
| common | bts_log_init() | initialization of logging
|
||||||
|
| common | handle_options() | common option parsing
|
||||||
|
| bts-specific | bts_model_handle_options() | model-specific option parsing
|
||||||
|
| common | gsm_bts_alloc() | allocation of BTS/TRX/TS data structures
|
||||||
|
| common | vty_init() | Initialziation of VTY core, libosmo-abis and osmo-bts VTY
|
||||||
|
| common | main() | Setting of scheduler RR priority (if configured)
|
||||||
|
| common | main() | Initialization of GSMTAP (if configured)
|
||||||
|
| common | bts_init() | configuration of defaults in bts/trx/s object
|
||||||
|
| bts-specific | bts_model_init | ?
|
||||||
|
| common | abis_init() | Initialization of libosmo-abis
|
||||||
|
| common | vty_read_config_file() | Reading of configuration file
|
||||||
|
| bts-specific | bts_model_phy_link_set_defaults() | Called for every PHY link created
|
||||||
|
| bts-specific | bts_model_phy_instance_set_defaults() | Called for every PHY Instance created
|
||||||
|
| common | bts_controlif_setup() | Initialization of Control Interface
|
||||||
|
| bts-specific | bts_model_ctrl_cmds_install() | Install model-specific control interface commands
|
||||||
|
| common | telnet_init() | Initialization of telnet interface
|
||||||
|
| common | pcu_sock_init() | Initialization of PCU socket
|
||||||
|
| common | main() | Installation of signal handlers
|
||||||
|
| common | abis_open() | Start of the A-bis connection to BSC
|
||||||
|
| common | phy_links_open() | Iterate over list of configured PHY links
|
||||||
|
| bts-specific | bts_model_phy_link_open() | Open each of the configured PHY links
|
||||||
|
| common | write_pid_file() | Generate the pid file
|
||||||
|
| common | osmo_daemonize() | Fork as daemon in background (if configured)
|
||||||
|
| common | bts_main() | Run main loop until global variable quit >= 2
|
||||||
|
|===
|
||||||
|
|
||||||
|
|
||||||
|
==== At time of OML establishment
|
||||||
|
|
||||||
|
.Control flow at time of OML establishment
|
||||||
|
[options="header",cols="10%,35%,55%"]
|
||||||
|
|===
|
||||||
|
| section | function | description
|
||||||
|
| bts-specific | bts_model_oml_estab() | Called by core once OML link is established
|
||||||
|
| bts-specific | bts_model_check_oml() | called each time OML sets some attributes on a MO, checks if attributes are valid
|
||||||
|
| bts-specific | bts_model_apply_oml() | called each time OML sets some attributes on a MO, stores attribute contents in data structures
|
||||||
|
| bts-specific | bts_model_opstart() | for NM_OC_BTS, NM_OC_SITE_MANAGER, NM_OC_GPRS_NSE, NM_OC_GPRS_CELL, NMO_OC_GPRS_NSVC
|
||||||
|
| bts-specific | bts_model_opstart() | for NM_OC_RADIO_CARRIER for each trx
|
||||||
|
| bts-specific | bts_model_opstart() | for NM_OC_BASEB_TRANSC for each trx
|
||||||
|
| bts-specific | bts_model_opstart() | for NM_OC_CHANNEL for each timeslot on each trx
|
||||||
|
| bts-specific | bts_model_change_power() | change transmit power for each trx (power ramp-up/ramp-down)
|
||||||
|
|===
|
||||||
|
|
||||||
|
==== At time of RSL connection loss
|
||||||
|
|
||||||
|
.Control flow at time of RSL connection loss
|
||||||
|
[options="header",cols="10%,35%,55%"]
|
||||||
|
|===
|
||||||
|
| section | function | description
|
||||||
|
| bts-specific | bts_model_abis_close() | called when either one of the RSL links or the OML link are down
|
||||||
|
|===
|
||||||
484
doc/manuals/chapters/bts-models.adoc
Normal file
484
doc/manuals/chapters/bts-models.adoc
Normal file
@@ -0,0 +1,484 @@
|
|||||||
|
[[osmobts_hardware_support]]
|
||||||
|
== OsmoBTS hardware support
|
||||||
|
|
||||||
|
OsmoBTS consists of a _common_ part that applies to all BTS models as well as
|
||||||
|
_hardware-specific_ parts for each BTS model. The hardware specific parts are
|
||||||
|
generally referred to as the _bts_model_ code.
|
||||||
|
|
||||||
|
The common part includes the core BTS architecture as well as code for
|
||||||
|
implementing the external interfaces such as Abis, control, PCU socket and
|
||||||
|
GSMTAP.
|
||||||
|
|
||||||
|
The bts_model parts include support for driving one particular
|
||||||
|
implementation of a GSM physical layer (PHY). Such a physical layer
|
||||||
|
implementation can come in many forms. Sometimes it runs on a general
|
||||||
|
purpose CPU, sometimes on a dedicated ARM core, a dedicated DSP, a
|
||||||
|
combination of DSP and FPGA.
|
||||||
|
|
||||||
|
Every PHY implementation offers some kind of primitives by which the PHY
|
||||||
|
can be controlled, and by which the PHY exchanges data with the higher
|
||||||
|
layers of the protocol stack in the OsmoBTS code.
|
||||||
|
|
||||||
|
The PHY-specific primitives are encapsulated in the bts_model code, and
|
||||||
|
offered as a PHY-independent _L1SAP_ interface towards the common part of
|
||||||
|
OsmoBTS.
|
||||||
|
|
||||||
|
In addition, each bts_model implements a set of functions that the
|
||||||
|
common part calls. Those functions are pre-fixed by _bts_model__.
|
||||||
|
|
||||||
|
Each bts_model may offer
|
||||||
|
|
||||||
|
* model-specific VTY commands for both configuration and run-time interaction
|
||||||
|
* model-specific command line arguments
|
||||||
|
* model-specific control interface commands
|
||||||
|
|
||||||
|
== `osmo-bts-sysmo` for sysmocom sysmoBTS
|
||||||
|
|
||||||
|
The sysmocom sysmoBTS is a range of GSM BTSs based around an embedded
|
||||||
|
system implementing the PHY in a combination of DSP+FPGA. The PHY is
|
||||||
|
configured by a set of primitives described by header files. Those
|
||||||
|
primitives are exchanged over a set of message queues exposed on the
|
||||||
|
Linux-running ARM core via device nodes in `/dev/msgq/`. Internally,
|
||||||
|
the message queues map to shared memory between the Linux-running ARM
|
||||||
|
core and the DSP running the PHY implementation.
|
||||||
|
|
||||||
|
The OsmoBTS bts_model code for the sysmoBTS can be found in the
|
||||||
|
`src/osmo-bts-sysmo` sub-directory of the OsmoBTS code base.
|
||||||
|
|
||||||
|
`osmo-bts-sysmo` has been the primary target platform for
|
||||||
|
OsmoBTS for many years and is thus the most feature-complete and mature
|
||||||
|
platform supported by OsmoBTS at this point.
|
||||||
|
|
||||||
|
The sysmoBTS PHY supports a direct PHY interface to OsmoPCU, reducing
|
||||||
|
the latency and amount of primitives that OsmoBTS would otherwise need
|
||||||
|
to pass through from the PHY message queues to the PCU socket and
|
||||||
|
vice-versa.
|
||||||
|
|
||||||
|
|
||||||
|
=== `osmo-bts-sysmo` specific command line arguments
|
||||||
|
|
||||||
|
*--dsp-trace 'DSPMASK'*::
|
||||||
|
Set the DSP trace flags (a single hexadecimal 32bit value).
|
||||||
|
This has been deprecated by VTY based commands, see
|
||||||
|
<<osmo-bts-sysmo-dsp-trace>> for further information.
|
||||||
|
*--pcu-direct*::
|
||||||
|
Indicate that an external PCU (e.g. OsmoPCU) will directly
|
||||||
|
open the DSP message queues to the PHY / PH-SAP, and only MPH
|
||||||
|
primitives are passed via OsmoBTS.
|
||||||
|
|
||||||
|
|
||||||
|
=== `osmo-bts-sysmo` specific VTY commands
|
||||||
|
|
||||||
|
For a auto-generated complete syntax reference of the VTY commands,
|
||||||
|
please see the associated _OsmoBTS VTY reference manual_
|
||||||
|
<<vty-ref-osmobts>>. The section
|
||||||
|
below only lists the most important commands.
|
||||||
|
|
||||||
|
==== at the 'SHOW' node
|
||||||
|
|
||||||
|
===== `show trx 0 clock-source`
|
||||||
|
|
||||||
|
Display the currently active clock source configuration for the TRX
|
||||||
|
|
||||||
|
[[osmo-bts-sysmo-dsp-trace]]
|
||||||
|
===== `show trx 0 dsp-trace-flags`
|
||||||
|
|
||||||
|
Show the currently active DSP trace flags for the TRX
|
||||||
|
|
||||||
|
===== `trx 0 dsp-trace-flag`
|
||||||
|
|
||||||
|
Use this command to enable/disable/configure the DSP tracing flags that
|
||||||
|
define what debug messages will appear on `/dev/rtfifo/dsp_trace`.
|
||||||
|
|
||||||
|
==== at the 'ENABLE' node
|
||||||
|
|
||||||
|
===== `trx 0 tx-power <-110-100>`
|
||||||
|
|
||||||
|
Change the current TRX transmit power to the given value in dBm.
|
||||||
|
|
||||||
|
===== `trx 0 rf-clock-info reset`
|
||||||
|
|
||||||
|
Part of the clock calibration procedure:
|
||||||
|
Reset the clock correction value.
|
||||||
|
|
||||||
|
===== `trx 0 rf-clock-info correct`
|
||||||
|
|
||||||
|
Part of the clock calibration procedure:
|
||||||
|
Apply the current measured correction value between the reference clock
|
||||||
|
and the local clock.
|
||||||
|
|
||||||
|
==== at the 'PHY instance' node
|
||||||
|
|
||||||
|
==== `clock-calibration eeprom`
|
||||||
|
|
||||||
|
Obtain clock calibration value from EEPROM.
|
||||||
|
|
||||||
|
==== `clock-calibration default`
|
||||||
|
|
||||||
|
Use hardware default clock calibration value.
|
||||||
|
|
||||||
|
==== `clock-calibration <-4095-4095>`
|
||||||
|
|
||||||
|
Use specified clock calibration value (not EEPROM/default).
|
||||||
|
|
||||||
|
==== `clock-source (tcxo|ocxo|ext|gps)`
|
||||||
|
|
||||||
|
Specify the clock source for the PHY:
|
||||||
|
|
||||||
|
tcxo::
|
||||||
|
Use the TCXO. This is the default on sysmoBTS 2050.
|
||||||
|
ocxo::
|
||||||
|
Use the OCXO (only valid on units equipped with OCXO). This is
|
||||||
|
the default on all sysmoBTS 1002/1020/1100 and SOB-BTS.
|
||||||
|
ext::
|
||||||
|
Use the external clock input.
|
||||||
|
gps::
|
||||||
|
Use the clock derived from GPS. You shouldn't use this clock
|
||||||
|
directly, but rather use the TCXO and regularly re-calibrate
|
||||||
|
against GPS.
|
||||||
|
|
||||||
|
==== `trx-calibration-path PATH`
|
||||||
|
|
||||||
|
Use calibration files from the given 'PATH', rather tan calibration
|
||||||
|
values from the EEPROM.
|
||||||
|
|
||||||
|
=== `osmo-bts-sysmo` specific control interface commands
|
||||||
|
|
||||||
|
==== trx.0.clock-info
|
||||||
|
|
||||||
|
Obtain information on the current clock status:
|
||||||
|
|
||||||
|
----
|
||||||
|
bsc_control.py -d localhost -p 4238 -g trx.0.clock-info
|
||||||
|
Got message: GET_REPLY 1 trx.0.clock-info -100,ocxo,0,0,gps
|
||||||
|
----
|
||||||
|
|
||||||
|
which is to be interpreted as:
|
||||||
|
|
||||||
|
* current clock correction value is -100 ppb
|
||||||
|
* current clock source is OCXO
|
||||||
|
* deviation between clock source and calibration source is 0 ppb
|
||||||
|
* resolution of clock error measurement is 0 ppt (0 means no result yet)
|
||||||
|
* current calibration source is GPS
|
||||||
|
|
||||||
|
When this attribute is set, any value passed on is discarded, but the clock
|
||||||
|
calibration process is re-started.
|
||||||
|
|
||||||
|
==== trx.0.clock-correction
|
||||||
|
|
||||||
|
This attribute can get and set the current clock correction value:
|
||||||
|
|
||||||
|
----
|
||||||
|
bsc_control.py -d localhost -p 4238 -g trx.0.clock-correction
|
||||||
|
Got message: GET_REPLY 1 trx.0.clock-correction -100
|
||||||
|
----
|
||||||
|
|
||||||
|
----
|
||||||
|
bsc_control.py -d localhost -p 4238 -s trx.0.clock-correction -- -99
|
||||||
|
Got message: SET_REPLY 1 trx.0.clock-correction success
|
||||||
|
----
|
||||||
|
|
||||||
|
|
||||||
|
== `osmo-bts-trx` for OsmoTRX
|
||||||
|
|
||||||
|
OsmoTRX is a C-language implementation of the GSM radio modem,
|
||||||
|
originally developed as the 'Transceiver' part of OpenBTS. This radio
|
||||||
|
modem offers an interface based on top of UDP streams.
|
||||||
|
|
||||||
|
The OsmoBTS bts_model code for OsmoTRX is called
|
||||||
|
`osmo-bts-trx`. It implements the UDP stream interface of
|
||||||
|
OsmoTRX, so both parts can be used together to implement a complete GSM
|
||||||
|
BTS based on general-purpose computing SDR.
|
||||||
|
|
||||||
|
As OsmoTRX is general-purpose software running on top of Linux, it is thus not
|
||||||
|
tied to any specific physical hardware. At the time of this writing, OsmoTRX
|
||||||
|
supports a variety of Lime Microsystems and Ettus USRP SDRs via the UHD driver,
|
||||||
|
as well as the Fairwaves UmTRX and derived products.
|
||||||
|
|
||||||
|
OsmoTRX is not a complete GSM PHY but 'just' the radio modem. This
|
||||||
|
means that all of the Layer 1 functionality such as scheduling,
|
||||||
|
convolutional coding, etc. is actually also implemented inside OsmoBTS.
|
||||||
|
|
||||||
|
As such, the boundary between OsmoTRX and `osmo-bts-trx` is at
|
||||||
|
a much lower interface, which is an internal interface of other more
|
||||||
|
traditional GSM PHY implementations.
|
||||||
|
|
||||||
|
Besides OsmoTRX, there are also other implementations (both Free
|
||||||
|
Software and proprietary) that implement the same UDP stream based radio
|
||||||
|
modem interface.
|
||||||
|
|
||||||
|
|
||||||
|
=== `osmo-bts-trx` specific VTY commands
|
||||||
|
|
||||||
|
For a auto-generated complete syntax reference of the VTY commands,
|
||||||
|
pleas see the associated _OsmoBTS VTY reference manual_
|
||||||
|
<<vty-ref-osmobts>>. The section below only lists the most important
|
||||||
|
commands.
|
||||||
|
|
||||||
|
==== at the 'SHOW' node
|
||||||
|
|
||||||
|
===== `show transceivers`
|
||||||
|
|
||||||
|
Display information about configured/connected OsmoTRX transceivers in
|
||||||
|
human-readable format to current VTY session.
|
||||||
|
|
||||||
|
==== at the 'PHY' configuration node
|
||||||
|
|
||||||
|
===== `osmotrx ip HOST`
|
||||||
|
|
||||||
|
Set the IP address for the OsmoTRX interface for both the local (OsmoBTS) and
|
||||||
|
remote (OsmoTRX) side of the UDP flows. This option has been deprecated by the
|
||||||
|
more detailed option `osmotrx ip (local|remote) A.B.C.D`.
|
||||||
|
|
||||||
|
===== `osmotrx ip (local|remote) A.B.C.D`
|
||||||
|
|
||||||
|
Set the IP address for the OsmoTRX interface for either the local (OsmoBTS) or
|
||||||
|
remote (OsmoTRX) side of the UDP flows.
|
||||||
|
|
||||||
|
===== `osmotrx base-port (local|remote) <0-65535>`
|
||||||
|
|
||||||
|
Configure the base UDP port for the OsmoTRX interface for either the
|
||||||
|
local (OsmoBTS) or remote (OsmoTRX) side of the UDP flows.
|
||||||
|
|
||||||
|
===== `osmotrx fn-advance <0-30>`
|
||||||
|
|
||||||
|
Set the number of frames to be transmitted to transceiver in advance of
|
||||||
|
current GSM frame number.
|
||||||
|
|
||||||
|
GSM is a TDMA (time division multiple access) system on the radio
|
||||||
|
interface. OsmoTRX is the "clock master" of that in the Osmocom
|
||||||
|
implementation. It informs OsmoBTS of the current GSM frame
|
||||||
|
number. However, as there is non-zero delays (UDP packet trnsmission
|
||||||
|
delay, operating system scheduler delay on both OsmoTRX and OsmoBTS
|
||||||
|
side, ...), OsmoBTS must compensate for that delay by "advancing"
|
||||||
|
the clock a certain amount of time.
|
||||||
|
|
||||||
|
In other words, if OsmoTRX informs us that the current frame number is N,
|
||||||
|
we advance it by `fn-advance` and transmit burst data for
|
||||||
|
`N + fn-advance` towards OsmoTRX.
|
||||||
|
|
||||||
|
The fn-advance should be kept as low as possible to avoid additional
|
||||||
|
delays to the user voice plane as well as to improve the performance
|
||||||
|
of the control plane (LAPDm) as well as GPRS.
|
||||||
|
|
||||||
|
However, fn-advance must be kept sufficiently high to ensure no
|
||||||
|
underruns on the OsmoTRX side.
|
||||||
|
|
||||||
|
The detailed value will depend on your underlying computer systems,
|
||||||
|
operating system and related tuning parameters. Running OsmoTRX
|
||||||
|
on a remote host will inevitably require a higher fn-advance then
|
||||||
|
running it on the same machine, where the UDP packetes are just passed
|
||||||
|
over the loopback device.
|
||||||
|
|
||||||
|
The default value for `fn-advance` is 20 (corresponding to 92
|
||||||
|
milliseconds).
|
||||||
|
|
||||||
|
===== `osmotrx rts-advance <0-30>`
|
||||||
|
|
||||||
|
Set the number of frames to be requested from L1SAP in advance of current
|
||||||
|
frame number and fn-advance.
|
||||||
|
|
||||||
|
The value specified as `rts-advance` is added to the current GSM frame
|
||||||
|
number as reported by OsmoTRX *and* the `osmotrx fn-advance` in order
|
||||||
|
to generate the PH-RTS.ind (ready to send indications) across the L1SAP
|
||||||
|
interface inside osmo-bts. This will trigger the Layer 2 (LAPDm for
|
||||||
|
the control plane, RTP for the voice plane, and OsmoPCU for GPRS) to
|
||||||
|
generate a MAC block and input it into the osmo-bts-trx TDMA scheduler.
|
||||||
|
|
||||||
|
If OsmoTRX reported N as the current frame number, the actual frame number
|
||||||
|
reported on L1SAP to higher layers will be computed as follows:
|
||||||
|
|
||||||
|
N + fn-advance + rts-advance
|
||||||
|
|
||||||
|
The default value of `rts-advance` is 5 (corresponding to 23 milliseconds).
|
||||||
|
Do not change this unless you have a good reason!
|
||||||
|
|
||||||
|
===== `osmotrx rx-gain <0-50>`
|
||||||
|
|
||||||
|
Set the receiver gain (configured in the hardware) in dB.
|
||||||
|
|
||||||
|
===== `osmotrx tx-attenuation <0-50>`
|
||||||
|
|
||||||
|
Set the transmitter attenuation (configured in the hardware) in dB.
|
||||||
|
|
||||||
|
===== `osmotrx tx-attenuation oml`
|
||||||
|
|
||||||
|
Use the Value in the A-bis OML Attribute `MAX_POWER_REDUCTION` as
|
||||||
|
transmitter attenuation.
|
||||||
|
|
||||||
|
==== at the 'PHY Instance' configuration node
|
||||||
|
|
||||||
|
===== `slotmask (1|0) (1|0) (1|0) (1|0) (1|0) (1|0) (1|0) (1|0)`
|
||||||
|
|
||||||
|
Configure which timeslots should be active on this TRX. Normally all
|
||||||
|
timeslots are enabled, unless you are running on a cpu-constrained
|
||||||
|
deeply embedded system.
|
||||||
|
|
||||||
|
===== `osmotrx maxdly <0-31>`
|
||||||
|
|
||||||
|
Set the maximum delay for received symbols (in number of GSM symbols).
|
||||||
|
|
||||||
|
|
||||||
|
== `osmo-bts-octphy` for Octasic OCTPHY-2G
|
||||||
|
|
||||||
|
The Octasic OCTPHY-2G is a GSM PHY implementation inside an Octasic
|
||||||
|
proprietary 24-core DSP called OCTDSP.
|
||||||
|
|
||||||
|
This DSP has a built-in Gigabit Ethernet interface, over which it
|
||||||
|
exchanges PHY-layer primitives in raw Ethernet frames with the upper
|
||||||
|
layers running on another CPU attached to the same Ethernet. Those
|
||||||
|
primitives are described in a set of C-language header files.
|
||||||
|
|
||||||
|
OsmoBTS implements the raw Ethernet frame based primitives as well as
|
||||||
|
the associated transport protocol (OKTPKT/OCTVC1) in the
|
||||||
|
`osmo-btso-octphy` bts_model code.
|
||||||
|
|
||||||
|
You can run the `osmo-bts-octphy` on any system connected to the same
|
||||||
|
Ethernet as the OCTDSP running the OCTPHY. This can be either an
|
||||||
|
embedded ARM or x86 SoM part of the OCTBTS hardware, or it can be any
|
||||||
|
other Linux system attached via an Ethernet switch.
|
||||||
|
|
||||||
|
Each OCTDSP running OCTSDR-2G offers a set of primitives part of a
|
||||||
|
OCTPKT session, which is mapped to an OsmoBTS PHY link. Depending on
|
||||||
|
the OCTSDR-2G software version, you may create multiple software TRX by
|
||||||
|
creating multiple OsmoBTS PHY instances inside that PHY link.
|
||||||
|
|
||||||
|
Multiple DSPs may exist in one circuit board, then each of the DSPs is
|
||||||
|
interfaced by one OsmoBTS PHY link, and each of them may have one or
|
||||||
|
more OsmoBTS PHY instances creating a Multi-TRX configuration.
|
||||||
|
|
||||||
|
|
||||||
|
== `osmo-bts-litecell15` for Nutaq/Nuran LiteCell 1.5
|
||||||
|
|
||||||
|
The Nutaq/Nuran LiteCell 1.5 implements a dual-transceiver GSM BTS based
|
||||||
|
on a mixed ARM/DSP/FPGA architecture. The PHY layer is implemented on
|
||||||
|
DSP/FPGA and similar to that of the sysmoBTS: It exchanges primitives
|
||||||
|
described in a set of C-language header files over message queues
|
||||||
|
between the ARM and the DSP.
|
||||||
|
|
||||||
|
This interface is implemented in the `osmo-bts-litecell15` bts_model of
|
||||||
|
OsmoBTS. You would run `osmo-bts-litecell15` on the ARM/Linux processor
|
||||||
|
of the Litecell 1.5.
|
||||||
|
|
||||||
|
The two transceivers of the Litecell 1.5 each have their own set of DSP
|
||||||
|
message queues. Each set of message queues is wrapped into one OsmoBTS
|
||||||
|
PHY link, offering one OsmoBTS PHY instance.
|
||||||
|
|
||||||
|
The Litecell 1.5 PHY supports a direct PHY interface to OsmoPCU,
|
||||||
|
reducing the latency and amount of primitives that OsmoBTS would
|
||||||
|
otherwise need to pass through from the PHY message queues to the PCU
|
||||||
|
socket and vice-versa.
|
||||||
|
|
||||||
|
=== `osmo-bts-trx` specific VTY commands
|
||||||
|
|
||||||
|
For a auto-generated complete syntax reference of the VTY commands,
|
||||||
|
please see the associated _OsmoBTS VTY reference manual_
|
||||||
|
<<vty-ref-osmobts>>. The section below only lists the most important
|
||||||
|
commands.
|
||||||
|
|
||||||
|
==== at the 'SHOW' node
|
||||||
|
|
||||||
|
===== `show phy <0-255> system-information`
|
||||||
|
|
||||||
|
Show information about the hardware platform, DSP and OCTPHY-2G software
|
||||||
|
version.
|
||||||
|
|
||||||
|
===== `show phy <0-255> rf-port-stats <0-1>`
|
||||||
|
|
||||||
|
Show information about the RF port interfaces.
|
||||||
|
|
||||||
|
===== `show phy <0-255> clk-sync-stats`
|
||||||
|
|
||||||
|
Show information about the clock synchronization manager.
|
||||||
|
|
||||||
|
==== at the 'PHY' configuration node
|
||||||
|
|
||||||
|
===== `octphy hw-addr HWADDR`
|
||||||
|
|
||||||
|
Specify the Ethernet hardware address (mac address) of the DSP running
|
||||||
|
the OCTPHY-2G software for this PHY link.
|
||||||
|
|
||||||
|
===== `octphy net-device NAME`
|
||||||
|
|
||||||
|
Specify the Ethernet network device (like `eth0`) through which the DSP
|
||||||
|
can be reached from OsmoBTS.
|
||||||
|
|
||||||
|
===== `octphy rf-port-index <0-255>`
|
||||||
|
|
||||||
|
Specify which RF port should be used for this PHY link.
|
||||||
|
|
||||||
|
===== `octphy rx-gain <0-73>`
|
||||||
|
|
||||||
|
Configure the receiver gain in dB.
|
||||||
|
|
||||||
|
===== `octphy tx-attenuation <0-359>`
|
||||||
|
|
||||||
|
Configure the transmitter attenuation in quarter-dB
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
== `osmo-bts-virtual` for Virtual Um Interface
|
||||||
|
|
||||||
|
This is a special BTS model used for research, simulation and testing.
|
||||||
|
Rather than communicating over a wireless RF interface, the GSM Um
|
||||||
|
messages are encapsulated over GSMTAP/UDP/IP.
|
||||||
|
|
||||||
|
The Virtual Um interface (i.e. virtual radio layer) between OsmoBTS and
|
||||||
|
OsmocomBB allows us to run a complete GSM network with 1-N BTSs and 1-M
|
||||||
|
MSs without any actual radio hardware, which is of course excellent for
|
||||||
|
all kinds of testing scenarios.
|
||||||
|
|
||||||
|
The Virtual Um layer is based on sending L2 frames (blocks) encapsulated
|
||||||
|
via GSMTAP UDP multicast packets. There are two separate multicast
|
||||||
|
groups, one for uplink and one for downlink. The multicast nature
|
||||||
|
simulates the shared medium and enables any simulated phone to receive
|
||||||
|
the signal from multiple BTSs via the downlink multicast group.
|
||||||
|
|
||||||
|
In OsmoBTS, this is implemented via the `osmo-bts-virtual` BTS model.
|
||||||
|
|
||||||
|
Setting up OsmoBTS in its `osmo-bts-virtual` flavor isn't really much
|
||||||
|
different from setting it up with real hardware. The amount of required
|
||||||
|
configuration at the BTS configuration file is (as always) very minimal,
|
||||||
|
as in the GSM network architecture provides almost all relevant
|
||||||
|
configuration to the BTS from the BSC.
|
||||||
|
|
||||||
|
An example configuration file is provided as part of the osmo-bts source
|
||||||
|
code: `doc/examples/virtual/osmobts-virtual.cfg`
|
||||||
|
|
||||||
|
For more information see
|
||||||
|
http://osmocom.org/projects/cellular-infrastructure/wiki/Virtual_Um
|
||||||
|
|
||||||
|
=== `osmo-bts-virtual` specific VTY commands
|
||||||
|
|
||||||
|
For a auto-generated complete syntax reference of the VTY commands,
|
||||||
|
please see the associated _OsmoBTS VTY reference manual_
|
||||||
|
<<vty-ref-osmobts>>. The section below only lists the most important
|
||||||
|
commands.
|
||||||
|
|
||||||
|
==== at the 'PHY' config node
|
||||||
|
|
||||||
|
===== `virtual-um net-device NETDEV`
|
||||||
|
|
||||||
|
Configure the network device used for sending/receiving the virtual Um
|
||||||
|
interface messages (e.g. `eth0`).
|
||||||
|
|
||||||
|
===== `virtual-um ms-udp-port <0-65535>`
|
||||||
|
|
||||||
|
Configure the UDP port used for sending virtual Um
|
||||||
|
downlink messages towards the MS (default: GSMTAP 4729).
|
||||||
|
|
||||||
|
===== `virtual-um ms-multicast-group GROUP`
|
||||||
|
|
||||||
|
Configure the IP multicast group used for sending virtual
|
||||||
|
Um downlink messages towards the MS (default: 239.193.23.1)
|
||||||
|
|
||||||
|
===== `virtual-um bts-udp-port <0-65535>`
|
||||||
|
|
||||||
|
Configure the UDP port used for receiving virtual Um
|
||||||
|
uplink messages from the MS (default: GSMTAP 4729).
|
||||||
|
|
||||||
|
===== `virtual-um bts-multicast-group GROUP`
|
||||||
|
|
||||||
|
Configure the IP multicast group used for receiving virtual
|
||||||
|
Um uplink messages from the MS (default: 239.193.23.2)
|
||||||
210
doc/manuals/chapters/configuration.adoc
Normal file
210
doc/manuals/chapters/configuration.adoc
Normal file
@@ -0,0 +1,210 @@
|
|||||||
|
== BTS Configuration
|
||||||
|
|
||||||
|
The role of the BTS is to handle the GSM radio interface. When the BTS
|
||||||
|
application is starting, the A-bis OML connection is established towards
|
||||||
|
the BSC. Almost all BTS configuration (such as ARFCN, channel
|
||||||
|
configuration, transmit power, etc.) will be sent from the BSC to the
|
||||||
|
BTS via OML messages. After OML start-up has completed, the BSC will
|
||||||
|
instruct the BTS to establish the RSL connections.
|
||||||
|
|
||||||
|
Given that most configuration is downloaded from the BSC into the BTS at
|
||||||
|
start-up time, only some very basic settings have to be made in the
|
||||||
|
OsmoBTS software.
|
||||||
|
|
||||||
|
|
||||||
|
=== Command Line Options
|
||||||
|
|
||||||
|
The OsmoBTS executables (`osmo-bts-sysmo`, `osmo-bts-trx`,
|
||||||
|
`osmo-bts-octphy`, `osmo-bts-litecell15`, ...) share the following
|
||||||
|
generic command line options:
|
||||||
|
|
||||||
|
==== SYNOPSIS
|
||||||
|
*osmo-bts-sysmo* [-h|-V] [-d 'DBGMASK'] [-D] [-c 'CONFIGFILE' ] [-s] [-T] [-e 'LOGLEVEL'] [-r 'PRIO'] [-i 'GSMTAP-IP'] [-t <1-255>]
|
||||||
|
|
||||||
|
==== OPTIONS
|
||||||
|
*-h, --help*::
|
||||||
|
Print a short help message about the supported options
|
||||||
|
*-V, --version*::
|
||||||
|
Print the compile-time version number of the OsmoBTS program
|
||||||
|
*-d, --debug 'DBGMASK','DBGLEVELS'*::
|
||||||
|
Set the log subsystems and levels for logging to stderr. This
|
||||||
|
has mostly been superseded by VTY-based logging configuration,
|
||||||
|
see <<logging>> for further information.
|
||||||
|
*-D, --daemonize*::
|
||||||
|
Fork the process as a daemon into background.
|
||||||
|
*-c, --config-file 'CONFIGFILE'*::
|
||||||
|
Specify the file and path name of the configuration file to be
|
||||||
|
used. If none is specified, use `osmo-bts.cfg` in the current
|
||||||
|
working directory.
|
||||||
|
*-s, --disable-color*::
|
||||||
|
Disable colors for logging to stderr. This has mostly been
|
||||||
|
deprecated by VTY based logging configuration, see <<logging>>
|
||||||
|
for further information.
|
||||||
|
*-T, --timestamp*::
|
||||||
|
Enable time-stamping of log messages to stderr. This has mostly
|
||||||
|
been deprecated by VTY based logging configuration, see
|
||||||
|
<<logging>> for further information.
|
||||||
|
*-e, --log-level 'LOGLEVEL'*::
|
||||||
|
Set the global log level for logging to stderr. This has mostly
|
||||||
|
been deprecated by VTY based logging configuration, see
|
||||||
|
<<logging>> for further information.
|
||||||
|
*-r, --realtime 'PRIO'*::
|
||||||
|
Enable use of the Linux kernel realtime priority scheduler with
|
||||||
|
the specified priority.
|
||||||
|
It is recommended you use this option on low-performance
|
||||||
|
embedded systems or systems that encounter high non-GSM/GPRS
|
||||||
|
load.
|
||||||
|
*-i, --gsmtap-ip 'GSMTAP-IP'*::
|
||||||
|
Specify the destination IP address for GSMTAP messages.
|
||||||
|
*-t, --trx-num <1-255>*::
|
||||||
|
Specify the number of TRX supported by this BTS.
|
||||||
|
|
||||||
|
There may be additional, hardware specific command line options by the
|
||||||
|
different bts_model implementations.
|
||||||
|
|
||||||
|
|
||||||
|
=== Configuration using the VTY
|
||||||
|
|
||||||
|
Most configuration as well as run-time monitoring and system
|
||||||
|
introspection is implemented using a command-line based interface
|
||||||
|
called _VTY_. A full reference syntax of all existing VTY command is
|
||||||
|
available as a separate document.
|
||||||
|
|
||||||
|
See <<vty>> for further information on the VTY.
|
||||||
|
|
||||||
|
|
||||||
|
==== Required BTS/TRX configuration
|
||||||
|
|
||||||
|
There are some settings that have to be configured locally in the
|
||||||
|
sysmoBTS, as they cannot be set remotely from the BSC. Those
|
||||||
|
settings are stored in the OsmoBTS configuration file, which commonly
|
||||||
|
is stored in `/etc/osmocom/osmo-bts.cfg`.
|
||||||
|
|
||||||
|
.Example Minimal configuration file
|
||||||
|
----
|
||||||
|
!
|
||||||
|
! OsmoBTS (0.0.1.100-0455) configuration saved from vty
|
||||||
|
!!
|
||||||
|
!
|
||||||
|
phy 0 <1>
|
||||||
|
instance 0 <2>
|
||||||
|
bts 0 <3>
|
||||||
|
band DCS1800
|
||||||
|
ipa unit-id 1801 0 <4>
|
||||||
|
oml remote-ip 192.168.100.11 <5>
|
||||||
|
trx 0 <6>
|
||||||
|
phy 0 instance 0 <7>
|
||||||
|
----
|
||||||
|
<1> You must configure at least one PHY link by means of the PHY node
|
||||||
|
<2> You must configure at least one PHY instance in the PHY link
|
||||||
|
<3> There is always exactly one BTS (`bts 0`) configured in OsmoBTS
|
||||||
|
<4> The `ipa unit-id` is what is used to identify this BTS to the BSC
|
||||||
|
<5> The OML Remote IP is the IP address of the BSC, to which the BTS shall connect to.
|
||||||
|
<6> There must be at least one trx (`trx 0`) in each BTS
|
||||||
|
<7> Every TRX must be mapped to a specific PHY instance this way
|
||||||
|
|
||||||
|
For a full reference of all available VTY configuration parameters,
|
||||||
|
please refer to the OsmoBTS VTY Reference document.
|
||||||
|
|
||||||
|
[[gsmtap]]
|
||||||
|
==== Configuring GSMTAP tracing
|
||||||
|
|
||||||
|
In addition to being able to obtain pcap protocol traces of the A-bis
|
||||||
|
communication and the text-based logging from the OsmoBTS
|
||||||
|
software, there is also the capability of tracing all communication on
|
||||||
|
the radio interface. To do so, OsmoBTS can encapsulate
|
||||||
|
MAC blocks (23byte messages at the L2-L1 interface) into _GSMTAP_ and send
|
||||||
|
them via UDP/IP. At that point, they can be captured with utilities like
|
||||||
|
*tcpdump* or *tshark* for further analysis by the *wireshark* protocol
|
||||||
|
analyzer.
|
||||||
|
|
||||||
|
In order to activate this feature, you first need to make sure to start
|
||||||
|
OsmoBTS using the `-i` or `--gsmtap-ip` command line option, specifying
|
||||||
|
the destination IP address for the GSMTAP messages. In most cases,
|
||||||
|
using 127.0.0.1 for passing the messages over the loopback (`lo`) device
|
||||||
|
will be sufficient.
|
||||||
|
|
||||||
|
OsmoBTS can selectively trace such messages by their L1 SAPI, for both
|
||||||
|
Rx and Tx. For a complete list of L1 SAPI values, please refer to the
|
||||||
|
_OsmoBTS VTY reference manual_ <<vty-ref-osmobts>>.
|
||||||
|
|
||||||
|
For example, to enable GSMTAP tracing for messages on all SDCCH
|
||||||
|
channels, you can use the gsmtap-sapi sdcch command at the CONFIG TRX
|
||||||
|
node of the OsmoBTS VTY.
|
||||||
|
|
||||||
|
.Example: Enabling GSMTAP for SDCCH
|
||||||
|
----
|
||||||
|
OsmoBTS> enable
|
||||||
|
OsmoBTS# configure terminal
|
||||||
|
OsmoBTS(config)# bts 0
|
||||||
|
OsmoBTS(bts)# trx 0
|
||||||
|
OsmoBTS(trx)# gsmtap-sapi sdcch
|
||||||
|
OsmoBTS(trx)# write <1>
|
||||||
|
----
|
||||||
|
<1> the `write` command will make the configuration persistent in the
|
||||||
|
configuration file. This is not required if you wish to enable GSMTAP
|
||||||
|
only in the current session of OsmoBTS.
|
||||||
|
|
||||||
|
De-activation can be performed similarly by using the `no gsmtap-sapi
|
||||||
|
sdcch` command at the `trx` node of the OsmoBTS VTY.
|
||||||
|
|
||||||
|
From the moment they are enabled via VTY, GSMTAP messages will be
|
||||||
|
generated and sent in UDP encapsulation to the IANA-registered UDP port
|
||||||
|
for GSMTAP (4729) at the IP address specified in the command line
|
||||||
|
argument.
|
||||||
|
|
||||||
|
==== Configuring power ramping
|
||||||
|
|
||||||
|
OsmoBTS can ramp up the power of its trx over time. This helps reduce
|
||||||
|
cell congestion in busy environments.
|
||||||
|
|
||||||
|
In this example, the trx starts with 5dBm output power which increases by 1dB
|
||||||
|
every two seconds until it reaches nominal power.
|
||||||
|
Power ramping can use the power-ramp commands at the CONFIG TRX node of the
|
||||||
|
OsmoBTS VTY.
|
||||||
|
|
||||||
|
.Example: Configure power ramping on trx 0
|
||||||
|
----
|
||||||
|
OsmoBTS> enable
|
||||||
|
OsmoBTS# configure terminal
|
||||||
|
OsmoBTS(config)# bts 0
|
||||||
|
OsmoBTS(bts)# trx 0
|
||||||
|
OsmoBTS(trx)# power-ramp max-initial 5 dBm
|
||||||
|
OsmoBTS(trx)# power-ramp step-size 1 dB
|
||||||
|
OsmoBTS(trx)# power-ramp step-interval 2
|
||||||
|
OsmoBTS(trx)# write <1>
|
||||||
|
----
|
||||||
|
<1> the `write` command will make the configuration persistent in the
|
||||||
|
configuration file.
|
||||||
|
|
||||||
|
De-activating power-ramping can be performed by setting the max-initial value
|
||||||
|
to the nominal power. The default max-initial value is 23 dBm.
|
||||||
|
|
||||||
|
|
||||||
|
==== Running multiple instances
|
||||||
|
|
||||||
|
It is possible to run multiple instances of `osmo-bts` on one and the same
|
||||||
|
machine, if the phy-interface is flexible enough to distinguish between
|
||||||
|
different phy hardware interfaces.
|
||||||
|
|
||||||
|
Since usually a BTS instance runs in conjunction with a dedicated PCU instance,
|
||||||
|
the socket path between PCU and BTS has to be distinguished between the running
|
||||||
|
instances. It is possible to change the default socket path via VTY config:
|
||||||
|
|
||||||
|
.Example: Personalize PCU socket path
|
||||||
|
----
|
||||||
|
bts 0
|
||||||
|
pcu-socket /tmp/pcu_bts_2
|
||||||
|
----
|
||||||
|
|
||||||
|
It is also necessary to separate the VTY anc CTRL interfaces of the different
|
||||||
|
instances. The VTY, as well as the CTRL interface can be bound to a free IP
|
||||||
|
address from the loopback range:
|
||||||
|
|
||||||
|
.Example: Binding VTY and CTRL interface to a specific IP address
|
||||||
|
----
|
||||||
|
line vty
|
||||||
|
bind 127.0.0.2
|
||||||
|
ctrl
|
||||||
|
bind 127.0.0.2
|
||||||
|
----
|
||||||
24
doc/manuals/chapters/control.adoc
Normal file
24
doc/manuals/chapters/control.adoc
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
[[control]]
|
||||||
|
== Control interface
|
||||||
|
|
||||||
|
The actual protocol is described in <<common-control-if>>, the variables
|
||||||
|
common to all programs using it are described in <<ctrl_common_vars>>. Here we
|
||||||
|
describe variables specific to OsmoBTS. The commands starting with prefix
|
||||||
|
"net.btsN." are specific to a certain BTS so N have to be replaced with BTS
|
||||||
|
number when issuing command. Similarly the
|
||||||
|
TRX-specific commands are additionally prefixed with TRX number e. g.
|
||||||
|
"net.bts1.trx2.thermal-attenuation".
|
||||||
|
|
||||||
|
|
||||||
|
.Variables available over control interface
|
||||||
|
[options="header",width="100%",cols="20%,5%,5%,50%,20%"]
|
||||||
|
|===
|
||||||
|
|Name|Access|Trap|Value|Comment
|
||||||
|
|net.btsN.trxM.thermal-attenuation|RW|No|integer|See <<ther>> for details.
|
||||||
|
|===
|
||||||
|
|
||||||
|
[[ther]]
|
||||||
|
=== thermal-attenuation
|
||||||
|
|
||||||
|
Allowed SET value for thermal attenuation is between 0 to 40 dB. Note: the value
|
||||||
|
is SET in dB units but GET will return value in mdB units used internally.
|
||||||
4
doc/manuals/chapters/counters.adoc
Normal file
4
doc/manuals/chapters/counters.adoc
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
[[counters]]
|
||||||
|
== Counters
|
||||||
|
|
||||||
|
include::./counters_generated.adoc[]
|
||||||
64
doc/manuals/chapters/counters_generated.adoc
Normal file
64
doc/manuals/chapters/counters_generated.adoc
Normal file
@@ -0,0 +1,64 @@
|
|||||||
|
|
||||||
|
// autogenerated by show asciidoc counters
|
||||||
|
These counters and their description based on OsmoBTS 0.8.1.346-33ed (OsmoBTS).
|
||||||
|
|
||||||
|
=== Rate Counters
|
||||||
|
|
||||||
|
// generating tables for rate_ctr_group
|
||||||
|
// rate_ctr_group table E1 Input subsystem
|
||||||
|
.e1inp - E1 Input subsystem
|
||||||
|
[options="header"]
|
||||||
|
|===
|
||||||
|
| Name | Reference | Description
|
||||||
|
| hdlc:abort | <<e1inp_hdlc:abort>> | HDLC abort
|
||||||
|
| hdlc:bad_fcs | <<e1inp_hdlc:bad_fcs>> | HLDC Bad FCS
|
||||||
|
| hdlc:overrun | <<e1inp_hdlc:overrun>> | HDLC Overrun
|
||||||
|
| alarm | <<e1inp_alarm>> | Alarm
|
||||||
|
| removed | <<e1inp_removed>> | Line removed
|
||||||
|
|===
|
||||||
|
// rate_ctr_group table cell broadcast channel
|
||||||
|
.cbch - cell broadcast channel
|
||||||
|
[options="header"]
|
||||||
|
|===
|
||||||
|
| Name | Reference | Description
|
||||||
|
| cbch:rcvd_queued | <<cbch_cbch:rcvd_queued>> | Received + queued CBCH messages (Abis)
|
||||||
|
| cbch:rcvd_dropped | <<cbch_cbch:rcvd_dropped>> | Received + dropped CBCH messages (Abis)
|
||||||
|
| cbch:sent_single | <<cbch_cbch:sent_single>> | Sent single CBCH messages (Um)
|
||||||
|
| cbch:sent_default | <<cbch_cbch:sent_default>> | Sent default CBCH messages (Um)
|
||||||
|
| cbch:sent_null | <<cbch_cbch:sent_null>> | Sent NULL CBCH messages (Um)
|
||||||
|
|===
|
||||||
|
// rate_ctr_group table cell broadcast channel
|
||||||
|
.cbch - cell broadcast channel
|
||||||
|
[options="header"]
|
||||||
|
|===
|
||||||
|
| Name | Reference | Description
|
||||||
|
| cbch:rcvd_queued | <<cbch_cbch:rcvd_queued>> | Received + queued CBCH messages (Abis)
|
||||||
|
| cbch:rcvd_dropped | <<cbch_cbch:rcvd_dropped>> | Received + dropped CBCH messages (Abis)
|
||||||
|
| cbch:sent_single | <<cbch_cbch:sent_single>> | Sent single CBCH messages (Um)
|
||||||
|
| cbch:sent_default | <<cbch_cbch:sent_default>> | Sent default CBCH messages (Um)
|
||||||
|
| cbch:sent_null | <<cbch_cbch:sent_null>> | Sent NULL CBCH messages (Um)
|
||||||
|
|===
|
||||||
|
// rate_ctr_group table base transceiver station
|
||||||
|
.bts - base transceiver station
|
||||||
|
[options="header"]
|
||||||
|
|===
|
||||||
|
| Name | Reference | Description
|
||||||
|
| paging:rcvd | <<bts_paging:rcvd>> | Received paging requests (Abis)
|
||||||
|
| paging:drop | <<bts_paging:drop>> | Dropped paging requests (Abis)
|
||||||
|
| paging:sent | <<bts_paging:sent>> | Sent paging requests (Um)
|
||||||
|
| rach:rcvd | <<bts_rach:rcvd>> | Received RACH requests (Um)
|
||||||
|
| rach:drop | <<bts_rach:drop>> | Dropped RACH requests (Um)
|
||||||
|
| rach:handover | <<bts_rach:handover>> | Received RACH requests (Handover)
|
||||||
|
| rach:cs | <<bts_rach:cs>> | Received RACH requests (CS/Abis)
|
||||||
|
| rach:ps | <<bts_rach:ps>> | Received RACH requests (PS/PCU)
|
||||||
|
| agch:rcvd | <<bts_agch:rcvd>> | Received AGCH requests (Abis)
|
||||||
|
| agch:sent | <<bts_agch:sent>> | Sent AGCH requests (Abis)
|
||||||
|
| agch:delete | <<bts_agch:delete>> | Sent AGCH DELETE IND (Abis)
|
||||||
|
|===
|
||||||
|
== Osmo Stat Items
|
||||||
|
|
||||||
|
// generating tables for osmo_stat_items
|
||||||
|
== Osmo Counters
|
||||||
|
|
||||||
|
// generating tables for osmo_counters
|
||||||
|
// there are no ungrouped osmo_counters
|
||||||
20
doc/manuals/chapters/dynamic-timeslots.adoc
Normal file
20
doc/manuals/chapters/dynamic-timeslots.adoc
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
== Support for Dynamic Timeslots (TCH/F, TCH/H, PDCH)
|
||||||
|
|
||||||
|
OsmoBTS supports dynamic switchover of timeslots between different physical
|
||||||
|
channel configurations, initiated by the BSC via (non-standard) Abis messages
|
||||||
|
-- see the _OsmoBTS Abis Protocol Specification_ <<osmobts-abis-spec>>.
|
||||||
|
|
||||||
|
The Abis message handling for dynamic timeslots is independent of the BTS
|
||||||
|
model. However, dynamic switchover will only work for BTS models that implement
|
||||||
|
the internal API to reconnect a timeslot (_bts_model_ts_disconnect()_ and
|
||||||
|
_bts_model_ts_connect()_, see also <<osmobts_hardware_support>>).
|
||||||
|
|
||||||
|
Currently, these OsmoBTS models support dynamic timeslots:
|
||||||
|
|
||||||
|
* _osmo-bts-sysmo_
|
||||||
|
* _osmo-bts-litecell15_
|
||||||
|
* _osmo-bts-trx_
|
||||||
|
|
||||||
|
Dynamic timeslots are driven by the BSC and need to be configured there. When
|
||||||
|
using OsmoBSC or OsmoNITB, see the BTS configuration chapter on dynamic
|
||||||
|
timeslots in <<userman-osmobsc>> or <<userman-osmonitb>>, respectively.
|
||||||
156
doc/manuals/chapters/interfaces.adoc
Normal file
156
doc/manuals/chapters/interfaces.adoc
Normal file
@@ -0,0 +1,156 @@
|
|||||||
|
== OsmoBTS Interfaces
|
||||||
|
|
||||||
|
OsmoBTS offers a set of interfaces to interact with external entities:
|
||||||
|
|
||||||
|
* A-bis/IP interface to talk to the BSC
|
||||||
|
* bts_model specific PHY interface
|
||||||
|
* VTY interface
|
||||||
|
* Osmocom control interface
|
||||||
|
* GSMTAP interface
|
||||||
|
* PCU interface
|
||||||
|
|
||||||
|
|
||||||
|
=== OsmoBTS Abis/IP Interface
|
||||||
|
|
||||||
|
OsmoBTS implements the GSM A-bis interface as described in the relevant
|
||||||
|
3GPP specifications:
|
||||||
|
|
||||||
|
* A-bis RSL according to 3GPP TS 08.58
|
||||||
|
* A-bis OML according to 3GPP TS 12.21
|
||||||
|
|
||||||
|
As the 3GPP specifies A-bis only over E1 interfaces and not over IP,
|
||||||
|
significant enhancements and modifications to the 3GPP specifications are
|
||||||
|
employed. Nevertheless, the implementation tries to stay as close as
|
||||||
|
possible to the 3GPP specifications.
|
||||||
|
|
||||||
|
Please see the _OsmoBTS Abis Protocol Specification_
|
||||||
|
<<osmobts-abis-spec>> for more information on this subject.
|
||||||
|
|
||||||
|
|
||||||
|
=== bts_model specific PHY interface
|
||||||
|
|
||||||
|
This interface is specific to the bts_model that OsmoBTS was compiled
|
||||||
|
for. It can take any form as required by the respective hardware.
|
||||||
|
|
||||||
|
Please see the PHY documentation of your respective BTS hardware for more
|
||||||
|
details.
|
||||||
|
|
||||||
|
|
||||||
|
=== OsmoBTS VTY Interface
|
||||||
|
|
||||||
|
See <<vty>> for further information.
|
||||||
|
|
||||||
|
|
||||||
|
=== OsmoBTS Control Interface
|
||||||
|
|
||||||
|
The general structure of the Omsocom control interface is described in
|
||||||
|
<<common-control-if>>.
|
||||||
|
|
||||||
|
The number of control interface commands/attributes is currently quite
|
||||||
|
limited and largely depends on the bts_model used.
|
||||||
|
|
||||||
|
==== trx.N.thermal-attenuation
|
||||||
|
|
||||||
|
The idea of this parameter is to attenuate the system output power as part of
|
||||||
|
thermal management. In some cases the PA might be passing a critical level,
|
||||||
|
so an external control process can use this attribute to reduce the system
|
||||||
|
output power.
|
||||||
|
|
||||||
|
Please note that all values in the context of transmit power calculation
|
||||||
|
are integers in milli-dB (1/10000 bel), so the below example is setting
|
||||||
|
the attenuation at 3 dB:
|
||||||
|
|
||||||
|
----
|
||||||
|
bsc_control.py -d localhost -p 4238 -s trx.0.thermal-attenuation 3000
|
||||||
|
Got message: SET_REPLY 1 trx.0.thermal-attenuation 3000
|
||||||
|
----
|
||||||
|
|
||||||
|
----
|
||||||
|
bsc_control.py -d localhost -p 4238 -g trx.0.thermal-attenuation
|
||||||
|
Got message: GET_REPLY 1 trx.0.thermal-attenuation 3000
|
||||||
|
----
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
=== OsmoBTS GSMTAP Interface
|
||||||
|
|
||||||
|
GSMTAP is a standard created by Osmocom to UDP-encapsulate GSM protocol
|
||||||
|
messages normally communicated over non-IP interfaces for the primary
|
||||||
|
purpose of protocol analysis in the wireshark dissector.
|
||||||
|
|
||||||
|
The initial purpose was to encapsulate GSM Um frames including some
|
||||||
|
meta-data like ARFCN and GSM frame number into something that can be
|
||||||
|
parsed and dispatched within the wireshark dissector.
|
||||||
|
|
||||||
|
This interface has since been extended to many other
|
||||||
|
GSM/GPRS/UMTS interfaces and protocols, and even to TETRA and GMR.
|
||||||
|
|
||||||
|
In OsmoBTS, it is possible to export both uplink and downlink Um
|
||||||
|
messages via GSMTAP. There is a set of VTY configuration options to
|
||||||
|
specify for which logical channels of the Um interface GSMTAP messages
|
||||||
|
shall be emitted, and to which destination IP address they shall be
|
||||||
|
sent.
|
||||||
|
|
||||||
|
Using GSMTAP it is possible to place a virtual tap at the air interface
|
||||||
|
between BTS and MS, without going through the trouble of setting up an
|
||||||
|
actual radio receiver at the same frequencies. Also, GSMTAP export is
|
||||||
|
performed before the Um air-interface encryption (A5) is performed, so
|
||||||
|
all frames are always in plain text.
|
||||||
|
|
||||||
|
Please refer to <<gsmtap>> for more information on how to configure and
|
||||||
|
use this interface.
|
||||||
|
|
||||||
|
|
||||||
|
=== OsmoBTS PCU Socket Interface
|
||||||
|
|
||||||
|
In order to assist the provisioning of GPRS services over the same radio
|
||||||
|
interface as circuit-switched GSM, OsmoBTS exposes a Unix domain socket
|
||||||
|
based interface towards OsmoPCU.
|
||||||
|
|
||||||
|
OsmoPCU is the Osmocom implementation of the GPRS Packet Control Unit
|
||||||
|
(PCU), which is co-located with the BTS in the Osmocom implementation.
|
||||||
|
Contrary to that, many classic E1-based implementations of the GSM RAN
|
||||||
|
co-locate the PCU with the BSC. However, the GSM specifications keep
|
||||||
|
the location up to the implementor.
|
||||||
|
|
||||||
|
The GPRS network architecture is shown in <<fig-gprs-pcubts>>.
|
||||||
|
|
||||||
|
[[fig-gprs-pcubts]]
|
||||||
|
.GPRS network architecture
|
||||||
|
[graphviz]
|
||||||
|
----
|
||||||
|
digraph G {
|
||||||
|
rankdir=LR;
|
||||||
|
MS0 [label="MS"];
|
||||||
|
MS1 [label="MS"];
|
||||||
|
BTS;
|
||||||
|
BSC;
|
||||||
|
MSC;
|
||||||
|
PCU;
|
||||||
|
SGSN;
|
||||||
|
GGSN;
|
||||||
|
MS0->BTS [label="Um"];
|
||||||
|
MS1->BTS [label="Um"];
|
||||||
|
BTS->BSC [label="Abis"];
|
||||||
|
BSC->MSC [label="A"];
|
||||||
|
BTS->PCU [label="pcu_sock"];
|
||||||
|
PCU->SGSN [label="Gb"];
|
||||||
|
SGSN->GGSN [label="GTP"];
|
||||||
|
}
|
||||||
|
----
|
||||||
|
|
||||||
|
The PCU socket interface serves the following purposes:
|
||||||
|
|
||||||
|
* to pass PCU relevant configuration from BTS to PCU
|
||||||
|
* to forward paging requests from BTS to PCU
|
||||||
|
* to forward RACH Requests from BTS to PCU
|
||||||
|
|
||||||
|
Depending on your bts_model, the PCU may also be passing actual
|
||||||
|
PH-DATA.request / PH-DATA.indication / PH-RTS.indication primitives for
|
||||||
|
the PDCH. This is considered sub-optimal, and some BTS models offer a
|
||||||
|
direct interface by which the PCU can exchange those primitives directly
|
||||||
|
with the PHY.
|
||||||
|
|
||||||
|
The default PCU socket interface name is `/tmp/pcu_sock`, but this can
|
||||||
|
be overridden by the `pcu-socket` VTY command in the BTS configuration
|
||||||
|
VTY node.
|
||||||
105
doc/manuals/chapters/overview.adoc
Normal file
105
doc/manuals/chapters/overview.adoc
Normal file
@@ -0,0 +1,105 @@
|
|||||||
|
== Overview
|
||||||
|
|
||||||
|
=== About this manual
|
||||||
|
|
||||||
|
This manual should help you getting started with the OsmoBTS software.
|
||||||
|
It will cover aspects of configuring and running OsmoBTS as well as some
|
||||||
|
introduction about its internal architecture and external interfaces.
|
||||||
|
|
||||||
|
=== About OsmoBTS
|
||||||
|
|
||||||
|
OsmoBTS is an implementation of a GSM BTS (Base Transceiver Station). A
|
||||||
|
BTS serves as the interface between the Um radio interface towards
|
||||||
|
phones and the wired Abis interface towards the BSC (Base Station
|
||||||
|
Controller). It also implements the network side of the Layer 2 of the
|
||||||
|
Um radio interface: The LAPDm protocol.
|
||||||
|
|
||||||
|
OsmoBTS is licensed as Free and Open Source Software (FOSS) under _GNU
|
||||||
|
AGPLv3_ <<gnu-agplv3>>. It is developed as one GSM network
|
||||||
|
infrastructure component part of the overall Osmocom project.
|
||||||
|
|
||||||
|
As perhaps the first implementation of a GSM BTS ever in the industry,
|
||||||
|
OsmoBTS is implemented in a vendor-independent way and supports a large
|
||||||
|
variety of transceiver hardware and physical layer implementations from
|
||||||
|
many vendors.
|
||||||
|
|
||||||
|
=== Credits
|
||||||
|
|
||||||
|
OsmoBTS was originally developed in 2011 by Andreas Eversberg and Harald
|
||||||
|
Welte. It has since been maintained by Harald Welte and Holger Freyther
|
||||||
|
at sysmocom.
|
||||||
|
|
||||||
|
=== OsmoBTS in the Osmocom GSM network architecture
|
||||||
|
|
||||||
|
OsmoBTS can be used in combination with the various other GSM network
|
||||||
|
elements developed under the umbrella of the Osmocom project.
|
||||||
|
|
||||||
|
Typical configurations either use OsmoBTS with OsmoBSC, or with
|
||||||
|
OsmoNITB, as can be seen in the following figures.
|
||||||
|
|
||||||
|
[[fig-gsm-classic]]
|
||||||
|
.Classic GSM architecture using OsmoBTS with OsmoBTS components
|
||||||
|
[graphviz]
|
||||||
|
----
|
||||||
|
digraph G {
|
||||||
|
rankdir=LR;
|
||||||
|
MS0 [label="MS"]
|
||||||
|
MS1 [label="MS"]
|
||||||
|
MS2 [label="MS"]
|
||||||
|
MS3 [label="MS"]
|
||||||
|
BTS0 [label="OsmoBTS"]
|
||||||
|
BTS1 [label="OsmoBTS"]
|
||||||
|
BSC [label="OsmoBSC"]
|
||||||
|
MSC [label="MSC/VLR"]
|
||||||
|
HLR [label="HLR/AUC"]
|
||||||
|
MS0->BTS0 [label="Um"]
|
||||||
|
MS1->BTS0 [label="Um"]
|
||||||
|
MS2->BTS1 [label="Um"]
|
||||||
|
MS3->BTS1 [label="Um"]
|
||||||
|
BTS0->BSC [label="Abis"]
|
||||||
|
BTS1->BSC [label="Abis"]
|
||||||
|
BSC->MSC [label="A"]
|
||||||
|
MSC->HLR [label="C"]
|
||||||
|
MSC->EIR [label="F"]
|
||||||
|
MSC->SMSC
|
||||||
|
}
|
||||||
|
----
|
||||||
|
|
||||||
|
|
||||||
|
[[fig-gsm-nitb]]
|
||||||
|
.GSM architecture using OsmoBTS + OsmoNITB
|
||||||
|
[graphviz]
|
||||||
|
----
|
||||||
|
digraph G {
|
||||||
|
rankdir=LR;
|
||||||
|
MS0 [label="MS"]
|
||||||
|
MS1 [label="MS"]
|
||||||
|
MS2 [label="MS"]
|
||||||
|
MS3 [label="MS"]
|
||||||
|
BTS0 [label="OsmoBTS"]
|
||||||
|
BTS1 [label="OsmoBTS"]
|
||||||
|
MS0->BTS0 [label="Um"]
|
||||||
|
MS1->BTS0 [label="Um"]
|
||||||
|
MS2->BTS1 [label="Um"]
|
||||||
|
MS3->BTS1 [label="Um"]
|
||||||
|
BTS0->BSC [label="Abis"]
|
||||||
|
BTS1->BSC [label="Abis"]
|
||||||
|
subgraph cluster_nitb {
|
||||||
|
label = "OsmoNITB";
|
||||||
|
BSC
|
||||||
|
MSC [label="MSC/VLR"]
|
||||||
|
HLR [label="HLR/AUC"]
|
||||||
|
BSC->MSC [label="A"]
|
||||||
|
MSC->HLR [label="C"]
|
||||||
|
MSC->EIR [label="F"]
|
||||||
|
MSC->SMSC;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
----
|
||||||
|
|
||||||
|
If intended by the user, it is of course also possible to implement an
|
||||||
|
OsmoBTS-compatible Abis-over-IP interface in any third party BSC. The
|
||||||
|
Abis/IP interface and its protocol are documented in the _OsmoBTS
|
||||||
|
Abis Protocol Specification_ <<osmobts-abis-spec>>. However, be advised
|
||||||
|
that such a configuration is currently not officially supported by
|
||||||
|
Osmocom.
|
||||||
85
doc/manuals/dtx.dot
Normal file
85
doc/manuals/dtx.dot
Normal file
@@ -0,0 +1,85 @@
|
|||||||
|
digraph dtx_dl_amr_fsm {
|
||||||
|
node [shape = doublecircle] ST_VOICE ST_FACCH ST_U_NOINH
|
||||||
|
node [shape = circle]
|
||||||
|
|
||||||
|
// default state for non-DTX and DTX when SPEECH is in progress
|
||||||
|
ST_VOICE -> ST_SID_F1 [ label = "E_SID_F" ]
|
||||||
|
ST_VOICE -> ST_F1_INH_V [ label = "E_INHIB" ]
|
||||||
|
ST_VOICE -> ST_U_NOINH [ label = "E_SID_U" ]
|
||||||
|
ST_VOICE -> ST_VOICE [ label = "E_VOICE" ]
|
||||||
|
ST_VOICE -> ST_VOICE [ label = "E_FACCH" ]
|
||||||
|
|
||||||
|
// SID-FIRST or SID-FIRST-P1 in case of AMR HR: start of silence period (might be interrupted in case of AMR HR)
|
||||||
|
ST_SID_F1 -> ST_SID_F1 [ label = "E_SID_F" ]
|
||||||
|
ST_SID_F1 -> ST_U_NOINH [ label = "E_SID_U" ]
|
||||||
|
ST_SID_F1 -> ST_F1_INH_F [ label = "E_FACCH" ]
|
||||||
|
ST_SID_F1 -> ST_SID_F2 [ label = "E_FIRST" ]
|
||||||
|
ST_SID_F1 -> ST_ONSET_V [ label = "E_ONSET" ]
|
||||||
|
|
||||||
|
// SID-FIRST P2 (only for AMR HR): actual start of silence period in case of AMR HR
|
||||||
|
ST_SID_F2 -> ST_U_NOINH [ label = "E_COMPL" ]
|
||||||
|
ST_SID_F2 -> ST_ONSET_F [ label = "E_FACCH" ]
|
||||||
|
ST_SID_F2 -> ST_ONSET_V [ label = "E_ONSET" ]
|
||||||
|
|
||||||
|
// SID-FIRST Inhibited: incoming SPEECH (only for AMR HR)
|
||||||
|
ST_F1_INH_V -> ST_F1_INH_V_REC [ label = "E_COMPL" ]
|
||||||
|
|
||||||
|
// SID-FIRST Inhibited: incoming FACCH frame (only for AMR HR)
|
||||||
|
ST_F1_INH_F -> ST_F1_INH_F_REC [ label = "E_COMPL" ]
|
||||||
|
|
||||||
|
// SID-UPDATE Inhibited: incoming SPEECH (only for AMR HR)
|
||||||
|
ST_U_INH_V -> ST_U_INH_V_REC [ label = "E_COMPL" ]
|
||||||
|
|
||||||
|
// SID-UPDATE Inhibited: incoming FACCH frame (only for AMR HR)
|
||||||
|
ST_U_INH_F -> ST_U_INH_F_REC [ label = "E_COMPL" ]
|
||||||
|
|
||||||
|
// Silence period with periodic comfort noise data updates (no Inhibition)
|
||||||
|
ST_U_NOINH -> ST_ONSET_F [ label = "E_FACCH" ]
|
||||||
|
ST_U_NOINH -> ST_VOICE [ label = "E_VOICE" ]
|
||||||
|
ST_U_NOINH -> ST_U_NOINH [ label = "E_SID_U" ]
|
||||||
|
ST_U_NOINH -> ST_U_NOINH [ label = "E_SID_F" ]
|
||||||
|
ST_U_NOINH -> ST_ONSET_V [ label = "E_ONSET" ]
|
||||||
|
ST_U_NOINH -> ST_SID_U [ label = "E_COMPL" ]
|
||||||
|
|
||||||
|
// SID-FIRST Inhibition recursion in progress: Inhibit itself was already sent, now have to send the voice that caused it
|
||||||
|
ST_F1_INH_V_REC -> ST_VOICE [ label = "E_COMPL" ]
|
||||||
|
ST_F1_INH_V_REC -> ST_VOICE [ label = "E_VOICE" ]
|
||||||
|
|
||||||
|
// SID-FIRST Inhibition recursion in progress: Inhibit itself was already sent, now have to send the voice that caused it
|
||||||
|
ST_F1_INH_F_REC -> ST_FACCH [ label = "E_COMPL" ]
|
||||||
|
ST_F1_INH_F_REC -> ST_FACCH [ label = "E_VOICE" ]
|
||||||
|
|
||||||
|
// SID-UPDATE Inhibition recursion in progress: Inhibit itself was already sent, now have to send the voice that caused it
|
||||||
|
ST_U_INH_V_REC -> ST_VOICE [ label = "E_COMPL" ]
|
||||||
|
ST_U_INH_V_REC -> ST_VOICE [ label = "E_VOICE" ]
|
||||||
|
|
||||||
|
// SID-UPDATE Inhibition recursion in progress: Inhibit itself was already sent, now have to send the voice that caused it
|
||||||
|
ST_U_INH_F_REC -> ST_FACCH [ label = "E_COMPL" ]
|
||||||
|
ST_U_INH_F_REC -> ST_FACCH [ label = "E_VOICE" ]
|
||||||
|
|
||||||
|
// Silence period with periodic comfort noise data updates (can be inhibited)
|
||||||
|
ST_SID_U -> ST_U_INH_F [ label = "E_FACCH" ]
|
||||||
|
ST_SID_U -> ST_VOICE [ label = "E_VOICE" ]
|
||||||
|
ST_SID_U -> ST_U_INH_V [ label = "E_INHIB" ]
|
||||||
|
ST_SID_U -> ST_U_NOINH [ label = "E_SID_U" ]
|
||||||
|
ST_SID_U -> ST_U_NOINH [ label = "E_SID_F" ]
|
||||||
|
|
||||||
|
// ONSET - end of silent period due to incoming SPEECH frame
|
||||||
|
ST_ONSET_V -> ST_ONSET_V_REC [ label = "E_COMPL" ]
|
||||||
|
|
||||||
|
// ONSET - end of silent period due to incoming FACCH frame
|
||||||
|
ST_ONSET_F -> ST_ONSET_F_REC [ label = "E_COMPL" ]
|
||||||
|
|
||||||
|
// ONSET recursion in progress: ONSET itself was already sent, now have to send the data that caused it
|
||||||
|
ST_ONSET_F_REC -> ST_FACCH [ label = "E_COMPL" ]
|
||||||
|
|
||||||
|
// ONSET recursion in progress: ONSET itself was already sent, now have to send the voice that caused it
|
||||||
|
ST_ONSET_V_REC -> ST_VOICE [ label = "E_COMPL" ]
|
||||||
|
|
||||||
|
// FACCH sending state
|
||||||
|
ST_FACCH -> ST_VOICE [ label = "E_VOICE" ]
|
||||||
|
ST_FACCH -> ST_FACCH [ label = "E_FACCH" ]
|
||||||
|
ST_FACCH -> ST_FACCH [ label = "E_SID_U" ]
|
||||||
|
ST_FACCH -> ST_FACCH [ label = "E_SID_F" ]
|
||||||
|
ST_FACCH -> ST_SID_F1 [ label = "E_COMPL" ]
|
||||||
|
}
|
||||||
83
doc/manuals/osmobts-abis-docinfo.xml
Normal file
83
doc/manuals/osmobts-abis-docinfo.xml
Normal file
@@ -0,0 +1,83 @@
|
|||||||
|
<revhistory>
|
||||||
|
<revision>
|
||||||
|
<revnumber>1</revnumber>
|
||||||
|
<date>December 2015</date>
|
||||||
|
<authorinitials>NJH, HW</authorinitials>
|
||||||
|
<revremark>
|
||||||
|
Initial version, reflecting OsmoBTS master branch as on 2015-Dec-7
|
||||||
|
(commit e28a20a2d9d049cd6312e218a7646593bbc43431).
|
||||||
|
</revremark>
|
||||||
|
</revision>
|
||||||
|
<revision>
|
||||||
|
<revnumber>2</revnumber>
|
||||||
|
<date>February 2016</date>
|
||||||
|
<authorinitials>HW</authorinitials>
|
||||||
|
<revremark>
|
||||||
|
Updated version with Message Sequence Chart of OML and RSL bring-up.
|
||||||
|
</revremark>
|
||||||
|
</revision>
|
||||||
|
<revision>
|
||||||
|
<revnumber>2.1</revnumber>
|
||||||
|
<date>February 2016</date>
|
||||||
|
<authorinitials>HW</authorinitials>
|
||||||
|
<revremark>
|
||||||
|
Fix A-bis OML/RSL port number swap in message seqeuence charts.
|
||||||
|
</revremark>
|
||||||
|
</revision>
|
||||||
|
<revision>
|
||||||
|
<revnumber>2.2</revnumber>
|
||||||
|
<date>July 2016</date>
|
||||||
|
<authorinitials>NJH, HW</authorinitials>
|
||||||
|
<revremark>
|
||||||
|
Add description on Dynamic Channel Configuration in OML and activation in RSL.
|
||||||
|
</revremark>
|
||||||
|
</revision>
|
||||||
|
|
||||||
|
</revhistory>
|
||||||
|
|
||||||
|
<authorgroup>
|
||||||
|
<author>
|
||||||
|
<firstname>Neels</firstname>
|
||||||
|
<surname>Hofmeyr</surname>
|
||||||
|
<email>nhofmeyr@sysmocom.de</email>
|
||||||
|
<authorinitials>NJH</authorinitials>
|
||||||
|
<affiliation>
|
||||||
|
<shortaffil>sysmocom</shortaffil>
|
||||||
|
<orgname>sysmocom - s.f.m.c. GmbH</orgname>
|
||||||
|
<jobtitle>Senior Software Developer</jobtitle>
|
||||||
|
</affiliation>
|
||||||
|
</author>
|
||||||
|
<author>
|
||||||
|
<firstname>Harald</firstname>
|
||||||
|
<surname>Welte</surname>
|
||||||
|
<email>hwelte@sysmocom.de</email>
|
||||||
|
<authorinitials>HW</authorinitials>
|
||||||
|
<affiliation>
|
||||||
|
<shortaffil>sysmocom</shortaffil>
|
||||||
|
<orgname>sysmocom - s.f.m.c. GmbH</orgname>
|
||||||
|
<jobtitle>Managing Director</jobtitle>
|
||||||
|
</affiliation>
|
||||||
|
</author>
|
||||||
|
</authorgroup>
|
||||||
|
|
||||||
|
<copyright>
|
||||||
|
<year>2015-2016</year>
|
||||||
|
<holder>sysmocom - s.f.m.c. GmbH</holder>
|
||||||
|
</copyright>
|
||||||
|
|
||||||
|
<legalnotice>
|
||||||
|
<para>
|
||||||
|
Permission is granted to copy, distribute and/or modify this
|
||||||
|
document under the terms of the GNU Free Documentation License,
|
||||||
|
Version 1.3 or any later version published by the Free Software
|
||||||
|
Foundation; with no Invariant Sections, no Front-Cover Texts,
|
||||||
|
and no Back-Cover Texts. A copy of the license is included in
|
||||||
|
the section entitled "GNU Free Documentation License".
|
||||||
|
</para>
|
||||||
|
<para>
|
||||||
|
The Asciidoc source code of this manual can be found at
|
||||||
|
<ulink url="http://git.osmocom.org/osmo-gsm-manuals/">
|
||||||
|
http://git.osmocom.org/osmo-gsm-manuals/
|
||||||
|
</ulink>
|
||||||
|
</para>
|
||||||
|
</legalnotice>
|
||||||
92
doc/manuals/osmobts-abis.adoc
Normal file
92
doc/manuals/osmobts-abis.adoc
Normal file
@@ -0,0 +1,92 @@
|
|||||||
|
:gfdl-enabled:
|
||||||
|
|
||||||
|
OsmoBTS Abis Protocol Specification
|
||||||
|
===================================
|
||||||
|
Neels Hofmeyr <nhofmeyr@sysmocom.de>
|
||||||
|
|
||||||
|
== Introduction
|
||||||
|
|
||||||
|
This document describes the A-bis interface of *OsmoBTS*. Based on 3GPP TS
|
||||||
|
12.21 and 08.58, this document indicates which of the 3GPP specified A-bis
|
||||||
|
messages and IEs are implemented according to 3GPP specifications, which of
|
||||||
|
these are not or not fully implemented, as well as OsmoBTS-specific extensions
|
||||||
|
to the A-bis interface not specified by 3GPP.
|
||||||
|
|
||||||
|
Extensions to the A-bis interface specific to OsmoBTS are detailed in this
|
||||||
|
document. For details on the messages and IEs that comply with above mentioned
|
||||||
|
3GPP specifications, please refer to those documents.
|
||||||
|
|
||||||
|
.3GPP document versions referred to by this document
|
||||||
|
[cols="20%,80%"]
|
||||||
|
|===
|
||||||
|
|3GPP TS 08.56 | version 8.0.1 Release 1999
|
||||||
|
|3GPP TS 08.58 | version 8.6.0 Release 1999
|
||||||
|
|3GPP TS 08.60 | version 8.2.1 Release 1999
|
||||||
|
|3GPP TS 12.21 | version 8.0.0 Release 1999
|
||||||
|
|===
|
||||||
|
|
||||||
|
.IETF documents referred to by his document
|
||||||
|
[cols="20%,80%"]
|
||||||
|
|===
|
||||||
|
|IETF RFC 768 | User Datagram Protocol
|
||||||
|
|IETF RFC 791 | Internet Protocol
|
||||||
|
|IETF RFC 793 | Transmission Control Protocol
|
||||||
|
|IETF RFC 1889 | RTP: A Transport Protocol for Real-Time Applications
|
||||||
|
|IETF RFC 3551 | RTP Profle for Audio and Video Conferences with Minimal Control
|
||||||
|
|IETF RFC 4867 | RTP Payload Format and Files Storage Format for the Adaptive Multi-Rate (AMR) and Adaptive Multi-Rate Wideband (AMR-WB) Audio Codecs
|
||||||
|
|IETF RFC 5993 | RTP Payload Format for Global Systems for Mobile Communications Half Rate (GSM-HR)
|
||||||
|
|===
|
||||||
|
|
||||||
|
== Overview
|
||||||
|
|
||||||
|
The OsmoBTS A-bis interface consists of traffic management messages (RSL, Radio
|
||||||
|
Signalling Link) and network management messages (OML, Operation & Maintenance
|
||||||
|
Link), encapsulated in an IPA multiplex.
|
||||||
|
|
||||||
|
OML and RSL each use a separate TCP connection.
|
||||||
|
|
||||||
|
.TCP port numbers used by OsmoBTS Abis/IP
|
||||||
|
[options="header",width="50%",cols="35%,65%"]
|
||||||
|
|===
|
||||||
|
|TCP Port Number|Usage
|
||||||
|
|3002|A-bis OML (inside IPA multiplex)
|
||||||
|
|3003|A-bis RSL (inside IPA multiplex)
|
||||||
|
|===
|
||||||
|
|
||||||
|
Both TCP connections for OML and RSL are established in the BTS -> BSC
|
||||||
|
direction, i.e. the BTS is running as a TCP client, while the BSC is
|
||||||
|
running as a TCP server.
|
||||||
|
|
||||||
|
The BTS first establishes the TCP connection for OML. Via OML, the BSC
|
||||||
|
instructs the BTS to which IP address the RSL connection shall be
|
||||||
|
established.
|
||||||
|
|
||||||
|
.Overview of A-bis connection establishment
|
||||||
|
["mscgen"]
|
||||||
|
----
|
||||||
|
include::{srcdir}/abis/abis-startup.msc[]
|
||||||
|
----
|
||||||
|
|
||||||
|
=== Identities
|
||||||
|
|
||||||
|
The BTS is locally configured (via administrative means, out of band of
|
||||||
|
this specification) to have a Unit ID. The Unit ID consists of three
|
||||||
|
parts:
|
||||||
|
|
||||||
|
* The Site Number
|
||||||
|
* The BTS number at the site
|
||||||
|
* The TRX number within the BTS
|
||||||
|
|
||||||
|
include::{srcdir}/abis/ipa.adoc[]
|
||||||
|
|
||||||
|
include::{srcdir}/abis/oml.adoc[]
|
||||||
|
|
||||||
|
include::{srcdir}/abis/rsl.adoc[]
|
||||||
|
|
||||||
|
include::{srcdir}/abis/rtp.adoc[]
|
||||||
|
|
||||||
|
include::./common/chapters/port_numbers.adoc[]
|
||||||
|
|
||||||
|
include::./common/chapters/glossary.adoc[]
|
||||||
|
|
||||||
|
include::./common/chapters/gfdl.adoc[]
|
||||||
42
doc/manuals/osmobts-usermanual-docinfo.xml
Normal file
42
doc/manuals/osmobts-usermanual-docinfo.xml
Normal file
@@ -0,0 +1,42 @@
|
|||||||
|
<revhistory>
|
||||||
|
<revision>
|
||||||
|
<revnumber>1</revnumber>
|
||||||
|
<date>January 2016</date>
|
||||||
|
<authorinitials>HW</authorinitials>
|
||||||
|
<revremark>
|
||||||
|
Initial version, reflecting OsmoBTS master branch as on FIXME
|
||||||
|
(commit FIXME).
|
||||||
|
</revremark>
|
||||||
|
</revision>
|
||||||
|
</revhistory>
|
||||||
|
|
||||||
|
<authorgroup>
|
||||||
|
<author>
|
||||||
|
<firstname>Harald</firstname>
|
||||||
|
<surname>Welte</surname>
|
||||||
|
<email>hwelte@sysmocom.de</email>
|
||||||
|
<authorinitials>HW</authorinitials>
|
||||||
|
<affiliation>
|
||||||
|
<shortaffil>sysmocom</shortaffil>
|
||||||
|
<orgname>sysmocom - s.f.m.c. GmbH</orgname>
|
||||||
|
<jobtitle>Managing Director</jobtitle>
|
||||||
|
</affiliation>
|
||||||
|
</author>
|
||||||
|
</authorgroup>
|
||||||
|
|
||||||
|
<copyright>
|
||||||
|
<year>2016</year>
|
||||||
|
<holder>sysmocom - s.f.m.c. GmbH</holder>
|
||||||
|
</copyright>
|
||||||
|
|
||||||
|
<legalnotice>
|
||||||
|
<para>
|
||||||
|
Permission is granted to copy, distribute and/or modify this
|
||||||
|
document under the terms of the GNU Free Documentation License,
|
||||||
|
Version 1.3 or any later version published by the Free Software
|
||||||
|
Foundation; with the Invariant Sections being just 'Foreword',
|
||||||
|
'Acknowledgements' and 'Preface', with no Front-Cover Texts,
|
||||||
|
and no Back-Cover Texts. A copy of the license is included in
|
||||||
|
the section entitled "GNU Free Documentation License".
|
||||||
|
</para>
|
||||||
|
</legalnotice>
|
||||||
43
doc/manuals/osmobts-usermanual.adoc
Normal file
43
doc/manuals/osmobts-usermanual.adoc
Normal file
@@ -0,0 +1,43 @@
|
|||||||
|
:gfdl-enabled:
|
||||||
|
|
||||||
|
OsmoBTS User Manual
|
||||||
|
===================
|
||||||
|
Harald Welte <hwelte@sysmocom.de>
|
||||||
|
|
||||||
|
include::./common/chapters/preface.adoc[]
|
||||||
|
|
||||||
|
include::{srcdir}/chapters/overview.adoc[]
|
||||||
|
|
||||||
|
include::./common/chapters/abis.adoc[]
|
||||||
|
|
||||||
|
include::{srcdir}/chapters/interfaces.adoc[]
|
||||||
|
|
||||||
|
include::{srcdir}/chapters/control.adoc[]
|
||||||
|
|
||||||
|
include::./common/chapters/counters-overview.adoc[]
|
||||||
|
|
||||||
|
include::{srcdir}/chapters/counters.adoc[]
|
||||||
|
|
||||||
|
include::./common/chapters/vty.adoc[]
|
||||||
|
|
||||||
|
include::./common/chapters/logging.adoc[]
|
||||||
|
|
||||||
|
include::{srcdir}/chapters/configuration.adoc[]
|
||||||
|
|
||||||
|
include::{srcdir}/chapters/dynamic-timeslots.adoc[]
|
||||||
|
|
||||||
|
include::{srcdir}/chapters/bts-models.adoc[]
|
||||||
|
|
||||||
|
include::{srcdir}/chapters/architecture.adoc[]
|
||||||
|
|
||||||
|
include::./common/chapters/trx_if.adoc[]
|
||||||
|
|
||||||
|
include::./common/chapters/control_if.adoc[]
|
||||||
|
|
||||||
|
include::./common/chapters/port_numbers.adoc[]
|
||||||
|
|
||||||
|
include::./common/chapters/bibliography.adoc[]
|
||||||
|
|
||||||
|
include::./common/chapters/glossary.adoc[]
|
||||||
|
|
||||||
|
include::./common/chapters/gfdl.adoc[]
|
||||||
38
doc/manuals/osmobts-vty-reference.xml
Normal file
38
doc/manuals/osmobts-vty-reference.xml
Normal file
@@ -0,0 +1,38 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!--
|
||||||
|
ex:ts=2:sw=42sts=2:et
|
||||||
|
-*- tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*-
|
||||||
|
-->
|
||||||
|
<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML 5.0//EN"
|
||||||
|
"http://docbook.org/xml/5.0/dtd/docbook.dtd" [
|
||||||
|
<!ENTITY chapter-vty SYSTEM "./common/chapters/vty.xml" >
|
||||||
|
<!ENTITY sections-vty SYSTEM "generated/docbook_vty.xml" >
|
||||||
|
]>
|
||||||
|
|
||||||
|
<book>
|
||||||
|
<info>
|
||||||
|
<revhistory>
|
||||||
|
<revision>
|
||||||
|
<revnumber>v1</revnumber>
|
||||||
|
<date>13th October 2016</date>
|
||||||
|
<authorinitials>hw</authorinitials>
|
||||||
|
<revremark>Initial</revremark>
|
||||||
|
</revision>
|
||||||
|
</revhistory>
|
||||||
|
|
||||||
|
<title>OsmoBTS VTY Reference</title>
|
||||||
|
|
||||||
|
<copyright>
|
||||||
|
<year>2016</year>
|
||||||
|
</copyright>
|
||||||
|
|
||||||
|
<legalnotice>
|
||||||
|
<para>This work is copyright by <orgname>sysmocom - s.f.m.c. GmbH</orgname>. All rights reserved.
|
||||||
|
</para>
|
||||||
|
</legalnotice>
|
||||||
|
</info>
|
||||||
|
|
||||||
|
<!-- Main chapters-->
|
||||||
|
&chapter-vty;
|
||||||
|
</book>
|
||||||
|
|
||||||
17
doc/manuals/regen_doc.sh
Executable file
17
doc/manuals/regen_doc.sh
Executable file
@@ -0,0 +1,17 @@
|
|||||||
|
#!/bin/sh -x
|
||||||
|
|
||||||
|
if [ -z "$DOCKER_PLAYGROUND" ]; then
|
||||||
|
echo "You need to set DOCKER_PLAYGROUND"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
SCRIPT=$(realpath "$0")
|
||||||
|
MANUAL_DIR=$(dirname "$SCRIPT")
|
||||||
|
|
||||||
|
COMMIT=${COMMIT:-$(git log -1 --format=format:%H)}
|
||||||
|
|
||||||
|
cd "$DOCKER_PLAYGROUND/scripts" || exit 1
|
||||||
|
|
||||||
|
OSMO_BTS_BRANCH=$COMMIT ./regen_doc.sh osmo-bts 4241 \
|
||||||
|
"$MANUAL_DIR/chapters/counters_generated.adoc" \
|
||||||
|
"$MANUAL_DIR/vty/bts_vty_reference.xml"
|
||||||
73
doc/manuals/rtp-amr-docinfo.xml
Normal file
73
doc/manuals/rtp-amr-docinfo.xml
Normal file
@@ -0,0 +1,73 @@
|
|||||||
|
<revhistory>
|
||||||
|
<revision>
|
||||||
|
<revnumber>1</revnumber>
|
||||||
|
<date>October 2016</date>
|
||||||
|
<authorinitials>HW</authorinitials>
|
||||||
|
<revremark>
|
||||||
|
Initial version
|
||||||
|
</revremark>
|
||||||
|
</revision>
|
||||||
|
<revision>
|
||||||
|
<revnumber>2</revnumber>
|
||||||
|
<date>November 2016</date>
|
||||||
|
<authorinitials>MS</authorinitials>
|
||||||
|
<revremark>
|
||||||
|
FSM added
|
||||||
|
</revremark>
|
||||||
|
</revision>
|
||||||
|
<revision>
|
||||||
|
<revnumber>3</revnumber>
|
||||||
|
<date>July 2017</date>
|
||||||
|
<authorinitials>PE</authorinitials>
|
||||||
|
<revremark>
|
||||||
|
Add section and update sequence charts to describe requirement to receive all PH-DATA.ind events
|
||||||
|
</revremark>
|
||||||
|
</revision>
|
||||||
|
</revhistory>
|
||||||
|
|
||||||
|
<authorgroup>
|
||||||
|
<author>
|
||||||
|
<firstname>Harald</firstname>
|
||||||
|
<surname>Welte</surname>
|
||||||
|
<email>hwelte@sysmocom.de</email>
|
||||||
|
<authorinitials>HW</authorinitials>
|
||||||
|
<affiliation>
|
||||||
|
<shortaffil>sysmocom</shortaffil>
|
||||||
|
<orgname>sysmocom - s.f.m.c. GmbH</orgname>
|
||||||
|
<jobtitle>Managing Director</jobtitle>
|
||||||
|
</affiliation>
|
||||||
|
</author>
|
||||||
|
<author>
|
||||||
|
<firstname>Max</firstname>
|
||||||
|
<surname>Suraev</surname>
|
||||||
|
<email>msuraev@sysmocom.de</email>
|
||||||
|
<authorinitials>MS</authorinitials>
|
||||||
|
<affiliation>
|
||||||
|
<shortaffil>sysmocom</shortaffil>
|
||||||
|
<orgname>sysmocom - s.f.m.c. GmbH</orgname>
|
||||||
|
<jobtitle>Software Developer</jobtitle>
|
||||||
|
</affiliation>
|
||||||
|
</author>
|
||||||
|
</authorgroup>
|
||||||
|
|
||||||
|
<copyright>
|
||||||
|
<year>2016</year>
|
||||||
|
<holder>sysmocom - s.f.m.c. GmbH</holder>
|
||||||
|
</copyright>
|
||||||
|
|
||||||
|
<legalnotice>
|
||||||
|
<para>
|
||||||
|
Permission is granted to copy, distribute and/or modify this
|
||||||
|
document under the terms of the GNU Free Documentation License,
|
||||||
|
Version 1.3 or any later version published by the Free Software
|
||||||
|
Foundation; with no Invariant Sections, no Front-Cover Texts,
|
||||||
|
and no Back-Cover Texts. A copy of the license is included in
|
||||||
|
the section entitled "GNU Free Documentation License".
|
||||||
|
</para>
|
||||||
|
<para>
|
||||||
|
The Asciidoc source code of this manual can be found at
|
||||||
|
<ulink url="http://git.osmocom.org/osmo-gsm-manuals/">
|
||||||
|
http://git.osmocom.org/osmo-gsm-manuals/
|
||||||
|
</ulink>
|
||||||
|
</para>
|
||||||
|
</legalnotice>
|
||||||
1362
doc/manuals/rtp-amr.adoc
Normal file
1362
doc/manuals/rtp-amr.adoc
Normal file
File diff suppressed because it is too large
Load Diff
1
doc/manuals/vty/bts_vty_additions.xml
Normal file
1
doc/manuals/vty/bts_vty_additions.xml
Normal file
@@ -0,0 +1 @@
|
|||||||
|
<vtydoc xmlns='urn:osmocom:xml:libosmocore:vty:doc:1.0'/>
|
||||||
1742
doc/manuals/vty/bts_vty_reference.xml
Normal file
1742
doc/manuals/vty/bts_vty_reference.xml
Normal file
File diff suppressed because it is too large
Load Diff
@@ -22,7 +22,7 @@ The start-up procedure of OsmoBTS can be described as follows:
|
|||||||
| common | bts_controlif_setup() | Initialization of Control Interface
|
| common | bts_controlif_setup() | Initialization of Control Interface
|
||||||
| bts-specific | bts_model_ctrl_cmds_install()
|
| bts-specific | bts_model_ctrl_cmds_install()
|
||||||
| common | telnet_init() | Initialization of telnet interface
|
| common | telnet_init() | Initialization of telnet interface
|
||||||
| common | pcu_sock_init() | Initializaiton of PCU socket
|
| common | pcu_sock_init() | Initialization of PCU socket
|
||||||
| common | main() | Installation of signal handlers
|
| common | main() | Installation of signal handlers
|
||||||
| common | abis_open() | Start of the A-bis connection to BSC
|
| common | abis_open() | Start of the A-bis connection to BSC
|
||||||
| common | phy_links_open() | Iterate over list of configured PHY links
|
| common | phy_links_open() | Iterate over list of configured PHY links
|
||||||
|
|||||||
@@ -2,4 +2,4 @@ noinst_HEADERS = abis.h bts.h bts_model.h gsm_data.h gsm_data_shared.h logging.h
|
|||||||
oml.h paging.h rsl.h signal.h vty.h amr.h pcu_if.h pcuif_proto.h \
|
oml.h paging.h rsl.h signal.h vty.h amr.h pcu_if.h pcuif_proto.h \
|
||||||
handover.h msg_utils.h tx_power.h control_if.h cbch.h l1sap.h \
|
handover.h msg_utils.h tx_power.h control_if.h cbch.h l1sap.h \
|
||||||
power_control.h scheduler.h scheduler_backend.h phy_link.h \
|
power_control.h scheduler.h scheduler_backend.h phy_link.h \
|
||||||
dtx_dl_amr_fsm.h
|
dtx_dl_amr_fsm.h ta_control.h
|
||||||
|
|||||||
@@ -27,18 +27,12 @@ enum {
|
|||||||
extern void *tall_bts_ctx;
|
extern void *tall_bts_ctx;
|
||||||
|
|
||||||
int bts_init(struct gsm_bts *bts);
|
int bts_init(struct gsm_bts *bts);
|
||||||
|
int bts_trx_init(struct gsm_bts_trx *trx);
|
||||||
void bts_shutdown(struct gsm_bts *bts, const char *reason);
|
void bts_shutdown(struct gsm_bts *bts, const char *reason);
|
||||||
|
|
||||||
struct gsm_bts *create_bts(uint8_t num_trx, char *id);
|
|
||||||
int create_ms(struct gsm_bts_trx *trx, int maskc, uint8_t *maskv_tx,
|
|
||||||
uint8_t *maskv_rx);
|
|
||||||
void destroy_bts(struct gsm_bts *bts);
|
|
||||||
int work_bts(struct gsm_bts *bts);
|
|
||||||
int bts_link_estab(struct gsm_bts *bts);
|
int bts_link_estab(struct gsm_bts *bts);
|
||||||
int trx_link_estab(struct gsm_bts_trx *trx);
|
int trx_link_estab(struct gsm_bts_trx *trx);
|
||||||
int trx_set_available(struct gsm_bts_trx *trx, int avail);
|
int trx_set_available(struct gsm_bts_trx *trx, int avail);
|
||||||
void bts_new_si(void *arg);
|
|
||||||
void bts_setup_slot(struct gsm_bts_trx_ts *slot, uint8_t comb);
|
|
||||||
|
|
||||||
int bts_agch_enqueue(struct gsm_bts *bts, struct msgb *msg);
|
int bts_agch_enqueue(struct gsm_bts *bts, struct msgb *msg);
|
||||||
struct msgb *bts_agch_dequeue(struct gsm_bts *bts);
|
struct msgb *bts_agch_dequeue(struct gsm_bts *bts);
|
||||||
@@ -47,6 +41,7 @@ int bts_ccch_copy_msg(struct gsm_bts *bts, uint8_t *out_buf, struct gsm_time *gt
|
|||||||
int is_ag_res);
|
int is_ag_res);
|
||||||
|
|
||||||
uint8_t *bts_sysinfo_get(struct gsm_bts *bts, const struct gsm_time *g_time);
|
uint8_t *bts_sysinfo_get(struct gsm_bts *bts, const struct gsm_time *g_time);
|
||||||
|
void regenerate_si3_restoctets(struct gsm_bts *bts);
|
||||||
uint8_t *lchan_sacch_get(struct gsm_lchan *lchan);
|
uint8_t *lchan_sacch_get(struct gsm_lchan *lchan);
|
||||||
int lchan_init_lapdm(struct gsm_lchan *lchan);
|
int lchan_init_lapdm(struct gsm_lchan *lchan);
|
||||||
|
|
||||||
@@ -54,7 +49,7 @@ void load_timer_start(struct gsm_bts *bts);
|
|||||||
uint8_t num_agch(struct gsm_bts_trx *trx, const char * arg);
|
uint8_t num_agch(struct gsm_bts_trx *trx, const char * arg);
|
||||||
void bts_update_status(enum bts_global_status which, int on);
|
void bts_update_status(enum bts_global_status which, int on);
|
||||||
|
|
||||||
int trx_ms_pwr_ctrl_is_osmo(struct gsm_bts_trx *trx);
|
bool trx_ms_pwr_ctrl_is_osmo(struct gsm_bts_trx *trx);
|
||||||
|
|
||||||
struct gsm_time *get_time(struct gsm_bts *bts);
|
struct gsm_time *get_time(struct gsm_bts *bts);
|
||||||
|
|
||||||
@@ -63,5 +58,6 @@ int bts_main(int argc, char **argv);
|
|||||||
int bts_supports_cm(struct gsm_bts *bts, enum gsm_phys_chan_config pchan,
|
int bts_supports_cm(struct gsm_bts *bts, enum gsm_phys_chan_config pchan,
|
||||||
enum gsm48_chan_mode cm);
|
enum gsm48_chan_mode cm);
|
||||||
|
|
||||||
#endif /* _BTS_H */
|
int32_t bts_get_avg_fn_advance(struct gsm_bts *bts);
|
||||||
|
|
||||||
|
#endif /* _BTS_H */
|
||||||
|
|||||||
@@ -14,6 +14,7 @@ struct phy_instance;
|
|||||||
/* BTS model specific functions needed by the common code */
|
/* BTS model specific functions needed by the common code */
|
||||||
|
|
||||||
int bts_model_init(struct gsm_bts *bts);
|
int bts_model_init(struct gsm_bts *bts);
|
||||||
|
int bts_model_trx_init(struct gsm_bts_trx *trx);
|
||||||
|
|
||||||
int bts_model_check_oml(struct gsm_bts *bts, uint8_t msg_type,
|
int bts_model_check_oml(struct gsm_bts *bts, uint8_t msg_type,
|
||||||
struct tlv_parsed *old_attr, struct tlv_parsed *new_attr,
|
struct tlv_parsed *old_attr, struct tlv_parsed *new_attr,
|
||||||
@@ -59,6 +60,6 @@ void bts_model_phy_link_set_defaults(struct phy_link *plink);
|
|||||||
void bts_model_phy_instance_set_defaults(struct phy_instance *pinst);
|
void bts_model_phy_instance_set_defaults(struct phy_instance *pinst);
|
||||||
|
|
||||||
int bts_model_ts_disconnect(struct gsm_bts_trx_ts *ts);
|
int bts_model_ts_disconnect(struct gsm_bts_trx_ts *ts);
|
||||||
int bts_model_ts_connect(struct gsm_bts_trx_ts *ts, enum gsm_phys_chan_config as_pchan);
|
void bts_model_ts_connect(struct gsm_bts_trx_ts *ts, enum gsm_phys_chan_config as_pchan);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -6,10 +6,17 @@
|
|||||||
#include <osmo-bts/gsm_data.h>
|
#include <osmo-bts/gsm_data.h>
|
||||||
#include <osmo-bts/bts.h>
|
#include <osmo-bts/bts.h>
|
||||||
|
|
||||||
|
enum {
|
||||||
|
CBCH_CTR_RCVD_QUEUED,
|
||||||
|
CBCH_CTR_RCVD_DROPPED,
|
||||||
|
CBCH_CTR_SENT_SINGLE,
|
||||||
|
CBCH_CTR_SENT_DEFAULT,
|
||||||
|
CBCH_CTR_SENT_NULL,
|
||||||
|
};
|
||||||
|
|
||||||
/* incoming SMS broadcast command from RSL */
|
/* incoming SMS broadcast command from RSL */
|
||||||
int bts_process_smscb_cmd(struct gsm_bts *bts,
|
int bts_process_smscb_cmd(struct gsm_bts *bts, struct rsl_ie_cb_cmd_type cmd_type,
|
||||||
struct rsl_ie_cb_cmd_type cmd_type,
|
bool extended_cbch, uint8_t msg_len, const uint8_t *msg);
|
||||||
uint8_t msg_len, const uint8_t *msg);
|
|
||||||
|
|
||||||
/* call-back from bts model specific code when it wants to obtain a CBCH
|
/* call-back from bts model specific code when it wants to obtain a CBCH
|
||||||
* block for a given gsm_time. outbuf must have 23 bytes of space. */
|
* block for a given gsm_time. outbuf must have 23 bytes of space. */
|
||||||
|
|||||||
@@ -24,6 +24,8 @@
|
|||||||
#define GSM_BTS_AGCH_QUEUE_LOW_LEVEL_DEFAULT 41
|
#define GSM_BTS_AGCH_QUEUE_LOW_LEVEL_DEFAULT 41
|
||||||
#define GSM_BTS_AGCH_QUEUE_HIGH_LEVEL_DEFAULT 91
|
#define GSM_BTS_AGCH_QUEUE_HIGH_LEVEL_DEFAULT 91
|
||||||
|
|
||||||
|
#define LOGPLCHAN(lchan, ss, lvl, fmt, args...) LOGP(ss, lvl, "%s " fmt, gsm_lchan_name(lchan), ## args)
|
||||||
|
|
||||||
struct gsm_network {
|
struct gsm_network {
|
||||||
struct llist_head bts_list;
|
struct llist_head bts_list;
|
||||||
unsigned int num_bts;
|
unsigned int num_bts;
|
||||||
|
|||||||
@@ -15,6 +15,7 @@
|
|||||||
#include <osmocom/gsm/rxlev_stat.h>
|
#include <osmocom/gsm/rxlev_stat.h>
|
||||||
#include <osmocom/gsm/sysinfo.h>
|
#include <osmocom/gsm/sysinfo.h>
|
||||||
#include <osmocom/gsm/meas_rep.h>
|
#include <osmocom/gsm/meas_rep.h>
|
||||||
|
#include <osmocom/gsm/gsm48_rest_octets.h>
|
||||||
#include <osmocom/gsm/protocol/gsm_04_08.h>
|
#include <osmocom/gsm/protocol/gsm_04_08.h>
|
||||||
#include <osmocom/gsm/protocol/gsm_08_58.h>
|
#include <osmocom/gsm/protocol/gsm_08_58.h>
|
||||||
#include <osmocom/gsm/protocol/gsm_12_21.h>
|
#include <osmocom/gsm/protocol/gsm_12_21.h>
|
||||||
@@ -127,6 +128,7 @@ enum gsm_lchan_state {
|
|||||||
#define MAX_NUM_UL_MEAS 104
|
#define MAX_NUM_UL_MEAS 104
|
||||||
#define LC_UL_M_F_L1_VALID (1 << 0)
|
#define LC_UL_M_F_L1_VALID (1 << 0)
|
||||||
#define LC_UL_M_F_RES_VALID (1 << 1)
|
#define LC_UL_M_F_RES_VALID (1 << 1)
|
||||||
|
#define LC_UL_M_F_OSMO_EXT_VALID (1 << 2)
|
||||||
|
|
||||||
struct bts_ul_meas {
|
struct bts_ul_meas {
|
||||||
/* BER in units of 0.01%: 10.000 == 100% ber, 0 == 0% ber */
|
/* BER in units of 0.01%: 10.000 == 100% ber, 0 == 0% ber */
|
||||||
@@ -197,9 +199,6 @@ struct gsm_lchan {
|
|||||||
/* State */
|
/* State */
|
||||||
enum gsm_lchan_state state;
|
enum gsm_lchan_state state;
|
||||||
const char *broken_reason;
|
const char *broken_reason;
|
||||||
/* Power levels for MS and BTS */
|
|
||||||
uint8_t bs_power;
|
|
||||||
uint8_t ms_power;
|
|
||||||
/* Encryption information */
|
/* Encryption information */
|
||||||
struct {
|
struct {
|
||||||
uint8_t alg_id;
|
uint8_t alg_id;
|
||||||
@@ -239,6 +238,8 @@ struct gsm_lchan {
|
|||||||
struct {
|
struct {
|
||||||
/* bitmask of all SI that are present/valid in si_buf */
|
/* bitmask of all SI that are present/valid in si_buf */
|
||||||
uint32_t valid;
|
uint32_t valid;
|
||||||
|
/* bitmask of all SI that do not mirror the BTS-global SI values */
|
||||||
|
uint32_t overridden;
|
||||||
uint32_t last;
|
uint32_t last;
|
||||||
/* buffers where we put the pre-computed SI:
|
/* buffers where we put the pre-computed SI:
|
||||||
SI2Q_MAX_NUM is the max number of SI2quater messages (see 3GPP TS 44.018) */
|
SI2Q_MAX_NUM is the max number of SI2quater messages (see 3GPP TS 44.018) */
|
||||||
@@ -246,7 +247,7 @@ struct gsm_lchan {
|
|||||||
} si;
|
} si;
|
||||||
struct {
|
struct {
|
||||||
uint8_t flags;
|
uint8_t flags;
|
||||||
/* RSL measurment result number, 0 at lchan_act */
|
/* RSL measurement result number, 0 at lchan_act */
|
||||||
uint8_t res_nr;
|
uint8_t res_nr;
|
||||||
/* current Tx power level of the BTS */
|
/* current Tx power level of the BTS */
|
||||||
uint8_t bts_tx_pwr;
|
uint8_t bts_tx_pwr;
|
||||||
@@ -257,6 +258,17 @@ struct gsm_lchan {
|
|||||||
uint8_t l1_info[2];
|
uint8_t l1_info[2];
|
||||||
struct gsm_meas_rep_unidir ul_res;
|
struct gsm_meas_rep_unidir ul_res;
|
||||||
int16_t ms_toa256;
|
int16_t ms_toa256;
|
||||||
|
/* Frame number of the last measurement indication receceived */
|
||||||
|
uint32_t last_fn;
|
||||||
|
/* Osmocom extended measurement results, see LC_UL_M_F_EXTD_VALID */
|
||||||
|
struct {
|
||||||
|
/* minimum value of toa256 during measurement period */
|
||||||
|
int16_t toa256_min;
|
||||||
|
/* maximum value of toa256 during measurement period */
|
||||||
|
int16_t toa256_max;
|
||||||
|
/* standard deviation of toa256 value during measurement period */
|
||||||
|
uint16_t toa256_std_dev;
|
||||||
|
} ext;
|
||||||
} meas;
|
} meas;
|
||||||
struct {
|
struct {
|
||||||
struct amr_multirate_conf amr_mr;
|
struct amr_multirate_conf amr_mr;
|
||||||
@@ -275,6 +287,8 @@ struct gsm_lchan {
|
|||||||
/* indicates if DTXd was active during DL measurement
|
/* indicates if DTXd was active during DL measurement
|
||||||
period */
|
period */
|
||||||
bool dl_active;
|
bool dl_active;
|
||||||
|
/* last UL SPEECH resume flag */
|
||||||
|
bool is_speech_resume;
|
||||||
} dtx;
|
} dtx;
|
||||||
uint8_t last_cmr;
|
uint8_t last_cmr;
|
||||||
uint32_t last_fn;
|
uint32_t last_fn;
|
||||||
@@ -306,17 +320,23 @@ struct gsm_lchan {
|
|||||||
/* power handling */
|
/* power handling */
|
||||||
struct {
|
struct {
|
||||||
uint8_t current;
|
uint8_t current;
|
||||||
uint8_t fixed;
|
uint8_t max;
|
||||||
|
bool fixed;
|
||||||
} ms_power_ctrl;
|
} ms_power_ctrl;
|
||||||
|
/* Power levels for BTS */
|
||||||
|
uint8_t bs_power;
|
||||||
|
|
||||||
struct msgb *pending_rel_ind_msg;
|
struct msgb *pending_rel_ind_msg;
|
||||||
|
|
||||||
/* ECU (Error Concealment Unit) state */
|
/* ECU (Error Concealment Unit) state */
|
||||||
union {
|
struct osmo_ecu_state *ecu_state;
|
||||||
struct osmo_ecu_fr_state fr;
|
|
||||||
} ecu_state;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static inline uint8_t lchan_get_ta(const struct gsm_lchan *lchan)
|
||||||
|
{
|
||||||
|
return lchan->meas.l1_info[1];
|
||||||
|
}
|
||||||
|
|
||||||
extern const struct value_string lchan_ciph_state_names[];
|
extern const struct value_string lchan_ciph_state_names[];
|
||||||
static inline const char *lchan_ciph_state_name(uint8_t state) {
|
static inline const char *lchan_ciph_state_name(uint8_t state) {
|
||||||
return get_value_string(lchan_ciph_state_names, state);
|
return get_value_string(lchan_ciph_state_names, state);
|
||||||
@@ -392,9 +412,12 @@ struct gsm_bts_trx {
|
|||||||
uint16_t arfcn;
|
uint16_t arfcn;
|
||||||
int nominal_power; /* in dBm */
|
int nominal_power; /* in dBm */
|
||||||
unsigned int max_power_red; /* in actual dB */
|
unsigned int max_power_red; /* in actual dB */
|
||||||
|
uint8_t max_power_backoff_8psk; /* in actual dB OC-2G only */
|
||||||
|
uint8_t c0_idle_power_red; /* in actual dB OC-2G only */
|
||||||
|
|
||||||
|
|
||||||
struct trx_power_params power_params;
|
struct trx_power_params power_params;
|
||||||
int ms_power_control;
|
bool ms_pwr_ctl_soft; /* is power control loop done by osmocom software? */
|
||||||
|
|
||||||
struct {
|
struct {
|
||||||
void *l1h;
|
void *l1h;
|
||||||
@@ -418,6 +441,7 @@ struct gsm_bts_trx {
|
|||||||
enum gsm_bts_type_variant {
|
enum gsm_bts_type_variant {
|
||||||
BTS_UNKNOWN,
|
BTS_UNKNOWN,
|
||||||
BTS_OSMO_LITECELL15,
|
BTS_OSMO_LITECELL15,
|
||||||
|
BTS_OSMO_OC2G,
|
||||||
BTS_OSMO_OCTPHY,
|
BTS_OSMO_OCTPHY,
|
||||||
BTS_OSMO_SYSMO,
|
BTS_OSMO_SYSMO,
|
||||||
BTS_OSMO_TRX,
|
BTS_OSMO_TRX,
|
||||||
@@ -453,6 +477,13 @@ enum gsm_bts_features {
|
|||||||
BTS_FEAT_SPEECH_F_EFR,
|
BTS_FEAT_SPEECH_F_EFR,
|
||||||
BTS_FEAT_SPEECH_F_AMR,
|
BTS_FEAT_SPEECH_F_AMR,
|
||||||
BTS_FEAT_SPEECH_H_AMR,
|
BTS_FEAT_SPEECH_H_AMR,
|
||||||
|
BTS_FEAT_ETWS_PN,
|
||||||
|
BTS_FEAT_MS_PWR_CTRL_DSP,
|
||||||
|
/* When the feature is set then the measurement data is included in
|
||||||
|
* (PRIM_PH_DATA) and struct ph_tch_param (PRIM_TCH). Otherwise the
|
||||||
|
* measurement data is passed using a separate MPH INFO MEAS IND.
|
||||||
|
* (See also ticket: OS#2977) */
|
||||||
|
BTS_FEAT_MEAS_PAYLOAD_COMB,
|
||||||
_NUM_BTS_FEAT
|
_NUM_BTS_FEAT
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -514,15 +545,24 @@ struct gprs_rlc_cfg {
|
|||||||
uint8_t initial_mcs;
|
uint8_t initial_mcs;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
struct bts_smscb_state {
|
||||||
|
struct llist_head queue; /* list of struct smscb_msg */
|
||||||
|
int queue_len;
|
||||||
|
struct rate_ctr_group *ctrs;
|
||||||
|
struct smscb_msg *cur_msg; /* current SMS-CB */
|
||||||
|
struct smscb_msg *default_msg; /* default broadcast message; NULL if none */
|
||||||
|
};
|
||||||
|
|
||||||
|
/* The amount of time within which a sudden disconnect of a newly established
|
||||||
|
* OML connection will cause a special warning to be logged. */
|
||||||
|
#define OSMO_BTS_OML_CONN_EARLY_DISCONNECT 10 /* in seconds */
|
||||||
|
|
||||||
/* One BTS */
|
/* One BTS */
|
||||||
struct gsm_bts {
|
struct gsm_bts {
|
||||||
/* list header in net->bts_list */
|
/* list header in net->bts_list */
|
||||||
struct llist_head list;
|
struct llist_head list;
|
||||||
|
|
||||||
/* Geographical location of the BTS */
|
/* number of the BTS in network */
|
||||||
struct llist_head loc_list;
|
|
||||||
|
|
||||||
/* number of ths BTS in network */
|
|
||||||
uint8_t nr;
|
uint8_t nr;
|
||||||
/* human readable name / description */
|
/* human readable name / description */
|
||||||
char *description;
|
char *description;
|
||||||
@@ -552,6 +592,7 @@ struct gsm_bts {
|
|||||||
/* how do we talk OML with this TRX? */
|
/* how do we talk OML with this TRX? */
|
||||||
uint8_t oml_tei;
|
uint8_t oml_tei;
|
||||||
struct e1inp_sign_link *oml_link;
|
struct e1inp_sign_link *oml_link;
|
||||||
|
struct timespec oml_conn_established_timestamp;
|
||||||
|
|
||||||
/* Abis network management O&M handle */
|
/* Abis network management O&M handle */
|
||||||
struct abis_nm_h *nmh;
|
struct abis_nm_h *nmh;
|
||||||
@@ -582,8 +623,12 @@ struct gsm_bts {
|
|||||||
/* offsets used while generating SI2quater */
|
/* offsets used while generating SI2quater */
|
||||||
size_t e_offset;
|
size_t e_offset;
|
||||||
size_t u_offset;
|
size_t u_offset;
|
||||||
|
/* decoded SI3 rest octets - *unmodified* as received from BSC */
|
||||||
|
struct osmo_gsm48_si_ro_info si3_ro_decoded;
|
||||||
|
/* is SI3 GPRS Indicator currently disabled due to lack of PCU connection? */
|
||||||
|
bool si3_gprs_ind_disabled;
|
||||||
|
|
||||||
/* ip.accesss Unit ID's have Site/BTS/TRX layout */
|
/* ip.access Unit ID's have Site/BTS/TRX layout */
|
||||||
union {
|
union {
|
||||||
struct {
|
struct {
|
||||||
uint16_t site_id;
|
uint16_t site_id;
|
||||||
@@ -678,11 +723,26 @@ struct gsm_bts {
|
|||||||
uint64_t pch_msgs;
|
uint64_t pch_msgs;
|
||||||
} agch_queue;
|
} agch_queue;
|
||||||
|
|
||||||
|
struct {
|
||||||
|
uint8_t *prim_notif; /* ETWS primary notification (NULL if none) */
|
||||||
|
ssize_t prim_notif_len; /* Length of prim_notif; expected 56 bytes */
|
||||||
|
uint8_t page_size;
|
||||||
|
uint8_t num_pages; /* total number of pages */
|
||||||
|
uint8_t next_page; /* next page number to be sent */
|
||||||
|
bool pni; /* Primary Notification Identifier */
|
||||||
|
} etws;
|
||||||
|
|
||||||
struct paging_state *paging_state;
|
struct paging_state *paging_state;
|
||||||
char *bsc_oml_host;
|
char *bsc_oml_host;
|
||||||
struct llist_head oml_queue;
|
struct llist_head oml_queue;
|
||||||
unsigned int rtp_jitter_buf_ms;
|
unsigned int rtp_jitter_buf_ms;
|
||||||
bool rtp_jitter_adaptive;
|
bool rtp_jitter_adaptive;
|
||||||
|
|
||||||
|
uint16_t rtp_port_range_start;
|
||||||
|
uint16_t rtp_port_range_end;
|
||||||
|
uint16_t rtp_port_range_next;
|
||||||
|
int rtp_ip_dscp;
|
||||||
|
|
||||||
struct {
|
struct {
|
||||||
uint8_t ciphers; /* flags A5/1==0x1, A5/2==0x2, A5/3==0x4 */
|
uint8_t ciphers; /* flags A5/1==0x1, A5/2==0x2, A5/3==0x4 */
|
||||||
} support;
|
} support;
|
||||||
@@ -690,6 +750,14 @@ struct gsm_bts {
|
|||||||
uint8_t tc4_ctr;
|
uint8_t tc4_ctr;
|
||||||
} si;
|
} si;
|
||||||
struct gsm_time gsm_time;
|
struct gsm_time gsm_time;
|
||||||
|
/* frame number statistics (FN in PH-RTS.ind vs. PH-DATA.ind */
|
||||||
|
struct {
|
||||||
|
int32_t min; /* minimum observed */
|
||||||
|
int32_t max; /* maximum observed */
|
||||||
|
int32_t avg256; /* accumulator */
|
||||||
|
uint32_t avg_count; /* number of samples accumulated in avg256 */
|
||||||
|
uint32_t avg_window; /* number of averages in avg_count */
|
||||||
|
} fn_stats;
|
||||||
/* Radio Link Timeout counter. -1 disables timeout for
|
/* Radio Link Timeout counter. -1 disables timeout for
|
||||||
* lab/measurement purpose */
|
* lab/measurement purpose */
|
||||||
int radio_link_timeout;
|
int radio_link_timeout;
|
||||||
@@ -699,25 +767,30 @@ struct gsm_bts {
|
|||||||
/* used by the sysmoBTS to adjust band */
|
/* used by the sysmoBTS to adjust band */
|
||||||
uint8_t auto_band;
|
uint8_t auto_band;
|
||||||
|
|
||||||
struct {
|
/* State for SMSCB (Cell Broadcast) for BASIC and EXTENDED channel */
|
||||||
struct llist_head queue; /* list of struct smscb_msg */
|
struct bts_smscb_state smscb_basic;
|
||||||
struct smscb_msg *cur_msg; /* current SMS-CB */
|
struct bts_smscb_state smscb_extended;
|
||||||
} smscb_state;
|
int smscb_queue_tgt_len; /* ideal/target queue length */
|
||||||
|
int smscb_queue_max_len; /* maximum queue length */
|
||||||
|
int smscb_queue_hyst; /* hysteresis for CBCH load indications */
|
||||||
|
|
||||||
float min_qual_rach; /* minimum quality for RACH bursts */
|
int16_t min_qual_rach; /* minimum link quality (in centiBels) for Access Bursts */
|
||||||
float min_qual_norm; /* minimum quality for normal daata */
|
int16_t min_qual_norm; /* minimum link quality (in centiBels) for Normal Bursts */
|
||||||
uint16_t max_ber10k_rach; /* Maximum permitted RACH BER in 0.01% */
|
uint16_t max_ber10k_rach; /* Maximum permitted RACH BER in 0.01% */
|
||||||
|
|
||||||
struct {
|
struct {
|
||||||
char *sock_path;
|
char *sock_path;
|
||||||
} pcu;
|
} pcu;
|
||||||
|
|
||||||
|
void *model_priv; /* Allocated by bts_model, contains model specific data pointer */
|
||||||
|
#ifdef ENABLE_LC15BTS
|
||||||
|
/* specific to LC15 BTS */
|
||||||
struct {
|
struct {
|
||||||
uint32_t last_fn;
|
uint8_t led_ctrl_mode; /* 0: control by BTS, 1: not control by BTS */
|
||||||
struct timeval tv_clock;
|
struct llist_head ceased_alarm_list; /* ceased alarm list*/
|
||||||
struct osmo_timer_list fn_timer;
|
unsigned int rtp_drift_thres_ms; /* RTP timestamp drift detection threshold */
|
||||||
} vbts;
|
} lc15;
|
||||||
|
#endif
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
@@ -776,11 +849,6 @@ void *
|
|||||||
gsm_objclass2obj(struct gsm_bts *bts, uint8_t obj_class,
|
gsm_objclass2obj(struct gsm_bts *bts, uint8_t obj_class,
|
||||||
const struct abis_om_obj_inst *obj_inst);
|
const struct abis_om_obj_inst *obj_inst);
|
||||||
|
|
||||||
/* reset the state of all MO in the BTS */
|
|
||||||
void gsm_bts_mo_reset(struct gsm_bts *bts);
|
|
||||||
|
|
||||||
uint8_t gsm_pchan2chan_nr(enum gsm_phys_chan_config pchan,
|
|
||||||
uint8_t ts_nr, uint8_t lchan_nr);
|
|
||||||
uint8_t gsm_lchan2chan_nr(const struct gsm_lchan *lchan);
|
uint8_t gsm_lchan2chan_nr(const struct gsm_lchan *lchan);
|
||||||
uint8_t gsm_lchan_as_pchan2chan_nr(const struct gsm_lchan *lchan,
|
uint8_t gsm_lchan_as_pchan2chan_nr(const struct gsm_lchan *lchan,
|
||||||
enum gsm_phys_chan_config as_pchan);
|
enum gsm_phys_chan_config as_pchan);
|
||||||
@@ -812,4 +880,6 @@ uint8_t ts_subslots(struct gsm_bts_trx_ts *ts);
|
|||||||
bool ts_is_tch(struct gsm_bts_trx_ts *ts);
|
bool ts_is_tch(struct gsm_bts_trx_ts *ts);
|
||||||
const char *gsm_trx_unit_id(struct gsm_bts_trx *trx);
|
const char *gsm_trx_unit_id(struct gsm_bts_trx *trx);
|
||||||
|
|
||||||
|
int lchan2ecu_codec(const struct gsm_lchan *lchan);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -2,6 +2,7 @@
|
|||||||
#define L1SAP_H
|
#define L1SAP_H
|
||||||
|
|
||||||
#include <osmocom/gsm/protocol/gsm_04_08.h>
|
#include <osmocom/gsm/protocol/gsm_04_08.h>
|
||||||
|
#include <osmocom/gsm/protocol/gsm_08_58.h>
|
||||||
|
|
||||||
/* lchan link ID */
|
/* lchan link ID */
|
||||||
#define LID_SACCH 0x40
|
#define LID_SACCH 0x40
|
||||||
@@ -12,23 +13,36 @@
|
|||||||
#define L1SAP_CHAN2SS_TCHH(chan_nr) ((chan_nr >> 3) & 1)
|
#define L1SAP_CHAN2SS_TCHH(chan_nr) ((chan_nr >> 3) & 1)
|
||||||
#define L1SAP_CHAN2SS_SDCCH4(chan_nr) ((chan_nr >> 3) & 3)
|
#define L1SAP_CHAN2SS_SDCCH4(chan_nr) ((chan_nr >> 3) & 3)
|
||||||
#define L1SAP_CHAN2SS_SDCCH8(chan_nr) ((chan_nr >> 3) & 7)
|
#define L1SAP_CHAN2SS_SDCCH8(chan_nr) ((chan_nr >> 3) & 7)
|
||||||
|
#define L1SAP_CHAN2SS_BCCH(chan_nr) (CCCH_LCHAN)
|
||||||
|
|
||||||
/* logical channel from chan_nr + link_id */
|
/* logical channel from chan_nr + link_id */
|
||||||
#define L1SAP_IS_LINK_SACCH(link_id) ((link_id & 0xC0) == LID_SACCH)
|
#define L1SAP_IS_LINK_SACCH(link_id) \
|
||||||
#define L1SAP_IS_CHAN_TCHF(chan_nr) ((chan_nr & 0xf8) == 0x08)
|
((link_id & 0xC0) == LID_SACCH)
|
||||||
#define L1SAP_IS_CHAN_TCHH(chan_nr) ((chan_nr & 0xf0) == 0x10)
|
#define L1SAP_IS_CHAN_TCHF(chan_nr) \
|
||||||
#define L1SAP_IS_CHAN_SDCCH4(chan_nr) ((chan_nr & 0xe0) == 0x20)
|
((chan_nr & 0xf8) == RSL_CHAN_Bm_ACCHs)
|
||||||
#define L1SAP_IS_CHAN_SDCCH8(chan_nr) ((chan_nr & 0xc0) == 0x40)
|
#define L1SAP_IS_CHAN_TCHH(chan_nr) \
|
||||||
#define L1SAP_IS_CHAN_BCCH(chan_nr) ((chan_nr & 0xf8) == 0x80)
|
((chan_nr & 0xf0) == RSL_CHAN_Lm_ACCHs)
|
||||||
#define L1SAP_IS_CHAN_RACH(chan_nr) ((chan_nr & 0xf8) == 0x88)
|
#define L1SAP_IS_CHAN_SDCCH4(chan_nr) \
|
||||||
#define L1SAP_IS_CHAN_AGCH_PCH(chan_nr) ((chan_nr & 0xf8) == 0x90)
|
((chan_nr & 0xe0) == RSL_CHAN_SDCCH4_ACCH)
|
||||||
#define L1SAP_IS_CHAN_PDCH(chan_nr) ((chan_nr & 0xf8) == 0xc0)
|
#define L1SAP_IS_CHAN_SDCCH8(chan_nr) \
|
||||||
|
((chan_nr & 0xc0) == RSL_CHAN_SDCCH8_ACCH)
|
||||||
|
#define L1SAP_IS_CHAN_BCCH(chan_nr) \
|
||||||
|
((chan_nr & 0xf8) == RSL_CHAN_BCCH)
|
||||||
|
#define L1SAP_IS_CHAN_RACH(chan_nr) \
|
||||||
|
((chan_nr & 0xf8) == RSL_CHAN_RACH)
|
||||||
|
#define L1SAP_IS_CHAN_AGCH_PCH(chan_nr) \
|
||||||
|
((chan_nr & 0xf8) == RSL_CHAN_PCH_AGCH)
|
||||||
|
#define L1SAP_IS_CHAN_PDCH(chan_nr) \
|
||||||
|
((chan_nr & 0xf8) == RSL_CHAN_OSMO_PDCH)
|
||||||
|
#define L1SAP_IS_CHAN_CBCH(chan_nr) \
|
||||||
|
((chan_nr & 0xf8) == RSL_CHAN_OSMO_CBCH4) \
|
||||||
|
|| ((chan_nr & 0xf8) == RSL_CHAN_OSMO_CBCH8)
|
||||||
|
|
||||||
/* rach type from ra */
|
/* rach type from ra */
|
||||||
#define L1SAP_IS_PACKET_RACH(ra) ((ra & 0xf0) == 0x70 && (ra & 0x0f) != 0x0f)
|
#define L1SAP_IS_PACKET_RACH(ra) ((ra & 0xf0) == 0x70 && (ra & 0x0f) != 0x0f)
|
||||||
|
|
||||||
/* CCCH block from frame number */
|
/* CCCH block from frame number */
|
||||||
#define L1SAP_FN2CCCHBLOCK(fn) ((fn % 51) / 5 - 1)
|
unsigned int l1sap_fn2ccch_block(uint32_t fn);
|
||||||
|
|
||||||
/* PTCH layout from frame number */
|
/* PTCH layout from frame number */
|
||||||
#define L1SAP_FN2MACBLOCK(fn) ((fn % 52) / 4)
|
#define L1SAP_FN2MACBLOCK(fn) ((fn % 52) / 4)
|
||||||
@@ -47,6 +61,8 @@ static const uint8_t fill_frame[GSM_MACBLOCK_LEN] = {
|
|||||||
/* subslot from any chan_nr */
|
/* subslot from any chan_nr */
|
||||||
static inline uint8_t l1sap_chan2ss(uint8_t chan_nr)
|
static inline uint8_t l1sap_chan2ss(uint8_t chan_nr)
|
||||||
{
|
{
|
||||||
|
if (L1SAP_IS_CHAN_BCCH(chan_nr))
|
||||||
|
return L1SAP_CHAN2SS_BCCH(chan_nr);
|
||||||
if (L1SAP_IS_CHAN_SDCCH8(chan_nr))
|
if (L1SAP_IS_CHAN_SDCCH8(chan_nr))
|
||||||
return L1SAP_CHAN2SS_SDCCH8(chan_nr);
|
return L1SAP_CHAN2SS_SDCCH8(chan_nr);
|
||||||
if (L1SAP_IS_CHAN_SDCCH4(chan_nr))
|
if (L1SAP_IS_CHAN_SDCCH4(chan_nr))
|
||||||
@@ -67,7 +83,7 @@ int l1sap_up(struct gsm_bts_trx *trx, struct osmo_phsap_prim *l1sap);
|
|||||||
|
|
||||||
/* pcu (socket interface) sends us a data request primitive */
|
/* pcu (socket interface) sends us a data request primitive */
|
||||||
int l1sap_pdch_req(struct gsm_bts_trx_ts *ts, int is_ptcch, uint32_t fn,
|
int l1sap_pdch_req(struct gsm_bts_trx_ts *ts, int is_ptcch, uint32_t fn,
|
||||||
uint16_t arfcn, uint8_t block_nr, uint8_t *data, uint8_t len);
|
uint16_t arfcn, uint8_t block_nr, const uint8_t *data, uint8_t len);
|
||||||
|
|
||||||
/* call-back function for incoming RTP */
|
/* call-back function for incoming RTP */
|
||||||
void l1sap_rtp_rx_cb(struct osmo_rtp_socket *rs, const uint8_t *rtp_pl,
|
void l1sap_rtp_rx_cb(struct osmo_rtp_socket *rs, const uint8_t *rtp_pl,
|
||||||
@@ -80,6 +96,37 @@ int l1sap_chan_rel(struct gsm_bts_trx *trx, uint8_t chan_nr);
|
|||||||
int l1sap_chan_deact_sacch(struct gsm_bts_trx *trx, uint8_t chan_nr);
|
int l1sap_chan_deact_sacch(struct gsm_bts_trx *trx, uint8_t chan_nr);
|
||||||
int l1sap_chan_modify(struct gsm_bts_trx *trx, uint8_t chan_nr);
|
int l1sap_chan_modify(struct gsm_bts_trx *trx, uint8_t chan_nr);
|
||||||
|
|
||||||
|
enum l1sap_common_sapi {
|
||||||
|
L1SAP_COMMON_SAPI_UNKNOWN,
|
||||||
|
/* alphabetic order */
|
||||||
|
L1SAP_COMMON_SAPI_AGCH,
|
||||||
|
L1SAP_COMMON_SAPI_BCCH,
|
||||||
|
L1SAP_COMMON_SAPI_CBCH,
|
||||||
|
L1SAP_COMMON_SAPI_FACCH_F,
|
||||||
|
L1SAP_COMMON_SAPI_FACCH_H,
|
||||||
|
L1SAP_COMMON_SAPI_FCCH,
|
||||||
|
L1SAP_COMMON_SAPI_IDLE,
|
||||||
|
L1SAP_COMMON_SAPI_NCH,
|
||||||
|
L1SAP_COMMON_SAPI_PACCH,
|
||||||
|
L1SAP_COMMON_SAPI_PAGCH,
|
||||||
|
L1SAP_COMMON_SAPI_PBCCH,
|
||||||
|
L1SAP_COMMON_SAPI_PCH,
|
||||||
|
L1SAP_COMMON_SAPI_PDTCH,
|
||||||
|
L1SAP_COMMON_SAPI_PNCH,
|
||||||
|
L1SAP_COMMON_SAPI_PPCH,
|
||||||
|
L1SAP_COMMON_SAPI_PRACH,
|
||||||
|
L1SAP_COMMON_SAPI_PTCCH,
|
||||||
|
L1SAP_COMMON_SAPI_RACH,
|
||||||
|
L1SAP_COMMON_SAPI_SACCH,
|
||||||
|
L1SAP_COMMON_SAPI_SCH,
|
||||||
|
L1SAP_COMMON_SAPI_SDCCH,
|
||||||
|
L1SAP_COMMON_SAPI_TCH_F,
|
||||||
|
L1SAP_COMMON_SAPI_TCH_H,
|
||||||
|
};
|
||||||
|
|
||||||
|
extern uint16_t l1sap_log_ctx_sapi;
|
||||||
|
extern const struct value_string l1sap_common_sapi_names[];
|
||||||
|
|
||||||
extern const struct value_string gsmtap_sapi_names[];
|
extern const struct value_string gsmtap_sapi_names[];
|
||||||
extern struct gsmtap_inst *gsmtap;
|
extern struct gsmtap_inst *gsmtap;
|
||||||
extern uint32_t gsmtap_sapi_mask;
|
extern uint32_t gsmtap_sapi_mask;
|
||||||
@@ -87,10 +134,14 @@ extern uint8_t gsmtap_sapi_acch;
|
|||||||
|
|
||||||
int add_l1sap_header(struct gsm_bts_trx *trx, struct msgb *rmsg,
|
int add_l1sap_header(struct gsm_bts_trx *trx, struct msgb *rmsg,
|
||||||
struct gsm_lchan *lchan, uint8_t chan_nr, uint32_t fn,
|
struct gsm_lchan *lchan, uint8_t chan_nr, uint32_t fn,
|
||||||
uint16_t ber10k, int16_t lqual_cb);
|
uint16_t ber10k, int16_t lqual_cb, int8_t rssi,
|
||||||
|
int16_t ta_offs, uint8_t is_sub);
|
||||||
|
|
||||||
#define msgb_l1sap_prim(msg) ((struct osmo_phsap_prim *)(msg)->l1h)
|
#define msgb_l1sap_prim(msg) ((struct osmo_phsap_prim *)(msg)->l1h)
|
||||||
|
|
||||||
int bts_check_for_first_ciphrd(struct gsm_lchan *lchan,
|
int bts_check_for_first_ciphrd(struct gsm_lchan *lchan,
|
||||||
uint8_t *data, int len);
|
uint8_t *data, int len);
|
||||||
|
|
||||||
|
int is_ccch_for_agch(struct gsm_bts_trx *trx, uint32_t fn);
|
||||||
|
|
||||||
#endif /* L1SAP_H */
|
#endif /* L1SAP_H */
|
||||||
|
|||||||
@@ -8,4 +8,12 @@ int lchan_new_ul_meas(struct gsm_lchan *lchan, struct bts_ul_meas *ulm, uint32_t
|
|||||||
|
|
||||||
int lchan_meas_check_compute(struct gsm_lchan *lchan, uint32_t fn);
|
int lchan_meas_check_compute(struct gsm_lchan *lchan, uint32_t fn);
|
||||||
|
|
||||||
|
int lchan_meas_process_measurement(struct gsm_lchan *lchan, struct bts_ul_meas *ulm, uint32_t fn);
|
||||||
|
|
||||||
|
void lchan_meas_reset(struct gsm_lchan *lchan);
|
||||||
|
|
||||||
|
bool ts45008_83_is_sub(struct gsm_lchan *lchan, uint32_t fn, bool is_amr_sid_update);
|
||||||
|
|
||||||
|
int is_meas_complete(struct gsm_lchan *lchan, uint32_t fn);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user