Skip to content

Loading builds...

Changes

#28617 (Jun 2, 2026, 11:58:26 AM)

Add test case to verify proper DSCP settings

Related: SYS#8071
Change-Id: I6ac965998433b4d8213cce30fc3fcf8fe485a092
Andreas Eversberg at

#28616 (Jun 2, 2026, 11:58:23 AM)

Add DSCP configuration support for each individual ASP

Introduce VTY command to configure the Differentiated Services Code
Point (DSCP) values for each Application Server Process.

If the ASP connection has the role "server", it will inherit the DSCP
settings of the listener, unless it is configured at the ASP connection.

Related: SYS#8071
Change-Id: Ia125a392eec5605553809774162675b5249b8494
Andreas Eversberg at

#28615 (Jun 2, 2026, 11:16:28 AM)

Add DSCP configuration support for each individual ASP

Introduce VTY command to configure the Differentiated Services Code
Point (DSCP) values for each Application Server Process.

If the ASP connection has the role "server", it will inherit the DSCP
settings of the listener, unless it is configured at the ASP connection.

Related: SYS#8071
Change-Id: Ia125a392eec5605553809774162675b5249b8494
Andreas Eversberg at

#28614 (Jun 2, 2026, 11:16:26 AM)

Add test case to verify proper DSCP settings

Related: SYS#8071
Change-Id: I6ac965998433b4d8213cce30fc3fcf8fe485a092
Andreas Eversberg at

#28613 (Jun 2, 2026, 11:15:48 AM)

Add DSCP configuration support for server transport role

Introduce VTY command to configure the Differentiated Services Code
Point (DSCP) values for transport "role" server.

The configured DSCP value is applied to the listener socket. Incoming
socket connections will then automatically inherit these DSCP settings
from the listener socket.

It is not (yet) possible to configure DSCP values for individual active
server connections. The setting applies globally via the listener.
A later patch will allow DSCP configuration of each individual ASP.

Related: SYS#8071
Depends: libosmo-netif.git Change-Id Ic70422ec73c753b61843444582f8665ca42e7a6d
Change-Id: I35eab3672157c318616f51ee3042243aed263d4e
Andreas Eversberg at

#28612 (Jun 2, 2026, 10:57:37 AM)

jobs/osmo-ccid-firmware: run hooks for logs

Run the start-hook.sh / stop-hook.sh scripts that store pcscd logs and a
usbmon capture. The jenkins node is configured to allow running these
two scripts with sudo as jenkins user. Store the resulting files as
artifacts.

Related: OS#8011
Change-Id: Id0d9a39fda24813572b979588c0ca22918829ad4
Oliver Smith at

#28611 (Jun 2, 2026, 10:57:32 AM)

jobs/octsim_osmo-ccid-firmware: add timeout arg

For testing the hook scripts (see next patch), it is useful to have a
shorter timeout for some test runs. Make it configurable.

Related: SYS#8011
Change-Id: I3bac142a9e2e5f144ad52ea7c36c05ffbad6f5d1
Oliver Smith at

#28610 (Jun 2, 2026, 9:55:52 AM)

tcap loadshare: move last_asp_idx_sent from cfg to runtime struct

The last_asp_idx_sent is a runtime information and not configurable.
Move it to the other runtime state.

Change-Id: Id52bb0f6c67949b5e03f7ad36996f37a0d25214a
lynxis at

#28609 (Jun 2, 2026, 9:55:49 AM)

vty-tests: Re-introduce the check on the help

With the support of regex within vty tests,
the help message can be checked again.

Depends-on: Iadcd7a8c3677548a6405e098fe53d0614ef2012c (osmo-python-tests)
Change-Id: I3fad268b7a8925f378f6331fcab073637bd80e08
lynxis at

#28608 (Jun 2, 2026, 9:54:50 AM)

tcap loadshare: allow to define the fallback mechanism for unroutable TCAP messages

When a TCAP Continue/End/Abort message is received, but no TCAP session entry can be found
and no valid TCAP range is available for the dtid, the message can be either:

- rejected by returning an error with udts
- routed by round robin to all available ASP of this AS

To define the behaviour, a new vty option is introduced:
```
   tcap-unroutable-sessions (reject-udts | load-share-over-as)
```
Defaults to reject-udts.

Related: SYS#5432
Change-Id: Ic1c876da30b05065a476d3a7c1bbf0680adf55bd
lynxis at

#28607 (Jun 2, 2026, 7:47:21 AM)

trx-usrp1: make single daughterboard VTY configurable

Adds the usrp1-singledb enable/disable option to specify the
daughterboard configuration on USRP1 devices. This will allow users
to use single-daughterboard devices without compliling from source to
use the --with-singledb configure option.
Also removed some daughterboard configuration related code that
wasn't being used.
More info in the modified trx-backends.adoc

Change-Id: I618fdcc7fec1ca1e87249992798c265430c177a0
jackleea1b at

#28606 (Jun 2, 2026, 7:33:36 AM)

trx-usrp1: make single daughterboard VTY configurable

Adds the usrp1-singledb enable/disable option to specify the
daughterboard configuration on USRP1 devices. This will allow users
to use single-daughterboard devices without compliling from source to
use the --with-singledb configure option.
Also removed some daughterboard configuration related code that
wasn't being used.
More info in the modified trx-backends.adoc

Change-Id: I618fdcc7fec1ca1e87249992798c265430c177a0
jackleea1b at

#28605 (Jun 1, 2026, 1:41:22 PM)

Also apply DSCP settings on listening socket

The TOS values should be packets that are sent during handshake.
Therefore the DSCP setting must be applied to the listening socket also.

Related: SYS#8071
Change-Id: Ic70422ec73c753b61843444582f8665ca42e7a6d
Andreas Eversberg at

#28604 (Jun 1, 2026, 1:29:59 PM)

Add test case to verify proper DSCP settings

Related: SYS#8071
Change-Id: I6ac965998433b4d8213cce30fc3fcf8fe485a092
Andreas Eversberg at

#28603 (Jun 1, 2026, 1:12:10 PM)

Add DSCP configuration support for STP client

Introduce VTY command to configure the Differentiated Services Code
Point (DSCP) values for the STP clients.

Related: SYS#8071
Change-Id: Ia125a392eec5605553809774162675b5249b8494
Andreas Eversberg at

#28602 (Jun 1, 2026, 1:11:31 PM)

Add test case to verify proper DSCP settings

Related: SYS#8071
Change-Id: I6ac965998433b4d8213cce30fc3fcf8fe485a092
Andreas Eversberg at

#28601 (Jun 1, 2026, 12:48:17 PM)

Add DSCP configuration support for STP client

Introduce VTY command to configure the Differentiated Services Code
Point (DSCP) values for the STP clients.

Related: SYS#8071
Change-Id: Ia125a392eec5605553809774162675b5249b8494
Andreas Eversberg at

#28600 (Jun 1, 2026, 12:48:15 PM)

Add test case to verify proper DSCP settings

Related: SYS#8071
Change-Id: I6ac965998433b4d8213cce30fc3fcf8fe485a092
Andreas Eversberg at

#28599 (Jun 1, 2026, 12:47:40 PM)

Add DSCP configuration support for STP server

Introduce VTY command to configure the Differentiated Services Code
Point (DSCP) values for the STP server.

Related: SYS#8071
Change-Id: I35eab3672157c318616f51ee3042243aed263d4e
Andreas Eversberg at

#28598 (Jun 1, 2026, 12:07:13 PM)

Add DSCP configuration support for STP client

Introduce VTY command to configure the Differentiated Services Code
Point (DSCP) values for the STP clients.

Related: SYS#8071
Change-Id: Ia125a392eec5605553809774162675b5249b8494
Andreas Eversberg at

#28597 (Jun 1, 2026, 12:07:10 PM)

Add DSCP configuration support for STP server

Introduce VTY command to configure the Differentiated Services Code
Point (DSCP) values for the STP server.

Related: SYS#8071
Change-Id: I35eab3672157c318616f51ee3042243aed263d4e
Andreas Eversberg at

#28596 (Jun 1, 2026, 12:06:33 PM)

Add test case to verify proper DSCP settings

Related: SYS#8071
Change-Id: I6ac965998433b4d8213cce30fc3fcf8fe485a092
Andreas Eversberg at

#28595 (Jun 1, 2026, 9:42:10 AM)

CCID: Successful case 1 APDU test

A MANAGE CHANNEL APDU has no data and must respond without any data,
just the status words.

Change-Id: I7d5ee9bbd8bb2505a762e3fd80238db658940c16
Andreas Eversberg at

#28594 (Jun 1, 2026, 9:42:06 AM)

CCID: Disable set/reset parameter tests

These tests are currently not supported by octsim, so they are disabled.

Change-Id: Iebcfe05742d53941f2cbc758c2414d4372068a61
Andreas Eversberg at

#28593 (Jun 1, 2026, 9:42:02 AM)

CCID: Successful case 4 APDU test

A GET RESPONSE APDU must respond with the exact number of bytes that
have been indicated by SW2 of the previous SELECT MF APDU.

Change-Id: I88c5ad3285c025f584b1c0296095beb918ab3f4e
Andreas Eversberg at

#28592 (Jun 1, 2026, 9:41:56 AM)

CCID: Check if reader accepts highest P3 value 0xff

This test should ensure that there is no buffer overflow when receiving
large responses from SIM.

Change-Id: I298795d791f2964758bd4792e10131f92cf561bc
Andreas Eversberg at

#28591 (Jun 1, 2026, 9:41:52 AM)

CCID: Check if parameters keep unchanged, if set without change.

Using SetParameters with the current set of parameter must not cause
them to change.

Change-Id: Id1bf5e58ba910d0633104b3bc3e902ce7d31cb10
Andreas Eversberg at

