Home › SDK migration

SDK upgrade guide

Simplicity SDK 2024.6 to Simplicity SDK 2024.12: what needs attention

Migratorisk's knowledge base lists 95 documented changes between Simplicity SDK 2024.6 and Simplicity SDK 2024.12. 32 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.

95documented changes
32rated will or likely to break
411SDK names, settings and components covered
8review 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 simplicity-sdk-2024.6.0 --to simplicity-sdk-2024.12.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

SDK components · 53Component settings · 22Zigbee stack · 5Bluetooth · 4System services · 3Bluetooth Mesh · 3Application helpers · 2Peripheral drivers · 1Radio and RF · 1Security and keys · 1

What changes between Simplicity SDK 2024.6 and Simplicity SDK 2024.12

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

Bluetooth LE: functions removed in Simplicity SDK 2024.12.0

Bluetooth · Simplicity SDK 2024.12.0 · Source

Simplicity SDK 2024.12.0 no longer declares these functions from Simplicity SDK 2024.6.0: ble_peer_manager_peripheral_set_advertiser, cs_initiator_display_print_value, cs_initiator_get_procedure, cs_initiator_identify, cs_initiator_set_default_config, cs_initiator_step… Code using them fails to compile or link. Covers 57 names.

Likely to break

Zigbee (EmberZNet): functions removed in Simplicity SDK 2024.12.0

Zigbee stack · Simplicity SDK 2024.12.0 · Source

Simplicity SDK 2024.12.0 no longer declares these functions from Simplicity SDK 2024.6.0: append_sl_zigbee_multiprotocol_priorities_t, fetch_sl_zigbee_multiprotocol_priorities_t, keyword_detected, keyword_detection_init, keyword_detection_process_action, sl_mac_find_child_short_id… Code using them fails to compile or link. Covers 55 names.

Likely to break

Bluetooth LE: constants removed in Simplicity SDK 2024.12.0

Bluetooth · Simplicity SDK 2024.12.0 · Source

Simplicity SDK 2024.12.0 no longer declares these constants from Simplicity SDK 2024.6.0: BLE_PEER_MANAGER_ON_BOOT, CS_DISCOVERY_STATE_CONN, CS_DISCOVERY_STATE_FINISHED, CS_DISCOVERY_STATE_IDLE, CS_DISCOVERY_STATE_SCAN, CS_ERROR_EVENT_CS_PROCEDURE_RESTART_FAILED… Code using them fails to compile or link. Covers 54 names.

Likely to break

Platform services: constants removed in Simplicity SDK 2024.12.0

System services · Simplicity SDK 2024.12.0 · Source

Simplicity SDK 2024.12.0 no longer declares these constants from Simplicity SDK 2024.6.0: GPIO_PORT_A_PIN_COUNT, GPIO_PORT_A_PIN_MASK, GPIO_PORT_B_PIN_COUNT, GPIO_PORT_B_PIN_MASK, GPIO_PORT_C_PIN_COUNT, GPIO_PORT_C_PIN_MASK… Code using them fails to compile or link. Covers 22 names.

Likely to break

Zigbee (EmberZNet): constants removed in Simplicity SDK 2024.12.0

Zigbee stack · Simplicity SDK 2024.12.0 · Source

Simplicity SDK 2024.12.0 no longer declares these constants from Simplicity SDK 2024.6.0: SL_ZIGBEE_AF_PLUGIN_DMP_TUNING_BLE_ADVERTISEMENT_PRIORITY_MAX, SL_ZIGBEE_AF_PLUGIN_DMP_TUNING_BLE_ADVERTISEMENT_PRIORITY_MIN, SL_ZIGBEE_AF_PLUGIN_DMP_TUNING_BLE_CONNECTION_INIT_PRIORITY_MAX, SL_ZIGBEE_AF_PLUGIN_DMP_TUNING_BLE_CONNECTION_INIT_PRIORITY_MIN, SL_ZIGBEE_AF_PLUGIN_DMP_TUNING_BLE_CONNECTION_PRIORITY_MAX, SL_ZIGBEE_AF_PLUGIN_DMP_TUNING_BLE_CONNECTION_PRIORITY_MIN… Code using them fails to compile or link. Covers 15 names.

Likely to break

SDK: components removed from Simplicity SDK 2024.12.0

SDK components · Simplicity SDK 2024.12.0 · Source

