Device Management Client 4.7.0
New features
- Mbed OS 6.5.0 support.
- Connection ID support, which reduces DTLS handshake traffic between the client and the cloud during reconnection. See the Device Management Client section for more details.
- Improved GET API, which handles large files (>65KiB), can retrieve large media files from endpoints.
Device Management Client example
- Updated to Mbed OS 6.5.0.
- Updated Mbed TLS to 2.22.0 in
pal-platform
. Nucleo F411RE
andNucleo F303RE
targets now use the Mbed TLS non-volatile seed mechanism instead ofmbedtls_psa_inject_entropy
. This reduces the ROM size of these targets by 4KiB.- All targets use standard C libraries instead of the small C libraries. This prevents potential issues with certain drivers that may have dependencies on
c_lib
implementation. Future releases will further optimize the configurations. minimal-printf
is enabled by default in Mbed OS 6. This means thatfloating-point
support is disabled by default. For information about changing these configurations, seeminimal-printf
in the Mbed OS documentation.
- All targets use standard C libraries instead of the small C libraries. This prevents potential issues with certain drivers that may have dependencies on
- Explicitly defined the minimum programming size (
qspif.QSPI_MIN_PROG_SIZE
) forDISCO_L475VG_IOT01A
to be1
. In Mbed OS, the default QSPIF value was changed to 256, which breaks backward compatibility with existing bootloaders (see https://github.com/ARMmbed/mbed-os/issues/13795). - Fixed bugs that caused firmware updates on
DISCO_L475VG_IOT01A
to fail after the factory provisioning flow. - Removed support for targets that Mbed OS 6 no longer supports:
- LPC55S69.
- Ublox EVK Odin W2.
- Nucleo F411RE as a Platform Security Architecture (PSA) target.
- Nucleo F303RE. Nucleo F411RE is the reference for non-TRNG usage with Device Management Client.
- Improved Wi-SUN mesh support.
- Added support for multicast full-image and delta firmware updates.
- Removed implementation for STARTUP delays put in place earlier for mesh. The client now handles this logic internally.
- Added support for the Pelion Network Management feature for mesh to provide mesh statistics.
- Added mesh support for the
MIMXRT1050_EVK
target. - All Wi-SUN targets are collected in the
mesh_wisun.json
configuration file in the root folder.- The supported targets are
NUCLEO_F429ZI_WISUN
,NUCLEO_F429ZI_WISUN_SMALL
,MIMXRT1050_EVK_WISUN
andMIMXRT1050_EVK_WISUN_SMALL
. - Optimized
SMALL
variants for mesh networks that consist of fewer than 10 devices.
- The supported targets are
- Cleaned up memory-printing features.
- Changed the name of the
MBED_HEAP_STATS_ENABLED
memory test feature flag toMEMORY_TESTS_HEAP
to avoid conflict with other components that use HEAP features. - Enabling HEAP printing for Mbed OS requires defining both
-DMBED_HEAP_STATS_ENABLED
and-DMEMORY_TESTS_HEAP
. - Removed stack-printing functionality.
- Changed the name of the
- Cleaned up obsolete files.
- Removed obsolete compiler profiles in the
profiles
folder. - Removed obsolete Mbed OS configurations for
ESFS/SOTP
.
- Removed obsolete compiler profiles in the
- Automatic application reboot when frequent network issues occur is now disabled by default for mesh and Linux targets. This feature is controlled using the
MAX_ERROR_COUNT
application macro.- This application logic is an example of how an application can try to recover from potentially unrecoverable stack issues. Usage of such features must be considered as part of the product design.
Factory Configurator Client example
- Updated to Mbed OS 6.5.0.
- Added the
MIMXRT1050_EVK
target. NUCLEO_F411RE
targets now use the Mbed TLS non-volatile seed mechanism instead ofmbedtls_psa_inject_entropy
. This reduces the ROM size of these targets by 4KiB.- All targets use standard C libraries instead of the small C libraries. This prevents potential issues with certain drivers that may have dependencies on
c_lib
implementation. Future releases will further optimize the configurations. minimal-printf
is enabled by default in Mbed OS 6. This also means thatfloating-point
support is disabled by default. For information about changing these configurations, seeminimal-printf
in the Mbed OS documentation.
- All targets use standard C libraries instead of the small C libraries. This prevents potential issues with certain drivers that may have dependencies on
- Explicitly defined the minimum programming size (
qspif.QSPI_MIN_PROG_SIZE
) forDISCO_L475VG_IOT01A
to be1
. In Mbed OS, the default QSPIF value was changed to 256, which breaks backward compatibility with existing bootloaders (see https://github.com/ARMmbed/mbed-os/issues/13795). - Fixed bugs that caused firmware updates on
DISCO_L475VG_IOT01A
to fail after the factory provisioning flow. - Removed support for targets that Mbed OS 6 no longer supports:
- LPC55S69.
- Ublox EVK Odin W2.
- Nucleo F411RE as a Platform Security Architecture (PSA) target.
- K64F as a Platform Security Architecture (PSA) target. SDA still supports the K64F.
Secure Device Access Client example
Updated to Mbed OS 6.5.0.
Device Management Client
- The new Connection ID (CID) feature eliminates unnecessary DTLS handshake traffic between the client and the cloud during reconnection. To have the client persist the CID during reboot, the application can call the
pause()
API before shutting down the application. This call stores the CID context in persistent memory for use after reboot. The client then uses the CID to establish a secure connection to the cloud without requiring a DTLS handshake. ThePAL_SSL_SESSION_RESUME
feature flag, which controls this feature, is enabled by default for Linux and Mbed OS, and disabled by default for other platforms. - Added a new GET callback API for handling large (>64KiB) data requests from the device.
- The new
set_read_resource_function(read_value_callback callback, void *client_args)
API allows the application to provide an arbitrary-sized payload to the client in blocks matching the client block-wise payload size. This API also optimizes memory usage when sending a large amount of data stored persistently on the device because it only needs to allocate enough memory for the single block-packet. - Deprecated the
set_resource_read_callback()
andset_outgoing_block_message_callback()
APIs. These APIs are replaced byset_read_resource_function()
.
- The new
- Removed the deprecated
M2MFirmware
-related code from Device Management Client. - Fixed the internal handling of the
MBED_CLIENT_DISABLE_BOOTSTRAP
,MBED_CLOUD_CLIENT_DISABLE_REGISTRY
andDISABLE_RESOURCE_TYPE
flags. - Fixed an issue where failure to send a delayed response resulted in a resource being inaccessible. In this scenario, the client would keep responding with
PRECONDITION_FAILED
, which translates to a 412 error in the REST API. The client now removes the message from the list if delivery fails. - Fixed several runtime error tracings from the library.
- Fixed several compilation warnings.
- Updated Mbed CoAP to v5.1.8.
- Optimized the client registration message payload to report only critical information needed for end-to-end performance. This optimized client internal resources related to connectivity and firmware update, saving 25% of the register-message payload generated by the library.
Platform Adaptation Layer (PAL)
- The entropy injection feature for KVStore configuration has now compatibility with Mbed OS 6.
- For non-PSA non-TRNG configuration the client no longer uses
mbedtls_psa_inject_entropy
API, instead a non-volatile seed mechanism of Mbed TLS is used. - For PSA configurations,
mbedtls_psa_inject_entropy
is still used.
- For non-PSA non-TRNG configuration the client no longer uses
- PAL Crypto layer has been removed. The client uses Mbed TLS directly.
- CMake fixes for missing dependencies.
- Configuration: Set
PAL_USE_FILESYSTEM
to be 1 only for Linux platforms.
Known issues
- The earlier revisions of LPCXpresso 546XX have different QSPI chip than some of the later revisions. The application needs to specify the chip at compile-time. Select the correct QSPI chip in the board configuration file (
define_NXP_LPC54628.txt
). This depends on the board revision. - [PAL tests] PAL filesystem and PAL update tests currently support external SD card storage. Support for other storage types will be added in future releases.
- [PAL tests] PAL TLS test (
TCPHandshakeWhileCertVerify_threads
) is not working on Mbed OS 5.13.0.
Mbed OS
We recommend that you read the Mbed OS release notes for known issues and their latest status.
- PSA is in preview level and as such not ready for production yet.
- You cannot update the pre-compiled PSA binary through firmware update. You can only update the application itself.
- K64F:
- You can use the board in PSA mode (without real hardware PSA implementation).
- The configuration file that allows this is placed under the
configs-psa
folder in the example. - The PSA mode adds RAM consumption (static +3.5KB) and flash/ROM consumption (+18.5KB).
- Arm and partners are optimizing the solution in future releases.
Linux
- Firmware update installation of very large images on Raspberry Pi3B or Pi3B+ may result in a
mmc0 timeout
failure. This is a generic Raspberry Pi3 issue. See RPI issue #2392. - Firmware update from one Linux distribution version to another does not work. For example, firmware update from Yocto distribution Morty to Rocko is not currently possible, as there are Linux version-dependent files (device tree) in the
BOOT
partition. Therefore, you must update within one major version of a distribution. glibc
versions 2.23 and 2.24 have a bug in thread creation. It can cause random crashes with Linux.- If possible, update
glibc
to version 2.25 (or later). See sourceware issue 20116 for details. - We have implemented a workaround for this issue to decrease its likelihood. This issue may still occur under certain circumstances.
- If possible, update
- The Device Management Client application must run as
root
to have access rights to perform the firmware update.- This is not the most secure way to handle this issue, so a more secure implementation will come later.
- Yocto distribution has only been tested in developer certificate mode.
- Yocto distribution used does not yet support Raspberry Pi4.
Device Management Client Third Party IP report
Device Management Client uses some third-party IP (TPIP) components. This table lists the TPIP and sources:
Original | License | Description |
---|---|---|
bsdfiff | BSD 2 clause | Diff algorithm used for delta update image generation. |
LZ4 | BSD 2 clause (lz4.c and lz4.h under /lib in LZ4) | Compression algorithm used for compressing delta update images. |
TinyCBOR | MIT | Factory configurator client (FCC) uses TinyCBOR, which is a constrained node implementation of CBOR in C, with slight modifications. The code is at mbed-cloud-client/tinycbor and in a standalone repository in GitHub. |
Unity | MIT | Platform Adaptation Layer (PAL) tests use Unity framework from ThrowTheSwitch. The code is at mbed-cloud-client/mbed-client-pal/Test/Unity. |
NXP SDK
Additional TPIP for NXP SDK:
Original | License | Description |
---|---|---|
Amazon FreeRTOS kernel v10.2 | MIT | FreeRTOS kernel from Amazon. |
lwIP | Modified BSD | Lightweight IP stack. |
Platform support files | [BSD-3 Clause] | Platform specific files in platform/NXP |
LPC54608J512 Linker script | [BSD-3 Clause] | Linker script for GNU C. |
LPC54xxx generated configuration files | [BSD-3 Clause] | Board-support specific generated files in pal-platform/SDK/LPCXpresso54628/generated |
LPC54xxx board support software | Copyright NXP | Board support software for LPC5400-series - we do not provide this, you must download this via MCUXpresso SDK Builder yourself. |
MIMXRT106XXX Linker script | [BSD-3 Clause] | Linker script for GNU C. |
EVK-MIMXRT1060 generated configuration files | [BSD-3 Clause] | Board-support specific generated files in pal-platform/SDK/EVK-MIMXRT1060/generated |
EVK-MIMXRT1060 board support software | Copyright NXP | Board support software for EVK-MIMXRT1060 - we do not provide this, you must download this via MCUXpresso SDK Builder yourself. |
Keil SDK
Original | License | Description |
---|---|---|
Platform support files | [BSD-3 Clause] | Platform specific files in platform/KEIL |
Platform adaptation layer files | MIT | Platform adaptation layer files in Source/Port/Reference-Impl/OS_Specific/RTX_MW |
Renesas SDK
Additional TPIP for Renesas SDK (FSP):
Original | License | Description |
---|---|---|
Amazon FreeRTOS kernel v10.3 | MIT | FreeRTOS kernel from Amazon. |
Renesas Flexible software Package (FSP) v1.0.0 | Copyright (c) Renesas | Board support package for RA6M3 boards. Running pal-platform.py will git clone this repository to your work area under pal-platform/SDK/Renesas_EK_RA6M3/fsp . |
Renesas e2studio generated configuration files | Copyright (c) Renesas | Renesas e2studio generates a number of files, available in pal-platform/SDK/Renesas_EK_RA6M3/e2studio_gen . |
lwIP | Modified BSD | Lightweight IP stack. |
Platform support files | [BSD-3 Clause] | Platform specific files in platform/Renesas_EK_RA6M3 |
Platform adaptation layer files | MIT | Platform adaptation layer files in Source/Port/Reference-Impl/OS_Specific/Renesas_EK_RA6M3 |
Secure Device Access (SDA)
If you enable Secure Device Access (SDA), you will use some additional TPIP:
Original | License | Description |
---|---|---|
cose-c | BSD-3 clause | IETF Concise Binary Object Representation (CBOR) Encoded Message Syntax (COSE), a copy of this library is located under mbed-cloud-client/tree/master/secure-device-access-client/cose-c. |
Mbed-OS
You also get more TPIP with the Mbed OS release itself. See their LICENSE.md for details.