#28590 (Jun 1, 2026, 9:41:47 AM)

CCID: Integrate SIMTRACE emulation into test cases

This integration allows to add tests that use SIMtrace hardware instead
of a physical SIM. These tests can be used to test handling of invalid
behaviors, such as invalid responses or timeouts.

The number of slots (mp_use_slot_count) are reduced to 7, so that the
8th slot can be used with a SIMtrace for subsequent tests.

Change-Id: Ia27dd5198edb188bc73196ac3fbd6d56ba75812e
Andreas Eversberg at

#28589 (Jun 1, 2026, 9:41:43 AM)

CCID: Check if reader restarts WWT upon NULL procedure byte

The reader will receive a NULL procedure byte every 0.2 for a long time.
The reader may only respond with a status that time extension was
requested. At the end the SIM proceeds with a valid response. This
response must be returned by the reader.

Change-Id: I4eb09e86f88df19d96e9ec55872654352ca2ebd5
Andreas Eversberg at

#28588 (Jun 1, 2026, 9:41:39 AM)

CCID: Truncated APDU test

A SELECT APDU must have a header + two bytes of data (what to select).
The test truncates this APDU in all variants, ranging from 6 bytes down
to 0 bytes. The reader may respond with an error caused by invald
request or with and error caused by timeout of the SIM.

Change-Id: I3df2ad9871bccdd03f618a6a457671adb1624590
Andreas Eversberg at

#28587 (Jun 1, 2026, 9:41:35 AM)

CCID: Check if reader handles truncated SIM response

The reader knows how many byte of data is expected in the SIM response.
The emulated SIM will truncate that response, so that some data and the
final status words are not sent by the SIM. The tests expects the
reader to time out and return an appropriate error core.

Change-Id: I6db6d7889a1355ee9aa2005e676fed5d20a3f2dc
Andreas Eversberg at

#28586 (Jun 1, 2026, 9:41:31 AM)

CCID: Check if reader handles special P3 value 0x00 correctly

If data is requested from SIM with P3 set 0x00, it means that 256
bytes are requested. The reader will receive a procedure byte, which
must cause it to receive all 256 data bytes + two status words.

Change-Id: Icc3fd1937b9829fcf825c58d7b676aa2be2c48e7
Andreas Eversberg at

#28585 (Jun 1, 2026, 9:41:27 AM)

CCID: Successful case 2 and 3 APDU tests

A SELECT APDU has data and must respond without any data, just the
status words.

A READ BINARY APDU has no data, but it must respond with data, followed
by the status words.

Change-Id: I9110250020c11bc7382b6308a182c09bb79e5e5e
Andreas Eversberg at

#28584 (Jun 1, 2026, 9:41:21 AM)

CCID: Add test to verify a working Simtrace setup

This test checks if a valid request is forwarded to SIMtrace and a
valid response is returned back to the reader.

Change-Id: I19264bc257024e9028996e417ff23bbbaebf5f92
Andreas Eversberg at

#28583 (Jun 1, 2026, 9:41:16 AM)

CCID: Check if reader sends request TPDU with maximum size

The maximum size of a request TPDU can have 5 bytes header and 255 bytes
data. It is expected that the reader transmits all bytes to SIM without
failure.

Change-Id: I7c1cb52b578c19d6c0ec1493e45f6ed9c43735b4
Andreas Eversberg at

#28582 (Jun 1, 2026, 9:41:11 AM)

CCID: Check response of reader with empty SIM carrier

The reader has a SIM carrier inserted, but there is no response from the
SIM while expecting the ATR. The reader will get a timeout and is
expected to respond with a suitable error code.

The test uses the slot with the SIMtrace inserted. The SIMtrace will not
respond with an ATR. This way there is no (extra) empty slot required
for this test.

Change-Id: Ifebdcce8f9dd9a51de5a5cb6cf223041d5c38622
Andreas Eversberg at

#28581 (Jun 1, 2026, 9:41:08 AM)

SIMTRACE: Increase USB receive buffer size

The maximum SIM request data can be 255 bytes. Additionally, the
SIMtrace PDU header is 14 bytes. So increase the buffer to 269 bytes.

Change-Id: I05261b4a754b4892955d0b4e426bd32be261efa7
Andreas Eversberg at

#28580 (Jun 1, 2026, 9:41:04 AM)

SIMTRACE: Add missing pres_pol to CardEmu_BD_Config message

Change-Id: I443e8151b0aa9bff150222ab6b507ed1f7946768
Andreas Eversberg at

#28579 (Jun 1, 2026, 9:41:00 AM)

CCID: Fix “unsupported Secure” test case

Expect SlotStatus or DataBlock. The specification states that DataBlock
response is used to indicate, if Secure command is not suppported.
Existing implementation, such as Omnikey Cardman 3121 or
osmo-ccid-firmware respond with SlotStatus instead.

Change-Id: I21517c3e28e0d0e42e8a177b7c668bff15c35aa0
Andreas Eversberg at

#28578 (Jun 1, 2026, 9:40:54 AM)

CCID: Check if reader handles Abort correctly

This test fails with osmo-ccid-firmware, because it is not yet
implemented.

Change-Id: Iebe97e73497b8468ebf08faf2c4db700fc76997f
Andreas Eversberg at

#28577 (Jun 1, 2026, 9:40:48 AM)

CCID: Send procedure byte, when not expected

A case 1 APDU does not request any data from SIM to return. The SIM will
only return a status byte with no procedure byte in advance.

The test sends a procedure byte in advance of the two status bytes
towards the reader. The reader expects SW1 instead of the status byte,
so that it returns it as SW1.

Change-Id: Icffd48d99f0eb48e0898efb027854eba8c22f4a4
Andreas Eversberg at

#28576 (Jun 1, 2026, 9:39:49 AM)

CCID: Check if reader times out while expecting status words

A case 1 APDU is sent toward the reader. The reader expects two status
words. If none of these are sent by the SIM the reader must timeout and
send an error message back to the host.

Change-Id: I054b56a9e2f10e5b984ad0398efb4be5696ce16c
Andreas Eversberg at

#28575 (Jun 1, 2026, 9:39:42 AM)

CCID: Send a wrong procedure byte towards the reader

A case 3 request is send and a response with data is expected, but the
first byte replied by the sim is not a procedure byte, nor a valid
status byte.

This text expects the reader to return an error that states an incorrect
received procedure byte.

Change-Id: Iaa0bd8845b3408fba309874fe41c855d8e7efccc
Andreas Eversberg at

#28574 (Jun 1, 2026, 9:39:38 AM)

CCID: Check if reader times out while expecting procedure byte

A case 3 APDU is sent toward the reader. The reader expects a procedure
byte or a status word. If none of these are sent by the SIM the reader
must timeout and send an error message back to the host.

Change-Id: Iacd6aacaf8220e69b9b7038e354d54c788d1eb05
Andreas Eversberg at

#28573 (Jun 1, 2026, 8:21:16 AM)

C5G: Release UE Context before sending Service request

A recent fix in Open5GS rejects RAN_UE_NGAP_ID in InitialUEMessage. This
causes all tests to fail that send a subsequent InitialUEMessage with
the same RAN_UE_NGAP_ID.

Release the UE Context before re-using the RAN_UE_NGAP_ID, because the
connection handler can only handle one context at a time.

Note that the AMF_UE_NGAP_ID is incremented by Open5GS for every
context.

This fixes:
    TC_ue_service_request_cm_idle_inact_sess
    TC_ue_service_request_cm_idle_ul_data
    TC_ue_service_request_cm_idle_unknown_sess_active

Related: Open5GS Issues #4481
Change-Id: If6fae56487aebd810c51cbab170d95d5dec7e138
Andreas Eversberg at

#28572 (May 28, 2026, 4:42:06 PM)

ccid: reject invalid bClockCommand

Change-Id: I34dedcaaaf3cd67e22b207016f08e745736dd625
ewild at

#28571 (May 28, 2026, 4:42:02 PM)

ccid: ICC_MUTE instead of CMD_NOT_SUPPORTED on XfrBlock to unpowered slot

The command is supported, just currently impossible.

Closes:OS#7015
Change-Id: I7f64475b023bd2b6fd1c4263850e56dd84d20b3e
ewild at

#28570 (May 28, 2026, 4:41:59 PM)

usb: properly handle data toggle bit

Same config SetConfig is currently not properly handled and stale toggle
bits lead to weird transfers until USB resyncs because the asf4 code itself
does not properly handle the toggle bit.

- USB 2.0 §9.4.5 states that ClearFeature(ENDPOINT_HALT) unconditionally
resets the data toggle to DATA0
- USB 2.0 §9.1.1.5 demands toggle reset even when the same config/interface
is selected

The old code was only doing a proper reset upon receiving a bus reset,
but the actual state reset path outlined in the spec is the set config command.
The easy fix here is to split the existing reset code which already does
everything we need into two parts for the actual usb reset and SetConfig.

The current halt clear code only resets DTGL if the endpoint is
actually halted and a fix is a bit more complicated.
_usb_d_dev_ep_stall_clr() is also called from the SETUP-packet cleanup
path in hal_usb_device.c
    _usb_d_dev_ep_stall(ep, USB_EP_STALL_CLR);
    _usb_d_dev_ep_stall(ep | USB_EP_DIR, USB_EP_STALL_CLR);

This runs on every SETUP packet as defensive cleanup of any
leftover stall from a previous failed transfer. That might be why the
asf4 usb code is wrong, because a toggle reset here breaks SETUP.

So the unconditional DTGL reset for halt clearing must therefore happen
in _usb_d_ep_halt_clr itself, which is only reached via the ClearFeature
host request (usbdc_clear_ftr_req -> usb_d_ep_halt(HALT_CLR)),
using a small HPL helper function.

