Home › SDK migration

SDK upgrade guide

nRF Connect SDK 2.6 to nRF Connect SDK 3.4: what needs attention

Migratorisk's knowledge base lists 173 documented changes between nRF Connect SDK 2.6 and nRF Connect SDK 3.4 across 15 releases. 137 of them are rated likely to break code, configuration or builds that use them. Below is each change, what a scan also reviews on this path, and how to see which ones apply to your project.

173documented changes
137rated will or likely to break
450SDK names, settings and components covered
18review checks on this path

Find which of these affect your firmware

Migratorisk scans your project on your own computer and reports only the changes your code, configuration and build actually touch. Your source code is not uploaded.

python -m pip install migratorisk
migratorisk scan --project ./your-firmware --from ncs-2.6.0 --to ncs-3.4.0 --out report.html

Requires Python 3.12 or newer. Results are free and complete without sign-up; sharing a report with us is optional.

Set up the local scanOr answer a few questions instead

Where the changes are

Build settings · 87Application code · 38Hardware description · 30Security and keys · 8Multi-image build · 4Flash memory layout · 3Custom board support · 2Build scripts · 1

What changes between nRF Connect SDK 2.6 and nRF Connect SDK 3.4

Ordered by impact. Each item names the release that introduced it and links to the official source. A change only matters if your project uses what changed; the scan checks that.

Likely to break

Per-instance nrfx driver options replaced by one option per peripheral

Build settings · nRF Connect SDK 3.2.0 · Source

NCS 3.2 updates nrfx to 4.0 and removes per-instance Kconfig options such as CONFIG_NRFX_UARTE0 or CONFIG_NRFX_SPIM1; a single option (CONFIG_NRFX_UARTE, CONFIG_NRFX_SPIM, ...) enables the driver and instances come from devicetree. Covers 184 names.

Likely to break

TinyCrypt library removed

Build settings · Zephyr 4.3.0 · Source

Zephyr 4.3 removes the TinyCrypt library; every CONFIG_TINYCRYPT* option becomes undefined. PSA Crypto API is the replacement. Covers 12 names.

Likely to break

Devicetree compatibles renesas,ra-gpio and 4 more were removed

Hardware description · Zephyr 4.2.0 · Source

arduino_uno_r4_minima, arduino_uno_r4_wifi, and mikroe_clicker_ra4m1 have migrated to new FSP-based configurations. While there are no major functional changes, the device tree structure has been significantly revised. The following device tree bindings are now removed: renesas,ra-gpio, renesas,ra-uart-sci, renesas,ra-pinctrl, renesas,ra-clock-generation-circuit, and renesas,ra-interrupt-controller-unit. Covers 5 names.

Likely to break

Kconfig options CONFIG_BT_MESH_TX_SEG_RETRANS_COUNT and 4 more were removed

Build settings · Zephyr 3.6.0 · Source

Removed the CONFIG_BT_MESH_TX_SEG_RETRANS_COUNT, CONFIG_BT_MESH_TX_SEG_RETRANS_TIMEOUT_UNICAST, CONFIG_BT_MESH_TX_SEG_RETRANS_TIMEOUT_GROUP, CONFIG_BT_MESH_SEG_ACK_BASE_TIMEOUT, CONFIG_BT_MESH_SEG_ACK_PER_HOP_TIMEOUT, BT_MESH_SEG_ACK_PER_SEGMENT_TIMEOUT Kconfig options. Covers 5 names.

Likely to break

Partition Manager is disabled by default in NCS 3.4

Flash memory layout · nRF Connect SDK 3.4.0 · Source

Partition Manager was deprecated in NCS 3.3 and is disabled by default in the next major release (3.4). Projects that use pm_static.yml or keep Partition Manager enabled must define their flash and RAM partitions in devicetree. Covers 5 names.

Likely to break

lte_lc init and fallback APIs were removed

Application code · nRF Connect SDK 2.8.0 · Source