These SLC components are removed from Simplicity SDK 2024.12.0: ot_rtos_wrapers_stub, ot_rtos_wrappers_real, sl_flex_assert, sl_wisun_ns_list, wisun_test_certificates, zw_appshw_doorlockkeypad… A project that lists them no longer generates. Covers 13 names.

Likely to break

Bluetooth LE: types removed in Simplicity SDK 2024.12.0

Bluetooth · Simplicity SDK 2024.12.0 · Source

Simplicity SDK 2024.12.0 no longer declares these types from Simplicity SDK 2024.6.0: cs_discovery_state_t, cs_initiator_mode_t, cs_phy_t, sl_bt_cbap_central_state_t, sl_bt_cbap_peripheral_state_t, sl_bt_cbap_role_t… Code using them fails to compile or link. Covers 10 names.

Likely to break

Application utilities: headers removed in Simplicity SDK 2024.12.0

Application helpers · Simplicity SDK 2024.12.0 · Source

These headers exist in Simplicity SDK 2024.6.0 and are gone in Simplicity SDK 2024.12.0: accelerometer.h, audio_classifier.h, constants.h, magic_wand.h, model_profiler.h, predictor.h, recognize_commands.h, timestamp.h… Code that includes them stops compiling. Covers 9 names.

Likely to break

Bluetooth LE: headers removed in Simplicity SDK 2024.12.0

Bluetooth · Simplicity SDK 2024.12.0 · Source

These headers exist in Simplicity SDK 2024.6.0 and are gone in Simplicity SDK 2024.12.0: cs_initiator_configurator.h, hci_reset.h, sl_bt_cbap_lib.h, sl_sensor_hall.h, sl_sensor_imu.h, sl_sensor_pressure.h, sl_sensor_sound.h, sl_simple_com.h… Code that includes them stops compiling. Covers 9 names.

Likely to break

Platform services: functions removed in Simplicity SDK 2024.12.0

System services · Simplicity SDK 2024.12.0 · Source

Simplicity SDK 2024.12.0 no longer declares these functions from Simplicity SDK 2024.6.0: SL_GPIO_PORT_IS_VALID, SL_GPIO_PORT_PIN_IS_VALID, halButtonPinState, halClearLed, halSetLed, halStackRadioPowerDownBoard… Code using them fails to compile or link. Covers 9 names.

Likely to break

Bluetooth LE: components removed from Simplicity SDK 2024.12.0

SDK components · Simplicity SDK 2024.12.0 · Source

These SLC components are removed from Simplicity SDK 2024.12.0: bluetooth_host_adaptation_libraries_release, bt_rail_compatibility_fix, cbap_lib, sensor_hall, sensor_imu, sensor_pressure… A project that lists them no longer generates. Covers 8 names.

Likely to break

Bluetooth Mesh: functions removed in Simplicity SDK 2024.12.0

Bluetooth Mesh · Simplicity SDK 2024.12.0 · Source

Simplicity SDK 2024.12.0 no longer declares these functions from Simplicity SDK 2024.6.0: sl_btmesh_sensor_people_count_get_cadence, sl_btmesh_sensor_people_count_handle_cadence, sl_btmesh_sensor_people_count_set_cadence, sl_btmesh_sensor_thermometer_cadence_init, sl_btmesh_sensor_thermometer_get_cadence, sl_btmesh_sensor_thermometer_handle_cadence… Code using them fails to compile or link. Covers 7 names.

Likely to break

Zigbee (EmberZNet): headers removed in Simplicity SDK 2024.12.0

Zigbee stack · Simplicity SDK 2024.12.0 · Source

These headers exist in Simplicity SDK 2024.6.0 and are gone in Simplicity SDK 2024.12.0: dmp-tuning-profiles.h, dmp-tuning.h, keyword_detection.h, pro_compliance_stack_interface.h. Code that includes them stops compiling. Covers 4 names.

Likely to break

RAIL radio: components removed from Simplicity SDK 2024.12.0

SDK components · Simplicity SDK 2024.12.0 · Source

These SLC components are removed from Simplicity SDK 2024.12.0: rail_util_cs_antenna_offset, rail_util_cs_antenna_offset_wired, rail_util_cs_antenna_offset_wireless. A project that lists them no longer generates. Covers 3 names.

Likely to break

Security: components removed from Simplicity SDK 2024.12.0

SDK components · Simplicity SDK 2024.12.0 · Source

These SLC components are removed from Simplicity SDK 2024.12.0: platform_security_dummy_provides, psa_driver_source, se_manager_osal. A project that lists them no longer generates. Covers 3 names.

Likely to break

Peripheral drivers: functions removed in Simplicity SDK 2024.12.0