Closes:OS#7016
Change-Id: I5dbca9bd2212407108b44815ecf566fc9c22336d
ewild at

#28569 (May 28, 2026, 4:41:55 PM)

7816fsm: fail PPS on invalid first byte in PPS_S_WAIT_PPSX

Change-Id: I5b74b8443a98224c0c95a664a886066495d8b64a
ewild at

#28568 (May 28, 2026, 4:41:52 PM)

7816fsm: reset stale cuart state on FSM RESET entry

Reset paths reached without power-cycling (WTIME_EXP, HW_ERR,
CARD_REMOVAL during a warm reset) leave the cuart with stale tx_busy,
rx_threshold and wtime_etu from the prior transaction. The next ATR
then hits card_uart_tx tx_busy assertion, or the ATR receive stalls
because the 33-byte ATR can never reach a multi-byte rx_threshold
left from a TPDU.

The new card_uart_tx_abort() clears tx_busy + rx_after_tx_compl + WT,
without driving a synthetic TX_COMPLETE through the FSM.

iso7816_3_reset_onenter is the right place to do this alongside
rx_threshold=1 and wtime_etu=default, this mirrors what
card_uart_ctrl(POWER_*=0) already does, but for the warm-reset paths
that don't touch power.

Change-Id: Iac8bd7f4f0eecccc9acce149277a4f5016fec7c1
ewild at

#28567 (May 28, 2026, 4:41:49 PM)

7816fsm: state_chg before card_uart_tx in tpdu_s_procedure_action

State change must precede the TX to ensure we don't lose
TX_COMPLETE notifications that arrive at a bad time.

Change-Id: Id66f836452674209e25dc3ee4c37d616de30001b
ewild at

#28566 (May 28, 2026, 4:41:45 PM)

cuart: Fix waiting time to be per-byte instead of total timeout

The previous code multiplied WT by the number of expected bytes,
creating a total timeout proportional to the transfer size. This works
fine for (currently unsupported) high baud rates, but it makes it look
like the reader "freezes" at default rates due to the very long delay.

Just reset it upon rx and do not multiply it so it behaves as expected.

Closes:OS#7012
Change-Id: Ic00040b88e1b204db3f4f3edad09878aa28d35a1
ewild at

#28565 (May 28, 2026, 4:41:04 PM)

7816fsm: Handle unexpected procedure bytes gracefully

Dispatch TPDU_FAILED_IND and don't assert for wrong procedure bytes.

Closes:SYS#8050
Change-Id: Ic53814540775f902fce644a5565a7bd2f177a7fe
ewild at

#28564 (May 28, 2026, 4:40:59 PM)

libosmo_emb: type-safe tearfree_u64_t wrapper for LDRD/STRD access

Although types are frowned upon because memorizing all differerent flavors
of void* is the usual way to get acquainted with any mature C code base
some heretics decided to introduce generics in C11, which can be used to
make aligned access (which guarantees tear-free/restartable 64 bit access
on cortex m4) less exciting.

Change-Id: I458bfaf53e27c51882c7a8c1326e51d12943b0bb
ewild at

#28562 (May 28, 2026, 8:00:52 AM)

C5G: Release UE Context before sending Service request

A recent fix in Open5GS rejects RAN_UE_NGAP_ID in InitialUEMessage. This
causes all tests to fail that send a subsequent InitialUEMessage with
the same RAN_UE_NGAP_ID.

Release the UE Context before re-using the RAN_UE_NGAP_ID, because the
connection handler can only handle one context at a time.

Note that the AMF_UE_NGAP_ID is incremented by Open5GS for every
context.

This fixes:
    TC_ue_service_request_cm_idle_inact_sess
    TC_ue_service_request_cm_idle_ul_data
    TC_ue_service_request_cm_idle_unknown_sess_active

Related: Open5GS Issues #4481
Change-Id: If6fae56487aebd810c51cbab170d95d5dec7e138
Andreas Eversberg at

#28561 (May 27, 2026, 7:21:35 PM)

tcap loadshare: move last_asp_idx_sent from cfg to runtime struct

The last_asp_idx_sent is a runtime information and not configurable.
Move it to the other runtime state.

Change-Id: Id52bb0f6c67949b5e03f7ad36996f37a0d25214a
lynxis at

#28560 (May 27, 2026, 7:21:30 PM)

vty-tests: Re-introduce the check on the help

With the support of regex within vty tests,
the help message can be checked again.

Depends-on: Iadcd7a8c3677548a6405e098fe53d0614ef2012c (osmo-python-tests)
Change-Id: I3fad268b7a8925f378f6331fcab073637bd80e08
lynxis at

#28559 (May 27, 2026, 7:19:18 PM)

tcap loadshare: allow to define the fallback mechanism for unroutable TCAP messages

When a TCAP Continue/End/Abort message is received, but no TCAP session entry can be found
and no valid TCAP range is available for the dtid, the message can be either:

- rejected by returning an error with udts
- routed by round robin to all available ASP of this AS

To define the behaviour, a new vty option is introduced:
```
   tcap-unroutable-sessions (reject-udts | load-share-over-as)
```
Defaults to reject-udts.

Related: SYS#5432
Change-Id: Ic1c876da30b05065a476d3a7c1bbf0680adf55bd
lynxis at

#28558 (May 27, 2026, 7:14:32 PM)

vty-tests: remove help from expected output

Until the vty tests support regex, remove the help message
as it depends on the compile option TCAP Routing and can't
handle both compile options.

It will be re-introduced later

Change-Id: I0d8141c00525f49c0a9f9f63b73fee531f591e5c
lynxis at

#28557 (May 27, 2026, 7:14:27 PM)

vty-tests: Re-introduce the check on the help

With the support of regex within vty tests,
the help message can be checked again.

Depends-on: Iadcd7a8c3677548a6405e098fe53d0614ef2012c (osmo-python-tests)
Change-Id: I3fad268b7a8925f378f6331fcab073637bd80e08
lynxis at

#28556 (May 27, 2026, 7:12:46 PM)

tcap loadshare: allow to define the fallback mechanism for unroutable TCAP messages

When a TCAP Continue/End/Abort message is received, but no TCAP session entry can be found
and no valid TCAP range is available for the dtid, the message can be either:

- rejected by returning an error with udts
- routed by round robin to all available ASP of this AS

To define the behaviour, a new vty option is introduced:
```
   tcap-unroutable-sessions (reject-udts | load-share-over-as)
```
Defaults to reject-udts.

Related: SYS#5432
Change-Id: Ic1c876da30b05065a476d3a7c1bbf0680adf55bd
lynxis at

#28555 (May 27, 2026, 7:11:59 PM)

tcap loadshare: move last_asp_idx_sent from cfg to runtime struct

The last_asp_idx_sent is a runtime information and not configurable.
Move it to the other runtime state.

Change-Id: Id52bb0f6c67949b5e03f7ad36996f37a0d25214a
lynxis at

#28554 (May 27, 2026, 6:13:44 PM)

osmo_interact: improve vty transcript language by a regular rexex

Currently the transcript language understand 3 different tokens:
... (ignore all lines until the following line matches)
... !REGEX (ignore all lines except REXEX)

But to support osmo-stp with different compile options, the
vty help is indented with different amount of spaces depending on the compile options.
To support those add a regular regex using the prefix !r!

E.g.
```
OsmoSTP(config-cs7-as)# ?
-  description       Save human-readable description of the object
vs
+  description               Save human-readable description of the object
```

To use the new regex, the line would be:
```
!r!  description[ ]+Save human-readable description of the object
```

Further all regex special characters needs to be escaped.
```
  description   Save human-readable description of the object (for humans)

!r!  description[ ]+Save human-readable description of the object \(for humans\)
```

Change-Id: Iadcd7a8c3677548a6405e098fe53d0614ef2012c
lynxis at

#28553 (May 27, 2026, 3:47:54 PM)

fix(ts_51_011): fix lifecycle decoding

- implement proper LCS decoding per TS 102 221 / TS 31.101
- previous implementation misclassified multiple states

Related: OS#7018
Change-Id: I8a3bd820b9fbc13c025f8302d1d2eac21686c541
pmaier@sysmocom.de at

#28552 (May 27, 2026, 3:47:50 PM)

fix(ts_51_011): apply correct access conditions length

When the access conditions are extracted from resp_bin, the wrong length
is used and only 2 bytes instead of 3 are extracted.

3GPP TS 51.011, section 9.2.1, table below "Response parameters/data
in case of an EF", clearly states that the length should be 3 bytes
(position 9-11)

Related: OS#7018
Change-Id: I410fb58c395beafba8de6d5ab4e71452f424cdf2
pmaier@sysmocom.de at

#28551 (May 27, 2026, 3:47:46 PM)

pySim/ts_51_011: rewrite comment for better understanding

The comment reads like that we were applying TS 102.221 here, but we only
mean our internal decoding format. The spec that actually matters here is
TS 51.011. Let's rephrase the comment so that this becomes more clear.

Related: OS#7018
Change-Id: Ie0184eea25f4d9f4baf9ab137c53a926edba2bf8
pmaier@sysmocom.de at

#28550 (May 27, 2026, 3:47:42 PM)

unittests: add testcases for decode_select_response

A CardProfile class usually contains a static method decode_select_response.
Unfortunately those methods have no unit-test coverage yet. Let's add unit
tests for the decoders in CardProfileSIM and CardProfileUICC.

Related: OS#7018
Change-Id: Id2b5e005d7ad30d56c5c936e612600213620a0ed
pmaier@sysmocom.de at

#28549 (May 27, 2026, 2:39:04 PM)

C5G: Release UE Context before sending Service request

A recent fix in Open5GS rejects RAN_UE_NGAP_ID in InitialUEMessage. This
causes all tests to fail that send a subsequent InitialUEMessage with
the same RAN_UE_NGAP_ID.