NCS 2.8 removes lte_lc_init(), lte_lc_deinit(), lte_lc_init_and_connect(_async)(), LTE_LC_ON_CFUN and CONFIG_LTE_NETWORK_USE_FALLBACK. Covers 4 names.

Likely to break

CRACEN seed option renamed and CFB/OFB cipher modes removed

Build settings · nRF Connect SDK 2.8.0 · Source

NCS 2.8 renames CONFIG_CRACEN_LOAD_KMU_SEED to CONFIG_CRACEN_IKG_SEED_LOAD and removes CONFIG_MBEDTLS_CIPHER_MODE_CFB and CONFIG_MBEDTLS_CIPHER_MODE_OFB. Covers 3 names.

Likely to break

Devicetree compatibles microchip,ksz8463 and 2 more were removed

Hardware description · Zephyr 4.4.0 · Source

CONFIG_NET_DSA_DEPRECATED has been removed. The drivers for the compatibles microchip,ksz8463, microchip,ksz8794 and microchip,ksz8863 were removed, as they haven't been migrated to the new DSA subsystem. Covers 3 names.

Likely to break

Devicetree compatibles solomon,ssd1327fb and 2 more were renamed

Hardware description · Zephyr 4.4.0 · Source

solomon,ssd1327fb, solomon,ssd1306fb and solomon,ssd1309fb devicetree compatibles have been renamed solomon,ssd1327, solomon,ssd1306 and solomon,ssd1309 respectively, to harmonize with other display controllers and eliminate the zephyr-irrelevant fb suffix. Covers 3 names.

Likely to break

Kconfig options CONFIG_CAN_MAX_FILTER and 2 more were replaced

Build settings · Zephyr 4.4.0 · Source

Removed CONFIG_CAN_MAX_FILTER, CONFIG_CAN_MAX_STD_ID_FILTER, CONFIG_CAN_MAX_EXT_ID_FILTER. These are replaced by the following driver-specific Kconfig symbols, some of which have had their default value increased to meet typical software needs:. Covers 3 names.

Likely to break

Kconfig options CONFIG_MBEDTLS_MAC_MD4_ENABLED and 2 more were removed

Build settings · Zephyr 3.7.0 · Source

The Kconfig options CONFIG_MBEDTLS_MAC_MD4_ENABLED, CONFIG_MBEDTLS_CIPHER_ARC4_ENABLED and CONFIG_MBEDTLS_CIPHER_BLOWFISH_ENABLED were removed because they are no more supported in Mbed TLS. Covers 3 names.

Likely to break

Kconfig options CONFIG_REGULATOR_NPM1300 and 2 more were renamed

Build settings · Zephyr 4.2.0 · Source

Renamed CONFIG_REGULATOR_NPM1300 to CONFIG_REGULATOR_NPM13XX, CONFIG_REGULATOR_NPM1300_COMMON_INIT_PRIORITY to REGULATOR_NPM13XX_COMMON_INIT_PRIORITY, CONFIG_REGULATOR_NPM1300_INIT_PRIORITY to CONFIG_REGULATOR_NPM13XX_INIT_PRIORITY. Covers 3 names.

Likely to break

APIs LINK_FULL_5000BASE_T and 1 more were renamed

Application code · Zephyr 4.2.0 · Source

Enums for the Ethernet speed have been renamed to be more independent of the used medium. Covers 2 names.

Likely to break

Devicetree compatibles microchip,mcp230xx and 1 more were removed

Hardware description · Zephyr 4.0.0 · Source

The devicetree bindings for the Microchip mcp23xxx series have been split up. Users of microchip,mcp230xx and microchip,mcp23sxx should change their devicetree compatible values to the specific chip variant, e.g. microchip,mcp23017. The ngpios devicetree property has been removed, since it is implied by the model name. Covers 2 names.

Likely to break

FEM tx gain functions replaced

Application code · nRF Connect SDK 2.7.0 · Source

NCS 2.7 replaces fem_tx_gain_set() with fem_tx_power_control_set() and fem_default_tx_gain_get() with fem_default_tx_output_power_get(). Covers 2 names.