Peripheral drivers · Simplicity SDK 2024.12.0 · Source

Simplicity SDK 2024.12.0 no longer declares these functions from Simplicity SDK 2024.6.0: DBG_DisableDebugAccess, SL_HAL_GPIO_MODE_VALID. Code using them fails to compile or link. Covers 2 names.

Likely to break

Platform services: components removed from Simplicity SDK 2024.12.0

SDK components · Simplicity SDK 2024.12.0 · Source

These SLC components are removed from Simplicity SDK 2024.12.0: icache_disable, legacy_printf. A project that lists them no longer generates. Covers 2 names.

Likely to break

Platform services: headers removed in Simplicity SDK 2024.12.0

System services · Simplicity SDK 2024.12.0 · Source

These headers exist in Simplicity SDK 2024.6.0 and are gone in Simplicity SDK 2024.12.0: ember-printf-convert.h, sl_legacy_printf.h. Code that includes them stops compiling. Covers 2 names.

Likely to break

RAIL radio: functions removed in Simplicity SDK 2024.12.0

Radio and RF · Simplicity SDK 2024.12.0 · Source

Simplicity SDK 2024.12.0 no longer declares these functions from Simplicity SDK 2024.6.0: RAIL_LoadSfmSunFskOfdmOqpsk, sli_mac_sync_rx_timestamp. Code using them fails to compile or link. Covers 2 names.

Likely to break

Security: constants removed in Simplicity SDK 2024.12.0

Security and keys · Simplicity SDK 2024.12.0 · Source

Simplicity SDK 2024.12.0 no longer declares these constants from Simplicity SDK 2024.6.0: SL_SE_CODE_REGION_SECURITY_LEVEL_ENCRYPTED_AUTHENTICATED, SL_SE_CODE_REGION_SECURITY_LEVEL_ENCRYPTED_ONLY. Code using them fails to compile or link. Covers 2 names.

Likely to break

Zigbee (EmberZNet): types removed in Simplicity SDK 2024.12.0

Zigbee stack · Simplicity SDK 2024.12.0 · Source

Simplicity SDK 2024.12.0 no longer declares these types from Simplicity SDK 2024.6.0: sl_zigbee_ezsp_source_route_overhead_information_t, sl_zigbee_multiprotocol_priorities_t. Code using them fails to compile or link. Covers 2 names.

Likely to break

Application utilities: constants removed in Simplicity SDK 2024.12.0

Application helpers · Simplicity SDK 2024.12.0 · Source

Simplicity SDK 2024.12.0 no longer declares these constants from Simplicity SDK 2024.6.0: STATIC_ALLOCATION. Code using them fails to compile or link.

Likely to break

Bluetooth Mesh: constants removed in Simplicity SDK 2024.12.0

Bluetooth Mesh · Simplicity SDK 2024.12.0 · Source

Simplicity SDK 2024.12.0 no longer declares these constants from Simplicity SDK 2024.6.0: MESH_PLATFORM_MEMPOOL_ID_FOUNDATION. Code using them fails to compile or link.

Likely to break

Bluetooth Mesh: headers removed in Simplicity SDK 2024.12.0

Bluetooth Mesh · Simplicity SDK 2024.12.0 · Source

These headers exist in Simplicity SDK 2024.6.0 and are gone in Simplicity SDK 2024.12.0: sl_btmesh_sensor_server_cadence.h. Code that includes them stops compiling.

Likely to break

Component simple_rail_heartbeat removed in Simplicity SDK 2024.12.0

SDK components · Simplicity SDK 2024.12.0 · Source

Simple RAIL Heartbeat component has been removed.

Likely to break

Component simple_rail_rx removed in Simplicity SDK 2024.12.0

SDK components · Simplicity SDK 2024.12.0 · Source

Simple RAIL Rx component has been removed.

Likely to break

Component simple_rail_rx_cli removed in Simplicity SDK 2024.12.0

SDK components · Simplicity SDK 2024.12.0 · Source

Simple RAIL Rx CLI component has been removed.

Likely to break

Component simple_rail_tx removed in Simplicity SDK 2024.12.0

SDK components · Simplicity SDK 2024.12.0 · Source

Simple RAIL Tx component has been removed.

Likely to break

Component simple_rail_tx_cli removed in Simplicity SDK 2024.12.0

SDK components · Simplicity SDK 2024.12.0 · Source

Simple RAIL Tx CLI component has been removed.

Likely to break

