Home › SDK migration

SDK upgrade guide

Zephyr 4.4 to Zephyr 4.5: what needs attention

Migratorisk's knowledge base lists 75 documented changes between Zephyr 4.4 and Zephyr 4.5. 72 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.

75documented changes
72rated will or likely to break
11review 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 zephyr-4.4.0 --to zephyr-4.5.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 · 52Hardware description · 12Application code · 11

What changes between Zephyr 4.4 and Zephyr 4.5

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

Devicetree compatibles espressif,esp32-mdio and 5 more were replaced

Hardware description · Zephyr 4.5.0 · Source

The compatibles espressif,esp32-mdio, infineon,xmc4xxx-mdio, nxp,enet-qos-mdio, nxp,s32-gmac-mdio, st,stm32-mdio and wch,mdio have been replaced by snps,dwmac-mdio. Covers 6 names.

Likely to break

Kconfig options CONFIG_SOC_DCDC_NRF52X and 4 more were removed

Build settings · Zephyr 4.5.0 · Source

The Nordic Kconfig options CONFIG_SOC_DCDC_NRF52X, CONFIG_SOC_DCDC_NRF52X_HV, CONFIG_SOC_DCDC_NRF53X_APP, CONFIG_SOC_DCDC_NRF53X_NET and CONFIG_SOC_DCDC_NRF53X_HV have been removed. Configure the regulators in devicetree instead: regulator-initial-mode = <NRF5X_REG_MODE_DCDC> on &reg1/&vregmain/ &vregradio, and status = "okay" on &reg0/&vregh. Covers 5 names.

Likely to break

Kconfig options CONFIG_DEBUG_COREDUMP and 3 more were replaced

Build settings · Zephyr 4.5.0 · Source

The hardening tool's data file scripts/kconfig/hardened.csv has been replaced by a YAML database: profiles in scripts/kconfig/hardening.yaml and per-subsystem hardening.yaml fragments next to the Kconfig files they relate to. Covers 4 names.

Likely to break

Kconfig options CONFIG_BT_RECV_CONTEXT and 2 more were removed

Build settings · Zephyr 4.5.0 · Source