Likely to break

Kconfig options CONFIG_BT_HCI_RESERVE and 1 more were removed

Build settings · Zephyr 3.6.0 · Source

The CONFIG_BT_HCI_RESERVE and CONFIG_BT_HCI_RAW_RESERVE Kconfig options were removed. All buffers get by default one byte of headroom now, which HCI transport implementations can rely on (whether they need it or not). Covers 2 names.

Likely to break

Kconfig options CONFIG_BT_MESH_USES_MBEDTLS_PSA and 1 more were removed

Build settings · Zephyr 4.3.0 · Source

Kconfigs CONFIG_BT_MESH_USES_MBEDTLS_PSA and CONFIG_BT_MESH_USES_TFM_PSA have been removed. The selection of the PSA Crypto provider is now automatically controlled by Kconfig CONFIG_PSA_CRYPTO. Covers 2 names.

Likely to break

Kconfig options CONFIG_DISABLE_SSBD and 1 more were removed

Build settings · Zephyr 4.1.0 · Source

Kconfigs CONFIG_DISABLE_SSBD and CONFIG_ENABLE_EXTENDED_IBRS have been deprecated since v3.7. These were removed. Use CONFIG_X86_DISABLE_SSBD and CONFIG_X86_ENABLE_EXTENDED_IBRS instead. Covers 2 names.

Likely to break

Kconfig options CONFIG_ESPI_SLAVE and 1 more were renamed

Build settings · Zephyr 3.7.0 · Source

The macros ESPI_SLAVE_TO_MASTER and ESPI_MASTER_TO_SLAVE were renamed to ESPI_TARGET_TO_CONTROLLER and ESPI_CONTROLLER_TO_TARGET respectively to reflect the new terminology in eSPI 1.5 specification. Covers 2 names.

Likely to break

Kconfig options CONFIG_GPIO_NPM1300 and 1 more were renamed

Build settings · Zephyr 4.2.0 · Source

Renamed CONFIG_GPIO_NPM1300 to CONFIG_GPIO_NPM13XX, CONFIG_GPIO_NPM1300_INIT_PRIORITY to CONFIG_GPIO_NPM13XX_INIT_PRIORITY. Covers 2 names.

Likely to break

Kconfig options CONFIG_LINKER_USE_PINNED_SECTION and 1 more were removed

Build settings · Zephyr 4.4.0 · Source

The __pinned_* attribute family and the CONFIG_LINKER_USE_PINNED_SECTION / CONFIG_LINKER_GENERIC_SECTIONS_PRESENT_AT_BOOT Kconfig options are gone. The kernel image is now always resident in physical memory; demand paging applies only to anonymous mappings created via k_mem_map and to symbols placed in the __ondemand_* linker sections via CONFIG_LINKER_USE_ONDEMAND_SECTION. Covers 2 names.

Likely to break

Kconfig options CONFIG_MBEDTLS_TLS_VERSION_1_0 and 1 more were removed

Build settings · Zephyr 4.0.0 · Source

The Kconfig options CONFIG_MBEDTLS_TLS_VERSION_1_0 and CONFIG_MBEDTLS_TLS_VERSION_1_1 have been removed because Mbed TLS doesn't support TLS 1.0 and 1.1 anymore since v3.0. Covers 2 names.

Likely to break

Kconfig options CONFIG_MFD_NPM1300 and 1 more were renamed

Build settings · Zephyr 4.2.0 · Source

Renamed CONFIG_MFD_NPM1300 to CONFIG_MFD_NPM13XX, CONFIG_MFD_NPM1300_INIT_PRIORITY to CONFIG_MFD_NPM13XX_INIT_PRIORITY. Covers 2 names.

Likely to break

Kconfig options CONFIG_SDL_DISPLAY_DEFAULT_PIXEL_FORMAT_BGR_565 and 1 more were renamed

Build settings · Zephyr 4.4.0 · Source

