Skip to content

Loading builds...

Changes

#1767 (May 5, 2026, 6:43:55 AM)

nokia cosmetic: add bts_is_insite() function

Nokia InSite gets a different config than the larger Nokia BTS models,
and make_bts_config() function checks the BTS type to decide which
config to send.  Change the BTS type check from a long 'if' line that
compares against 3 different InSite BTS type codes to bts_is_insite()
helper function that encapsulates a switch statement.

Upcoming code additions will need to check for Flexi Multiradio BTS
family in a similar manner - so be consistent.

Change-Id: I44bbcd79d9741f1df280b6b2391f04f754598035
falcon at

#1766 (May 5, 2026, 6:43:54 AM)

Nokia Flexi Multiradio: reset non-BCCH TRX

In the case of MetroSite and UltraSite BTS, it has been determined
empirically that TRX reset needs to be skipped for non-BCCH TRX.
However, the opposite situation holds on Flexi MR: non-BCCH TRX
do need to be reset, or they fail to come up.  Solution:
conditionalize reset of non-BCCH TRX on Nokia BTS type.

Change-Id: I270c1ffab074c1e5a43ab9dfa103725a1518f718
falcon at

#1765 (May 5, 2026, 6:43:53 AM)

nokia cosmetic: factor out BTS_CONF_COMPL handling

When the BTS accepts the config sent to it via BTS_CONF_DATA, it
responds with BTS_CONF_COMPL.  Upon receiving the latter message,
we have to send TRX unlock and TRX reset commands, and we have to
start LAPD for RSL.  Factor out this logic into a helper function,
to reduce the level of indentation and make it easier to extend.

Change-Id: I26e9b25ba4e68e945f7dd8a632009cc3683a322c
falcon at

#1764 (Apr 29, 2026, 5:52:01 PM)

nokia: respond to BTS_COMMISS_TEST_REQ

In some cases, Flexi Multiradio BTS sends us BTS_COMMISS_TEST_REQ
during its init process, and expects us to respond with
BTS_COMMISS_TEST_COMPL, indicating that we did the requested
commissioning tests.  While we don't do any actual tests currently,
and we have not yet reached an understanding of the exact conditions
as to when the BTS makes this query of us, if it does send us
BTS_COMMISS_TEST_REQ, we need to respond with BTS_COMMISS_TEST_COMPL
to make it happy.

Change-Id: I0f2710c3cdb38a9e5b37e40ca5584237a730a902
falcon at

#1763 (Apr 29, 2026, 5:52:00 PM)

nokia skip-reset: make consistent with other vty settings

All other Nokia-specific vty settings use is_nokia_bts() helper
function, while the code for skip-reset directly compares
bts->type against GSM_BTS_TYPE_NOKIA_SITE.  Change to use the
helper function: it is consistent with other vty settings,
and avoids one more place that erroneously refers to *Site
instead of all Nokia BTS.

Change-Id: Ie8cdac51f82185e2d4f37a8da00acba633670052
falcon at

#1762 (Apr 29, 2026, 5:52:00 PM)

nokia vty: change help strings away from "*Site"

Support for Nokia BTS in OsmoBSC is being expanded from just *Site
family to also include Flexi Multiradio - therefore, help strings
and error messages in vty should be changed accordingly.

FIXME: names of Nokia-specific vty settings still begin with
nokia_site, ditto for the name of the BTS model.  TODO: decide
on a proper long-term solution.

Change-Id: I55556b7b5aa5bc6efcbee815e9011497a933697c
falcon at

#1761 (Apr 29, 2026, 5:52:00 PM)

nokia: add support for Flexi Multiradio

Previous support existed for Nokia MetroSite, UltraSite and InSite
models, resulting in BTS model name "nokia_site".  However, there
exist newer Nokia BTS models that also support E1 Abis and can be
supported by OsmoBSC with relatively small changes: Flexi EDGE,
Flexi Multiradio and Flexi Multiradio 10.  Out of these newer
models, American 2G Cooperative (the present patch author's current
organization) has only Flexi MR at the present time - hence this
model shall be the first "new" Nokia BTS to be supported.

The first change required in order to support Flexi MR is ability
to receive long OML messages that have been segmented by the BTS:
the new BTS sends a much longer BTS_CONF_REQ message, and we have
to handle it correctly.

Change-Id: Icd429552c3b5e90d6c5d3ae5f52afd6550e3cebc
falcon at

#1760 (Apr 29, 2026, 5:52:00 PM)

nokia: make Rx diversity configurable