Release the UE Context before re-using the RAN_UE_NGAP_ID, because the
connection handler can only handle one context at a time.

Note that the AMF_UE_NGAP_ID is incremented by Open5GS for every
context.

This fixes:
    TC_ue_service_request_cm_idle_inact_sess
    TC_ue_service_request_cm_idle_ul_data
    TC_ue_service_request_cm_idle_unknown_sess_active

Related: Open5GS Issues #4481
Change-Id: If6fae56487aebd810c51cbab170d95d5dec7e138
Andreas Eversberg at

#28548 (May 27, 2026, 2:38:59 PM)

NGAP: Add UESecurityCapabilities IE to PathSwitchRequestAcknowledge

This IE is now used by Open5GS, so add it to the receive template.

This fixes C5G_Tests.TC_handover_inter_ngran_xn.

Note that there is also a pull request to fix the location of this IE in
Open5GS. (https://github.com/open5gs/open5gs/pull/4589) Without this fix
the test case will fail.

Change-Id: Ic46f201db3dcf84a7d62fb1cd17c839ef540e8bb
Andreas Eversberg at

#28547 (May 27, 2026, 2:28:37 PM)

unittests: add testcases for decode_select_response

A CardProfile class usually contains a static method decode_select_response.
Unfortunately those methods have no unit-test coverage yet. Let's add unit
tests for the decoders in CardProfileSIM and CardProfileUICC.

Related: OS#7018
Change-Id: Id2b5e005d7ad30d56c5c936e612600213620a0ed
pmaier@sysmocom.de at

#28546 (May 27, 2026, 2:28:35 PM)

pySim/ts_51_011: rewrite comment for better understanding

The comment reads like that we were applying TS 102.221 here, but we only
mean our internal decoding format. The spec that actually matters here is
TS 51.011. Let's rephrase the comment so that this becomes more clear.

Related: OS#7018
Change-Id: Ie0184eea25f4d9f4baf9ab137c53a926edba2bf8
pmaier@sysmocom.de at

#28545 (May 27, 2026, 2:28:33 PM)

fix(ts_51_011): apply correct access conditions length

When the access conditions are extracted from resp_bin, the wrong length
is used and only 2 bytes instead of 3 are extracted.

3GPP TS 51.011, section 9.2.1, table below "Response parameters/data
in case of an EF", clearly states that the length should be 3 bytes
(position 9-11)

Related: OS#7018
Change-Id: I410fb58c395beafba8de6d5ab4e71452f424cdf2
pmaier@sysmocom.de at

#28544 (May 27, 2026, 2:28:30 PM)

fix(ts_51_011): fix lifecycle decoding

- implement proper LCS decoding per TS 102 221 / TS 31.101
- previous implementation misclassified multiple states

Related: OS#7018
Change-Id: I8a3bd820b9fbc13c025f8302d1d2eac21686c541
pmaier@sysmocom.de at

#28543 (May 27, 2026, 12:14:03 PM)

firmware: replace libnewlib with picolibc

libnewlib-arm-none-eabi has been removed in debian unstable, build the
firmware with picolibc instead.

Fixes: OS#7017
Change-Id: If136397b71435ea0850002ef6406067962e8d4d7
Oliver Smith at

#28542 (May 27, 2026, 12:14:01 PM)

firmware/Makefile: remove -Wredundant-decls

picolibc has redundant declarations of free and strdtold, which results
in lots of warnings with -Wredundant-decls. Adjust CFLAGS to remove
-Wredundant-decls to make the compiler log more readable.

  /usr/lib/picolibc/arm-none-eabi/include/stdlib.h:147:9: warning: redundant redeclaration of 'free' [-Wredundant-decls]
    147 | void    free (void *) __nothrow;
        |         ^~~~
  /usr/lib/picolibc/arm-none-eabi/include/stdlib.h:99:9: note: previous declaration of 'free' with type 'void(void *)'
     99 | void    free (void *) __nothrow;
        |         ^~~~
  /usr/lib/picolibc/arm-none-eabi/include/stdlib.h:307:9: warning: redundant redeclaration of 'strtold' [-Wredundant-decls]
    307 |         strtold (const char *__restrict, char **__restrict);
        |         ^~~~~~~
  /usr/lib/picolibc/arm-none-eabi/include/stdlib.h:286:9: note: previous declaration of 'strtold' with type 'long double(const char * restrict,  char ** restrict)'
    286 |         strtold (const char *__restrict __n, char **__restrict __end_PTR);
        |         ^~~~~~~

Change-Id: I32ff78f2a27191d1c6e114429d2e0713674732fe
Oliver Smith at

#28541 (May 27, 2026, 8:23:39 AM)

osmo-smdpp.py: use commonpath in transversal check

Use commonpath, as commonprefix allows accessing a sibiling directory
with the same prefix.

Change-Id: I7a42b40aa2bbcd5f0ec99f172503354c6eaa9828
Oliver Smith at

#28540 (May 27, 2026, 8:04:24 AM)

osmo-smdpp.py: use commonpath in transversal check

Use commonpath, as commonprefix allows accessing a sibiling directory
with the same prefix.

Change-Id: I7a42b40aa2bbcd5f0ec99f172503354c6eaa9828
Oliver Smith at

#28539 (May 26, 2026, 2:39:30 PM)

octsim: blink SYSTEM LED with Timer Counter 0

Sadly the LED is connected to a GPIO doesn't have useful functions.
The only other function is ETM tracing.
The GPIO can't be controlled by a Timer Counter (TC) or
Timer Counter for Control (TCC) because only certain GPIOs
are able to be controlled by it.

Use a Timer Counter to count the time in one-shot mode
and trigger the LED from the main main loop.
This has the advantage of keeping the interference to a minimum in difference
to a Timer Counter interrupt.
Additional by using the ARM core to change the LED, it can be used as heart beat,
if the LED blinks, the ARM core is still 'alive'.

There are other possibilities to trigger the LED:
- use a TC to trigger the Event System, which toggles the GPIO.
- use a TC to trigger the DMA engine, which transfer 1 byte toggles the GPIO.

Change-Id: I8144120d07f73356855d084016edcb77d202da7f
lynxis at

#28538 (May 26, 2026, 1:53:35 PM)

obs/wireshark: use osmocom branches instead of private

The used branches should be osmocom branches and not a private
branch of a developer.

Change-Id: I6554a87b715d6013c2cfa92982c87d334c1764b9
lynxis at

#28537 (May 26, 2026, 1:50:15 PM)

octsim_osmo-ccid-firmware: improve comment

Change-Id: I29bbe954d242b04cd96beaa8f251274f946af1c9
lynxis at

#28536 (May 26, 2026, 11:44:24 AM)

vty-tests: Re-introduce the check on the help

With the support of regex within vty tests,
the help message can be checked again.

Depends-on: Iadcd7a8c3677548a6405e098fe53d0614ef2012c (osmo-python-tests)
Change-Id: I3fad268b7a8925f378f6331fcab073637bd80e08
lynxis at

#28535 (May 26, 2026, 11:41:04 AM)

tcap loadshare: allow to define the fallback mechanism for unroutable TCAP messages

When a TCAP Continue/End/Abort message is received, but no TCAP session entry can be found
and no valid TCAP range is available for the dtid, the message can be either:

- rejected by returning an error with udts
- routed by round robin to all available ASP of this AS

To define the behaviour, a new vty option is introduced:
```
   tcap-unroutable-sessions (reject-udts | load-share-over-as)
```
Defaults to reject-udts.

Related: SYS#5432
Change-Id: Ic1c876da30b05065a476d3a7c1bbf0680adf55bd
lynxis at

#28534 (May 26, 2026, 11:41:02 AM)

vty-tests: Re-introduce the check on the help

With the support of regex within vty tests,
the help message can be checked again.

Depends-on: Iadcd7a8c3677548a6405e098fe53d0614ef2012c (osmo-python-tests)
Change-Id: I3fad268b7a8925f378f6331fcab073637bd80e08
lynxis at

#28533 (May 26, 2026, 11:40:59 AM)

tcap loadshare: move last_asp_idx_sent from cfg to runtime struct

The last_asp_idx_sent is a runtime information and not configurable.
Move it to the other runtime state.

Change-Id: Id52bb0f6c67949b5e03f7ad36996f37a0d25214a
lynxis at

#28532 (May 26, 2026, 11:39:34 AM)

vty-tests: remove help from expected output

Until the vty tests support regex, remove the help message
as it depends on the compile option TCAP Routing and can't
handle both compile options.

It will be re-introduced later

Change-Id: I0d8141c00525f49c0a9f9f63b73fee531f591e5c
lynxis at

#28531 (May 26, 2026, 10:13:20 AM)

tcap loadshare: allow to define the fallback mechanism for unroutable TCAP messages

When a TCAP Continue/End/Abort message is received, but no TCAP session entry can be found
and no valid TCAP range is available for the dtid, the message can be either:

- rejected by returning an error with udts
- routed by round robin to all available ASP of this AS

To define the behaviour, a new vty option is introduced:
```
   tcap-unroutable-sessions (reject-udts | load-share-over-as)
```
Defaults to reject-udts.

Related: SYS#5432
Change-Id: Ic1c876da30b05065a476d3a7c1bbf0680adf55bd
lynxis at

#28530 (May 26, 2026, 10:13:18 AM)

tcap loadshare: move last_asp_idx_sent from cfg to runtime struct

The last_asp_idx_sent is a runtime information and not configurable.
Move it to the other runtime state.

Change-Id: Id52bb0f6c67949b5e03f7ad36996f37a0d25214a
lynxis at

#28529 (May 26, 2026, 10:12:23 AM)

vty-tests: Re-introduce the check on the help

With the support of regex within vty tests,
the help message can be checked again.

Depends-on: Iadcd7a8c3677548a6405e098fe53d0614ef2012c (osmo-python-tests)
Change-Id: I3fad268b7a8925f378f6331fcab073637bd80e08
lynxis at

#28528 (May 26, 2026, 10:04:31 AM)

tcap loadshare: move last_asp_idx_sent from cfg to runtime struct

The last_asp_idx_sent is a runtime information and not configurable.
Move it to the other runtime state.

Change-Id: Id52bb0f6c67949b5e03f7ad36996f37a0d25214a
lynxis at

#28527 (May 26, 2026, 10:04:29 AM)

tcap loadshare: allow to define the fallback mechanism for unroutable TCAP messages

When a TCAP Continue/End/Abort message is received, but no TCAP session entry can be found
and no valid TCAP range is available for the dtid, the message can be either:

- rejected by returning an error with UTDS
- routed by round robin to all available ASP of this AS

To define the behaviour, a new vty option is introduced:
```
   tcap-unroutable-sessions (reject-utds | load-share-over-as)
```
Defaults to reject-utds.

Related: SYS#5432
Change-Id: Ic1c876da30b05065a476d3a7c1bbf0680adf55bd
lynxis at

#28526 (May 26, 2026, 10:04:28 AM)

vty-tests: remove help from expected output

Until the vty tests support regex, remove the help message
as it depends on the compile option TCAP Routing and can't
handle both compile options.

It will be re-introduced later

Change-Id: I0d8141c00525f49c0a9f9f63b73fee531f591e5c
lynxis at

#28525 (May 26, 2026, 10:02:19 AM)

vty-tests: Re-introduce the check on the help

With the support of regex within vty tests,
the help message can be checked again.

Depends-on: Iadcd7a8c3677548a6405e098fe53d0614ef2012c (osmo-python-tests)
Change-Id: I3fad268b7a8925f378f6331fcab073637bd80e08
lynxis at

#28524 (May 26, 2026, 8:00:27 AM)

Bump version: 1.1.3 → 1.2.0

Change-Id: Icee7895ada6551f4805fc3da114655360698617e
lynxis at

#28523 (May 22, 2026, 1:29:07 PM)

osmo_interact: improve vty transcript language by a regular rexex

Currently the transcript language understand 3 different tokens:
... (ignore all lines until the following line matches)
... !REGEX (ignore all lines except REXEX)

But to support osmo-stp with different compile options, the
vty help is indented with different amount of spaces depending on the compile options.
To support those add a regular regex using the prefix !r!

E.g.
OsmoSTP(config-cs7-as)# ?
-  description       Save human-readable description of the object
vs
+  description               Save human-readable description of the object

Change-Id: Iadcd7a8c3677548a6405e098fe53d0614ef2012c
lynxis at

#28522 (May 22, 2026, 1:29:04 PM)

TCAP loadshare: move last_asp_idx_sent from cfg to runtime struct

The last_asp_idx_sent is a runtime information and not configurable.
Move it to the other runtime state.

Change-Id: Id52bb0f6c67949b5e03f7ad36996f37a0d25214a
lynxis at

#28521 (May 22, 2026, 1:28:03 PM)

TCAP loadshare: allow to define the fallback mechanism for unroutable TCAP messages

When a TCAP Continue/End/Abort message is received, but no TCAP session entry can be found
and no valid TCAP range is available for the dtid, the message can be either:

- rejected by returning an error with UTDS
- routed by round robin to all available ASP of this AS

To define the behaviour, a new vty option is introduced:
```
   tcap-unroutable-sessions (reject-utds | load-share-over-as)
```
Defaults to reject-utds.

Related: SYS#5432
Change-Id: Ic1c876da30b05065a476d3a7c1bbf0680adf55bd
lynxis at

#28520 (May 22, 2026, 1:01:20 PM)

TCAP loadshare: Rework initial selection of a node

The original TCAP loadshare plan was to used the OTID of a TCAP Begin to select
the node.
However this should not be used anymore. Instead the correct one would be to
do a load-sharing across all available ASP and keep this relation ("sticky" sessions).

The counter SS7_AS_CTR_TCAP_ASP_FALLBACK will be re-used by a later patch.

Related: SYS#5432
Change-Id: I151e6acb59e1f3c481487e76d2b01236fcee755f
lynxis at

#28519 (May 22, 2026, 1:01:16 PM)

TCAP loadshare: allow to define the fallback mechanism for unroutable TCAP messages

When a TCAP Continue/End/Abort message is received, but no TCAP session entry can be found
and no valid TCAP range is available for the dtid, the message can be either:

- rejected by returning an error with UTDS
- routed by round robin to all available ASP of this AS

To define the behaviour, a new vty option is introduced:
```
   tcap-unroutable-sessions (reject-utds | load-share-over-as)
```
Defaults to reject-utds.

Related: SYS#5432
Change-Id: Ic1c876da30b05065a476d3a7c1bbf0680adf55bd
lynxis at

#28518 (May 22, 2026, 1:01:13 PM)

ss7_as: fix indention

Related: SYS#5432
Change-Id: Id006f4fcbf9ae6b5b50be3d41fb216c7f9bb2dfb
lynxis at

#28517 (May 22, 2026, 1:01:10 PM)

TCAP loadshare: Add session miss counter

When a non-starting TCAP message (Continue, End, Abort) is received,
the no session could be associated with it, count these as session miss.

Those should not appear under normal operation, except after a restart of osmo-stp.

Related: SYS#5432
Change-Id: I23319294e899e6acb6421d89675ce456048f7475
lynxis at

#28516 (May 22, 2026, 1:00:14 PM)

TCAP loadshare: count all ENOKEY as a FAILED

The ASP should count all message which couldn't routed as failed.

Related: SYS#5432
Change-Id: I8bee6db5c75195855a3d378579e30886cd4d6fa8
lynxis at

#28515 (May 22, 2026, 12:42:01 PM)

tcap_as_loadshare: improve log lines

Change-Id: Idffe9a02127c587aca4123f12f74b657d6911a80
lynxis at

#28514 (May 22, 2026, 12:41:10 PM)

tcap_as_loadshare: improve logging of lookup failures

Change-Id: I80878dfd080c705de28175260cb392186dafed6a
lynxis at

#28513 (May 21, 2026, 10:37:57 AM)

Fix unhandled (un)mapping events

If a mapping event (create slotmap) and an unmapping event (delete
slotmap) exists at the same time, none of these events were handled.
These mappings stayed in 'NEW' state. Subsequent mappings of different
slots were then ignored.

This issue has been reproduced and is fixed with this patch.

Related: SYS#8032
Change-Id: I38da61cd8e9ccd5c79798bdd2196d39dfda8ebed
Andreas Eversberg at

#28512 (May 19, 2026, 3:56:49 PM)

ss7_as: fix indention

Related: SYS#5432
Change-Id: Id006f4fcbf9ae6b5b50be3d41fb216c7f9bb2dfb
lynxis at

#28511 (May 19, 2026, 3:56:46 PM)

TCAP loadshare: Rework initial selection of a node

The TCAP loadshare original used the OTID of a TCAP Begin to select
the node. To improve the load share across the nodes,
use a round robin as initial selection, but "stick" the session
on the particular node.

Related: SYS#5432
Change-Id: I151e6acb59e1f3c481487e76d2b01236fcee755f
lynxis at

#28510 (May 19, 2026, 3:56:43 PM)

TCAP loadshare: Add session miss counter

When a non-starting TCAP message (Continue, End, Abort) is received,
the no session could be associated with it, count these as session miss.

Those should not appear under normal operation, except after a restart of osmo-stp.

Related: SYS#5432
Change-Id: I23319294e899e6acb6421d89675ce456048f7475
lynxis at

#28509 (May 19, 2026, 3:55:45 PM)

TCAP loadshare: count all ENOKEY as a FAILED

The ASP should count all message which couldn't routed as failed.

Related: SYS#5432
Change-Id: I8bee6db5c75195855a3d378579e30886cd4d6fa8
lynxis at

#28508 (May 19, 2026, 12:53:30 PM)

tcap_as_loadshare: improve logging of lookup failures

Change-Id: I80878dfd080c705de28175260cb392186dafed6a
lynxis at

#28507 (May 19, 2026, 12:52:49 PM)

tcap_as_loadshare: improve log lines

Change-Id: Idffe9a02127c587aca4123f12f74b657d6911a80
lynxis at

#28506 (May 19, 2026, 12:37:40 PM)

tests: split tests into own functions

To improve the overview.

Related: SYS#5432
Change-Id: If9db94d17e288875fdaed52ec95b3785a78d5fa6
lynxis at

#28505 (May 19, 2026, 12:37:37 PM)

asn1: remove wireshark sepcific parts

The asn1 file was original copied from the wireshark
dissector.
Remove the wireshark specific parts.

Change-Id: Ie585c71fc14a20f609fa116b6858b9ca538054f5
lynxis at

#28504 (May 19, 2026, 12:37:34 PM)

tests: improve test infrastructure to support multiple test vectors

Related: SYS#5432
Change-Id: I4a69167647dd0a8eb650b4c7cc47fd97928ebf5d
lynxis at

#28503 (May 19, 2026, 12:37:32 PM)

tests: decoding: print the half decoded structure

When the decoding fails, the half decoded structure
also helps understanding the issue.

Realted: SYS#5432
Change-Id: I8f7ff9a8e457395aa12d1c7175f56cfdc5529590
lynxis at

#28502 (May 19, 2026, 12:37:28 PM)

tests: add decode tests for TCAP End tests

Related: SYS#5432
Change-Id: I5679c4a873176d73e973f5cfccff796fe6dbd941
lynxis at

#28501 (May 19, 2026, 10:13:49 AM)

asn1: remove wireshark sepcific parts

The asn1 file was original copied from the wireshark
dissector.
Remove the wireshark specific parts.

Change-Id: Ie585c71fc14a20f609fa116b6858b9ca538054f5
lynxis at

#28500 (May 19, 2026, 10:13:46 AM)

tests: split tests into own functions

To improve the overview.

Related: SYS#5432
Change-Id: If9db94d17e288875fdaed52ec95b3785a78d5fa6
lynxis at

#28499 (May 19, 2026, 10:13:44 AM)

tests: add decode tests for TCAP End tests

Related: SYS#5432
Change-Id: I5679c4a873176d73e973f5cfccff796fe6dbd941
lynxis at

#28498 (May 19, 2026, 10:13:42 AM)

tests: decoding: print the half decoded structure

When the decoding fails, the half decoded structure
also helps understanding the issue.

Realted: SYS#5432
Change-Id: I8f7ff9a8e457395aa12d1c7175f56cfdc5529590
lynxis at

#28497 (May 19, 2026, 10:13:35 AM)

tests: improve test infrastructure to support multiple test vectors

Related: SYS#5432
Change-Id: I4a69167647dd0a8eb650b4c7cc47fd97928ebf5d
lynxis at

#28496 (May 19, 2026, 10:09:20 AM)

tests: improve test infrastructure to support multiple test vectors

Related: SYS#5432
Change-Id: I4a69167647dd0a8eb650b4c7cc47fd97928ebf5d
lynxis at

#28495 (May 19, 2026, 10:09:17 AM)

asn1: remove wireshark sepcific parts

The asn1 file was original copied from the wireshark
dissector.
Remove the wireshark specific parts.

Change-Id: Ie585c71fc14a20f609fa116b6858b9ca538054f5
lynxis at

#28494 (May 19, 2026, 10:09:14 AM)

tests: add decode tests for TCAP End tests

Related: SYS#5432
Change-Id: I5679c4a873176d73e973f5cfccff796fe6dbd941
lynxis at

#28493 (May 19, 2026, 10:09:10 AM)

tests: split tests into own functions

To improve the overview.

Related: SYS#5432
Change-Id: If9db94d17e288875fdaed52ec95b3785a78d5fa6
lynxis at

#28492 (May 19, 2026, 10:09:07 AM)

tests: decoding: print the half decoded structure

When the decoding fails, the half decoded structure
also helps understanding the issue.

Realted: SYS#5432
Change-Id: I8f7ff9a8e457395aa12d1c7175f56cfdc5529590
lynxis at

#28491 (May 19, 2026, 10:08:46 AM)

asn1: Decode ErrorCode as Integer

The ErrorCode is an application 2 tag.

Related: SYS#5432
Change-Id: Ib8afe0dbe8d4436b80c71048f3b572fcda6cd33e
lynxis at

#28490 (May 15, 2026, 4:29:40 PM)

contrib: extend wireshark lua dissector

Still no reassembly, but enough to work with bug report pcaps

Change-Id: Ic78824d6122191c7d16152cea643a238c33f49b1
ewild at

#28489 (May 13, 2026, 4:28:36 PM)

pySim/ara_m: move code from do_aram_ to static methods

The method do_aram_store_ref_ar_do and do_aram_delete_all, which
are part of the nested AddlShellCommands class, may be moved into
the parent class as a static method, just like the already existing
get_config method.

This makes the functionality re-usable to callers that do not use
the CMD2 API.

Change-Id: Icd1b08ec707dd939bc9e8524d7f9431aa4daae7c
Related: SYS#6959
pmaier@sysmocom.de at

#28488 (May 13, 2026, 4:28:33 PM)

pySim/ara_m, cosmetic: swap --nfc-always and --nfc-never options

The commandline options --nfc-always and --nfc-never appear in the
opposite order when compared to --apdu-never and --apdu-always.

Let's swap the options to make the helpscreen and the code more
consistent.

Change-Id: I7289c3628b1b8dd3eec2f1c8f2132e3015422960
Related: SYS#6959
pmaier@sysmocom.de at

#28487 (May 13, 2026, 4:28:29 PM)

pySim/global_platform: make functionality available outside of cmd2

The nested class AddlShellCommands holds methods that encapsulate
the actual functionality from the related do_ method (e.g.
do_store_data calls self.store_data). This is already a good level
of separation but it does not allow us to call those methods from
programs that are not based on cmd2. Let's turn those methods into
functions so that non cmd2 applications have easy access to the
functionality of pySim.global_platform.

Let's also add a pySimLogger, so that we do not have to call
self._cmd.poutput

Related: SYS#6959
Change-Id: Idf4e4b58bf49ba62b2c22de4c49a2dcacfa872cb
pmaier@sysmocom.de at

#28486 (May 13, 2026, 4:04:10 PM)

tests: add decode tests for TCAP End tests

Change-Id: I5679c4a873176d73e973f5cfccff796fe6dbd941
lynxis at

#28485 (May 13, 2026, 4:04:08 PM)

tests: split tests into own functions

To improve overview.

Change-Id: If9db94d17e288875fdaed52ec95b3785a78d5fa6
lynxis at

#28484 (May 13, 2026, 4:04:05 PM)

Radical reduce the asn1 code to the essential parts

Previous it would try to parse the whole message including
the dialog and component.
But the tcap asn1 decode only needs to decode the otid, dtid
and the message type.

Currently the only user is osmo-stp, which doens't need
any other information.

Change-Id: Ib8afe0dbe8d4436b80c71048f3b572fcda6cd33e
lynxis at

#28483 (May 13, 2026, 4:04:00 PM)

tests: improve test infrastructure to support multiple test vectors

Change-Id: I4a69167647dd0a8eb650b4c7cc47fd97928ebf5d
lynxis at

#28482 (May 13, 2026, 3:55:11 PM)

tests: split tests into own functions

To improve overview.

Change-Id: If9db94d17e288875fdaed52ec95b3785a78d5fa6
lynxis at

#28481 (May 13, 2026, 3:55:06 PM)

tests: improve test infrastructure to support multiple test vectors

Change-Id: I4a69167647dd0a8eb650b4c7cc47fd97928ebf5d
lynxis at

#28480 (May 13, 2026, 3:55:03 PM)

tests: add decode tests for TCAP End tests

Change-Id: I5679c4a873176d73e973f5cfccff796fe6dbd941
lynxis at

#28479 (May 12, 2026, 10:37:09 AM)

RemsimServer Tests: give the remsim server some time to update the slotmap

The check of the slotmap can race if it is requests straight away,
because the slotmap might be still in the slotmap list as long the
bankd hasn't responded yet.

Change-Id: I6784e05380d844aa4bb9cde2bbe648ff37bee91b
lynxis at

#28478 (May 12, 2026, 9:01:48 AM)

pySim/global_platform: make functionality available outside of cmd2

The nested class AddlShellCommands holds methods that encapsulate
the actual functionality from the related do_ method (e.g.
do_store_data calls self.store_data). This is already a good level
of separation but it does not allow us to call those methods from
programs that are not based on cmd2. Let's turn those methods into
functions so that non cmd2 applications have easy access to the
functionality of pySim.global_platform.

Let's also add a pySimLogger, so that we do not have to call
self._cmd.poutput

Related: SYS#6959
Change-Id: Idf4e4b58bf49ba62b2c22de4c49a2dcacfa872cb
pmaier@sysmocom.de at

#28477 (May 10, 2026, 12:55:29 AM)

trx: add JSON stats export for WebSDR API

Introduce stats_json.c providing JSON serialization for:
- stats and counters
- rate counters
- BTS state
- TRX/transceiver state
- WebSDR runtime metrics

Add osmobts_get_stats() API to expose these via WebSDR
interface and export it in Emscripten build

This enables programmatic access to data previously available
via VTY (e.g. "show stats", "show bts")

Change-Id: Ifb82adfab879a65ecd222c45e06551983aa90a0f
dtv.comp at

#28476 (May 10, 2026, 12:55:23 AM)

trx, bts: add optional WebSDR backend (callback-based transport)

Introduce WebSDR backend enabled via ENABLE_WEBSDR,
adding an alternative callback-based transport alongside
existing socket-based TRX/OSMUX I/O

Implement:
- TRX control via osmotrxlib_process_command()
- TRXD data via apitrx_tx_call()/trx_data_read()
- clock handling via apibts_clock_ind() and external timers
- Osmux integration via ws_osmux_* helpers

Adapt scheduler to support API-based burst submission and
external timer callbacks in WebSDR mode

Disable signal handling, stats and socket I/O when building
with ENABLE_WEBSDR

Add WebSDR API entrypoint, Emscripten build target and
example configuration

Enables running BTS/TRX stack in WebAssembly environments

Change-Id: Idebd588f33afd85021813ad5821391781db683a9
dtv.comp at

#28475 (May 8, 2026, 3:56:32 PM)

card_key_provider: add a static method to parse --column-keys args

The contents of the --column-keys arguments are currently parsed
in init_card_key_provider. Let's add a static method in
CardKeyFieldCryptor to simplify re-usage of the CardKeyFieldCryptor

Related: SYS#6959
Change-Id: Ic955f271b1de1b1b855b21c82ed10343044e45fa
pmaier@sysmocom.de at

#28474 (May 8, 2026, 3:56:29 PM)

pySimLogger: fix default log format string

In format string we prepend when we log in verbose mode. We use %(module)s
as format string quaifier. This qualifier is replaced with the name of the
module from where the logger was called. This is mostly equal to the logger
name (__name__) we pass when we create the logger.

However, this is not the behavior we actually want. We want to log the
logger name that we passed when the logger was created. For this, we must
use %(name)s as qualifier.

Related: SYS#6959
Change-Id: I3951a70ad6ce864a7158b093cba46ae9fc1cb5bd
pmaier@sysmocom.de at

#28473 (May 8, 2026, 3:56:25 PM)

card_key_provider: pass CardKeyFieldCryptor to constructor

We currently create the CardKeyFieldCryptor object inside the constructor
of the concrete CardKeyProvider classes. There is currently no problem
with that, but when we create the CardKeyFieldCryptor object first and
then pass it as parameter to the constructor, we gain more flexibility
in case we want to support other CardKeyFieldCryptor variants in the
future.

Related: SYS#6959
Change-Id: If43552740aadacab9126f8a002749a9582eef8f4
pmaier@sysmocom.de at

#28472 (May 8, 2026, 3:56:21 PM)

pySim/scp: migrate to pySimLogger

The module scp.py predates the existence of the pySimLogger and still
uses an individually created logger. Let's migrate to pySimLogger to
avoid unexpected effects and to be uniform with the other modules.

Related: SYS#6959
Change-Id: I5db7180f93f116dd2d99c33da264f74ea16a1a37
pmaier@sysmocom.de at

#28471 (May 8, 2026, 3:56:18 PM)

pySim/filesystem: use pySimLogger instead of print

let's replace the stray print statements with proper logger calls.

Related: SYS#6959
Change-Id: I3a7188ad33706df66b2113e15cc7d06004c9bc39
pmaier@sysmocom.de at

#28470 (May 8, 2026, 3:56:15 PM)

pySim/app: use pySimLogger instead of print

let's replace the stray print statements with proper logger calls.

Related: SYS#6959
Change-Id: I95b4536cc8853e7ba6a5dd573b903dfb85e56b9a
pmaier@sysmocom.de at

#28469 (May 8, 2026, 3:56:11 PM)

card_key_provider: move boiler-plate code into helper functions

in pySim-shell.py we add the commandline options for the card key
provider and do the setup accordingly. Let's put this boilerplate
code into helper functions instead, so that we can re-use it in
other pySim programs as well. Let's use pySim.transport as a
pattern.

Related: SYS#6959
Change-Id: I6d095cbb644e608f4a751a1d0749b1484cdc781d
pmaier@sysmocom.de at

#28468 (May 8, 2026, 8:26:13 AM)

nokia: rename vty settings, drop _site

All Nokia-specific vty settings previously had names beginning
with nokia_site, creating needless confusion for operators of
Nokia BTS models that are newer than *Site family.  Rename these
vty settings to begin with just nokia, with nokia_site supported
as a backward compatibility alias.

Change-Id: I807c0ad14f4436a21f0be0a5ed291539cd4af7e8
falcon at

#28467 (May 8, 2026, 8:25:43 AM)

nokia: rename vty settings, drop _site

All Nokia-specific vty settings previously had names beginning
with nokia_site, creating needless confusion for operators of
Nokia BTS models that are newer than *Site family.  Rename these
vty settings to begin with just nokia, with nokia_site supported
as a backward compatibility alias.

Change-Id: I807c0ad14f4436a21f0be0a5ed291539cd4af7e8
falcon at

#28466 (May 7, 2026, 3:48:39 PM)

card_key_provider: add a static method to parse --column-keys args

The contents of the --column-keys arguments are currently parsed
in init_card_key_provider. Let's add a static method in
CardKeyFieldCryptor to simplify re-usage of the CardKeyFieldCryptor

Related: SYS#6959
Change-Id: Ic955f271b1de1b1b855b21c82ed10343044e45fa
pmaier@sysmocom.de at

#28465 (May 7, 2026, 3:48:36 PM)

card_key_provider: pass CardKeyFieldCryptor to constructor

We currently create the CardKeyFieldCryptor object inside the constructor
of the concrete CardKeyProvider classes. There is currently no problem
with that, but when we create the CardKeyFieldCryptor object first and
then pass it as parameter to the constructor, we gain more flexibility
in case we want to support other CardKeyFieldCryptor variants in the
future.

Related: SYS#6959
Change-Id: If43552740aadacab9126f8a002749a9582eef8f4
pmaier@sysmocom.de at

#28464 (May 7, 2026, 3:48:34 PM)

pySim/filesystem: use pySimLogger instead of print

let's replace the stray print statements with proper logger calls.

Related: SYS#6959
Change-Id: I3a7188ad33706df66b2113e15cc7d06004c9bc39
pmaier@sysmocom.de at

#28463 (May 7, 2026, 3:48:30 PM)

cosmetic: remove excess linebreaks

We should not use double-line breaks to separate things as it is very
difficult to maintain consistence with that scheme.

Change-Id: I2272abcdbba0e57c5118b69bc9398cd909a469b5
pmaier@sysmocom.de at

#28462 (May 7, 2026, 3:48:27 PM)

pySim/app: use pySimLogger instead of print

let's replace the stray print statements with proper logger calls.

Related: SYS#6959
Change-Id: I95b4536cc8853e7ba6a5dd573b903dfb85e56b9a
pmaier@sysmocom.de at

#28461 (May 7, 2026, 3:48:24 PM)

card_key_provider: move boiler-plate code into helper functions

in pySim-shell.py we add the commandline options for the card key
provider and do the setup accordingly. Let's put this boilerplate
code into helper functions instead, so that we can re-use it in
other pySim programs as well. Let's use pySim.transport as a
pattern.

Related: SYS#6959
Change-Id: I6d095cbb644e608f4a751a1d0749b1484cdc781d
pmaier@sysmocom.de at

#28460 (May 7, 2026, 3:48:21 PM)

pySim/scp: migrate to pySimLogger

The module scp.py predates the existence of the pySimLogger and still
uses an individually created logger. Let's migrate to pySimLogger to
avoid unexpected effects and to be uniform with the other modules.

Related: SYS#6959
Change-Id: I5db7180f93f116dd2d99c33da264f74ea16a1a37
pmaier@sysmocom.de at

#28459 (May 7, 2026, 3:48:17 PM)

pySimLogger: fix default log format string

In format string we prepend when we log in verbose mode. We use %(module)s
as format string quaifier. This qualifier is replaced with the name of the
module from where the logger was called. This is mostly equal to the logger
name (__name__) we pass when we create the logger.

However, this is not the behavior we actually want. We want to log the
logger name that we passed when the logger was created. For this, we must
use %(name)s as qualifier.

Related: SYS#6959
Change-Id: I3951a70ad6ce864a7158b093cba46ae9fc1cb5bd
pmaier@sysmocom.de at

#28458 (May 7, 2026, 3:48:14 PM)

pySim/global_platform: make functionality available outside of cmd2

The nested class AddlShellCommands holds methods that encapsulate
the actual functionality from the related do_ method (e.g.
do_store_data calls self.store_data). This is already a good level
of separation but it does not allow us to call those methods from
programs that are not based on cmd2. Let's turn those methods into
functions so that non cmd2 applications have easy access to the
functionality of pySim.global_platform.

Let's also add a pySimLogger, so that we do not have to call
self._cmd.poutput

Related: SYS#6959
Change-Id: Idf4e4b58bf49ba62b2c22de4c49a2dcacfa872cb
pmaier@sysmocom.de at

#28457 (May 6, 2026, 4:18:49 PM)

vty: update help string for nokia_site model

Original Nokia BTS support in OsmoBSC was limited to MetroSite,
UltraSite and InSite, aka the Site family.  After the recent series
of fixes, the same code also supports Flexi Multiradio (actively
used in the present) and will most likely also work on Flexi EDGE
(intermediate between UltraSite and Flexi MR), although that model
is currently untested.

BTS model name "nokia_site" is thus outdated and inaccurate now.
It has been decided (see https://gerrit.osmocom.org/c/osmo-bsc/+/42729)
to keep this model name unchanged for now, given the uncertainty
of how Nokia BTS support will evolve in the future if and when
we implement support for IP Abis on Flexi family, potentially
followed by future support for subsequent IP-only models.

In the meantime, change vty help string to reflect current support
for both Site and Flexi families with the same model selection.

Change-Id: I8a2d91aacc984e6a818f9782e728674306f4ebe4
falcon at

#28456 (May 6, 2026, 4:18:44 PM)

nokia: rename vty settings, drop _site

All Nokia-specific vty settings previously had names beginning
with nokia_site, creating needless confusion for operators of
Nokia BTS models that are newer than *Site family.  Rename these
vty settings to begin with just nokia, with nokia_site supported
as a backward compatibility alias.

Change-Id: I807c0ad14f4436a21f0be0a5ed291539cd4af7e8
falcon at

#28455 (May 6, 2026, 8:07:04 AM)

nokia: rename BTS model from nokia_site to nokia-e1

When Nokia BTS support was introduced into Osmocom in 2011, only
{Metro,Ultra,In}Site family was supported, and the name of this
BTS model in OsmoBSC was set to nokia_site.  However, we now
also support Flexi Multiradio in E1 Abis configuration with the
same code, automatically applying Site-specific or Flexi-MR-
specific handling based on the type code returned by the BTS
itself - hence calling the BTS model nokia_site and referring
strictly to *Site in docs and vty help is now misleading.

At the same time, these newer BTS models support both E1 and IP
Abis options, and there is a desire to support IP Abis operation
at some point in the future.  When/if Nokia IP support becomes a
reality, we will certainly need to know upfront which type of Abis
we are working with, similarly to how we currently distinguish
upfront between E1 and IPA types of BTS.  Therefore, the new BTS
model name is set to nokia-e1, rather than just "nokia", with the
expectation that we will also have nokia-ip in the future.

bts_nokia_site.c source file name is deliberately left unchanged.
Source file renames make it difficult to follow changes, hence a
slightly outdated source file name is deemed to be a lesser evil.
This source file may also be split in the future as Nokia BTS
support code grows.

Change-Id: I3e993bda577964922e29dbbaf9554fa53bb2d445
falcon at

#28454 (May 6, 2026, 6:20:29 AM)

lint/checkpatch: ignore STATIC_CONST_CHAR_ARRAY

include/osmocom/vty/command.h has the following:

  #define DEFUN_CMD_FUNC_DECL(funcname) \
    static int funcname (struct cmd_element *, struct vty *, int, const char *[]); \

  #define DEFUN_CMD_FUNC_TEXT(funcname) \
    static int funcname \
      (struct cmd_element *self, struct vty *vty, int argc, const char *argv[])

So the pointer to argv is const, but the elements in the array are not.
Functions can in theory modify the elements of argv (just like argv in
main()). I don't know if we have users of this API that are actually
doing that, but as long as the API is defined like this it doesn't make
sense for the linter to complain about using it correctly. Therefore,
ignore STATIC_CONST_CHAR_ARRAY.

Related: https://gerrit.osmocom.org/c/osmo-bsc/+/42729/comment/f3bc5254_5f30d1bb/
Change-Id: Iae0d3ff4ca648d6a3b6ca0f7805ec18e50befa80
Oliver Smith at

#28453 (May 6, 2026, 3:05:57 AM)

nokia: rename BTS model from nokia_site to nokia-e1

When Nokia BTS support was introduced into Osmocom in 2011, only
{Metro,Ultra,In}Site family was supported, and the name of this
BTS model in OsmoBSC was set to nokia_site.  However, we now
also support Flexi Multiradio in E1 Abis configuration with the
same code, automatically applying Site-specific or Flexi-MR-
specific handling based on the type code returned by the BTS
itself - hence calling the BTS model nokia_site and referring
strictly to *Site in docs and vty help is now misleading.

At the same time, these newer BTS models support both E1 and IP
Abis options, and there is a desire to support IP Abis operation
at some point in the future.  When/if Nokia IP support becomes a
reality, we will certainly need to know upfront which type of Abis
we are working with, similarly to how we currently distinguish
upfront between E1 and IPA types of BTS.  Therefore, the new BTS
model name is set to nokia-e1, rather than just "nokia", with the
expectation that we will also have nokia-ip in the future.

bts_nokia_site.c source file name is deliberately left unchanged.
Source file renames make it difficult to follow changes, hence a
slightly outdated source file name is deemed to be a lesser evil.
This source file may also be split in the future as Nokia BTS
support code grows.

Change-Id: I3e993bda577964922e29dbbaf9554fa53bb2d445
falcon at

#28452 (May 6, 2026, 3:05:51 AM)

nokia: rename vty settings, drop _site

All Nokia-specific vty settings previously had names beginning
with nokia_site, creating needless confusion for operators of
Nokia BTS models that are newer than *Site family.  Rename these
vty settings to begin with just nokia, with nokia_site supported
as a backward compatibility alias.

Change-Id: I807c0ad14f4436a21f0be0a5ed291539cd4af7e8
falcon at

#28451 (May 6, 2026, 2:53:11 AM)

nokia: rename BTS model from nokia_site to nokia-e1

When Nokia BTS support was introduced into Osmocom in 2011, only
{Metro,Ultra,In}Site family was supported, and the name of this
BTS model in OsmoBSC was set to nokia_site.  However, we now
also support Flexi Multiradio in E1 Abis configuration with the
same code, automatically applying Site-specific or Flexi-MR-
specific handling based on the type code returned by the BTS
itself - hence calling the BTS model nokia_site and referring
strictly to *Site in docs and vty help is now misleading.

At the same time, these newer BTS models support both E1 and IP
Abis options, and there is a desire to support IP Abis operation
at some point in the future.  When/if Nokia IP support becomes a
reality, we will certainly need to know upfront which type of Abis
we are working with, similarly to how we currently distinguish
upfront between E1 and IPA types of BTS.  Therefore, the new BTS
model name is set to nokia-e1, rather than just "nokia", with the
expectation that we will also have nokia-ip in the future.

bts_nokia_site.c source file name is deliberately left unchanged.
Source file renames make it difficult to follow changes, hence a
slightly outdated source file name is deemed to be a lesser evil.
This source file may also be split in the future as Nokia BTS
support code grows.

Change-Id: I3e993bda577964922e29dbbaf9554fa53bb2d445
falcon at

#28450 (May 6, 2026, 2:53:07 AM)

nokia: rename vty settings, drop _site

All Nokia-specific vty settings previously had names beginning
with nokia_site, creating needless confusion for operators of
Nokia BTS models that are newer than *Site family.  Rename these
vty settings to begin with just nokia, with nokia_site supported
as a backward compatibility alias.

Change-Id: I807c0ad14f4436a21f0be0a5ed291539cd4af7e8
falcon at

#28449 (May 6, 2026, 2:53:00 AM)

gsm_set_bts_type(): fix switch statement

The switch statement on (bts->type) in this function exhibited
two defects:

1) From the beginning, each unhandled BTS type was listed explicitly,
   instead of providing a default case;

2) When Nokia-specific initialization was added in 2015,
   the addition was erroneously applied to GSM_BTS_TYPE_BS11
   and GSM_BTS_TYPE_UNKNOWN cases, besides the intended case
   of GSM_BTS_TYPE_NOKIA_SITE.