Component sl_simple_rail_stub removed in Simplicity SDK 2024.12.0

SDK components · Simplicity SDK 2024.12.0 · Source

Simple RAIL Stub component has been removed.

Likely to break

Component zigbee_dmp_tuning removed in Simplicity SDK 2024.12.0

Zigbee stack · Simplicity SDK 2024.12.0 · Source

The zigbee_dmp_tuning component has been deprecated. radio_priority_15_4 component has taken its place for adjusting 15_4 dmp radio priority.

Likely to break

Zigbee (EmberZNet): components removed from Simplicity SDK 2024.12.0

SDK components · Simplicity SDK 2024.12.0 · Source

These SLC components are removed from Simplicity SDK 2024.12.0: zigbee_third_party_openthread. A project that lists them no longer generates.

Needs attention

Zigbee (EmberZNet): configuration options removed in Simplicity SDK 2024.12.0

Component settings · Simplicity SDK 2024.12.0 · Source

These component configuration options exist in Simplicity SDK 2024.6.0 and are gone in Simplicity SDK 2024.12.0: SL_ZIGBEE_AF_PLUGIN_DMP_TUNING_BLE_ADVERTISEMENT_PRIORITY_MAX, SL_ZIGBEE_AF_PLUGIN_DMP_TUNING_BLE_ADVERTISEMENT_PRIORITY_MIN, SL_ZIGBEE_AF_PLUGIN_DMP_TUNING_BLE_CONNECTION_INIT_PRIORITY_MAX, SL_ZIGBEE_AF_PLUGIN_DMP_TUNING_BLE_CONNECTION_INIT_PRIORITY_MIN, SL_ZIGBEE_AF_PLUGIN_DMP_TUNING_BLE_CONNECTION_PRIORITY_MAX, SL_ZIGBEE_AF_PLUGIN_DMP_TUNING_BLE_CONNECTION_PRIORITY_MIN… Values set for them in the project's config headers or .slcp are ignored, so the behaviour they controlled is silently lost. Covers 20 names.

Needs attention

Application utilities: configuration options removed in Simplicity SDK 2024.12.0

Component settings · Simplicity SDK 2024.12.0 · Source

These component configuration options exist in Simplicity SDK 2024.6.0 and are gone in Simplicity SDK 2024.12.0: ACTIVITY_LED, APP_SCHEDULER_EAGER_MODE, CATEGORY_LABELS, DETECTION_LED, DETECTION_THRESHOLD, IGNORE_UNDERSCORE_LABELS… Values set for them in the project's config headers or .slcp are ignored, so the behaviour they controlled is silently lost. Covers 16 names.

Needs attention

Bluetooth LE: configuration options removed in Simplicity SDK 2024.12.0

Component settings · Simplicity SDK 2024.12.0 · Source

These component configuration options exist in Simplicity SDK 2024.6.0 and are gone in Simplicity SDK 2024.12.0: CS_INITIATOR_ERROR_TIMER_USED, CS_INITIATOR_MAX_INTERVAL, CS_INITIATOR_MIN_INTERVAL, NCP_SEMAPHORE_NAME, NCP_TASK_NAME, SL_BT_CBAP_LOG… Values set for them in the project's config headers or .slcp are ignored, so the behaviour they controlled is silently lost. Covers 14 names.

Needs attention

Component simple_rail_assistance replaced by sl_rail_sdk_simple_assistance in Simplicity SDK 2024.12.0

SDK components · Simplicity SDK 2024.12.0 · Source

Simple RAIL Assistance component has been modified and moved.

Needs attention

Component sl_duty_cycle_core replaced by sl_rail_sdk_duty_cycle_core in Simplicity SDK 2024.12.0

SDK components · Simplicity SDK 2024.12.0 · Source

Flex - Duty Cycle Core component has been modified and moved.

Needs attention

Component sl_flex_images_for_lcd replaced by sl_rail_sdk_images_for_lcd in Simplicity SDK 2024.12.0

SDK components · Simplicity SDK 2024.12.0 · Source

Flex - LCD Images component has been modified and moved.

Needs attention

Component sl_flex_mode_switch replaced by sl_rail_sdk_mode_switch in Simplicity SDK 2024.12.0

SDK components · Simplicity SDK 2024.12.0 · Source

RAIL Wi-SUN Mode Switch component has been modified and moved.

Needs attention

Component sl_flex_rail_802154_support replaced by sl_rail_sdk_802154_support in Simplicity SDK 2024.12.0

SDK components · Simplicity SDK 2024.12.0 · Source