The Kconfig options CONFIG_SDL_DISPLAY_DEFAULT_PIXEL_FORMAT_BGR_565 and CONFIG_ST7789V_BGR565 have been renamed to CONFIG_SDL_DISPLAY_DEFAULT_PIXEL_FORMAT_RGB_565X and CONFIG_ST7789V_RGB565X respectively. Covers 2 names.

Likely to break

Kconfig options CONFIG_WDT_NPM1300 and 1 more were renamed

Build settings · Zephyr 4.2.0 · Source

Renamed CONFIG_WDT_NPM1300 to CONFIG_WDT_NPM13XX, CONFIG_WDT_NPM1300_INIT_PRIORITY to CONFIG_WDT_NPM13XX_INIT_PRIORITY. Covers 2 names.

Likely to break

Kconfig options CONFIG_ZBUS_MSG_SUBSCRIBER_NET_BUF_DYNAMIC and 1 more were renamed

Build settings · Zephyr 3.6.0 · Source

The CONFIG_ZBUS_MSG_SUBSCRIBER_NET_BUF_DYNAMIC and CONFIG_ZBUS_MSG_SUBSCRIBER_NET_BUF_STATIC zbus options are renamed. Instead, the new CONFIG_ZBUS_MSG_SUBSCRIBER_BUF_ALLOC_DYNAMIC and CONFIG_ZBUS_MSG_SUBSCRIBER_BUF_ALLOC_STATIC options should be used. Covers 2 names.

Likely to break

Kconfig options SB_CONFIG_MCUBOOT_MODE_SWAP_WITHOUT_SCRATCH and 1 more were replaced

Build settings · Zephyr 4.1.0 · Source

The Kconfig SB_CONFIG_MCUBOOT_MODE_SWAP_WITHOUT_SCRATCH has been deprecated and replaced with SB_CONFIG_MCUBOOT_MODE_SWAP_USING_MOVE, applications should be updated to select this new symbol if they were selecting the old symbol. Covers 2 names.

Likely to break

PDN library was removed

Application code · nRF Connect SDK 3.4.0 · Source

NCS 3.4 removes the deprecated PDN library; PDN management is provided by the LTE link control (lte_lc) library. Covers 2 names.

Likely to break

at_parser_cmd_type_get was renamed

Application code · nRF Connect SDK 2.8.0 · Source

NCS 2.8 renames at_parser_cmd_type_get() to at_parser_at_cmd_type_get() and deprecates the AT command parser library in favour of the AT parser. Covers 2 names.

Likely to break

lte_lc modem event enable and disable APIs were removed

Application code · nRF Connect SDK 3.3.0 · Source

NCS 3.3 removes lte_lc_modem_events_enable() and lte_lc_modem_events_disable(); modem events are enabled with CONFIG_LTE_LC_MODEM_EVENTS_MODULE. Covers 2 names.

Likely to break

nRF Cloud REST library was removed

Application code · nRF Connect SDK 3.4.0 · Source

NCS 3.4 removes the nRF Cloud REST library and its samples; Nordic's samples moved to the nRF Cloud CoAP library. Covers 2 names.

Likely to break

API BT_AUDIO_BROADCAST_CODE_SIZE was removed

Application code · Zephyr 4.0.0 · Source

BT_AUDIO_BROADCAST_CODE_SIZE has been removed and BT_ISO_BROADCAST_CODE_SIZE should be used instead.

Likely to break

API BT_AUDIO_CONTEXT_TYPE_PROHIBITED was renamed

Application code · Zephyr 4.2.0 · Source

BT_AUDIO_CONTEXT_TYPE_PROHIBITED has been renamed to BT_AUDIO_CONTEXT_TYPE_NONE.

Likely to break

API ESPI_MASTER_TO_SLAVE was renamed

Application code · Zephyr 3.7.0 · Source

The macros ESPI_SLAVE_TO_MASTER and ESPI_MASTER_TO_SLAVE were renamed to ESPI_TARGET_TO_CONTROLLER and ESPI_CONTROLLER_TO_TARGET respectively to reflect the new terminology in eSPI 1.5 specification.

Likely to break

