Z-Wave SDK Version 7.24.0 (June 16, 2025) - Release Notes#
Simplicity SDK Version 2025.6.0
Z-Wave and Z-Wave Long Range SDK is designed to meet the demands of the future smart home and beyond, where increasing needs for more sensors and battery-operated devices require both long range and low power. Context-aware environments are the next evolution in the smart home market, and they require technologies that have been optimized specifically for these applications.
Click here for earlier releases.
Release Summary#
Key Features | API Changes | Bug Fixes | Chip Enablement
Important disclaimer#
The 7.24.0 Z-Wave SDK is a Pre-certified version and is not recommended for Production use. This recommendation is based on the firmware update-related known issue (#1468819) listed in the Known Issues and Limitations section. This issue prevents Over-the-Air firmware update after an initial update has been performed successfully.
Key Features#
The Z-Wave stack and associated binary resources are compiled with the Link Time Optimization (LTO) option enabled.
S2v2 draft implementation supports the Supervision Command Class and is aligned with the latest proposed specification.
ZPAL watchdog refactoring.
Z-Wave Power Manager refactoring.
API Changes#
The watchdog is not enabled by stack anymore. It is the application's duty to enable it using zpal_watchdog_init and zpal_enable_watchdog. Application tasks should not block other tasks for more than 4 seconds.
Introduction of zw_power_manager_init(), zw_power_manager_lock(), zw_power_manager_relock(), zw_power_manager_lock_cancel(), to replace and wrap the ZPAL power manager functions. An application must use the zw_power_manager APIs rather than their ZPAL counterparts.
Aligned User Credential Command Class according to the 2025A specification changes by modifying the API of the
CC_UserCredential_move_credential_and_report()
function. The specification for the "User Credential Association Set" and "User Credential Association Report" commands was updated: the option to move a credential to a different slot was removed. Moving a credential to a different slot is still possible via the CLI; however, the lifeline group can no longer be notified about a credential slot change.App initialization is changed.
main.c
has been removed from the sample applications and is now generated automatically by the System Setup (sl_main) platform component instead of the sl_system. For more information, refer to the documentation for System Initialization and Action Processing.The Debug Print component was replaced by the ZPAL Log API, which allows filtering log messages by source component and log level.
Bug Fixes#
Below is a list of important bugs fixed in the release. For a complete list, refer to this section.
Fixed an issue where the radio layer would stop receiving packet until the next TX radio event (1409388).
Fixed a rare occurrence where a null pointer led to a soft reset in the ZAF event queue (1425779).
Chip Enablement#
None.
Key Features#
New Features | Enhancements | Removed Features | Deprecated Features
New Features#
The Z-Wave stack and associated binary resources are compiled with the Link Time Optimization (LTO) option enabled. (Quality: GA)
S2v2 draft implementation supporting the Supervision Command Class and aligned with the latest proposed specification. (Quality: Alpha)
Z-Wave Applications now support S2v2 commands NLS Node List Get/Report. (Quality: Alpha)
Enhancements#
Improved Clear Channel Assessment (CCA) reliability. Previously, only the latest measured RSSI value was used instead of the highest value in the RX window.
Updated Clock Manager API calls to the new SL clock_manager module API calls.
Replaced previous logging approach with new logging system via ZPAL Log API, introducing component based enablement, log levels, and routing capability to different output channels.
Made NVM initialization significantly faster when many user codes are used with User Code Command Class by creation of
ZAF_FILE_ID_CC_USER_CODE_HEADER
to store a new database. The database stores flags about the validity of the corresponding User Code. This removes the limitation ofCC_USER_CODE_MAX_IDS
, increasing its range to 255.Added more descriptive error messages for invalid .cc_config file contents.
Modularized the User Credential Command Class handler functions from
CCUserCredential.c
. Related upstream issue in Z-Wave Alliance Open Source: https://github.com/Z-Wave-Alliance/z-wave-stack/issues/351Adapted the User Credential Command Class behavior according to Z-Wave specification rule change, where the CC:0083.01.0C.11.015 requirement has been removed. Credential Get commands where the UUID does not match the database is answered with a "Credential doesn't exist" type of response.
Merged Zniffer NCP and Zniffer PTI into a single sample application (zwave_ncp_zniffer).
Removed Features#
None.
Deprecated Features#
None.
API Changes#
New APIs | Modified APIs | Removed APIs | Deprecated APIs
New APIs#
New API Signature | Deprecated API replaced by this (if any) |
---|---|
REGISTER_CC_V6(cc_api_handler_version, cc, version, handler, basic_set_mapper, basic_get_mapper, lifeline_report_cb, flags, init_cb, reset_cb, migrate_cb)* | None |
zpal_status_t zpal_pm_register_domain(zpal_pm_domain_t domain, pm_domain_status_t *radio_domain_status, pm_domain_status_t *deep_sleep_domain_status) | |
zpal_status_t zpal_pm_lock(zpal_pm_type_t type, zpal_pm_domain_t domain, uint32_t timeout_ms, uint8_t idx) | |
zpal_status_t zpal_pm_relock(zpal_pm_type_t type, zpal_pm_domain_t domain, uint32_t timeout_ms, uint8_t idx) | |
zpal_status_t zpal_pm_lock_cancel(zpal_pm_type_t type, zpal_pm_domain_t domain, uint8_t idx) | |
void zpal_pm_lock_cancel_all(void) | |
uint32_t zpal_get_max_timeout(void) | |
bool zpal_pm_lock_is_active(zpal_pm_type_t type, zpal_pm_domain_t domain, uint8_t idx, zpal_pm_state_t *state) | |
bool zpal_pm_lock_type_is_active(zpal_pm_type_t pm_type, zpal_pm_state_t *state) | |
zpal_status_t zpal_pm_register_domain(zpal_pm_domain_t domain, pm_domain_status_t *radio_domain_status, pm_domain_status_t *deep_sleep_domain_status) |
* The REGISTER_CC_V6
macro has been introduced for extending the REGISTER_CC_V5
in two ways: It introduces migrate()
callback function similar to init()
or reset()
. migrate()
can be used to execute any migration that is necessary for a command class during firmware upgrade. migrate()
is called by Firmware Update Command Class, after the new firmware is loaded, but before the Firmware Update Status Report is transmitted. It allows the command class to choose the cc_api_handler_version
. This allows command classes to update their registration to REGISTER_CC_V6()
without the need to change the CC handlers.
** API not deprecated but removed
Modified APIs#
Old API | Modified |
---|---|
u3c_db_operation_result CC_UserCredential_move_credential_and_report(u3c_credential_type credential_type, uint16_t source_credential_slot, uint16_t destination_uuid, uint16_t destination_credential_slot RECEIVE_OPTIONS_TYPE_EX * p_rx_options) | u3c_db_operation_result CC_UserCredential_move_credential_and_report(uint16_t credential_slot, uint16_t destination_uuid, RECEIVE_OPTIONS_TYPE_EX * p_rx_options) |
u3c_user | u3c_user_t |
u3c_credential | u3c_credential_t |
u3c_event_data_validate | u3c_event_data_validate_t |
u3c_event_data_learn_read_done | u3c_event_data_learn_read_done_t |
u3c_credential_metadata | u3c_credential_metadata_t |
u3c_credential_learn_event_data | u3c_event_data_learn_start_t |
|
|
Removed APIs#
Removed API Name | Was Deprecated? |
---|---|
no | |
no | |
no | |
no | |
no | |
no | |
no | |
DPRINT(PSTRING) | no |
DPRINTF(PFORMAT, ...) | no |
Deprecated APIs#
None.
Bug Fixes#
ID | Issue Description | GitHub / Salesforce Reference (if any) | Affected Software Variants, Hardware, Modes, Host Interfaces |
---|---|---|---|
1409388 | Fixed an issue where the radio layer would stop receiving packets until the next TX radio event. | None | ZPAL/RAIL |
1390101 | Fixed an issue preventing the configuration of a TX output power above +14 dBM in the Serial API controller application. | None | ZPAL |
1424148 | Better randomization of the delay used to send retransmissions. | None | ZPAL |
1257690 | Fixed bootloader slot size configuration not being modifiable via the graphical user interface | None | ZPAL |
1380945 | Fixed an issue where, under heavy traffic, the packets were not properly ordered when sent over the air. Acknowledgment packets could be sent in reverse. Retransmission attempts might occur after new packets. | None | Transport layer |
1383828 | Sleeping reporting applications now correctly detect the button press duration when woken up from a deep sleep state via a button press. | None | Reporting Sleeping End Node devices |
1425779 | Fixed a rare occurrence where a null pointer led to a soft reset in the ZAF event queue. | None | ZAF / TSE |
1426510 | Fixed an issue when notifications were not sent out sometimes during an OTA firmware update. | None | ZAF / Notification Command Class |
1383233 | Max number of user code limitation has been restored to 255. The unsuccessful inclusion issue in case of higher configuration value has been fixed. | None | ZAF / User Code Command Class |
1414398 | Fixed an issue when the report to the lifeline was invalid in case of multiple User IDs were used and all user codes were erased. | None | ZAF / User Code Command Class |
1402601 | Protect against configuring an endpoint for CC AGI with more association groups than allowed by the configuration of Association Command Class. | github.com/Z-Wave-Alliance/z-wave-stack/issues/385 | ZAF / Association Command Class |
1388187 | Fixed not being able to add or modify User Credential Command Class credentials locally (e.g. via the CLI). | None | ZAF / User Credential Command Class |
1388186 | Fixed an issue when the DUT rejects modification of a password credential. The UserCredentialCmdClassV1_Rev01 CTT test now passes successfully. | None | ZAF / User Credential Command Class |
1396326 | Fixed an issue when the lifeline group contains only the multi channel endpont(s) of a node, a User Credential Command Class / User Set request from this node's root device were not answered - instead, only the registered endpoint(s) received the report. With this fix the CCA_U3CReportUserData_Rev01 CTT test now passes successfully. | None | ZAF / User Credential Command Class |
1381226 | Fixed Supervision status in response to a User Set when the database is already in the requested state and U3C is used - now reports "Success". | None | ZAF / User Credential Command Class |
1385661 | Changing the state of the door bolt is no longer possible when the device is not included in a network. | None | ZAF / User Code Command Class |
1440915 | Fixed the number of indicator blinks from 5 to 6 to pass the CDR_ZWPv2IndicatorCCRequirements_Rev01 CTT test. | None | All Z-Wave applications |
1377838 | The inclusion indicator LED no longer keeps blinking when a KEX frame is missing during the inclusion process. | None | All Z-Wave applications |
1390955 | Fixed the GPIO configuration of Serial API Controller UART RX and TX pins | None | zwave_ncp_serial_api_controller |
1394004 | The SAPI command REMOVE_NODE_FROM_NETWORK could falsely fail if removing a device from another network that has the same node ID as a device in the remover's network. | None | zwave_ncp_serial_api_controller |
1383938 | Z-Wave OTW bootloader project for custom board now compiles without errors, displays warning to pay attention to default UART configuration. | None | bootloader-uart-xmodem-zwave-otw |
1384692 | Fixed an issue when the `get_rgb_values` CLI command returned with invalid values. | None | zwave_soc_power_strip |
1429395 | Fixed an issue when the sleeping apps fell back to sleep during long button press. | None | Reporting Sleeping End Node devices |
1384690 | Fixed an issue when the CLI were not working with some board-application combinations. | None |
Chip Enablement#
None.
Application Example Changes#
New Examples | Modified Examples | Removed Examples | Deprecated Examples
New Examples#
None.
Modified Examples#
Example Name | Changes | Supported Software Variants if applicable | Supported Modes | Supported OPNs / Boards / OPN Combinations | Supported Host Interfaces |
---|---|---|---|---|---|
Zniffer |
| zwave_ncp_zniffer |
| ||
zwave_soc_door_lock_keypad |
| zwave_soc_door_lock_keypad |
| ||
zwave_soc_door_lock_keypad |
| zwave_soc_door_lock_keypad |
| ||
zwave_soc_led_bulb |
| zwave_soc_led_bulb |
|
Removed Examples#
Removed Example Name | Was Deprecated? |
---|---|
Zniffer PTI | No. Features merged in the "Zniffer" sample application. |
Deprecated Examples#
None.
Known Issues and Limitations#
ID | Issue or Limitation Description | GitHub / Salesforce Reference (if any) | Workaround (if any) | Affected Software Variants, Hardware, Modes, Host Interfaces |
---|---|---|---|---|
1468819 | Existing Z-Wave end devices that are updated to SDK version 7.24.0 via Over-the-Air firmware update are not able to upgrade beyond this version. In contrast, newly manufactured end devices built with SDK 7.24.0 are capable of being updated further as expected. | Currently not available. | All Z-Wave applications | |
1465034 | Using the Door Lock application with the BRD2705A Explorer Kit results in the transmission of corrupt packets. For BRD2705A, BTN0 is mapped onto Port C, Pin 0, which not an EM2/EM3 capable pin. In a FL application, a press of BTN0 will be handled when the device wakes up and configures the radio for beam detection. | Use an EM2/3 capable wake up pin on Port A/B | zwave_soc_door_lock_keypad application with BRD2705A Explorer Kit | |
1399709 | Reported S2 command class version remains 1 until certification covers S2v2. | Currently not available. | All Z-Wave applications | |
369430 | All S2 multicast frames are sent using verified delivery S2_TXOPTION_VERIFY_DELIVERY whether or not a response is expected. | Change source code depending on the frame sent. | ZAF | |
1172849 | On series 800, sleep will no longer take advantage of EM1P current savings. | Currently not available. | 800 Series chips | |
1067228 | Zniffer on BRD4204D does not detect LR wakeup beams | Use different board for sniffing LR wakeup beams | zwave_ncp_zniffer | |
1364307 | The RSSI values showed in PC Zniffer using the Zniffer NCP are not valid. | Use Zniffer with PTI for measuring valid RSSI values. | zwave_ncp_zniffer | |
1432659 | Too many reports are sent when multiple buttons are pressed at once. | Currently not available. | End Device sample apps | |
1420527 | OTA update gets stuck after serveral sent packets with debug builds. | Currently not available. | End Device sample apps |
Impact of Release Changes#
Impact Statements | Migration Guide
Impact Statements#
None.
Migration Guide#
Click here for the migration guide for deprecated, removed, and modified items.
Using This Release#
Installation and Use | Help and Feedback
Installation and Use#
To upgrade your existing software with this release, see instructions in the Migration Guide.
To run your first demo, see our Z-Wave Getting Started for End Devices.
To learn more about the software in this release, dive into our Z-Wave online documentation.
For information about Secure Vault Integration, see Secure Vault.
To review Security and Software Advisory notifications and manage your notification preferences:
Log in with your account credentials.
Click your profile icon in the upper-right corner of the page.
Select Notifications from the dropdown menu.
In the Notifications section, go to the My Product Notifications tab to review historical Security and Software Advisory notifications
To manage your preferences, use the Manage Notifications tab to customize which product updates and advisories you receive.
Help and Feedback#
Contact Silicon Labs Support.
To use our Ask AI tool to get answers, see the search field at the top of this page.
Note: Ask AI is experimental.
Get help from our developer community.
SDK Release and Maintenance Policy#
See our SDK Release and Maintenance Policy.