Flex - RAIL IEEE 802.15.4 support component has been modified and moved.

Needs attention

Component sl_flex_rail_ble_support replaced by sl_rail_sdk_ble_support in Simplicity SDK 2024.12.0

SDK components · Simplicity SDK 2024.12.0 · Source

Flex - RAIL BLE support component has been modified and moved.

Needs attention

Component sl_flex_rail_channel_selector replaced by sl_rail_sdk_channel_selector in Simplicity SDK 2024.12.0

SDK components · Simplicity SDK 2024.12.0 · Source

Flex - RAIL Channel Selector component has been modified and moved.

Needs attention

Component sl_flex_rail_config replaced by sl_rail_sdk_fifo_size in Simplicity SDK 2024.12.0

SDK components · Simplicity SDK 2024.12.0 · Source

Simple RAIL configuration values component has been modified and moved.

Needs attention

Component sl_flex_rail_package_assistant replaced by sl_rail_sdk_packet_assistant in Simplicity SDK 2024.12.0

SDK components · Simplicity SDK 2024.12.0 · Source

Flex - RAIL Packaging Assistant component has been modified and moved.

Needs attention

Component sl_flex_rail_packet_asm replaced by sl_rail_sdk_packet_asm in Simplicity SDK 2024.12.0

SDK components · Simplicity SDK 2024.12.0 · Source

Flex - RAIL Standard packet assembler component has been modified and moved.

Needs attention

Component sl_flex_rail_sleep replaced by sl_rail_sdk_sleep in Simplicity SDK 2024.12.0

SDK components · Simplicity SDK 2024.12.0 · Source

Flex - RAIL Power Manager Sleep component has been modified and moved.

Needs attention

Component sl_flex_util_802154_init replaced by sl_rail_sdk_802154_support in Simplicity SDK 2024.12.0

SDK components · Simplicity SDK 2024.12.0 · Source

Flex - RAIL IEEE 802.15.4 Initialization component has been modified and moved.

Needs attention

Component sl_flex_util_802154_protocol replaced by sl_rail_sdk_802154_support in Simplicity SDK 2024.12.0

SDK components · Simplicity SDK 2024.12.0 · Source

Flex - RAIL IEEE 802.15.4 Protocol component has been modified and moved.

Needs attention

Component sl_flex_util_ble_init replaced by sl_rail_sdk_ble_support in Simplicity SDK 2024.12.0

SDK components · Simplicity SDK 2024.12.0 · Source

Flex - RAIL BLE Initialization component has been modified and moved.

Needs attention

Component sl_flex_util_ble_protocol replaced by sl_rail_sdk_ble_support in Simplicity SDK 2024.12.0

SDK components · Simplicity SDK 2024.12.0 · Source

Flex - RAIL BLE Protocol component has been modified and moved.

Needs attention

Component sl_iperf_cli replaced by sl_wisun_cli in Simplicity SDK 2024.12.0

SDK components · Simplicity SDK 2024.12.0 · Source

The sl_iperf_cli component has been deprecated and merged into the new sl_wisun_cli component for better CLI management.

Needs attention

Component sl_light_switch_support replaced by sl_rail_sdk_light_switch_support in Simplicity SDK 2024.12.0

SDK components · Simplicity SDK 2024.12.0 · Source

Flex - Light, Switch Support component has been modified and moved.

Needs attention

Component sl_rail_simple_cpc replaced by sl_rail_sdk_simple_cpc in Simplicity SDK 2024.12.0

SDK components · Simplicity SDK 2024.12.0 · Source

Simple RAIL CPC for NCP projects component has been modified and moved.

Needs attention

Component sl_rail_simple_cpc_spi replaced by sl_rail_sdk_simple_cpc_spi in Simplicity SDK 2024.12.0

SDK components · Simplicity SDK 2024.12.0 · Source

Simple RAIL CPC for NCP projects (SPI) component has been modified and moved.

Needs attention

Component sl_range_test_cli replaced by sl_rail_sdk_range_test_cli in Simplicity SDK 2024.12.0

SDK components · Simplicity SDK 2024.12.0 · Source

Flex - Range Test CLI component has been modified and moved.

Needs attention

Component sl_range_test_core replaced by sl_rail_sdk_range_test_core in Simplicity SDK 2024.12.0

SDK components · Simplicity SDK 2024.12.0 · Source

Flex - Range Test Core component has been modified and moved.

Needs attention

Component sl_range_test_dmp_component replaced by sl_rail_sdk_range_test_dmp_component in Simplicity SDK 2024.12.0