Fixes: 56e1766dba1a03e304e51d079e65406542e7887c
Change-Id: Ibf500c373b69a69182885d5e700abc6fb1b03ccd
falcon at

#28448 (May 5, 2026, 9:14:45 PM)

transceiver: add optional Laurent burst LUT modulation (int16)

Introduce an optional Burst LUT optimization for Laurent-based burst
modulation, enabled via --with-burst-lut.

- Add precomputed Laurent LUT tables (float and int16 I/Q variants)
- Generate LUT at initialization (prepareBurstLUT)
- Use LUT-based modulation for sps=4 when enabled
- Add configure.ac option and USE_BURST_LUT define

This reduces runtime computation by replacing per-burst Laurent
processing with memcpy-based LUT lookups.

Change-Id: I1715c2d33dc55fe1c7be5c6e7259d378ea5e80b2
dtv.comp at

#28447 (May 5, 2026, 6:44:08 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

#28446 (May 5, 2026, 6:44:04 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

#28445 (May 5, 2026, 6:43:51 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

#28444 (May 4, 2026, 12:49:05 PM)

Fix: Reject TPDUs fromm host with less than 5 bytes

Each TPDU includes a header with at least 5 bytes. tpdu_s_init_action()
expects at least 5 bytes, so we need to reject Transfer Block commands
with less than 5 bytes payload.