The config structure sent to the BTS with BTS_CONF_DATA includes
an IE that enables or disables Rx diversity.  In the original code
this setting was hard-coded to enabled state; make it configurable
via vty.

Change-Id: I73bd91b717a8c8b338bacb6ed9db73bb07245c12
falcon at

#1759 (Apr 29, 2026, 5:52:00 PM)

rsl: don't send legacy Chan Ident IE for Nokia BTS

The description of CHAN ACTIV command message in TS 48.058
section 8.4.1 lists Channel Identification as an optional IE,
with a note that reads "Included if compatibility with phase1
is required."  This note may have been misinterpreted as
referring to compatibility with Phase 1 phones - but since
this network-internal Abis detail is invisible to phones,
the real intent of GSM spec authors here must have been
compatibility with Phase 1 BTS.

Previous versions of OsmoBSC would always include this IE,
and it appears that all previously supported BTS models
would simply ignore it.  However, newer Nokia BTS models
(observed on Flexi Multiradio at least) dislike this IE
and return CHAN ACTIV NACK with an optional IE error cause
if it is included.

To avoid changing OsmoBSC behavior for other users, let us
conditionalize removal of this legacy IE on Nokia BTS for now.
This change has been tested on InSite, MetroSite and Flexi
Multiradio - no adverse effects on previously supported
*Site models.

Change-Id: Ibce7a841907ac87ae378ded3ddb174d38b70b7b7
falcon at

#1758 (Apr 29, 2026, 5:52:00 PM)

nokia bts-reset-timer: raise the maximum to 300 s

The previous vty tuning range for this timer (allowing up to 100 s)
is not sufficient for Flexi Multiradio BTS, where we need 120 s
minimum or 130 s for some margin.  Raise the upper limit for vty
config of this parameter to 5 min, which should be long enough
to not require further revisiting.

Change-Id: Ie5b784c9cce56e27800084471a7fb0b867cc0c69
falcon at

#1757 (Apr 29, 2026, 7:12:55 AM)

Cosmetic: bts_nokia_site: fix comment formatting

Ensure each line of a multiline comment starts with " * ".

Related: https://gerrit.osmocom.org/c/osmo-bsc/+/42712/comment/6aa80188_f56f2265/
Change-Id: I83ed16ec09fb66076dc2ba6a49ef272657b09407
Oliver Smith at

#1756 (Apr 28, 2026, 11:49:37 PM)

nokia skip-reset: make consistent with other vty settings

All other Nokia-specific vty settings use is_nokia_bts() helper
function, while the code for skip-reset directly compares
bts->type against GSM_BTS_TYPE_NOKIA_SITE.  Change to use the
helper function: it is consistent with other vty settings,
and avoids one more place that erroneously refers to *Site
instead of all Nokia BTS.

Change-Id: Ie8cdac51f82185e2d4f37a8da00acba633670052
falcon at

#1755 (Apr 28, 2026, 11:49:37 PM)

nokia bts-reset-timer: raise the maximum to 300 s

The previous vty tuning range for this timer (allowing up to 100 s)
is not sufficient for Flexi Multiradio BTS, where we need 120 s
minimum or 130 s for some margin.  Raise the upper limit for vty
config of this parameter to 5 min, which should be long enough
to not require further revisiting.

Change-Id: Ie5b784c9cce56e27800084471a7fb0b867cc0c69
falcon at

#1754 (Apr 28, 2026, 11:49:37 PM)

nokia: make Rx diversity configurable

The config structure sent to the BTS with BTS_CONF_DATA includes
an IE that enables or disables Rx diversity.  In the original code
this setting was hard-coded to enabled state; make it configurable
via vty.

Change-Id: I73bd91b717a8c8b338bacb6ed9db73bb07245c12
falcon at

#1753 (Apr 28, 2026, 11:49:36 PM)

nokia: respond to BTS_COMMISS_TEST_REQ

In some cases, Flexi Multiradio BTS sends us BTS_COMMISS_TEST_REQ
during its init process, and expects us to respond with
BTS_COMMISS_TEST_COMPL, indicating that we did the requested
commissioning tests.  While we don't do any actual tests currently,
and we have not yet reached an understanding of the exact conditions
as to when the BTS makes this query of us, if it does send us
BTS_COMMISS_TEST_REQ, we need to respond with BTS_COMMISS_TEST_COMPL
to make it happy.

Change-Id: I0f2710c3cdb38a9e5b37e40ca5584237a730a902
falcon at

