NMP Timeout with MCUBoot serial recovery

I'm using nRF Connect SDK v2.2.0 and the central_bas sample project with MCUBoot in serial recovery to implement a firmware update functionality for a custom board. I got it to run on my board and got output via UART. Also mcumgr commands like "image list" were working fine.

Yesterday I came back into office after a break and everytime I send "image list" to my board, I get an NMP timeout.

Now I tried the sample project on an nRF5340DK but I got the same result. If I change my configuration so that mcumgr works via UART (CONFIG_MCUMGR=y and CONFIG_MCUMGR_SMP_UART=y) it works perfectly fine. The used connection string for mcumgr is:

mcumgr conn add nrf53 type="serial" connstring="dev=COM5,baud=115200,mtu=512"
mcumgr -c nrf53 image list

Was there an update to the SDK or nRF Connect for VS Code that broke some functionality? Can anyone reproduce this issue?

Best regards,

Alex

prj.conf of central_bas:

#
# Copyright (c) 2019 Nordic Semiconductor ASA
#
# SPDX-License-Identifier: LicenseRef-Nordic-5-Clause
#
CONFIG_NCS_SAMPLES_DEFAULTS=y

CONFIG_BT=y
CONFIG_BT_DEBUG_LOG=y
CONFIG_BT_CENTRAL=y
CONFIG_BT_SMP=y
CONFIG_BT_GATT_CLIENT=y
CONFIG_BT_GATT_DM=y
CONFIG_HEAP_MEM_POOL_SIZE=1024
CONFIG_BT_BAS_CLIENT=y

CONFIG_BT_SCAN=y
CONFIG_BT_SCAN_FILTER_ENABLE=y
CONFIG_BT_SCAN_UUID_CNT=1
CONFIG_BT_PRIVACY=y

CONFIG_BT_SETTINGS=y
CONFIG_FLASH=y
CONFIG_FLASH_PAGE_LAYOUT=y
CONFIG_FLASH_MAP=y
CONFIG_NVS=y
CONFIG_SETTINGS=y

CONFIG_DK_LIBRARY=y

### Added first-stage bootloader ###
CONFIG_BOOTLOADER_MCUBOOT=y
CONFIG_MCUBOOT_IMAGE_VERSION="1.0.0+1" # maj.min.rev+build

### Some command handlers require a large stack. Important for mcumgr, would otherwise timeout
CONFIG_SYSTEM_WORKQUEUE_STACK_SIZE=4096

### From UART example ###
CONFIG_UART_ASYNC_API=y
CONFIG_NRFX_UARTE0=y
CONFIG_UART_0_ASYNC=y
CONFIG_SERIAL=y

prj.conf of MCUBoot:

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_RSA=n
CONFIG_BOOT_ENCRYPT_EC256=n
CONFIG_BOOT_ENCRYPT_X25519=n

CONFIG_BOOT_UPGRADE_ONLY=n
CONFIG_BOOT_BOOTSTRAP=n

### mbedTLS has its own heap
# CONFIG_HEAP_MEM_POOL_SIZE is not set

### We never want Zephyr's copy of tinycrypt.  If tinycrypt is needed,
### MCUboot has its own copy in tree.
# CONFIG_TINYCRYPT is not set
# CONFIG_TINYCRYPT_ECC_DSA is not set
# CONFIG_TINYCRYPT_SHA256 is not set

CONFIG_FLASH=y
CONFIG_FPROTECT=y

### Various Zephyr boards enable features that we don't want.
# CONFIG_BT is not set
# CONFIG_BT_CTLR is not set
# CONFIG_I2C is not set

CONFIG_LOG=y
CONFIG_LOG_MODE_MINIMAL=y # former CONFIG_MODE_MINIMAL
### Ensure Zephyr logging changes don't use more resources
CONFIG_LOG_DEFAULT_LEVEL=0
### Decrease footprint by ~4 KB in comparison to CBPRINTF_COMPLETE=y
CONFIG_CBPRINTF_NANO=y
CONFIG_NRF_RTC_TIMER_USER_CHAN_COUNT=0

### Added for serial recovery ###
CONFIG_MCUBOOT_SERIAL=y
CONFIG_BOOT_SERIAL_UART=y
### Only CONFIG_UART_CONSOLE=n should be necessary
CONFIG_UART_CONSOLE=n
#CONFIG_CONSOLE=n
#CONFIG_CONSOLE_HANDLER=n

### Enable wait for serial recovery ###
CONFIG_BOOT_SERIAL_WAIT_FOR_DFU=y
CONFIG_BOOT_SERIAL_WAIT_FOR_DFU_TIMEOUT=1500

Related