API ETH_STM32_MODE_HALFDUPLEX was removed

Application code · Zephyr 4.2.0 · Source

The Kconfig options ETH_STM32_HAL_PHY_ADDRESS, ETH_STM32_CARRIER_CHECK, ETH_STM32_CARRIER_CHECK_RX_IDLE_TIMEOUT_MS, ETH_STM32_AUTO_NEGOTIATION_ENABLE, ETH_STM32_SPEED_10M, ETH_STM32_MODE_HALFDUPLEX have been removed, as they are no longer needed, and the driver now uses the ethernet phy api to communicate with the phy driver, which is responsible for configuring the phy settings.

Likely to break

API MFD_AXP192_AXP2101 was removed

Application code · Zephyr 4.3.0 · Source

Driver support for AXP2101 has been separated from the AXP192 one. As a consequence the kconfig symbol MFD_AXP192_AXP2101 is removed. MFD_AXP192 is now to be used for AXP192 device while MFD_AXP2101 for the AXP2101 one.

Likely to break

API MGMT_CB_ERROR_RET was removed

Application code · Zephyr 4.1.0 · Source

The deprecated macro MGMT_CB_ERROR_RET has been removed.

Likely to break

API NET_REQUEST_ETHERNET_SET_AUTO_NEGOTIATION was removed

Application code · Zephyr 4.2.0 · Source

ETHERNET_CONFIG_TYPE_LINK, ETHERNET_CONFIG_TYPE_DUPLEX, ETHERNET_CONFIG_TYPE_AUTO_NEG and the related NET_REQUEST_ETHERNET_SET_LINK, NET_REQUEST_ETHERNET_SET_DUPLEX, NET_REQUEST_ETHERNET_SET_AUTO_NEGOTIATION have been removed. phy_configure_link together with net_eth_get_phy should be used instead to configure the link.

Likely to break

API NET_SOCKET_SERVICE_SYNC_DEFINE_STATIC was removed

Application code · Zephyr 4.0.0 · Source

The work_q parameter to NET_SOCKET_SERVICE_SYNC_DEFINE and NET_SOCKET_SERVICE_SYNC_DEFINE_STATIC has been removed as it was always ignored.

Likely to break

API NRF_ETR was renamed

Application code · Zephyr 4.3.0 · Source

The nrf_etr driver has been migrated to drivers/debug. As a consequence the related Kconfig symbol was renamed from NRF_ETR to DEBUG_NRF_ETR, along with the rest of the NRF_ETR symbols. Also the driver needs to be explicitly enabled via DEBUG_DRIVER as it is no longer built by default.

Likely to break

API PIXEL_FORMAT_RGB565 was replaced

Application code · Zephyr 4.2.0 · Source

On STM32 devices, the LTDC driver (st,stm32-ltdc) RGB565 format PIXEL_FORMAT_RGB565 has been replaced by PIXEL_FORMAT_BGR565 to match the format expected by Zephyr. This change ensures proper behavior of both display and video capture samples.

Likely to break

API TLS_CREDENTIAL_SERVER_CERTIFICATE was renamed

Application code · Zephyr 4.2.0 · Source

TLS credential type TLS_CREDENTIAL_SERVER_CERTIFICATE was renamed to more generic TLS_CREDENTIAL_PUBLIC_CERTIFICATE to better reflect the purpose of this credential type.

Likely to break

API ZSR_ALLOCA was renamed

Application code · Zephyr 3.6.0 · Source

Scratch registers ZSR_ALLOCA has been renamed to ZSR_A0SAVE.

Likely to break

API bt_csip_set_member_get_sirk was removed

Application code · Zephyr 4.2.0 · Source

bt_csip_set_member_get_sirk has been removed. Use bt_csip_set_member_get_info to get the SIRK (and other information).

Likely to break

API counter_native_posix was renamed

Application code · Zephyr 4.2.0 · Source

