MCUXpresso SDK Release Notes#
Development tools#
The MCUXpresso SDK was tested with following development tools. Same versions or above are recommended.
SDK 25.12.00 is the final release that includes MCUXpresso IDE support for MCX W7x devices. Beginning with SDK 26.x.x, MCUXpresso IDE will no longer be supported for MCX W7x development, and MCUXpresso for Visual Studio Code will become the recommended integrated development environment.
IAR Embedded Workbench for Arm, version is 9.70.4
MCUXpresso for VS Code v26.06
GCC Arm Embedded Toolchain 14.2.x
Supported development systems#
This release supports board and devices listed in following table. The board and devices in bold were tested in this release.
Development boards |
MCU devices |
|---|---|
FRDM-MCXW72 |
MCXW727CMFTA |
MCUXpresso SDK release package#
The MCUXpresso SDK release package content is aligned with the silicon subfamily it supports. This includes the boards, CMSIS, devices, middleware, and RTOS support.
Device support#
The device folder contains the whole software enablement available for the specific System-on-Chip (SoC) subfamily. This folder includes clock-specific implementation, device register header files, device register feature header files, and the system configuration source files. Included with the standard SoC support are folders containing peripheral drivers, toolchain support, and a standard debug console. The device-specific header files provide a direct access to the microcontroller peripheral registers. The device header file provides an overall SoC memory mapped register definition. The folder also includes the feature header file for each peripheral on the microcontroller. The toolchain folder contains the startup code and linker files for each supported toolchain. The startup code efficiently transfers the code execution to the main() function.
Board support#
The boards folder provides the board-specific demo applications, driver examples, and middleware examples.
Demo application and other examples#
The demo applications demonstrate the usage of the peripheral drivers to achieve a system level solution. Each demo application contains a readme file that describes the operation of the demo and required setup steps. The driver examples demonstrate the capabilities of the peripheral drivers. Each example implements a common use case to help demonstrate the driver functionality.
RTOS#
FreeRTOS#
Real-time operating system for microcontrollers from Amazon
Middleware#
IEEE 802.15.4 MACPHY Software#
The IEEE 802.15.4 software includes:
The IEEE 802.15.4 PHY supporting Thread 1.3.x and Thread 1.4.0 with OpenThread, and Matter over Thread
IEEE 802.15.4 MAC supporting Zigbee
Simple MAC (SMAC)
Low-level IEEE 802.15.4 radio mode test software
Multiprotocol support (Bluetooth LE and IEEE 802.15.4)
Experimental support for dual PAN mode (two IEEE 802.15.4 networks on a single channel or two channels)
The IEEE 802.15.4 PHY and MAC software implementation is based on IEEE Standard 802.15.4-2015.
GenFSK link layer#
The Generic FSK protocol enables radio operation using a custom GFSK/GMSK or MSK modulation format.
Main Features supported:
Highly configurable packet structure
Optimized Sequence Command Set
High-precision timebase to maintain network timing
Two timer-compare mechanisms for Interrupt Generation and Sequence Launching
Hardware automation for packet transmit and receive, CRC and Whitening
Up to four network addresses to synchronize to, can be 8-bit, 16-bit or 32-bit
Packet Lengths up to 2047 Bytes
Support complex auto-sequence, like CCA before TX, Auto-ACK, TR.
Many operating modes can support the sending and receiving of multiple protocol packets, such as Bluetooth LE.
Wireless XCVR#
The XCVR component provides a base Transceiver Driver for the 2.4 GHz narrowband radio.
Bluetooth LE Controller#
Main features supported:
Peripheral Role
Central Role
Multiple PHYs (1 Mbps, 2 Mbps, Coded PHY)
Asymmetric Connections
Public/Random/Static Addresses
Network/Device Privacy Modes
Extended Advertising
Extended Scanning
Passive/Active Scanning
LE Encryption
LE Ping Procedure
HCI Test Interface
UART Test Interface
Randomized Advertising Channel Indexing
Sleep Clock Accuracy Update - Mechanism
ADI Field in Scan Response Data
HCI Support for Debug Keys in LE - Secure Connections
Main capabilities supported:
Simultaneous scanning 1 Mbps and Long Range
Scanning and advertising in parallel
24 connections as a central role
24 connections as a peripheral role
Any combination of central and peripheral roles (24 connections maximum)
8 connections with a 7.5 ms connection interval
Two advertising sets in parallel (\Five adv set as Early Access Release).
26 Accept List entries
36 Resolvable Private Address (RPA) entries
Up to two Chain Packets per Extended Advertising set
Enhanced Notification on end of - Scanning/Advertising/Connection events
Connection event counters associated to Bluetooth LE packet reception
Timestamp associated to Bluetooth LE packet reception
RF channel info associated to Bluetooth LE packet reception
NXP proprietary Bluetooth LE Handover feature
Decision Based Advertising Filtering (DBAF)
Advertising Coding Selection (ACS)
Periodic Advertising with Responses (PAwR) Additional features supported for KW47 and MCX W72 devices:
Channel Sounding Additional features supported as EAR (\Early Access Release) in the KW47 experimental build:
Inline PCT Transfer (IPT)
RTT_PHY capability
Channel Sounding Enhancement 1
Channel Sounding TX/SNR (18dB, 21 dB, 24 dB and 27dB)
Channel Sounding PHY 2Mbps BT2.0
Channel Sounding additional supported timings:
T_PM=10us
T_IP1/T_IP2=60, 50, 30
T_FCS=120, 100, 60
LE Power Control (\LEPC).
Additional features supported as EAR (\Early Access Release) in the KW45/KW47 experimental builds:
LE Test Mode Enhancement (\UTP/OTA).
LL Extended Feature Set
Monitoring Advertisers
Randomized Resolvable Private Address (\RPA)
LE Enhanced Connection Update
Note: Project configuration enabling Experimental features on KW45 and MCX W71 requires the Radio Subsystem (NBU) Firmware to be reprogrammed with the firmware provided in the SDK under \middleware\wireless\ble_controller\bin\experimental\. For NBU programming steps, see the EVK Quick Start Guide and Secure Provisioning SDK (SPSDK) documentation.
Project configurations that require usage of the Bluetooth LE controller including all Bluetooth LE examples require the Radio Subsystem (NBU) Firmware to be re-programmed with the firmware provided in the SDK under middleware\wireless\ble_controller\bin.
Bluetooth LE Host Stack and Applications#
The Bluetooth LE Host Stack component provides an implementation for a Bluetooth 6.0 mandatory and some optional, proprietary, and experimental features. The Bluetooth LE Host Stack component provides application examples, services, and profiles.
Main features supported:
Automotive Compliance
MISRA Compliance
HIS CCM <= 20
Advanced Secure Mode
Enhanced ATT
GATT Caching
GCC Libraries
IAR Libraries
Bluetooth LE Peripheral Libraries
Bluetooth LE Central Libraries
Bluetooth LE Full Host Features Libraries
Bluetooth LE Host Optional Features Libraries
Bluetooth LE Host Mandatory Features Libraries
BareMetal and FreeRTOS Support
Full Privacy Support
NCP Mode - FSCI Application
Enhanced Notifications
Dynamic Database
OTA Support - Sample Applications
Decision based Advertising Filtering (DBAF)
Advertising Coding Selection (ACS)
Periodic Advertising with Responses (PAwR)
Encrypted Advertising Data (EAD)
Monitoring Advertisers - Experimental feature
Randomized RPA - Experimental feature
Intrusion Detection System (IDS) - Experimental feature
Note: The CDE(Complex-domain Distance Estimation) algorithm is an experimental feature intended only for testing purposes. It is not maintained and must not be included in production environments.
Parent topic:Wireless connectivity middleware overview
Wireless Localization#
Localization
Connectivity framework#
The Connectivity Framework is a software component that provides hardware abstraction modules to the upper layer connectivity stacks and components. It also provides a list of services and APIs (see Supported services). The Connectivity Framework modules are located in the middleware\wireless\framework SDK folder.
Supported services#
FSCI - Framework Serial Communication Interface
FunctionLib - Common function library utilities
HWParameter - Hardware parameter management
LowPower - Low power mode management
ModuleInfo - Module information and versioning
NVS - Non-Volatile Storage
NVM - Non-Volatile Memory management
OtaSupport - Over-The-Air update support
SecLib_RNG - Security library and Random Number Generator
Sensors - Sensor abstraction layer
SFC - Smart Frequency Calibration
WorkQ - Work queue management
Supported platform#
KW45_MCXW71
KW47_MCXW72
MCXW23
RW61X
RT1060 and RT1170
i.MX RT595s
Advanced features supported on platforms#
KW45_MCXW71#
FRO32K with smart frequency calibration (see SFC)
Power down mode support (for evaluation only)
KW47_MCXW72#
FRO32K with smart frequency calibration (see SFC)
Power down mode support (for evaluation only)
Crystal 32M trimming with temperature
Debug module for NBU
Extended NBU support with SecLib and pseudo RNG support
CMSIS DSP Library#
The MCUXpresso SDK is shipped with the standard CMSIS development pack, including the prebuilt libraries.
TF-M#
Trusted Firmware - M Library
PSA Test Suite#
Arm Platform Security Architecture Test Suite
NXP PSA CRYPTO DRIVER#
PSA crypto driver for crypto library integration via driver wrappers
secure_storage#
secure_storage
EdgeLock SE050 Plug and Trust Middleware#
Secure subsystem library - SSS APIs
Multicore#
Multicore Software Development Kit
NXP IoT Agent#
NXP IoT Agent
mbedTLS#
mbedtls SSL/TLS library v3.x
mbedTLS#
mbedtls SSL/TLS library v2.x
LittleFS#
LittleFS filesystem stack
FreeMASTER#
FreeMASTER communication driver for 32-bit platforms.
Release contents#
Provides an overview of the MCUXpresso SDK release package contents and locations.
Deliverable |
Location |
|---|---|
Boards |
INSTALL_DIR/boards |
Demo Applications |
INSTALL_DIR/boards/<board_name>/demo_apps |
Driver Examples |
INSTALL_DIR/boards/<board_name>/driver_examples |
eIQ examples |
INSTALL_DIR/boards/<board_name>/eiq_examples |
Board Project Template for MCUXpresso IDE NPW |
INSTALL_DIR/boards/<board_name>/project_template |
Driver, SoC header files, extension header files and feature header files, utilities |
INSTALL_DIR/devices/<device_name> |
CMSIS drivers |
INSTALL_DIR/devices/<device_name>/cmsis_drivers |
Peripheral drivers |
INSTALL_DIR/devices/<device_name>/drivers |
Toolchain linker files and startup code |
INSTALL_DIR/devices/<device_name>/<toolchain_name> |
Utilities such as debug console |
INSTALL_DIR/devices/<device_name>/utilities |
Device Project Template for MCUXpresso IDE NPW |
INSTALL_DIR/devices/<device_name>/project_template |
CMSIS Arm Cortex-M header files, DSP library source |
INSTALL_DIR/CMSIS |
Components and board device drivers |
INSTALL_DIR/components |
RTOS |
INSTALL_DIR/rtos |
Release Notes, Getting Started Document and other documents |
INSTALL_DIR/docs |
Tools such as shared cmake files |
INSTALL_DIR/tools |
Middleware |
INSTALL_DIR/middleware |
What is new#
The following updates were implemented with respect to the previous SDK release version (26.06.00).
Bluetooth LE Host Stack and Applications
Added
RSSI-based adaptive CS procedure interval for localization applications (experimental; disabled by default).
Improved
CS procedure parameters are now updated on connection interval change to avoid CS request rejection.
Aligned wireless_uart preinclude settings across all platforms for consistency.
Updated ble_shell periodic advertising default interval; set to 1 second for improved discoverability.
Increased host task stack size across multiple applications.
Extended ble_shell periodic advertising handling to support
gPeriodicDeviceScannedV2_cevent.RADE component naming updated in documentation.
Unified CS results complete event handling; real-time transfer moved to
AppLocalization_HandleCompleteResults().
Fixed
Fixed out-of-bounds access in
gap.c.HCI LE Read All Remote Features command is now issued if supported by the controller.
Power Control APIs now return
gBleFeatureNotSupported_cif the controller does not indicate support.Fixed array index overflow in application
ranging_client.c.Fixed local RSSI parsing: correct byte is now collected before advancing parse pointer.
Fixed bounds check for
gaAntPermNApinprocessMode2DataandprocessMode3Data.Fixed localization index overflow; added sanity check.
Corrected bounds check for deviceId.
Fixed
mAdvPendingflag of wireless_uart application to prevent multiple advertising starts during multi-peer disconnect.Fixed missing RSSI variables causing compilation issues in
app_localization_utils.c.CS IPT mode now configured with only 1 antenna path to fix Samsung phone CS request rejection.
FSCI Extended NBU: Added
LL_API_NotifyWakeUpcall inidle_taskto detect NBU stuck condition; addedleExtendedFeaturesto NCP GAP init complete event.Fixed systick drift when
PWR_DisallowDeviceToSleep()is active.CS: Added check for valid
numAntennaPathsinprocessCsResultsEvent.Miscellaneous MISRA fixes.
Miscellaneous Coverity fixes.
Changed
Reverted incorrect connection handle handling for non-connection enhanced notification events.
Details can be found in github repository nxp-mcuxpresso/mcuxsdk-middleware-bluetooth-host/CHANGELOG.md.
Bluetooth LE Controller
Added check to ensure LL_LENGTH_RSP from peer with invalid parameter are ignored (LL/CON/CEN/BI-24-C to BI-26-C, LL/CON/PER/BI-31-C to BI-33-C).
Fixed issue where central is unable to establish the twenty-first connection. Channel Sounding:
Improved CS/CS/CONN collision management.
Fixed autonomous feature exchange for CS Create Config (LL/CON/CEN/BV-109-C, LL/CON/CEN/BV-110-C, LL/CON/CEN/BV-163-C, LL/CON/PER/BV-113-C, LL/CON/PER/BV-163-C).
Fixed crash seen on Moreph (RFPHY/TRM-RCV/CS/BV-24-C).
Added a default PCT rotation value to compensate for internal delays.
Added check to reject consecutive LE_CS_Test with COMMAND_DISALLOWED.
Fixed RTT_PHY field for V1 PDU (LL/CS/CEN/BV-01-C, LL/CS/CEN/INI/BV-03-C, LL/CS/CEN/INI/BV-27-C, LL/CS/CEN/REF/BV-03-C, LL/CS/PER/BV-01-C, LL/CS/PER/INI/BV-02-C, LL/CS/PER/REF/BV-02-C).
Fixed T_SW_IPT checking (GAP/CS/BV-01-C, GAP/CS/BV-02-C, GAP/SEC/SEM/BV-68-C to BV-75-C). Periodic Advertising:
Fixed sync info packet offset and Offset Adjust handling (LL/CON/PER/BV-161-C, LL/DDI/ADV/BI-11-C). Periodic Advertising with Response:
Added mechanism to detect window widening overlap with PAwR skip (LL/CON/PER/BV-168-C). Decision Based Advertising Filtering:
Fixed failure seen on EBQ (HCI/CCO/BI-73-C). LL Extended Feature Set:
Fixed Extended Feature Set failures seen on EBQ (HCI/CIN/BV-15-C, LL/CON/CEN/BV-164-C to BV-166-C, LL/CON/PER/BV-168-C to BV-170-C).
Transceiver drivers (XCVR)
Added support for Bluetooth LE Channel Sounding.
Added API to control Power Amplifier (PA) ramp type and duration.
Connectivity framework
Major Changes
[NVM] Enhanced robustness of NVM MIT (Meta Information Tag) operations with improved validation and error handling. Added checksum validation feature controlled by
gNvmMetaCheckSum_dcompilation switch. Systematically validates MIT fields before use and triggers page switch if corruption detected. FixedmNvTableSizeInFlashtracking when table entries are modified. RefactoredNvWriteRecord()and addedNvModuleSwitchPage()for better ECC fault handling. AddedNvSetChecksumEnable()API to control feature at runtime. The feature is disabled by default.[SecLib_RNG] Refactored SecLib mutex declaration and made Lock/Unlock functions public. Changed return type from
osa_status_ttosecResultType_tfor SecLib mutex functions and moved mutex Lock/Unlock function declarations to SecLib.h.[SecLib_RNG][PSA] Activated PSA opaque execution with s200 and its secure key storage. Switched from PSA transparent mode to opaque mode for all functions except
CMAC_LsbFirstInput()which is currently not supported in opaque version. OptimizedSecLib_psa_configto fully accelerate allPSA_WANT_KEY_TYPE_ECC_KEY_PAIRfunctions.
Minor Changes
[wireless_mcu][ble] Refactored
PLATFORM_SetBleMaxTxPower()API moved from platform file tofwk_platform_ble.cfor Zephyr compatibility.[wireless_mcu] Modified
PLATFORM_GetBDAddr()to return consistent address across calls whengPlatformUseHwParameter_dis disabled.[Common] Enhanced external flash API with C++ compatibility by adding extern “C” guards.
[wireless_nbu] Replaced
FPGA_TARGETguard withFWK_KW43_MCXW70_NBU_FAMILIESfor CPU clock configuration to better reflect target family.[DBG] Disabled DTEST signals and GPIO debug for debug target to prevent significant low power current consumption degradation.
[kw45_k32w1_mcxw71][kw47_mcxw72] Removed use of SIRCCSR SDK definitions for wakeup by UART0.
[platform] Added platform abstraction macros
PLATFORM_GET_IPSR,PLATFORM_SET_INT_MASK, andPLATFORM_CLEAR_INT_MASKto allow platform-specific customization of IPSR read and interrupt mask functions while maintaining backward compatibility.
Bug Fixes
[OTA][Coverity] Sanitized the
pImageOffsetparameter in OTA functions to avoid possible overflow.[SecLib] Fixed multiplication buffer pointer initialization for segmented ECDH operations. Fixed EC P256 multistep operations using SW legacy library. Fixed
ECDH_P256_ComputeDhKeySeg()andECDH_P256_GenerateKeysSeg()argument checking across SecLib variants. FixedSecLib_AES_CMAC_PRF_128()behavior for SecLib sss variant that tolerated VK length to be 0. Removed unreachable code fromSecLib_HMAC_SHA256_Finish().[Platform] Fixed TSTMR timestamp 64 bit read compilation failure when
gPlatformTstmr32Bit_dis undefined.[NVM] Fixed initialization procedure in
InitNVMConfig()to validatestart_addrandpartition_size.[wireless_nbu] Fixed resource access issue by reverting TSTMR read restriction on NBU as underlying issue has been resolved.
[wireless_mcu][wireless_nbu] Fixed timestamp initialization to ensure a defined value when the
tstmrIdis out of range.[SecLib_RNG] Corrected copyright header in
seclib.c.[MISRA] Various MISRA and CERT-C compliance fixes in NVM module.
IEEE 802.15.4
API cleanup: remove unmaintained slotted support
support for MAC split architecture
fix condition to enter low power
minor fixes and stability improvements for connectivity_test example application
experimental support for mcxw72 NBU core
Zigbee
NCP Host Updates and fixes
R23 fixes
Device can’t establish a new TCLK through ZDO Start Key Update procedure
Security Start Key Update Request is not relayed to joining ZED in multi hop key negotiation
propagate APS ACK to end-user application
documentation updates
Known issues#
This section lists the known issues, limitations, and/or workarounds.
FRO6M Clock Stability Issue#
According to ERRATA ERR052742, the FRO6M clock is not stable on some parts. FRO6M outputs lower frequency signal instead of 6MHz when device is reset or wakes up from low power. It can impact peripherals using it as a clock source.
Impact on TSTMR Module#
The TSTMR (Time Stamp Timer) module exclusively uses the FRO6M clock source. Due to the aforementioned stability issues, avoid using TSTMR-related APIs if your application requires high-precision timing.
Recommendation#
For applications requiring precise timing, consider using alternative timer modules that support more stable clock sources.
New project wizard compile failure#
The following components request the user to manually select other components that they depend upon in order to compile. These components depend on several other components and the New Project Wizard (NPW) is not able to decide which one is needed by the user.
Note: xxx means core variants, such as, cm0plus, cm33, cm4, cm33_nodsp.
Also for low-level adapter components, currently the different types of the same adapter cannot be selected at the same time. For example, if there are two types of timer adapters, gpt_adapter and pit_adapter, only one can be selected as timer adapter in one project at a time. Duplicate implementation of the function results in an error.
Only FreeRTOS is tested for RTOS support#
This release only supports the FreeRTOS kernel and a bare-metal non-preemptive task scheduler.
Bluetooth LE#
Most sensor applications have pairing and bonding disabled to allow a faster interaction with mobile applications. These two security features can be enabled in the app_preinclude.h header file.
Bluetooth LE controller:#
The maximum Advertising data length is limited to 800 bytes.
The scanner may sporadically miss some chained packets.
When fro32k is used, the define BOARD_32KHZ_SRC_CLK_ACCURACY shall be set in application (#define BOARD_32KHZ_SRC_CLK_ACCURACY 0).
Periodic Advertising with Responses (PAwR):
Periodic Advertising with Response (PAwR) is not supported with the configuration “Subevent Interval = Number of Response Slots x Response Slot Spacing with Response Slot Spacing = 0x2”.
The feature is not functional with the Free-Running Oscillator (FRO32K); it requires a 32 KHz Crystal Oscillator with accuracy less than 50 ppm.
KW45/MCXW71: No specific issues.
KW47/MCXW72: Channel Sounding (CS): Information:
RF Bandwidth Occupancy and Connections/Channel Sounding Activities: The RF bandwidth occupancy is tightly coupled with configured activities, including the number of connections, connection event durations, the number of Channel Sounding (CS) procedures, and related CS parameters (e.g., subevent length, repeat mode). The Link Layer Scheduler is responsible for allocating RF bandwidth to these activities, optimizing bandwidth utilization. However, because each activity operates on its own timing constraints, some RF collisions are expected. This is inherent to the Bluetooth LE protocol, particularly when peripheral roles are configured, as anchor placement is controlled by the central peer devices. The application controls several timing parameters, such as connection interval and subevent length. To optimize user experience, the Link Layer expects the application to adjust these parameters to achieve the best RF bandwidth occupancy with the lowest occurrence of RF collisions.
Limitations:
RTT with Sounding Sequence is not supported.
Maximum 6 Channel Sounding procedures are supported in parallel.
Phase measurement bias is within certification range (<1.7x2πns) with KW47 EVK board. However, if different PCB or antenna matching is used, some bias may appear due to increased delay.
For experimental feature IPT(Inline PCT Transfer), only 1x1 configuration is supported.
Known issues:
When CS Subevents are configured very close from each other (<700us), some Subevents may be aborted with reason 0x3.
When CS offset is configured too close from ACL anchor point, the anchor point may not be served (TX on central or RX on peripheral will not happen). Ideally, CS Offset should be configured greater than 1ms.
RTT bias compensation:
For parts not properly configured at production (IFR blank), RTT bias is not compensated properly. Consequently, an inaccuracy of +/-2m can be observed.
Pairing procedure fails to complete after connection is established. Affects digital_key sample applications. Increase
gHost_TaskStackSize_cto1900U.Channel Sounding measurement cannot start after handover. Affects digital_key sample applications.
Zigbee#
OTA interruption is not resuming correctly (for example, when using a reset in the middle of the transfer).
Zigbee ZED RX OFF example application on FreeRTOS fails sometime.
Minor fixes and stability improvements for connectivity_test example application.
LIN New Project Wizard (NPW) issue#
The lin (LIN Driver) and lin_stack (LIN Stack Driver) drivers components should not be enabled at the same time while creating the new projects in MCUXpresso. Otherwise there will be the compiling issue.
The lin_stack (LIN Stack Driver) is not actually a driver. It is an adapt layer for LIN Stack middleware to adapt to the low level lpuart driver and cannot be used in NPW alone. So, select the LIN Stack middleware and then the lin_stack is selected automatically since it is required by LIN Stack middleware. Besides, customer need to add the lin_cfg.c/h in application layer for user definition of frame data and add FSL_SDK_LIN_STACK_ENABLE=1 in MCUXpresso preprocessor, otherwise the compiling of LIN Stack will report error.
Flash ROMAPI#
Note that:
If using ROM API for internal flash or SPI NOR operation, reserve RAM location 0x200030A0 - 0x200032CF (
0x300030A0-0x300032CF).If using kb API, reserve
0x20002000-0x200032FF(0x30002000-0x300032FF).
Other limitations#
The following Connectivity Framework configurations are Experimental and not recommended for mass production:
Power down on application power domain.
GenFSK
Connectivity_testapplication is not operational with Low Power enabled.Serial manager is only supported on UART (not I2C nor SPI).
If the FRO32K is configured as the clock source of the CM33 Core then the debug session will block in IAR CMSIS-DAP while debugging. Use a lower debug wire speed, for example 1 MHz instead of the default one.
In IAR, the option is in Runtime Checking -> Debugger -> CMSIS DAP -> Interface -> Interface speed.
Annexure: Zigbee PRO 2023 dynamic link key negotiation#
There are two types of DLK negotiations. When the requester of a new TCLK is not yet authorized in the network (does not have the network key), the process is called off-network DLK negotiation. This occurs after the parent replies with the Network Commissioning Response. Once a node is fully joined and authorized, it can request a new TCLK from the trust center. If both nodes, the TC and the requester, supports DLK, they shall use the on-network DLK Negotiation method instead of the Zigbee 3.0 Request Key method. The on-network DLK can be triggered using the Node Descriptor request from the initiator to the trust center. The stack appends the Supported Key Negotiation method TLV to the request and the response contains the Selected Key Negotiation method TLV. If the Trust Center approved the DLK, the stack of the initiator initiates the key negotiation process.
The coordinator R23 and Router R23 examples contain code which activates the DLK, off- and on-network. The code is provided for experimentation as the DLK feature set is not fully implemented nor tested. It is enabled by changing the following macro:
**\#ifdef** R23_UPDATES
/* Uncomment this to enable DLK with AES-128 */
//#define R23_DLK_AES128_ENABLE 1
**\#endif**
AIB attributes#
The AIB attribute apsSupportedKeyNegotiationMethods is a bit mask, which indicates the set of supported key negotiation methods by the local device. The set of valid values corresponds to the Supported Key Negotiation Methods Global TLV, which can be found in the ZigbeeCommon/Include/tlv.h file. Only the Hash AES-MMO-128 method is supported in this experimental preview.
**\#define** ZPS_TLV_G_SUPPKEYNEGMETH_STATKEYREQ (1) /* Zigbee 3.0 Mechanism */
**\#define** ZPS_TLV_G_SUPPKEYNEGMETH_SPEKEAES128 (2) /* SPEKE using Curve25519 with Hash AES-MMO-128 */
**\#define** ZPS_TLV_G_SUPPKEYNEGMETH_SPEKESHA256 (4) /* SPEKE using Curve25519 with Hash SHA-256 */
At a minimum the device SHALL support one method, the key request method.
The AIB attribute u8SharedSecretsMask is a bit mask which indicates the set of supported shared secrets by the local device. The set of valid values corresponds to the supported key negotiation methods global TLV, which can be found in the ZigbeeCommon/Include/tlv.h file. Only the values (1) and (4) are supported, together with the default apscWellknownPSK.
**\#define** ZPS_TLV_G_PSK_SYMMETRIC (1) /* Symmetric authentication token */
**\#define** ZPS_TLV_G_PSK_INSTALLCODE (2) /* Pre-configured link-ley derived from installation code */
**\#define** ZPS_TLV_G_PSK_PASSCODE (4) /* Variable-length pass code (for PAKE protocols) */
**\#define** ZPS_TLV_G_PSK_BASICAUTH (8) /* Basic Authorization Key */
**\#define** ZPS_TLV_G_PSK_ADMINAUTH (16) /* Administrative Authorization Key */
Setting these attributes in the AIB is done using the API ZPS_teStatus ZPS_eAplAibSetKeyNegotiationOptions(uint8 u8Methods, uint8 u8SharedSecrets). The return value is always ZPS_E_SUCCESS.
Joiner TLVs#
The device wanting to join an R23 network shall send the Network Commissioning Request command communicates information to the parent device with the Joiner TLVs directly in the message. The device shall include the Joiner Encapsulation Global TLV. In a multi-hop joining scenario the Trust Center and parent device will not be the same entity. Information about the sending device is communicated to the Trust Center through the Joiner Encapsulation Global TLV, which will be relayed in its entirety in the Update Device message. When a device creates the Joiner Encapsulation Global TLV it shall contain the following TLVs inside it:
Fragmentation Parameters Global TLV
If the device is not rejoining: Supported Key Negotiation Methods Global TLV
The Router R23 example contains the following code to set the Joiner TLVs before calling the stack initialization. These TLVs will be used by the stack as additional payload in the joining command. Their content is configured independently from the AIB attributes configuring the local node’s key negotiation options.
TLV_ENCAPS(g_sJoinerTlvs,
APP_SIZE_JOINREQ_TLV,
m_, tuTlvTestSpecific1,
m_, tuFragParams,
m_, tuSupportedKeyNegotiationMethods,
m_, tuTlvTestSpecific2) =
{
.u8Tag = ZPS_TLV_G_JOINERENCAPS, .u8Len = APP_SIZE_JOINREQ_TLV - 1,
/* This TLV is sent inside the Joiner Encapsulation */
{ .u16ZigbeeManufId = 0x1234, .au8Extra[0] = 0xAA, .au8Extra[1] = 0xBB,
.u8Tag = ZPS_TLV_G_MANUFSPEC, .u8Len = sizeof(tuTlvTestSpecific1) - 1 - ZPS_TLV_HDR_SIZE
},
{ .u16NodeId = 1, .u8FragOpt = 2, .u16InMaxLen = 10,
.u8Tag = ZPS_TLV_G_FRAGPARAMS, .u8Len = sizeof(tuFragParams) - 1 - ZPS_TLV_HDR_SIZE
},
{ .u8KeyNegotProtMask = ZPS_TLV_G_SUPPKEYNEGMETH_STATKEYREQ
| R23_DLK_KEY_PROTO_NEGOTIATION_MASK,
.u8SharedSecretsMask = R23_DLK_SHARED_SECRETS_MASK,
),