SDK upgrade guide
Zephyr 4.2 to Zephyr 4.4: what needs attention
Migratorisk's knowledge base lists 42 documented changes between Zephyr 4.2 and Zephyr 4.4 across 2 releases. 41 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.
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.2.0 --to zephyr-4.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 insteadWhere the changes are
What changes between Zephyr 4.2 and Zephyr 4.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.
TinyCrypt library removed
Zephyr 4.3 removes the TinyCrypt library; every CONFIG_TINYCRYPT* option becomes undefined. PSA Crypto API is the replacement. Covers 12 names.
Devicetree compatibles microchip,ksz8463 and 2 more were removed
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.
Devicetree compatibles solomon,ssd1327fb and 2 more were renamed
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.
Kconfig options CONFIG_CAN_MAX_FILTER and 2 more were replaced
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.
Kconfig options CONFIG_BT_MESH_USES_MBEDTLS_PSA and 1 more were removed
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.
Kconfig options CONFIG_LINKER_USE_PINNED_SECTION and 1 more were removed
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.
Kconfig options CONFIG_SDL_DISPLAY_DEFAULT_PIXEL_FORMAT_BGR_565 and 1 more were renamed
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.
API MFD_AXP192_AXP2101 was removed
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.
API NRF_ETR was renamed
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.
API http_data_status was renamed
The enum for HTTP server transaction status has been renamed from http_data_status to http_transaction_status to better reflect its purpose.
API uvc_add_format was renamed
uvc_add_format has been renamed to uvc_device_add_format.
API uvc_set_video_dev was renamed
uvc_set_video_dev has been renamed to uvc_device_init.
Devicetree compatible ilitek,ili9806e-dsi was renamed
The devicetree compatible ilitek,ili9806e-dsi was renamed. Use ilitek,ili9806e instead.
Devicetree compatible st,refresh was removed
st,stm32-xspi-psram and st,stm32-ospi-psram compatible nodes now need to include the st,refresh property to specify the PSRAM refresh rate in number of memory clock cycles. Hard-coded default values in drivers, of 320 (st,stm32-xspi-psram) and 129 (st,stm32-ospi-psram), have been removed.
Devicetree compatible waveshare,7inch-dsi-lcd-c was replaced
waveshare,7inch-dsi-lcd-c devicetree compatible has been replaced by waveshare,dsi2dpi, and CONFIG_WAVESHARE_7INCH_DSI_LCD_C option has been replaced by CONFIG_WAVESHARE_DSI2DPI.
Kconfig option CONFIG_ARCH_HAS_COHERENCE was renamed
Renamed CONFIG_ARCH_HAS_COHERENCE to CONFIG_CACHE_CAN_SAY_MEM_COHERENCE as the feature is cache related so move it under cache.
Kconfig option CONFIG_BT_TBS_SUPPORTED_FEATURES was removed
CONFIG_BT_TBS_SUPPORTED_FEATURES has been removed. Applications should use the defined macros BT_TBS_FEATURE_HOLD and BT_TBS_FEATURE_JOIN to set their supported features.
Kconfig option CONFIG_CAN_MAX_MB was replaced
Replaced Kconfig option CONFIG_CAN_MAX_MB for nxp,flexcan and nxp,flexcan-fd with per-instance a number-of-mb devicetree property.
Kconfig option CONFIG_CAN_MCUX_MCAN was renamed
Renamed the NXP LPC family MCAN driver Kconfig option CONFIG_CAN_MCUX_MCAN to CONFIG_CAN_NXP_LPC_MCAN as this driver is not based on the NXP MCUXpresso HAL.
Kconfig option CONFIG_CSPRNG_AVAILABLE was renamed
CONFIG_CSPRNG_AVAILABLE has been renamed to CONFIG_ENTROPY_NODE_ENABLED.
Kconfig option CONFIG_ETH_SAM_GMAC_MAC_I2C_EEPROM was removed
Removed CONFIG_ETH_SAM_GMAC_MAC_I2C_EEPROM.
Kconfig option CONFIG_ETH_SAM_GMAC_MAC_I2C_INT_ADDRESS was removed
Removed CONFIG_ETH_SAM_GMAC_MAC_I2C_INT_ADDRESS.
Kconfig option CONFIG_ETH_SAM_GMAC_MAC_I2C_INT_ADDRESS_SIZE was removed
Removed CONFIG_ETH_SAM_GMAC_MAC_I2C_INT_ADDRESS_SIZE.
Kconfig option CONFIG_FLASH_AREA_CHECK_INTEGRITY_MBEDTLS was removed
Previously deprecated CONFIG_FLASH_AREA_CHECK_INTEGRITY_MBEDTLS is now removed.
Kconfig option CONFIG_FLASH_AREA_CHECK_INTEGRITY_PSA was removed
CONFIG_FLASH_AREA_CHECK_INTEGRITY_PSA is also removed since there is now no alternative for the crypto library backend.
Kconfig option CONFIG_HAWKBIT_DDI_NO_SECURITY was removed
The deprecated Kconfig option CONFIG_HAWKBIT_DDI_NO_SECURITY has been removed.
Kconfig option CONFIG_JWT_SIGN_RSA_LEGACY was removed
Previously deprecated CONFIG_JWT_SIGN_RSA_LEGACY is removed. This removal occurred before the usual deprecation period of 2 releases because it has been agreed that Mbed TLS is an external module, so normal deprecation rules do not apply in this case.
Kconfig option CONFIG_MBEDTLS_ENTROPY_POLL_ZEPHYR was renamed
CONFIG_MBEDTLS_ENTROPY_POLL_ZEPHYR has been renamed to CONFIG_MBEDTLS_PSA_DRIVER_GET_ENTROPY.
Kconfig option CONFIG_MBEDTLS_PEM_CERTIFICATE_FORMAT was replaced
CONFIG_MBEDTLS_PEM_CERTIFICATE_FORMAT has been replaced by the underlying options it used to enable: CONFIG_MBEDTLS_PEM_PARSE_C, CONFIG_MBEDTLS_PEM_WRITE_C and CONFIG_MBEDTLS_BASE64_C.
Kconfig option CONFIG_MBEDTLS_SERVER_NAME_INDICATION was renamed
CONFIG_MBEDTLS_SERVER_NAME_INDICATION has been renamed to CONFIG_MBEDTLS_SSL_SERVER_NAME_INDICATION.
Kconfig option CONFIG_MBEDTLS_TEST was renamed
CONFIG_MBEDTLS_TEST has been renamed to CONFIG_MBEDTLS_DEBUG_C.
Kconfig option CONFIG_MODEM_AT_SHELL_USER_PIPE was renamed
CONFIG_MODEM_AT_SHELL_USER_PIPE has been renamed to CONFIG_MODEM_AT_USER_PIPE.
Kconfig option CONFIG_NET_DSA_DEPRECATED was removed
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.
Kconfig option CONFIG_OPENTHREAD_CRYPTO_LEGACY_MBEDTLS_CONFIG was removed
Following Mbed TLS bump to version 4.1.0, legacy crypto support is no longer available in Zephyr. Therefore CONFIG_OPENTHREAD_CRYPTO_LEGACY_MBEDTLS_CONFIG has been removed. CONFIG_OPENTHREAD_CRYPTO_PSA_CONFIG was already the default choice for crypto support and it is now the only supported crypto option.
Kconfig option CONFIG_SETTINGS_TFM_ITS was renamed
CONFIG_SETTINGS_TFM_ITS has been renamed to CONFIG_SETTINGS_TFM_PSA.
Kconfig option CONFIG_SPI_STM32_USE_HW_SS was removed
The Kconfig option CONFIG_SPI_STM32_USE_HW_SS has been removed. SPI operation mode is now selected automatically based on devicetree configuration: instances with either of the cs-gpios or new st,soft-nss property operate in "Soft NSS" mode, while all other instances operate in "Hard NSS" mode.
Kconfig option CONFIG_SSD1327 was renamed
CONFIG_SSD1327 symbol has been renamed to CONFIG_SSD1327_5 to include SSD1325 as well.
Kconfig option CONFIG_VIDEO_HIMAX_HM01B0 was renamed
CONFIG_VIDEO_HIMAX_HM01B0 has been renamed to CONFIG_VIDEO_HM01B0.
Kconfig option CONFIG_VIDEO_OV7670 was replaced
CONFIG_VIDEO_OV7670 is now gone and replaced by CONFIG_VIDEO_OV767X. This allows supporting both the OV7670 and 0V7675.
Kconfig option CONFIG_WAVESHARE_7INCH_DSI_LCD_C was replaced
waveshare,7inch-dsi-lcd-c devicetree compatible has been replaced by waveshare,dsi2dpi, and CONFIG_WAVESHARE_7INCH_DSI_LCD_C option has been replaced by CONFIG_WAVESHARE_DSI2DPI.
board.yml entries must declare full_name
Zephyr 4.4 makes the full_name property of board entries in board.yml required; board lookup fails with 'Malformed board YAML file' otherwise.
Devicetree compatible zephyr,code-partition is deprecated
Boards that use CONFIG_USE_DT_CODE_PARTITION or have a zephyr,code-partition chosen node set should now use the new zephyr,mapped-partition compatible.
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 callThe 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.