Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
53 commits
Select commit Hold shift + click to select a range
6448e88
apps and samples: Set version to 3.1.0
carlescufi Aug 1, 2025
93f0b61
version: Set to 3.1.0-rc1
carlescufi Aug 1, 2025
8505887
manifest: Tag v3.1.0-rc1
carlescufi Aug 1, 2025
3769c9e
doc: Clean changelog on 3.1.0 RC1
divipillai Aug 1, 2025
bd34fa6
ci: Use CI_LIB and test-nrf from v3.1-branch
DatGizmo Aug 4, 2025
30d0caf
doc: hpf and softperipherals comparison
annwoj Jul 9, 2025
afc0a98
toolchain: provide the index-url to build requirements
doublemis1 Jul 22, 2025
17f4179
applications: nrf_desktop: Align nRF54LM20 mcuboot configs
alstrzebonski Aug 1, 2025
047c0f5
samples: fast_pair: locator_tag: Align nRF54LM20 mcuboot configs
alstrzebonski Aug 1, 2025
7a5aa04
doc: Add recovery guide and update commands on the firmware page
divipillai Jun 25, 2025
93d8f7f
applications: ipc_radio: Restore previous timeslice size
ArekBalysNordic Jul 23, 2025
b0e7a44
bluetooth: controller: stop using deprecated mode3 support config
thomas-m-johansen Jul 29, 2025
e7a49bd
drivers: uart_nrf_sw_lpuart: Fix interrupt driven case
nordic-krch Mar 22, 2024
56b1bc3
sample: matter: configuration version is provisional
doublemis1 Aug 1, 2025
e1b183f
Applications: nrf5340_audio: Improved I2S ISR
koffes Aug 1, 2025
3129c35
ci: fix west-commands workflow
karhama Aug 1, 2025
a59c5e6
applications: nrf_desktop: turn on BT_ID_AUTO_SWAP_MATCHING_BONDS
zycz Jul 2, 2025
c5e881b
boards: shields: pca63565: enable NRF_SYS_EVENT
mstasiaknordic Aug 4, 2025
ff3e851
net: lib: downloader: Remove error check
simensrostad Jun 30, 2025
0ed7573
manifest: Update sdk-find-my revision
alstrzebonski Aug 4, 2025
3ee76bd
applications: Fixed USB VID for Matter weather station
kkasperczyk-no Aug 4, 2025
3192e38
manifest: backport ble host allow auto swap feature without privacy
PavelVPV Aug 4, 2025
461114a
manifest: sdk-nrfxlib: v3.1-branch Update MPSL and SoftDevice Controller
weeTike Aug 4, 2025
51f216d
scripts: tag_west_repos: Use git describe for OSS repos tags
rlubos Aug 1, 2025
272566a
scripts: tag_west_repos: Fetch upstream OSS remotes before tagging
rlubos Aug 4, 2025
5495f51
scripts: tag_west_repos: Remove suit repos
rlubos Aug 4, 2025
6661ff8
scripts: tag_west_repos: Add oberon
rlubos Aug 4, 2025
ecea154
samples: bluetooth: peripheral_power_profiling: fix non conn adv for l15
nordic-piks Aug 5, 2025
0d0003c
applications: nrf5340_audio: Copy pad return audio on bidir gateway
alexsven Aug 4, 2025
f15ea90
scripts/west_commands/create_board: extend support to nRF54L05/10
gmarull Aug 5, 2025
a4920bb
doc: improving Bluetooth Mesh overview
peknis Aug 4, 2025
cf0a2e5
scripts: quarantine: add L15 flpr testing with sensor shield
nordic-piks Aug 5, 2025
f9c79cc
ci: upgrade `nrfutil device==2.12.6`
thst-nordic Aug 5, 2025
263c182
provisioning: wifi: Add enterprise security support
rado17 Jul 28, 2025
f65b94e
bluetooth: wifi_prov: Update auth mode to match Zephyr enumerations
krish2718 Jul 30, 2025
373b1f7
bluetooth: wifi_prov: Add tools to generate encoded string
krish2718 Jul 30, 2025
749b3f4
wifi_prov: Rejig the library to use for multiple transports
krish2718 Jul 30, 2025
958c58f
samples: wifi: provisioning: Add new sample with internal transport
krish2718 Jul 30, 2025
a2406b7
applications: nrf5340_audio: do not force Mbed TLS config file in Mcu…
valeriosetti Jun 27, 2025
f699438
boards: shields: pca63565: remove NRF_SYS_EVENT on FLPR
mstasiaknordic Aug 5, 2025
98ce4c1
Revert "scripts: quarantine: add L15 flpr testing with sensor shield"
mstasiaknordic Aug 5, 2025
65ff88f
samples: net: mqtt: Fix stack overflow
D-Triveni Aug 5, 2025
0cf8713
samples: matter: Fixed issue with spinlock assert on 53 family
kkasperczyk-no Aug 5, 2025
7663547
doc: security: SB_CONFIG formatting
greg-fer Aug 5, 2025
7183a7e
samples: cellular: gnss: Update GNSS factory almanacs
tokangas Aug 4, 2025
dd0710d
emds: next emds
alxelax Jun 10, 2025
0696f92
emds: remove experimental tag
alxelax Jul 28, 2025
d25ddde
doc: emds: documentation adaptation for new emds
alxelax Jul 29, 2025
32fde27
manifest: samples: bluetooth: mesh: update stack sizes
alxelax Aug 5, 2025
70989f0
samples: bluetooth: fast_pair: input_device: fix stack overflow
kapi-no Aug 6, 2025
acf711c
samples: bluetooth: fast_pair: locator_tag: fix stack overflow
kapi-no Aug 6, 2025
69ee1f5
samples: net: Fix typos
D-Triveni Aug 5, 2025
893a055
manifest: Update sdk-zephyr revision
koffes Aug 6, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 6 additions & 5 deletions .github/workflows/west-commands.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ on:
pull_request:
branches: [main]
paths:
- .github/workflows/west-commands.yml
- scripts/west_commands/**
- scripts/requirements-west-ncs-sbom.txt
- scripts/requirements-extra.txt
Expand All @@ -21,9 +22,6 @@ jobs:
- name: Install python dependencies
working-directory: ncs/nrf
run: |
pip3 install -U pip
pip3 install -U setuptools
pip3 install -U wheel
pip3 install -U mypy types-colorama types-editdistance types-PyYAML
grep -E "west==" scripts/requirements-fixed.txt | cut -f1 -d"#" | cut -d ' ' -f '1'| xargs pip3 install -U
pip3 show -f west
Expand All @@ -37,9 +35,13 @@ jobs:
strategy:
fail-fast: false
matrix:
os: [ubuntu-24.04, macos-13, windows-latest]
os: [ubuntu-24.04, macos-14, windows-latest]
runs-on: ${{ matrix.os }}
steps:
- name: Setup Python
uses: actions/setup-python@42375524e23c412d93fb67b49958b491fce71c38 # v5
with:
python-version: '3.12'
- name: Checkout sources
uses: nrfconnect/action-checkout-west-update@main
with:
Expand All @@ -48,7 +50,6 @@ jobs:
- name: Install requirements
shell: bash
run: |
python3 -m pip install -U pip
pip3 install -r nrf/scripts/requirements-west-ncs-sbom.txt
pip3 install -r nrf/scripts/requirements-extra.txt
- name: Smoke test ncs-loot & ncs-compare
Expand Down
4 changes: 3 additions & 1 deletion CODEOWNERS
Original file line number Diff line number Diff line change
Expand Up @@ -122,7 +122,7 @@
/doc/nrf/libraries/bluetooth/mesh.rst @nrfconnect/ncs-paladin-doc
/doc/nrf/libraries/bluetooth/services/fast_pair/ @nrfconnect/ncs-si-bluebagel-doc
/doc/nrf/libraries/bluetooth/services/fast_pair.rst @nrfconnect/ncs-si-bluebagel-doc
/doc/nrf/libraries/bluetooth/services/wifi_prov.rst @nrfconnect/ncs-wifi-doc
/doc/nrf/libraries/bluetooth/services/wifi_prov_ble.rst @nrfconnect/ncs-wifi-doc
/doc/nrf/libraries/caf/ @nrfconnect/ncs-si-muffin-doc @nrfconnect/ncs-si-bluebagel-doc
/doc/nrf/libraries/debug/cpu_load.rst @nrfconnect/ncs-doc-leads
/doc/nrf/libraries/debug/etb_trace.rst @nrfconnect/ncs-cia-doc
Expand Down Expand Up @@ -173,6 +173,7 @@
/doc/nrf/libraries/networking/rest_client.rst @nrfconnect/ncs-iot-positioning-doc
/doc/nrf/libraries/networking/softap_wifi_provision.rst @nrfconnect/ncs-cia-doc
/doc/nrf/libraries/networking/wifi_mgmt_ext.rst @nrfconnect/ncs-cia-doc
/doc/nrf/libraries/networking/wifi_prov_*.rst @nrfconnect/ncs-cia-doc
/doc/nrf/libraries/networking/wifi_ready.rst @nrfconnect/ncs-wifi-doc
/doc/nrf/libraries/nfc/ @nrfconnect/ncs-si-muffin-doc
/doc/nrf/libraries/nrf_rpc/index.rst @nrfconnect/ncs-si-muffin-doc
Expand Down Expand Up @@ -540,6 +541,7 @@
/samples/tfm/ @nrfconnect/ncs-aegir
/samples/wifi/provisioning/ble/ @wentong-li @bama-nordic
/samples/wifi/provisioning/softap/ @nrfconnect/ncs-cia
/samples/wifi/provisioning/internal/ @krish2718 @rado17
/samples/wifi/radio_test/ @bama-nordic @sachinthegreen
/samples/wifi/scan/ @D-Triveni @bama-nordic
/samples/wifi/shell/ @nrfconnect/ncs-co-networking @krish2718 @sachinthegreen @rado17
Expand Down
2 changes: 1 addition & 1 deletion Jenkinsfile
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
@Library("CI_LIB") _
@Library("CI_LIB@v3.1-branch") _

def pipeline = new ncs.sdk_nrf.Main()

Expand Down
2 changes: 1 addition & 1 deletion VERSION
Original file line number Diff line number Diff line change
@@ -1 +1 @@
3.0.99
3.1.0-rc1
1 change: 1 addition & 0 deletions applications/ipc_radio/prj.conf
Original file line number Diff line number Diff line change
Expand Up @@ -7,3 +7,4 @@
CONFIG_SERIAL=n
CONFIG_UART_CONSOLE=n
CONFIG_LOG=n
CONFIG_TIMESLICE_SIZE=0
3 changes: 3 additions & 0 deletions applications/matter_bridge/sysbuild/ipc_radio/prj.conf
Original file line number Diff line number Diff line change
Expand Up @@ -40,3 +40,6 @@ CONFIG_IPC_SERVICE=y
# ipc_radio
CONFIG_IPC_RADIO_BT=y
CONFIG_IPC_RADIO_BT_HCI_IPC=y

# Workaround for the spinlock assertion issue.
CONFIG_TIMESLICE_SIZE=0
1 change: 1 addition & 0 deletions applications/matter_weather_station/prj.conf
Original file line number Diff line number Diff line change
Expand Up @@ -75,6 +75,7 @@ CONFIG_SHELL_LOG_BACKEND=y
# Configure USB CDC ACM
CONFIG_USB_DEVICE_INITIALIZE_AT_BOOT=n
CONFIG_USB_DEVICE_PRODUCT="Thingy:53 Matter Weather"
CONFIG_USB_DEVICE_VID=0x1915
CONFIG_USB_DEVICE_PID=0x530D
CONFIG_UART_LINE_CTRL=y
CONFIG_SHELL_BACKEND_SERIAL_INIT_PRIORITY=51
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -51,3 +51,6 @@ CONFIG_IPC_RADIO_BT_HCI_IPC=y
# that is pulled in by NETCORE_IPC_RADIO_IEEE802154 in application's Kconfig.sysbuild.
# For Wi-Fi builds, this option will not get applied anyway.
CONFIG_NRF_802154_ENCRYPTION=y

# Workaround for the spinlock assertion issue.
CONFIG_TIMESLICE_SIZE=0
137 changes: 67 additions & 70 deletions applications/nrf5340_audio/src/audio/audio_datapath.c
Original file line number Diff line number Diff line change
Expand Up @@ -87,7 +87,7 @@ LOG_MODULE_REGISTER(audio_datapath, CONFIG_AUDIO_DATAPATH_LOG_LEVEL);
#define JUST_IN_TIME_BOUND_US 2500

/* How often to print under-run warning */
#define UNDERRUN_LOG_INTERVAL_BLKS 5000
#define LOG_INTERVAL_BLKS 5000