counter_native_posix has been renamed counter_native_sim, and with it its kconfig options and DT binding. zephyr,native-posix-counter has been deprecated in favor of zephyr,native-sim-counter. And CONFIG_COUNTER_NATIVE_POSIX and its related options with CONFIG_COUNTER_NATIVE_SIM.

Likely to break

API ethernet_native_posix was renamed

Application code · Zephyr 4.2.0 · Source

ethernet_native_posix has been renamed ethernet_native_tap, and with it its kconfig options: CONFIG_ETH_NATIVE_POSIX and its related options have been deprecated in favor of CONFIG_ETH_NATIVE_TAP.

Likely to break

API fake_entropy_native_posix was renamed

Application code · Zephyr 4.2.0 · Source

fake_entropy_native_posix has been renamed fake_entropy_native_sim, and with it its kconfig options and DT binding. zephyr,native-posix-rng has been deprecated in favor of zephyr,native-sim-rng. And CONFIG_FAKE_ENTROPY_NATIVE_POSIX and its related options with CONFIG_FAKE_ENTROPY_NATIVE_SIM.

Likely to break

API http_data_status was renamed

Application code · Zephyr 4.4.0 · Source

The enum for HTTP server transaction status has been renamed from http_data_status to http_transaction_status to better reflect its purpose.

Likely to break

API lorawan_set_battery_level_callback was renamed

Application code · Zephyr 3.6.0 · Source

The API to register a callback to provide battery level information to the LoRaWAN stack has been renamed from lorawan_set_battery_level_callback to lorawan_register_battery_level_callback and the return type is now void. This is more consistent with similar functions for downlink and data rate changed callbacks.

Likely to break

API native_posix_timer was renamed

Application code · Zephyr 4.2.0 · Source

native_posix_timer has been renamed native_sim_timer, and so its kconfig option CONFIG_NATIVE_POSIX_TIMER has been deprecated in favor of CONFIG_NATIVE_SIM_TIMER,.

Likely to break

API net_linkaddr_storage was renamed

Application code · Zephyr 4.2.0 · Source

The struct net_linkaddr_storage has been renamed to struct net_linkaddr and the old struct net_linkaddr has been removed. The struct net_linkaddr now contains space to store the link address instead of having pointer that point to the link address. This avoids possible dangling pointers when cloning struct net_pkt.

Likely to break

API stepper_enable_constant_velocity_mode was renamed

Application code · Zephyr 4.1.0 · Source

Renamed the stepper_enable_constant_velocity_mode function to stepper_run. The function does not take a velocity parameter anymore. Set the desired speed using the stepper_set_microstep_interval function beforehand.

Likely to break

API stepper_set_actual_position was renamed

Application code · Zephyr 4.1.0 · Source

Renamed the stepper_set_actual_position function to stepper_set_reference_position.

Likely to break

API stepper_set_max_velocity was renamed

Application code · Zephyr 4.1.0 · Source

Renamed the stepper_set_max_velocity function to stepper_set_microstep_interval. The function now takes the step interval in nanoseconds. This allows for a more precise control.

Likely to break

API stepper_set_target_position was renamed

Application code · Zephyr 4.1.0 · Source

Renamed the stepper_set_target_position function to stepper_move_to.

Likely to break

API uart_native_posix was renamed

Application code · Zephyr 4.2.0 · Source

uart_native_posix has been renamed uart_native_pty, and with it its kconfig options and DT binding. zephyr,native-posix-uart has been deprecated in favor of zephyr,native-pty-uart. CONFIG_UART_NATIVE_POSIX and its related options with CONFIG_UART_NATIVE_PTY.

Likely to break

API uart_rpi_pico was removed

Application code · Zephyr 3.7.0 · Source

The Raspberry Pi UART driver uart_rpi_pico has been removed. Use uart_pl011 (arm,pl011) instead.

Likely to break

API uvc_add_format was renamed

Application code · Zephyr 4.4.0 · Source

uvc_add_format has been renamed to uvc_device_add_format.

Likely to break

API uvc_set_video_dev was renamed

Application code · Zephyr 4.4.0 · Source

uvc_set_video_dev has been renamed to uvc_device_init.