#1752 (Apr 28, 2026, 11:49:36 PM)

rsl: don't send legacy Chan Ident IE for Nokia BTS

The description of CHAN ACTIV command message in TS 48.058
section 8.4.1 lists Channel Identification as an optional IE,
with a note that reads "Included if compatibility with phase1
is required."  This note may have been misinterpreted as
referring to compatibility with Phase 1 phones - but since
this network-internal Abis detail is invisible to phones,
the real intent of GSM spec authors here must have been
compatibility with Phase 1 BTS.

Previous versions of OsmoBSC would always include this IE,
and it appears that all previously supported BTS models
would simply ignore it.  However, newer Nokia BTS models
(observed on Flexi Multiradio at least) dislike this IE
and return CHAN ACTIV NACK with an optional IE error cause
if it is included.

To avoid changing OsmoBSC behavior for other users, let us
conditionalize removal of this legacy IE on Nokia BTS for now.
This change has been tested on InSite, MetroSite and Flexi
Multiradio - no adverse effects on previously supported
*Site models.

Change-Id: Ibce7a841907ac87ae378ded3ddb174d38b70b7b7
falcon at

#1751 (Apr 28, 2026, 11:49:36 PM)

nokia vty: change help strings away from "*Site"

Support for Nokia BTS in OsmoBSC is being expanded from just *Site
family to also include Flexi Multiradio - therefore, help strings
and error messages in vty should be changed accordingly.

FIXME: names of Nokia-specific vty settings still begin with
nokia_site, ditto for the name of the BTS model.  TODO: decide
on a proper long-term solution.

Change-Id: I55556b7b5aa5bc6efcbee815e9011497a933697c
falcon at

#1750 (Apr 28, 2026, 11:49:35 PM)

nokia: add support for Flexi Multiradio

Previous support existed for Nokia MetroSite, UltraSite and InSite
models, resulting in BTS model name "nokia_site".  However, there
exist newer Nokia BTS models that also support E1 Abis and can be
supported by OsmoBSC with relatively small changes: Flexi EDGE,
Flexi Multiradio and Flexi Multiradio 10.  Out of these newer
models, American 2G Cooperative (the present patch author's current
organization) has only Flexi MR at the present time - hence this
model shall be the first "new" Nokia BTS to be supported.

The first change required in order to support Flexi MR is ability
to receive long OML messages that have been segmented by the BTS:
the new BTS sends a much longer BTS_CONF_REQ message, and we have
to handle it correctly.

Change-Id: Icd429552c3b5e90d6c5d3ae5f52afd6550e3cebc
falcon at

#1749 (Apr 28, 2026, 5:42:16 PM)

nokia bts-reset-timer: raise the maximum to 300 s

The previous vty tuning range for this timer (allowing up to 100 s)
is not sufficient for Flexi Multiradio BTS, where we need 120 s
minimum or 130 s for some margin.  Raise the upper limit for vty
config of this parameter to 5 min, which should be long enough
to not require further revisiting.

Change-Id: Ie5b784c9cce56e27800084471a7fb0b867cc0c69
falcon at

#1748 (Apr 28, 2026, 5:42:15 PM)

nokia: add support for Flexi Multiradio

Previous support existed for Nokia MetroSite, UltraSite and InSite
models, resulting in BTS model name "nokia_site".  However, there
exist newer Nokia BTS models that also support E1 Abis and can be
supported by OsmoBSC with relatively small changes: Flexi EDGE,
Flexi Multiradio and Flexi Multiradio 10.  Out of these newer
models, American 2G Cooperative (the present patch author's current
organization) has only Flexi MR at the present time - hence this
model shall be the first "new" Nokia BTS to be supported.

The first change required in order to support Flexi MR is ability
to receive long OML messages that have been segmented by the BTS:
the new BTS sends a much longer BTS_CONF_REQ message, and we have
to handle it correctly.

Change-Id: Icd429552c3b5e90d6c5d3ae5f52afd6550e3cebc
falcon at

#1747 (Apr 28, 2026, 5:42:15 PM)

rsl: don't send legacy Chan Ident IE for Nokia BTS

The description of CHAN ACTIV command message in TS 48.058
section 8.4.1 lists Channel Identification as an optional IE,
with a note that reads "Included if compatibility with phase1
is required."  This note may have been misinterpreted as
referring to compatibility with Phase 1 phones - but since
this network-internal Abis detail is invisible to phones,
the real intent of GSM spec authors here must have been
compatibility with Phase 1 BTS.