SDK components · Simplicity SDK 2024.12.0 · Source

Flex - DMP Bluetooth for Range Test component has been modified and moved.

Needs attention

Component sl_range_test_std_component replaced by sl_rail_sdk_range_test_std_component in Simplicity SDK 2024.12.0

SDK components · Simplicity SDK 2024.12.0 · Source

Flex - Standard phys for Range Test component has been modified and moved.

Needs attention

Component sl_simple_rail_os replaced by sl_rail_sdk_simple_os in Simplicity SDK 2024.12.0

SDK components · Simplicity SDK 2024.12.0 · Source

Flex - Simple OS Init files for RAIL Sample Apps component has been modified and moved.

Needs attention

Component sl_wisun_app_cli replaced by sl_wisun_cli in Simplicity SDK 2024.12.0

SDK components · Simplicity SDK 2024.12.0 · Source

The sl_wisun_app_cli component has been deprecated and merged into the new sl_wisun_cli component for better CLI management.

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

Field updates must still be accepted by the bootloader on deployed devices

When it applies: The application updates itself in the field (OTA DFU, AppLoader, Zigbee OTA or Mesh DFU) through the Gecko Bootloader already on each device.

Why it matters: New releases change stack sizes and defaults, often growing the image; the new application must still fit the bootloader's download slot and use the same signing keys.

What to do: Keep the GBL signing and encryption keys, the storage slot layout and the application start address; check the new image size against the download slot; rehearse an update from the production firmware and bootloader.

SDK extensions must move to versions built for the target SDK

When it applies: The project uses SDK extensions (for example Matter, WiSeConnect or AI/ML) on top of the Silicon Labs SDK.

Why it matters: Each extension release is built and tested against one SDK release. Mixing versions fails to generate or builds an untested combination.

What to do: Pick the extension release that names the target SDK in its release notes and upgrade it together with the SDK.

A copy of the SDK lives inside the project

When it applies: The project contains a copied Gecko or Simplicity SDK folder instead of linking to an installed SDK.

Why it matters: An upgrade does not touch the copy. Local patches to it are easily lost or silently kept, and the build may mix old and new SDK files.

What to do: List local changes to the copied SDK (diff it against the matching release), then replace the copy with the target SDK and re-apply only the changes still needed.

Zigbee host and NCP must be upgraded together

When it applies: The project is a Zigbee host application that talks to an NCP over EZSP.

Why it matters: EZSP versions change between SDK releases; a host only talks to an NCP built with a compatible stack.

What to do: Upgrade host and NCP firmware as one release, and make sure the host can still reflash an NCP that runs the old firmware.

Updating the Gecko Bootloader itself

When it applies: The repository builds a Gecko Bootloader with the SDK.

Why it matters: A new bootloader must keep the storage layout, keys and application interface of the one on deployed devices, and it can only be replaced in the field if the bootloader upgrade path was planned.

What to do: Decide whether deployed devices keep their current bootloader (usual) or receive a bootloader upgrade; if so, test the upgrade image on production devices before release.

The project must be upgraded and regenerated with SLC

When it applies: Silicon Labs projects are generated from the .slcp by SLC (Simplicity Studio or slc-cli).

Why it matters: New releases rename, split and remove components and configuration options (Silicon Labs' upgrade rules apply most of these automatically), and regenerate autogen/ and config headers.

What to do: Run the project upgrade (Simplicity Studio's Upgrade, or slc upgrade) on a clean branch, regenerate, then review the diff of config/ and the .slcp before touching application code. Never keep hand edits in autogen/.

Stored data must survive the update

When it applies: The firmware keeps data in NVM3 or tokens (network keys, bonding data, Mesh provisioning, application settings).

Why it matters: Stack releases occasionally change stored data formats (for example the Bluetooth Mesh model storage format in 2025.6); data written by the old firmware must still be read correctly.

What to do: Update a device that has real stored data (joined network, bonded phone, provisioned node) from the production firmware and check it keeps working without re-pairing or re-commissioning.

Check the Secure Engine firmware required by the target SDK

When it applies: The project targets a Series 2 device, whose Secure Engine runs its own firmware.

Why it matters: Newer SDKs are released with a matching Secure Engine firmware version; security features and some PSA Crypto behaviour depend on it, and devices in the field keep the SE firmware they shipped with unless it is updated.

What to do: Compare the SE firmware version on production devices with the one in the target SDK's platform release notes, and decide whether the update must include an SE firmware upgrade.

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.