Change-Id: Iba01c29fb0aa3ab2ce7270bf12cb29c8ba59b389
Andreas Eversberg at

#28443 (May 4, 2026, 12:47:14 PM)

trx: add JSON stats export for WebSDR API

Introduce stats_json.c providing JSON serialization for:
- stats and counters
- rate counters
- BTS state
- TRX/transceiver state
- WebSDR runtime metrics

Add osmobts_get_stats() API to expose these via WebSDR
interface and export it in Emscripten build

This enables programmatic access to data previously available
via VTY (e.g. "show stats", "show bts")

Change-Id: Ifb82adfab879a65ecd222c45e06551983aa90a0f
dtv.comp at

#28442 (May 4, 2026, 12:46:59 PM)

trx, bts: add optional WebSDR backend (callback-based transport)

Introduce WebSDR backend enabled via ENABLE_WEBSDR,
adding an alternative callback-based transport alongside
existing socket-based TRX/OSMUX I/O

Implement:
- TRX control via osmotrxlib_process_command()
- TRXD data via apitrx_tx_call()/trx_data_read()
- clock handling via apibts_clock_ind() and external timers
- Osmux integration via ws_osmux_* helpers

Adapt scheduler to support API-based burst submission and
external timer callbacks in WebSDR mode

Disable signal handling, stats and socket I/O when building
with ENABLE_WEBSDR