Previous versions of OsmoBSC would always include this IE,
and it appears that all previously supported BTS models
would simply ignore it.  However, newer Nokia BTS models
(observed on Flexi Multiradio at least) dislike this IE
and return CHAN ACTIV NACK with an optional IE error cause
if it is included.

To avoid changing OsmoBSC behavior for other users, let us
conditionalize removal of this legacy IE on Nokia BTS for now.
This change has been tested on InSite, MetroSite and Flexi
Multiradio - no adverse effects on previously supported
*Site models.

Change-Id: Ibce7a841907ac87ae378ded3ddb174d38b70b7b7
falcon at

#1746 (Apr 28, 2026, 5:42:15 PM)

nokia: make Rx diversity configurable

The config structure sent to the BTS with BTS_CONF_DATA includes
an IE that enables or disables Rx diversity.  In the original code
this setting was hard-coded to enabled state; make it configurable
via vty.

Change-Id: I73bd91b717a8c8b338bacb6ed9db73bb07245c12
falcon at

#1745 (Apr 28, 2026, 5:42:15 PM)

nokia vty: change help strings away from "*Site"

Support for Nokia BTS in OsmoBSC is being expanded from just *Site
family to also include Flexi Multiradio - therefore, help strings
and error messages in vty should be changed accordingly.

Change-Id: I55556b7b5aa5bc6efcbee815e9011497a933697c
falcon at

#1744 (Apr 28, 2026, 5:42:14 PM)

nokia: respond to BTS_COMMISS_TEST_REQ

In some cases, Flexi Multiradio BTS sends us BTS_COMMISS_TEST_REQ
during its init process, and expects us to respond with
BTS_COMMISS_TEST_COMPL, indicating that we did the requested
commissioning tests.  While we don't do any actual tests currently,
and we have not yet reached an understanding of the exact conditions
as to when the BTS makes this query of us, if it does send us
BTS_COMMISS_TEST_REQ, we need to respond with BTS_COMMISS_TEST_COMPL
to make it happy.

Change-Id: I0f2710c3cdb38a9e5b37e40ca5584237a730a902
falcon at

#1743 (Apr 8, 2026, 11:00:13 PM)

handover_fsm: send_handover_performed(): check lchan != NULL

The target lchan is expected to be valid on HO_RESULT_OK, but it's
still safer to check it against NULL before dereferencing.

Change-Id: Iee734c98dc79681808e7d75360c208a941cc6821
Related: 107391d8c ("handover_fsm: fix send_handover_performed() using wrong lchan")
Vadim Yanitskiy at

#1742 (Apr 8, 2026, 11:00:12 PM)

assignment_fsm: ipacc_chan_mode_supported(): log unsupported chan_mode

Change-Id: I1718994e25ff1349618bdb4660afbe735c5c3977
Related: aa959d74f ("assignment_fsm: check ipaccess channel mode support")
Vadim Yanitskiy at

#1741 (Apr 6, 2026, 2:43:58 PM)

lchan_fsm: don't mark lchan as BORKEN on unsupported mode NACK

When the BTS NACKs a Channel Activation with RSL_ERR_SERV_OPT_UNAVAIL
or RSL_ERR_SERV_OPT_UNIMPL, it means the requested service or channel
mode is not supported - not that the hardware is broken.  In this
case the lchan should transition to LCHAN_ST_WAIT_AFTER_ERROR rather
than LCHAN_ST_BORKEN, which is reserved for genuine hardware failures.

Also add LCHAN_EV_RTP_ERROR to LCHAN_ST_WAIT_AFTER_ERROR's in_event_mask
so that a late LCHAN_EV_RTP_ERROR (e.g. MGCP CRCX timeout arriving after
the NACK was already handled) is silently absorbed rather than triggering
an unexpected-event warning.

Change-Id: Ide3830a697501a0c245a41451302f1e68d553b3c
Related: osmo-ttcn3-hacks.git I000b7b44749380c5af4da42abe37b4ada6e06ee4
Related: OS#6324
Vadim Yanitskiy at

#1740 (Apr 6, 2026, 2:43:58 PM)

assignment_fsm: pass lchan to lchan_type_compat_with_mode()

The lchan pointer is needed by the next patch, which will check
the BTS ipaccess supported-features flags to reject channel modes
that the BTS has reported as unsupported before attempting to
activate the lchan.

Change-Id: I51d5d1a1cf3c51f85f738196967d5c69870681bb
Related: OS#6324
Vadim Yanitskiy at

#1739 (Apr 6, 2026, 2:43:58 PM)