Likely to break

CONFIG_BT_CTLR deprecated in favour of HAS_BT_CTLR

Build settings · Zephyr 4.1.0 · Source

Zephyr 4.1 deprecates CONFIG_BT_CTLR; the link layer is now chosen by HCI driver options that select HAS_BT_CTLR. Setting CONFIG_BT_CTLR in prj.conf or a sysbuild image config fails on later releases.

And 113 more changes, all checked by the scan.

What a scan of this path also reviews

Beyond the documented changes, Migratorisk reviews these upgrade risks for nRF Connect SDK projects on this path. Each one is reported only when the project shows the trigger.

Custom board files need NCS 3.4 hardware model review

When it applies: Custom board files and devicetree review targets were found.

Why it matters: Custom nRF53/nRF52 board files can still need hardware model, chosen-node, and devicetree compatibility review during a direct NCS 3.4 migration.

What to do: Review board directory layout, revision overlays, compatibles, chosen nodes, pinctrl assumptions, and network-core overlays before source cleanup.

Devicetree binding error found in NCS 2.6 to 3.4 build log

When it applies: Build log reports a devicetree binding failure.

Why it matters: Custom board and overlay binding failures should be fixed before interpreting later source API errors.

What to do: Fix custom board and overlay binding errors before treating source API findings as migration failures.

Undefined Kconfig symbol found in NCS 2.6 to 3.4 build log

When it applies: Build log reports an undefined Kconfig symbol after the upgrade attempt.

Why it matters: BLE, MCUboot, mcumgr, and board symbols can still shift dependencies between NCS 2.6 and 3.4.

What to do: Resolve undefined Kconfig symbols before chasing compiler or linker errors later in the log.

MCUboot include or symbol breakage found

When it applies: Build log shows MCUboot-related missing headers or undefined references.

Why it matters: Bootloader include paths, image confirmation, and ownership can shift during direct latest upgrades even from newer NCS 2.x projects.

What to do: Resolve sysbuild and Kconfig ownership first, then review the exact MCUboot symbol or include reported in the log.

NCS 2.6 partition layout needs NCS 3.4 review

When it applies: Static partition data may encode OTA, settings, MCUboot, or external-flash assumptions.

Why it matters: Direct NCS 2.6 to 3.4 upgrades can expose image-size or partition ownership issues before source-level findings are meaningful.

What to do: Compare generated partition reports for MCUboot slots, settings, persistent storage, and external flash after the upgraded sysbuild build.

Signing key path is embedded in NCS 2.6 config

When it applies: A boot signing key path is configured in project files.

Why it matters: Signing configuration and production credentials should be sanitized in public fixtures and revalidated privately before a direct latest SDK migration.

What to do: Remove private keys and credentials from shared fixtures and verify signing configuration in a private local validation run.

NCS 2.6 sysbuild configuration needs NCS 3.4 review

When it applies: Project has sysbuild or legacy child-image configuration while targeting NCS 3.4.

Why it matters: NCS 2.6 projects are closer to modern sysbuild, but bootloader and network-core ownership should still be confirmed for a direct latest upgrade.

What to do: Review sysbuild ownership for MCUboot, network core, and application image settings.

West manifest references NCS 2.6 era revisions

When it applies: west.yml references old NCS or Zephyr revisions.

Why it matters: Manifest revision drift can make the upgrade build unrepresentative before project-local migration work starts.

What to do: Update the workspace manifest intentionally, then rerun the scan against the upgraded build log.

NCS 2.6 source API review pattern found

When it applies: Source uses BLE, settings, flash map, or bootloader APIs that deserve review after the upgraded build is stable.

Why it matters: This evidence is review-only unless paired with a concrete upgraded build failure.

What to do: Review source API usage after west, sysbuild, partition, board, Kconfig, and devicetree issues are addressed.

NCS 2.6 Bluetooth API usage needs NCS 3.4 review

When it applies: Application source uses Bluetooth APIs that should be checked against the target NCS Bluetooth stack.