The CONFIG_BT_RECV_CONTEXT Kconfig choice and its options CONFIG_BT_RECV_WORKQ_SYS and CONFIG_BT_RECV_WORKQ_BT have been removed. The host now unconditionally processes low-priority HCI packets on the dedicated Bluetooth RX workqueue (the previous CONFIG_BT_RECV_WORKQ_BT behavior). Applications that selected CONFIG_BT_RECV_WORKQ_SYS to save RAM (e.g. Covers 3 names.

Likely to break

Kconfig options CONFIG_STD_C11 and 2 more were removed

Build settings · Zephyr 4.5.0 · Source

Support for C standard versions older than C17 has been removed after having been deprecated. The Kconfig options CONFIG_STD_C11, CONFIG_STD_C99 and CONFIG_STD_C90 have been removed. Use C17 or higher when compiling Zephyr. Covers 3 names.

Likely to break

APIs BT_TBS_TECHNOLOGY_3G and 1 more were renamed

Application code · Zephyr 4.5.0 · Source

All BT_TBS_TECHNOLOGY_* values like BT_TBS_TECHNOLOGY_3G are renamed to BT_BEARER_TECH_* like BT_BEARER_TECH_3G. Applications can do search-and-replace from BT_TBS_TECHNOLOGY to BT_BEARER_TECH. Additionally the values are now defined in:zephyr_file:`include/zephyr/bluetooth/assigned_numbers.h` instead of:zephyr_file:`include/zephyr/bluetooth/audio/tbs.h`. Covers 2 names.

Likely to break

Devicetree compatibles intel-rvp,board-power and 1 more were renamed

Hardware description · Zephyr 4.5.0 · Source

The board power node compatible of the:zephyr:code-sample:`espi` sample has been renamed from intel-rvp,board-power to intel,rvp-board-power. Out-of-tree board overlays for this sample must use the new compatible. Covers 2 names.

Likely to break

Kconfig options CONFIG_BT_MESH_BLOB_IO_FLASH_WITH_ERASE and 1 more were removed

Build settings · Zephyr 4.5.0 · Source

The deprecated CONFIG_BT_MESH_BLOB_IO_FLASH_WITH_ERASE and CONFIG_BT_MESH_BLOB_IO_FLASH_WITHOUT_ERASE Kconfig options have been removed, with no replacement. They have been deprecated since Zephyr 4.3, where the BLOB IO Flash module started querying the erase capability at runtime, and have had no effect since. Covers 2 names.

Likely to break

Kconfig options CONFIG_LPC54XXX_SRAM2_CLOCK and 1 more were replaced

Build settings · Zephyr 4.5.0 · Source

On NXP LPC54xxx, CONFIG_LPC54XXX_SRAM2_CLOCK has been replaced by CONFIG_SOC_SERIES_LPC54XXX_SRAM_CLOCKS. The old name fitted while the LPC54114 was the only SoC in the series, where CMSIS SystemInit enables just SRAM2. On the LPC546xx it enables SRAM2 and SRAM3, so the option now covers more than the one bank it was named after. Both default to y. Covers 2 names.

Likely to break

Kconfig options CONFIG_SSE and 1 more were removed

Build settings · Zephyr 4.5.0 · Source

CONFIG_SSE and CONFIG_SSE_FP_MATH have been removed. Use CONFIG_X86_SSE and CONFIG_X86_SSE_FP_MATH instead. Covers 2 names.

Likely to break

Kconfig options CONFIG_ZTEST_SHUFFLE_SUITE_REPEAT_COUNT and 1 more were removed

Build settings · Zephyr 4.5.0 · Source

The CONFIG_ZTEST_SHUFFLE_SUITE_REPEAT_COUNT and CONFIG_ZTEST_SHUFFLE_TEST_REPEAT_COUNT Kconfig options, deprecated since Zephyr 4.0, have been removed. With CONFIG_ZTEST_SHUFFLE alone, suites and tests now run once per execution, in a shuffled order; to repeat them, enable CONFIG_ZTEST_REPEAT and set CONFIG_ZTEST_SUITE_REPEAT_COUNT and CONFIG_ZTEST_TEST_REPEAT_COUNT. Covers 2 names.

Likely to break

API GPDMA_SILABS_SIWX91X_DESCRIPTOR_COUNT was renamed

Application code · Zephyr 4.5.0 · Source

To align with the other drivers, GPDMA_SILABS_SIWX91X_DESCRIPTOR_COUNT has been renamed in DMA_SILABS_SIWX91X_GPDMA_DESCR_COUNT.

Likely to break

API HWSPINLOCK_CTX_INITIALIZER was removed

Application code · Zephyr 4.5.0 · Source

hw_spin_lock, hw_spin_trylock and hw_spin_unlock no longer take a hwspinlock_ctx_t * argument; the per-lock Zephyr spinlock now lives in the driver's config. struct hwspinlock_context, hwspinlock_ctx_t, the ctx member of hwspinlock_dt_spec and HWSPINLOCK_CTX_INITIALIZER have been removed. The hw_spin_lock_dt, hw_spin_trylock_dt and hw_spin_unlock_dt helpers are unchanged.

Likely to break

API NET_REQUEST_ETHERNET_SET_T1S_PARAM was removed

Application code · Zephyr 4.5.0 · Source

ETHERNET_CONFIG_TYPE_T1S_PARAM and the related NET_REQUEST_ETHERNET_SET_T1S_PARAM has been removed. phy_set_plca_cfg together with net_eth_get_phy should be used instead to set these parameters.

Likely to break

API SPI_SILABS_SIWX91X_GSPI_DMA_MAX_BLOCKS was replaced

Application code · Zephyr 4.5.0 · Source

SPI_SILABS_SIWX91X_GSPI_DMA and SPI_SILABS_SIWX91X_GSPI_DMA_MAX_BLOCKS have been removed. They are replaced by SPI_SILABS_SIWX91X_GSPI_DMA_DESCR_COUNT which allow to enable DMA and configure the descriptor count.

Likely to break

API _k_neg_eagain was renamed

Application code · Zephyr 4.5.0 · Source

_k_neg_eagain has been renamed to _errno_neg_egain as errno has been migrated out of kernel into lib/libc/common.

Likely to break

API net_eth_get_ptp_port was removed

Application code · Zephyr 4.5.0 · Source

Removed net_eth_get_ptp_port and net_eth_set_ptp_port. New gptp_get_port_number and gptp_set_port_number can be used instead.

Likely to break

API net_if_config_get was removed

Application code · Zephyr 4.5.0 · Source

net_if_config_get was removed as it was a duplicate of net_if_get_config.

Likely to break

API stream_flash_erase_page was removed

Application code · Zephyr 4.5.0 · Source

stream_flash_erase_page has been removed. Use flash_area_erase or flash_erase instead; there is no Stream Flash API equivalent.

Likely to break

API xtensa_soc_mpu_ranges_num was removed

Application code · Zephyr 4.5.0 · Source

xtensa_soc_mpu_ranges[] and xtensa_soc_mpu_ranges_num are removed. If SoC or board needs its own memory regions at boot, override xtensa_mpu_ranges instead.

Likely to break

Devicetree compatible bflb,bl70x-bt-hci was renamed

Hardware description · Zephyr 4.5.0 · Source

The devicetree compatible bflb,bl70x-bt-hci has been renamed to bflb,bt-hci, now that a single binding covers all Bouffalo Lab on-chip BLE controllers (BL60x/BL70x/BL70XL). Out-of-tree boards and shields must update their devicetree nodes accordingly.

Likely to break

Devicetree compatible cirrus,cs40l5x was replaced

Hardware description · Zephyr 4.5.0 · Source

The cirrus,cs40l5x compatible has been replaced by variant-specific compatibles cirrus,cs40l50, cirrus,cs40l51, cirrus,cs40l52, and cirrus,cs40l53. Applications using the old compatible must update their devicetree nodes accordingly.

Likely to break

Devicetree compatible espressif,esp-threadbr-header was removed

Hardware description · Zephyr 4.5.0 · Source

The esp_threadbr_ethernet shield has been removed. Existing users should build for esp_threadbr/esp32s3/procpu/ethernet instead of combining esp_threadbr/esp32s3/procpu with SHIELD=esp_threadbr_ethernet.

Likely to break

Devicetree compatible espressif,esp32-usb-otg was renamed

Hardware description · Zephyr 4.5.0 · Source

The Espressif USB-OTG full-speed controller compatible espressif,esp32-usb-otg has been renamed to espressif,esp32-usb-otg-fs. The internal PHY D+/D- pad numbers are now provided through the phy-dp-pin and phy-dm-pin properties. Out-of-tree devicetrees using the old compatible must update the node compatible and add the two pin properties.

Likely to break

Devicetree compatible microchip,dmec-ecia-girq was replaced

Hardware description · Zephyr 4.5.0 · Source

The girqs and pcrs properties (array type) of microchip,xec-tach have been replaced by pcr-scr (int type) to use encoded PCR register index and bit position macros. GIRQ configuration is now handled via the microchip,dmec-ecia-girq binding include.

Likely to break

Devicetree compatible nxp,enet-qos-mac was removed

Hardware description · Zephyr 4.5.0 · Source

The NXP ENET-QOS Ethernet controller (nxp,enet-qos) devicetree structure has been flattened to match other similar controllers. The clocks, interrupts, pinctrl-0, pinctrl-names, phy-handle and MAC address properties now live directly on the parent nxp,enet-qos node instead of a separate child MAC node. The nxp,enet-qos-mac compatible and its enet_mac node have been removed.

Likely to break

Devicetree compatible st,stm32-sdio was renamed

Hardware description · Zephyr 4.5.0 · Source

The devicetree compatible st,stm32-sdio was renamed. Use st,stm32-sdmmc instead. With this compatible, the legacy disk driver and the SDHC driver can target the same node. To migrate to the SDHC STM32 SDMMC driver, disable the legacy disk driver:. code-block:: kconfig CONFIG_SDMMC_STM32=n.

Likely to break

Devicetree compatible tdk,ntcg163jf103ft1 was renamed

Hardware description · Zephyr 4.5.0 · Source

The devicetree compatible tdk,ntcg163jf103ft1 has been renamed to tdk,ntcgxx3jx103x to reflect that the compensation values are identical for TDK NTCG thermistor parts with the same resistance (R25) and beta (B25/85) values, as indicated in the part naming scheme.

Likely to break

Devicetree compatible zephyr,deferred-start was removed

Hardware description · Zephyr 4.5.0 · Source

The CONFIG_SMP_BOOT_DELAY Kconfig option has been removed. Deferring the start of secondary CPUs to run time is now expressed per CPU in the devicetree: add the zephyr,deferred-start flag to the corresponding cpu node under /cpus (typically in a board overlay) and start the CPU later with k_smp_cpu_start or k_smp_cpu_resume, as before.

Likely to break

Kconfig option CONFIG_ASSERT_LEVEL was replaced

Build settings · Zephyr 4.5.0 · Source

CONFIG_ASSERT_LEVEL is replaced by the DEFAULT module level; a level of 0 maps to CONFIG_ASSERT_MODULE_DEFAULT_LEVEL_OFF.

Likely to break

Kconfig option CONFIG_BOARD_ENABLE_CPUNET was removed

Build settings · Zephyr 4.5.0 · Source

The Nordic nRF53 Kconfig option CONFIG_BOARD_ENABLE_CPUNET has been removed. Use CONFIG_SOC_NRF53_CPUNET_ENABLE instead.

Likely to break

Kconfig option CONFIG_BT_AUTO_PHY_UPDATE was removed

Build settings · Zephyr 4.5.0 · Source

CONFIG_BT_AUTO_PHY_UPDATE has been removed. Use the per-role BT_AUTO_PHY_CENTRAL and BT_AUTO_PHY_PERIPHERAL choices instead. =n does not translate to dropping the option: the central choice defaults to CONFIG_BT_AUTO_PHY_CENTRAL_2M, so both roles must be set to _NONE explicitly.

Likely to break

Kconfig option CONFIG_BT_CONN_TX_MAX was removed

Build settings · Zephyr 4.5.0 · Source

The deprecated CONFIG_BT_CONN_TX_MAX Kconfig option has been removed. It has been deprecated since Zephyr 4.2, and the number of pending TX buffers with a callback always follows CONFIG_BT_BUF_ACL_TX_COUNT.

Likely to break

Kconfig option CONFIG_BT_DEVICE_VEDNOR_ID was renamed

Build settings · Zephyr 4.5.0 · Source

Renamed CONFIG_BT_DEVICE_VEDNOR_ID to CONFIG_BT_DEVICE_VENDOR_ID to fix a typo.

Likely to break

Kconfig option CONFIG_BUILD_NO_GAP_FILL was removed

Build settings · Zephyr 4.5.0 · Source

CONFIG_BUILD_NO_GAP_FILL has been removed. Gap filling is opt-in through CONFIG_BUILD_OUTPUT_HEX_GAP_FILL and CONFIG_BUILD_OUTPUT_S19_GAP_FILL, so simply drop the option.

Likely to break

Kconfig option CONFIG_COUNTER_MAXIM_DS3231 was removed

Build settings · Zephyr 4.5.0 · Source

The legacy counter-based DS3231 driver has been removed, completing the deprecation introduced in. Applications using maxim,ds3231, CONFIG_COUNTER_MAXIM_DS3231, or <zephyr/drivers/rtc/maxim_ds3231.h> must migrate to the RTC subsystem driver. Replace the single legacy I2C node with a maxim,ds3231-mfd parent and a maxim,ds3231-rtc child.

Likely to break

Kconfig option CONFIG_CS_CTR_DRBG_PERSONALIZATION was removed

Build settings · Zephyr 4.5.0 · Source

CONFIG_CS_CTR_DRBG_PERSONALIZATION has been removed. It did not have any effect.

Likely to break

Kconfig option CONFIG_CTR_DRBG_CSPRNG_GENERATOR was removed

Build settings · Zephyr 4.5.0 · Source

CONFIG_CTR_DRBG_CSPRNG_GENERATOR has been removed. Use CONFIG_PSA_CSPRNG_GENERATOR instead.

Likely to break

Kconfig option CONFIG_ESP32_WIFI_STA_AUTO_DHCPV4 was removed

Build settings · Zephyr 4.5.0 · Source

The Espressif Wi-Fi driver Kconfig option CONFIG_ESP32_WIFI_STA_AUTO_DHCPV4 has been removed in favor of the generic CONFIG_WIFI_STA_AUTO_DHCPV4. Applications that previously disabled the Espressif-specific option must now disable the generic option to retain manual DHCPv4 or static IP behavior after STA connection.

Likely to break

Kconfig option CONFIG_ETH_NATIVE_TAP_INTERFACE_COUNT was replaced

Build settings · Zephyr 4.5.0 · Source

The native_sim TAP ethernet driver is now instantiated from devicetree using the zephyr,native-tap compatible. Each interface is defined by a devicetree node instead of the CONFIG_ETH_NATIVE_TAP_INTERFACE_COUNT Kconfig option, which has been removed. Multiple interfaces are created by adding multiple nodes. The following Kconfig options have been removed and replaced by devicetree properties:.

Likely to break

Kconfig option CONFIG_ETH_NATIVE_TAP_PTP_CLOCK was replaced

Build settings · Zephyr 4.5.0 · Source

The Kconfig option CONFIG_ETH_NATIVE_TAP_PTP_CLOCK has been replaced by CONFIG_PTP_CLOCK_NATIVE. A new compatible zephyr,native-ptp-clock has been added for the native_sim PTP clock driver. CONFIG_PTP_CLOCK_NATIVE is enabled by default when the zephyr,native-ptp-clock compatible is present.

Likely to break

Kconfig option CONFIG_ETH_NUMAKER was removed

Build settings · Zephyr 4.5.0 · Source

The NuMaker Ethernet driver has been removed together with CONFIG_ETH_NUMAKER. The NuMaker EMAC is now driven by CONFIG_ETH_NUMAKER_DWC_ETHER_1000, the generic Synopsys DesignWare MAC driver, which needs the MDIO controller and the PHY in devicetree. Out-of-tree boards have to enable the mdio node with the MDC and MDIO pins in its pinctrl state, add their PHY to it and point the emac node at it with phy-handle.

Likely to break

Kconfig option CONFIG_ETH_NXP_ENET_QOS_MAC_UNIQUE_MAC_ADDRESS was renamed

Build settings · Zephyr 4.5.0 · Source

The Kconfig option CONFIG_ETH_NXP_ENET_QOS_MAC_UNIQUE_MAC_ADDRESS has been renamed to CONFIG_ETH_NXP_ENET_QOS_UNIQUE_MAC_ADDRESS. Configurations setting the old name must be updated to use the new one.

Likely to break

Kconfig option CONFIG_EXTRA_EXCEPTION_INFO was removed

Build settings · Zephyr 4.5.0 · Source

The RISC-V specific CONFIG_EXTRA_EXCEPTION_INFO has been removed. Use CONFIG_EXCEPTION_DEBUG instead. The option is unchanged on Arm and SPARC.

Likely to break

Kconfig option CONFIG_FORCE_NO_ASSERT was replaced

Build settings · Zephyr 4.5.0 · Source

CONFIG_FORCE_NO_ASSERT is replaced by setting CONFIG_ASSERT to n.

Likely to break

Kconfig option CONFIG_GPIO_AS_PINRESET was removed

Build settings · Zephyr 4.5.0 · Source

The Nordic nRF52 Kconfig option CONFIG_GPIO_AS_PINRESET has been removed. Set the gpio-as-nreset property on the &uicr devicetree node instead.

Likely to break

Kconfig option CONFIG_I2C_DW_RW_TIMEOUT_MS was replaced

Build settings · Zephyr 4.5.0 · Source

On controller based on CONFIG_I2C_DW the CONFIG_I2C_DW_RW_TIMEOUT_MS option has been replaced with CONFIG_I2C_TRANSFER_TIMEOUT_MS, with a default of 500ms.

Likely to break

Kconfig option CONFIG_LPADC_CHANNEL_COUNT was removed

Build settings · Zephyr 4.5.0 · Source

The CONFIG_LPADC_CHANNEL_COUNT Kconfig option has been removed. The NXP LPADC driver now treats hardware command slots as logical ADC channels and derives the number of logical channels per instance from the channel child nodes declared for that instance in devicetree, so unused command slots no longer consume RAM. Applications that lowered the Kconfig option to save RAM should simply drop it.

Likely to break

Kconfig option CONFIG_LV_ATTRIBUTE_MEM_ALIGN_SIZE was replaced

Build settings · Zephyr 4.5.0 · Source

CONFIG_LV_ATTRIBUTE_MEM_ALIGN_SIZE was replaced by CONFIG_LV_Z_ATTRIBUTE_MEM_ALIGN_SIZE.

Likely to break

Kconfig option CONFIG_LV_USE_GPU_NXP_PXP was removed

Build settings · Zephyr 4.5.0 · Source

The CONFIG_LV_USE_GPU_NXP_PXP Kconfig option has been removed. It only enabled the NXP PXP HAL driver component, which is already enabled by CONFIG_MCUX_PXP, defaulting to y when the nxp,pxp devicetree node is enabled and CONFIG_DISPLAY is set. Applications that use the PXP driver component without the display subsystem must enable CONFIG_MCUX_PXP explicitly.

Likely to break

Kconfig option CONFIG_LV_Z_COLOR_24_BGR_TO_RGB was removed

Build settings · Zephyr 4.5.0 · Source

The LVGL CONFIG_LV_Z_COLOR_24_BGR_TO_RGB Kconfig option has been removed. LVGL's RGB888 color format stores bytes in memory as blue, green, red, which matches the in-memory layout of PIXEL_FORMAT_RGB_888, so no channel swap is performed for displays reporting that format.

Likely to break

Kconfig option CONFIG_MCUBOOT_BOOTLOADER_MODE_SWAP_WITHOUT_SCRATCH was removed

Build settings · Zephyr 4.5.0 · Source

CONFIG_MCUBOOT_BOOTLOADER_MODE_SWAP_WITHOUT_SCRATCH has been removed. Use CONFIG_MCUBOOT_BOOTLOADER_MODE_SWAP_USING_MOVE instead.

Likely to break

Kconfig option CONFIG_MCUMGR_GRP_OS_INFO_HARDWARE_INFO_SHORT_HARDWARE_PLATFORM was removed

Build settings · Zephyr 4.5.0 · Source

CONFIG_MCUMGR_GRP_OS_INFO_HARDWARE_INFO_SHORT_HARDWARE_PLATFORM has been removed. The mcumgr_os_application_info command now always reports the board target as hardware platform; the pre-4.3 board and board revision output is no longer available.

Likely to break

Kconfig option CONFIG_NET_TEST_PROTOCOL was removed

Build settings · Zephyr 4.5.0 · Source

CONFIG_NET_TEST_PROTOCOL, a JSON control channel that let an out of tree TTCN-3 suite drive the TCP stack and read its internal state, has been removed, along with the samples/net/sockets/tcp sample that was its only system under test. Nothing in the tree enabled the option, and the code behind it had not compiled for several years. The suites that used it were archived by their author.

Likely to break

Kconfig option CONFIG_NRFS_LOCAL_DOMAIN_DVFS_SCALE_DOWN_AFTER_INIT was removed

Build settings · Zephyr 4.5.0 · Source

The Nordic Kconfig option CONFIG_NRFS_LOCAL_DOMAIN_DVFS_SCALE_DOWN_AFTER_INIT has been removed. Use CONFIG_CLOCK_CONTROL_NRF_HSFLL_LOCAL_REQ_LOW_FREQ instead.

Likely to break

Kconfig option CONFIG_NXP_BOARD_SPECIFIC_MPU_SETTINGS was renamed

Build settings · Zephyr 4.5.0 · Source

The mimxrt1180_evk Kconfig option NXP_BOARD_SPECIFIC_MPU_SETTINGS has been renamed to CONFIG_BOARD_NXP_SPECIFIC_MPU_SETTINGS, matching the BOARD_NXP_* naming used by the other NXP board options and by frdm_imxrt1186. Configurations setting CONFIG_NXP_BOARD_SPECIFIC_MPU_SETTINGS must be updated to the new name.

Likely to break

Kconfig option CONFIG_PLATFORM_SPECIFIC_INIT was removed

Build settings · Zephyr 4.5.0 · Source

CONFIG_PLATFORM_SPECIFIC_INIT and its z_arm_platform_init hook have been removed. Enable CONFIG_SOC_RESET_HOOK and rename the hook to soc_reset_hook. The new hook runs later in the reset path, after the stack pointers have been set up, and is skipped on resume from suspend-to-RAM.

Likely to break

Kconfig option CONFIG_POSIX_READER_WRITER_LOCKS was removed

Build settings · Zephyr 4.5.0 · Source

CONFIG_POSIX_READER_WRITER_LOCKS has been removed. Use CONFIG_POSIX_RW_LOCKS instead.

Likely to break

Kconfig option CONFIG_PSA_CRYPTO_CLIENT was removed

Build settings · Zephyr 4.5.0 · Source

CONFIG_PSA_CRYPTO_CLIENT has been removed as it was a duplicate of CONFIG_PSA_CRYPTO. If you were using it, use CONFIG_PSA_CRYPTO instead.

Likely to break

Kconfig option CONFIG_SDHC_STM32_POLLING_SUPPORT was renamed

Build settings · Zephyr 4.5.0 · Source

Renamed the Kconfig option CONFIG_SDHC_STM32_POLLING_SUPPORT to CONFIG_SDHC_STM32_DMA_MODE. The new symbol enables DMA (default y); set it to n to use polling mode.

And 15 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 Zephyr projects on this path. Each one is reported only when the project shows the trigger.

Zephyr build logs need first-error triage after version changes

When it applies: Build logs often contain the highest-confidence migration breakage evidence.

Why it matters: First errors identify missing headers, renamed APIs, devicetree binding errors, and Kconfig failures.

What to do: Fix the first build error before chasing downstream compile or linker failures.

Zephyr devicetree and board files need target-version review

When it applies: Custom board and overlay files may depend on bindings or hardware model conventions from the source release.

Why it matters: Devicetree binding and board model changes commonly block Zephyr upgrades.

What to do: Validate custom board files, overlays, chosen nodes, and bindings against the target Zephyr release.

Zephyr Kconfig symbols need target-version review

When it applies: Project Kconfig files may contain symbols renamed, removed, or moved across Zephyr releases.

Why it matters: Zephyr version jumps often expose configuration drift before source changes compile.

What to do: Compare project Kconfig symbols against the target Zephyr release notes and build output.

Devicetree binding error in build log

When it applies: The build log reports a devicetree binding error.

Why it matters: Compatibles and bindings are renamed or split between releases; overlay and board errors must be fixed before source errors are meaningful.

What to do: Update overlays and board files to the target release bindings before addressing source errors.

Undefined Kconfig symbol in build log

When it applies: The build log reports an assignment to an undefined Kconfig symbol.

Why it matters: Zephyr renames and removes Kconfig options between releases, and Kconfig warnings abort the build before later errors appear.

What to do: Look up each undefined symbol in the migration guide of every release on the path and replace or remove it.

Zephyr source APIs need migration review

When it applies: Application source may use APIs whose signatures or headers changed between Zephyr releases.

Why it matters: Source API drift is common across major and multi-minor jumps.

What to do: Review source includes, driver APIs, Bluetooth APIs, kernel APIs, and subsystem-specific migration notes.

Zephyr west manifest revisions need target-version review

When it applies: Project manifests may pin modules that are incompatible with the target Zephyr release.

Why it matters: Module revisions, imports, and remotes can silently keep old APIs in the workspace.

What to do: Align manifest remotes, imports, and module revisions to the target Zephyr baseline.

Custom board needs the target Zephyr release devicetree and Kconfig review

When it applies: The project contains a custom board definition.

Why it matters: Board files track SoC devicetree, pinctrl, Kconfig and hardware model changes between releases.

What to do: Compare the custom board with a similar in-tree board in the target release (board.yml, chosen nodes, pinctrl, partitions, SoC Kconfig).

Verify OTA from the current field firmware

When it applies: The project uses MCUboot, so devices in the field keep their current bootloader after the upgrade.

Why it matters: The upgraded image must still be accepted by the existing bootloader (signature type, key, slot layout and image header).

What to do: Keep the signing key, signature type and slot layout unchanged, and test an OTA update from the current production image on hardware.

West manifest pins an older Zephyr revision

When it applies: west.yml pins a Zephyr or module revision.

Why it matters: The manifest must point at the target release, and pinned modules (HALs, MCUboot, Mbed TLS) must match it.

What to do: Update the zephyr revision in west.yml to the target tag, re-check pinned modules, then run west update.

Fix the first build error first

When it applies: The build log contains errors.

Why it matters: Later errors in an SDK upgrade are often caused by the first configuration or devicetree failure.

What to do: Resolve the first reported error, rebuild, and re-run the scan with the new build log.

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.