bssap: use LOGPFSML in bssmap_handle_assignm_req()

Change-Id: If99661c0ff1177214bacdb2d1bcb9da1d2d2957c
Vadim Yanitskiy at

#1738 (Apr 6, 2026, 2:43:58 PM)

bssap: mark some pointers as const

Change-Id: Iebb28d6ae0b468545994669248a442dd17f36d4c
Vadim Yanitskiy at

#1737 (Apr 6, 2026, 2:43:58 PM)

ipaccess: fix buffer overread in ipacc_parse_supp_flags()

The loop used OSMO_MAX(e->len, 4), which iterates at least 4 times
even when the IE is shorter than 4 bytes, causing a buffer overread.
Replace with OSMO_MIN(e->len, sizeof(u32)) to cap the iteration both
at the actual IE length and at the uint32_t accumulator size.

Change-Id: I97c69a71eb650cbef1cc3652d0a2a966cfd6cf60
Vadim Yanitskiy at

#1736 (Apr 6, 2026, 2:43:58 PM)

assignment_fsm: check ipaccess channel mode support

Add ipacc_chan_mode_supported(), which checks the NM_IPAC_F_CHANM_*
flags stored in the Baseband Transceiver's MO state (populated during
OML bring-up) to decide whether the BTS can handle a requested channel
mode.  If the IE containing supported channel modes was never received,
the function returns true as if the given mode was supported.

Without this change, requesting a channel mode not supported by the
BTS results in a NACK to the RSL Channel Activation, which causes
the lchan to be marked as BROKEN and thus unavailable.

Change-Id: I680ba7993786f5486d671f931e75df4543670a37
Related: OS#6324
Vadim Yanitskiy at

#1735 (Apr 6, 2026, 2:43:58 PM)

bssap: use LOGPFSML in bssmap_handle_ass_req_tp_codec_list()

Change-Id: Ie51ada174388f4c3e9ffe8a5bec4297bda38584b
Vadim Yanitskiy at

#1734 (Apr 6, 2026, 2:43:57 PM)

lchan_fsm: ignore late lchan_rtp_fsm events

The lchan_rtp_fsm is a child FSM that manages the MGW/RTP endpoint.
When the parent lchan_fsm transitions away before the child has
finished its work (e.g. a CRCX timeout or a DLCX completing after
the lchan is already idle), the child can still deliver
LCHAN_EV_RTP_RELEASED or LCHAN_EV_RTP_ERROR to the parent.

Currently these late events are not in the in_event_mask of every
state that can be reached with the child still running:

* LCHAN_ST_UNUSED: entered from WAIT_AFTER_ERROR after the error timer
  fires, while a DLCX triggered at error time may still be in flight.
* LCHAN_ST_WAIT_AFTER_ERROR: already handles LCHAN_EV_RTP_RELEASED but
  misses LCHAN_EV_RTP_ERROR (e.g. CRCX timeout arriving after the
  NACK was handled).

Add the missing events to both states' in_event_mask and provide a
no-op handler in lchan_fsm_unused() so that the assert is not hit.

Change-Id: Ie6333bd941e4e5a6ddf0e3f113b8764e8bc2bbc0
Vadim Yanitskiy at

#1733 (Apr 6, 2026, 2:43:57 PM)

handover_fsm: fix send_handover_performed() using wrong lchan

send_handover_performed() is called from handover_end() before
gscon_change_primary_lchan() updates conn->lchan to the new lchan.
As a result, the Cell Identifier, Chosen Channel, Chosen Encryption
Algorithm, and Speech Version/Codec IEs were all populated from the
source (old) lchan rather than the target (new) lchan.

As per 3GPP TS 48.008 §3.2.1.25, HANDOVER PERFORMED must report the
target cell and channel.  For intra-BSC handover to a different BTS
this caused the MSC to receive the wrong Cell Identifier.

Fix by initialising lchan from ho->new_lchan instead of conn->lchan,
and deriving the BTS via lchan->ts->trx->bts.

Change-Id: I4111351dc38fc2dbe844c2bd07b3ecfaaadd864e
Related: osmo-ttcn3-hacks.git I82aadcc3a80c183cb93522b829071294b156a218
Found-By: Claude Sonnet 4.6
Vadim Yanitskiy at

#1732 (Apr 6, 2026, 2:43:57 PM)

ipaccess: store Supported Features IE to the MO state

Change-Id: Ic89d42c478677ffda4d544f461e7850dd3157040
Related: OS#6324
Vadim Yanitskiy at