Why it matters: Large NCS jumps can expose changed Bluetooth defaults, dependencies, privacy behavior, and GATT/advertising assumptions.

What to do: Review Bluetooth initialization, advertising, scanning, connection, GATT, identity, and privacy usage after the upgraded build is stable.

NCS 2.6 DFU, MCUboot, and mcumgr API usage needs NCS 3.4 review

When it applies: Application source uses DFU, MCUboot, image-management, or SMP APIs.

Why it matters: NCS 3.x migrations often move image ownership into sysbuild and can expose changed bootloader, mcumgr, and DFU dependencies.

What to do: Review image confirmation, upgrade request, mcumgr/SMP transport, FOTA download, DFU target, and download client paths together with partition and sysbuild changes.

NCS 2.6 driver API usage needs NCS 3.4 review

When it applies: Application source uses Zephyr/Nordic driver-facing APIs.

Why it matters: Driver migrations can expose devicetree, pinctrl, power-management, and device readiness assumptions.

What to do: Review device acquisition, readiness checks, pinctrl/devicetree references, and board-specific driver configuration.

NCS 2.6 LTE and modem API usage needs NCS 3.4 review

When it applies: Application source uses Nordic modem, LTE, AT command, modem-info, or location APIs.

Why it matters: nRF91-era migrations can require modem library, LTE link controller, AT command, and location dependency review.

What to do: Review modem library initialization, LTE lifecycle, AT command calls, modem info reads, and GNSS/location flows against the target SDK.

NCS 2.6 network stack API usage needs NCS 3.4 review

When it applies: Application source uses socket, MQTT, CoAP, Thread/OpenThread, Wi-Fi, Nordic cloud, or date/time APIs.

Why it matters: Network migrations can require Kconfig, TLS/security, modem, Thread, Wi-Fi, and cloud dependency review.

What to do: Review network initialization, transport dependencies, TLS/security configuration, cloud flows, and protocol smoke tests.

NCS 2.6 device model and kernel runtime API usage needs NCS 3.4 review

When it applies: Application source uses device model, devicetree macros, partition manager APIs, runtime PM, kernel primitives, or Nordic app framework APIs.

Why it matters: These APIs are sensitive to devicetree, Kconfig, power-management, and generated-header changes across SDK upgrades.

What to do: Review generated devicetree access, device readiness, runtime PM, partition manager symbols, workqueue/thread/timer usage, and app framework event definitions.

NCS 2.6 crypto and TF-M API usage needs NCS 3.4 review

When it applies: Application source uses crypto, PSA, mbedTLS, TF-M, or security-adjacent serialization headers.

Why it matters: Security backend selection and TF-M integration can change dependencies, Kconfig, and runtime behavior across large NCS jumps.

What to do: Review crypto backend configuration, PSA initialization, TF-M calls, key storage, and secure/non-secure boundaries.

NCS 2.6 storage and flash API usage needs NCS 3.4 review

When it applies: Application source uses settings, NVS/ZMS, flash map, flash image, or filesystem APIs.

Why it matters: Storage behavior is tightly coupled to partition manager, MCUboot slots, settings placement, and filesystem dependencies.

What to do: Review persistent storage ownership, flash area IDs, image slots, settings handlers, and filesystem mount paths after partition migration.

First build-log migration error found

When it applies: Build log contains a first high-signal migration error.

Why it matters: Early Kconfig, devicetree, sysbuild, or partition failures often cause later cascading compiler and linker noise.

What to do: Fix this first error before treating later build-log lines as independent migration work.

VelocityCreate

Want us to handle the upgrade?

VelocityCreate can review your assessment, agree on the migration scope, and carry out the firmware changes and agreed verification. Discuss your deadline, hardware, and requirements with an embedded engineer.

Discuss my migrationBook a technical call

The initial discussion is free. Implementation is quoted separately.

Related upgrade paths

Generated from the rule catalog of Migratorisk 0.3.0. This is an automated summary of published SDK changes, not a review of your project, and it does not replace builds and device tests. How the scanner is validated.