NET_BUF_POOL_FIXED_DEFINE(pool_i2s_rx, FIFO_NUM_BLKS, BLK_STEREO_SIZE_OCTETS,
sizeof(struct audio_metadata), NULL);
Expand Down Expand Up @@ -247,7 +247,7 @@ static void drift_comp_state_set(enum drift_comp_state new_state)
*
* @param frame_start_ts_us I2S frame start timestamp.
*/
static void audio_datapath_drift_compensation(uint32_t frame_start_ts_us)
static inline void audio_datapath_drift_compensation(uint32_t frame_start_ts_us)
{
if (CONFIG_AUDIO_DEV == HEADSET) {
/** For headsets we do not use the timestamp gotten from hci_tx_sync_get to adjust
Expand Down Expand Up @@ -580,7 +580,7 @@ static struct {
* @retval 0 if success.
* @retval -ENOMEM No available buffers.
*/
static int alt_buffer_get(void **p_buffer)
static inline int alt_buffer_get(void **p_buffer)
{
if (!alt.buf_0_in_use) {
alt.buf_0_in_use = true;
Expand All @@ -601,7 +601,7 @@ static int alt_buffer_get(void **p_buffer)
*
* @param p_buffer Buffer to free.
*/
static void alt_buffer_free(void const *const p_buffer)
static inline void alt_buffer_free(void const *const p_buffer)
{
if (p_buffer == alt.buf_0) {
alt.buf_0_in_use = false;
Expand All @@ -619,6 +619,14 @@ static void alt_buffer_free_both(void)
alt.buf_1_in_use = false;
}

static struct audio_metadata i2s_meta = {.data_coding = PCM,
.data_len_us = 1000,
.sample_rate_hz = CONFIG_AUDIO_SAMPLE_RATE_HZ,
.bits_per_sample = CONFIG_AUDIO_BIT_DEPTH_BITS,
.carried_bits_per_sample = CONFIG_AUDIO_BIT_DEPTH_BITS,
.locations = BT_AUDIO_LOCATION_FRONT_LEFT |
BT_AUDIO_LOCATION_FRONT_RIGHT,
.bad_data = false};
/*
* This handler function is called every time I2S needs new buffers for
* TX and RX data.
Expand All @@ -632,8 +640,10 @@ static void alt_buffer_free_both(void)
static void audio_datapath_i2s_blk_complete(uint32_t frame_start_ts_us, uint32_t *rx_buf_released,
uint32_t const *tx_buf_released)
{
int ret;
static bool underrun_condition;
int ret = 0;
static uint32_t num_calls;

num_calls++;

alt_buffer_free(tx_buf_released);

Expand All @@ -645,83 +655,77 @@ static void audio_datapath_i2s_blk_complete(uint32_t frame_start_ts_us, uint32_t
static uint8_t *tx_buf;

if (IS_ENABLED(CONFIG_STREAM_BIDIRECTIONAL) || (CONFIG_AUDIO_DEV == HEADSET)) {
if (tx_buf_released != NULL) {
/* Double buffered index */
uint32_t next_out_blk_idx = NEXT_IDX(ctrl_blk.out.cons_blk_idx);

if (next_out_blk_idx != ctrl_blk.out.prod_blk_idx) {
/* Only increment if not in under-run condition */
ctrl_blk.out.cons_blk_idx = next_out_blk_idx;
if (underrun_condition) {
underrun_condition = false;
LOG_WRN("Data received, total under-runs: %d",
ctrl_blk.out.total_blk_underruns);
}
static bool underrun_condition;

tx_buf = (uint8_t *)&ctrl_blk.out
.fifo[next_out_blk_idx * BLK_STEREO_NUM_SAMPS];
if (tx_buf_released == NULL) {
ERR_CHK_MSG(-ENOMEM, "No TX data available");
}

} else {
if (stream_state_get() == STATE_STREAMING) {
underrun_condition = true;
ctrl_blk.out.total_blk_underruns++;
/* Double buffered index */
uint32_t next_out_blk_idx = NEXT_IDX(ctrl_blk.out.cons_blk_idx);

if ((ctrl_blk.out.total_blk_underruns %
UNDERRUN_LOG_INTERVAL_BLKS) == 0) {
LOG_WRN("In I2S TX under-run condition, total: %d",
ctrl_blk.out.total_blk_underruns);
}
}
if (next_out_blk_idx != ctrl_blk.out.prod_blk_idx) {
/* Only increment if not in under-run condition */
ctrl_blk.out.cons_blk_idx = next_out_blk_idx;
if (underrun_condition) {
underrun_condition = false;
LOG_WRN("Data received, total under-runs: %d",
ctrl_blk.out.total_blk_underruns);
}

/*
* No data available in out.fifo
* use alternative buffers
*/
ret = alt_buffer_get((void **)&tx_buf);
ERR_CHK(ret);
tx_buf = (uint8_t *)&ctrl_blk.out
.fifo[next_out_blk_idx * BLK_STEREO_NUM_SAMPS];

memset(tx_buf, 0, BLK_STEREO_SIZE_OCTETS);
}
} else {
if (stream_state_get() == STATE_STREAMING) {
underrun_condition = true;
ctrl_blk.out.total_blk_underruns++;

if (tone_active) {
tone_mix(tx_buf);
if ((ctrl_blk.out.total_blk_underruns % LOG_INTERVAL_BLKS) == 0) {
LOG_WRN("In I2S TX under-run condition, total: %d",
ctrl_blk.out.total_blk_underruns);
}
}

/*
* No data available in out.fifo
* use alternative buffers
*/
ret = alt_buffer_get((void **)&tx_buf);
ERR_CHK(ret);

memset(tx_buf, 0, BLK_STEREO_SIZE_OCTETS);
}

if (tone_active) {
tone_mix(tx_buf);
}
}

/********** I2S RX **********/
static int prev_ret;
struct net_buf *rx_audio_block = NULL;
static uint32_t num_overruns;
static uint32_t num_overruns_last_printed;

if (IS_ENABLED(CONFIG_STREAM_BIDIRECTIONAL) || (CONFIG_AUDIO_DEV == GATEWAY)) {
if (rx_buf_released == NULL) {
/* No RX data available */
ERR_CHK_MSG(-ENOMEM, "No RX data available");
}

if (k_msgq_num_free_get(ctrl_blk.in.audio_q) == 0 || pool_i2s_rx.avail_count == 0) {
ret = -ENOMEM;
} else {
ret = 0;
}

/* If RX FIFO is filled up */
if (ret == -ENOMEM) {
/* If RX FIFO is filled up */
num_overruns++;
struct net_buf *stale_i2s_data;

if (ret != prev_ret) {
LOG_WRN("I2S RX overrun. Single msg");
prev_ret = ret;
}

ret = k_msgq_get(ctrl_blk.in.audio_q, (void *)&stale_i2s_data, K_NO_WAIT);
ERR_CHK(ret);

/* Discard data */
net_buf_unref(stale_i2s_data);
}

} else if (ret == 0 && prev_ret == -ENOMEM) {
LOG_WRN("I2S RX continuing stream");
prev_ret = ret;
if ((num_calls % LOG_INTERVAL_BLKS == 0) &&
(num_overruns != num_overruns_last_printed)) {
LOG_WRN("I2S RX overrun count: %d", num_overruns);
num_overruns_last_printed = num_overruns;
}

rx_audio_block = net_buf_alloc(&pool_i2s_rx, K_NO_WAIT);
Expand All @@ -732,16 +736,9 @@ static void audio_datapath_i2s_blk_complete(uint32_t frame_start_ts_us, uint32_t
/* Store RX buffer in net_buf */
net_buf_add_mem(rx_audio_block, rx_buf_released, BLK_STEREO_SIZE_OCTETS);

/* Store I2S related metadata */
struct audio_metadata *meta = net_buf_user_data(rx_audio_block);

/* Add meta data */
meta->data_coding = PCM;
meta->data_len_us = 1000;
meta->sample_rate_hz = CONFIG_AUDIO_SAMPLE_RATE_HZ;
meta->bits_per_sample = CONFIG_AUDIO_BIT_DEPTH_BITS;
meta->carried_bits_per_sample = CONFIG_AUDIO_BIT_DEPTH_BITS;
meta->locations = BT_AUDIO_LOCATION_FRONT_LEFT | BT_AUDIO_LOCATION_FRONT_RIGHT;
meta->bad_data = false;
*meta = i2s_meta;

ret = k_msgq_put(ctrl_blk.in.audio_q, (void *)&rx_audio_block, K_NO_WAIT);
ERR_CHK_MSG(ret, "Unable to put RX audio block into queue");
Expand Down Expand Up @@ -770,11 +767,11 @@ static void audio_datapath_i2s_start(void)
if (IS_ENABLED(CONFIG_STREAM_BIDIRECTIONAL) || (CONFIG_AUDIO_DEV == HEADSET)) {
ctrl_blk.out.cons_blk_idx = PREV_IDX(ctrl_blk.out.cons_blk_idx);
tx_buf_0 = (uint8_t *)&ctrl_blk.out
.fifo[ctrl_blk.out.cons_blk_idx * BLK_STEREO_NUM_SAMPS];
.fifo[ctrl_blk.out.cons_blk_idx * BLK_STEREO_NUM_SAMPS];

ctrl_blk.out.cons_blk_idx = PREV_IDX(ctrl_blk.out.cons_blk_idx);
tx_buf_1 = (uint8_t *)&ctrl_blk.out
.fifo[ctrl_blk.out.cons_blk_idx * BLK_STEREO_NUM_SAMPS];
.fifo[ctrl_blk.out.cons_blk_idx * BLK_STEREO_NUM_SAMPS];
}

/* Start I2S */
Expand Down
33 changes: 24 additions & 9 deletions applications/nrf5340_audio/src/audio/sw_codec_select.c
Original file line number Diff line number Diff line change
Expand Up @@ -250,15 +250,30 @@ int sw_codec_decode(struct net_buf const *const audio_frame, void **decoded_data
}
}

/* For now, i2s is only stereo, so in order to send
* just one channel, we need to insert 0 for the
* other channel
*/
ret = pscm_zero_pad(pcm_in_data_ptrs[0], pcm_size_mono,
m_config.decoder.audio_ch, CONFIG_AUDIO_BIT_DEPTH_BITS,
pcm_data_stereo, &pcm_size_stereo);
if (ret) {
return ret;
if (IS_ENABLED(CONFIG_STREAM_BIDIRECTIONAL) &&
(CONFIG_AUDIO_DEV == GATEWAY)) {
/* If we are receieving mono audio on the gateway, we send it out
* as stereo, so we need to pad the mono data to stereo.
*/
ret = pscm_copy_pad(pcm_in_data_ptrs[0], pcm_size_mono,
CONFIG_AUDIO_BIT_DEPTH_BITS, pcm_data_stereo,
&pcm_size_stereo);
if (ret) {
LOG_ERR("Failed to copy pad mono to stereo: %d", ret);
return ret;
}
} else {
/* For now, i2s is only stereo, so in order to send
* just one channel, we need to insert 0 for the
* other channel
*/
ret = pscm_zero_pad(pcm_in_data_ptrs[0], pcm_size_mono,
m_config.decoder.audio_ch,
CONFIG_AUDIO_BIT_DEPTH_BITS, pcm_data_stereo,
&pcm_size_stereo);
if (ret) {
return ret;
}
}
break;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@
CONFIG_PM=n

CONFIG_MAIN_STACK_SIZE=10240
CONFIG_MBEDTLS_CFG_FILE="mcuboot-mbedtls-cfg.h"

CONFIG_BOOT_SWAP_SAVE_ENCTLV=n
CONFIG_BOOT_ENCRYPT_IMAGE=n
Expand Down
Loading
Loading