Add WebSDR API entrypoint, Emscripten build target and
example configuration

Enables running BTS/TRX stack in WebAssembly environments

Change-Id: Idebd588f33afd85021813ad5821391781db683a9
dtv.comp at

#28441 (May 4, 2026, 12:37:21 PM)

trx: add JSON stats export for WebSDR API

Introduce stats_json.c providing JSON serialization for:
- stats and counters
- rate counters
- BTS state
- TRX/transceiver state
- WebSDR runtime metrics

Add osmobts_get_stats() API to expose these via WebSDR
interface and export it in Emscripten build

This enables programmatic access to data previously available
via VTY (e.g. "show stats", "show bts")

Change-Id: Ifb82adfab879a65ecd222c45e06551983aa90a0f
dtv.comp at

#28440 (May 4, 2026, 12:34:13 PM)

trx, bts: add optional WebSDR backend (callback-based transport)

Introduce WebSDR backend enabled via ENABLE_WEBSDR,
adding an alternative callback-based transport alongside
existing socket-based TRX/OSMUX I/O

Implement:
- TRX control via osmotrxlib_process_command()
- TRXD data via apitrx_tx_call()/trx_data_read()
- clock handling via apibts_clock_ind() and external timers
- Osmux integration via ws_osmux_* helpers

Adapt scheduler to support API-based burst submission and
external timer callbacks in WebSDR mode

Disable signal handling, stats and socket I/O when building
with ENABLE_WEBSDR

Add WebSDR API entrypoint, Emscripten build target and
example configuration

Enables running BTS/TRX stack in WebAssembly environments

Change-Id: Idebd588f33afd85021813ad5821391781db683a9
dtv.comp at

#28439 (May 4, 2026, 7:57:32 AM)

ansible/coverity: upgrade to 2024.12.1

Related: OS#7005
Change-Id: If4f117adcaec67a79f5ee715e063621c7c897e57
Oliver Smith at

#28438 (May 4, 2026, 7:57:29 AM)

ansible/README: mention how to update coverity

Change-Id: Icab33640e0b8c62c5808d918efb6877bc1fdf1f6
Oliver Smith at