Device Management Client 4.8.0
Device Management Client example
- Updated to Mbed OS 6.8.0.
- Updated cURL to 7.75.0 in
pal-platform
. - Updated parsec-se-driver to 0.4.0.
- Updated to Pelion end-to-end test library v0.2.10.
- Removed support for SXOS platform in the application.
- Consolidated the K64F ESP8266 configuration to wifi_esp8266_minimal.json.
- Removed K66F PSA.
- DISCO-L475VG-IOT01A target bootloader increased from 36kB to 38kB.
- Introduction of upgraded Update client:
-
The new features of the upgraded Update client:
- Component update.
- Resume after power failure.
- Defer firmware update installation.
- Candidate encryption on external storage.
-
Configured Mbed OS non-mesh and Linux targets to use the new upgraded Update client.
Note: To use legacy Update client in your Mbed OS non mesh target, please refer to the configurations in PDMC example 4.7.1.
-
Legacy Update client is still used in Mbed OS mesh targets and SDK's targets (NXP, Renesas).
-
Upgraded update client bootloaders are located in
prebuilt-bl
folder. Legacy bootloaders are located in tools folder. -
On the K64F, NUCLEO-F411RE and DISCO-L475VG-IOT01A targets, the update candidate is stored encrypted on the external storage encrypted.
-
Created a migration guide to migrate legacy Update client to the new Update client.
Note: After you migrate to the new Update client, only the "Component update" feature is available. To use other features of the new Update client, reflash the device with the new configuration and new bootloader.
-
Factory Configurator Client example
- Updated to Mbed OS 6.8.0.
- Updated cURL to 7.75.0 in
pal-platform
. - Updated parsec-se-driver to 0.4.0.
- Removed support for SXOS platform in the application.
- K66F PSA has been removed.
- DISCO_L475VG_IOT01A target bootloader was increased from 36kB to 38kB.
- Introduction of upgraded bootloader that is coming together with upgraded Update client.
- Upgraded update client bootloaders are located in prebuilt-bl folder. Legacy bootloaders are located in tools folder.
Device Management Client
- Client internal timers were not using event IDs correctly. Previously, if two timers were running at the same time, cancel might have stopped the wrong timer.
- Added fallback timer for asynchronous DNS requests (
PAL_DNS_API_VERSION
= 2). The client waits 10 minutes for a response to DNS query before aborting the request and raising a DNS error event. - Improved client bootstrap recovery handling.
- The client doesn't go to sleep if update register, unregistering or reconnecting is ongoing.
- Added LwM2M version as part of the registration message.
- Added API to get M2MServer instance.
- tinycbor: Removed the default usage of asserts in input validation. Instead of asserting, the library returns an error if an invalid cbor input is given. Introduced a new
TINYCBOR_USE_ASSERT
flag to save on code size. This saves approximately 200 bytes. - Deprecated the
MBED_CLIENT_USER_CONFIG_FILE
macro. An application only needs to useMBED_CLOUD_CLIENT_USER_CONFIG_FILE
. - Allow Write-Attributes to GET resource.
- Parent resource of resource-instance also set observable flag. Now also parent resource can be observed.
- Added API
m2mbase::set_confirmable(bool confirmable)
to choose whether a notification is sent in a confirmable or nonconfirmable way. By default, the confirmable message type is used. - M2MDevice now accepts PUT/POST requests and can also be observed.
- Fixed an issue that could cause a crash if there were a lot of network traffic during the
pause()
call. - Do not report notification sending timeout to application. Notification sending can't fail once message has been because since they have own queue for resending.
- Removed deprecated notification delivery status APIs. Use
M2MBase::set_message_delivery_status_cb
, instead. - Changed default content type from
COAP_CONTENT_OMA_TLV_TYPE_OLD
toCOAP_CONTENT_OMA_TLV_TYPE
. - Deprecated
kcm_ecdh_key_agreement()
API for PSA configuration, due topsa_set_key_enrollment_algorithm()
API deprecation in Mbed Crypto.
Device Management Update client
Add precursor hash check to delta updates. Delta updates generated against wrong original firmware now fail faster.
-
Mesh update: Critical messages are now sent multiple times to improve success rate for Mesh campaigns.
Note: Due to the multiple message sending, the minimum configurable activate delay is 60min. The border router enforces the minimum value by silently reverting to 60min delay, but longer delays remain unchanged.
-
Fixed handling of duplicate messages during the failed bootstrap recovery phase. Client was failing internally with a
NotAllowed
error instead of proceeding to bootstrap.
Device Management Update client next generation (FOTA)
- Fixed a bug that prevented update running successfully after devices were provisioned in the production flow.
- Fixed Linux compilation with "Client URL" (CURL) dynamic linkage.
- Fixed update flow when the update candidate version is 0.0.10.
- Changed FOTA application interface APIs:
fota_app_on_install_authorization(uint32 token)
->fota_app_on_install_authorization()
(removed token).fota_app_on_download_authorization(uint32_t token, ...)
->fota_app_on_download_authorization(...)
(removed token).fota_app_authorize_update()
->fota_app_authorize()
(reverted to the deprecated API).fota_app_reject_update()
->fota_app_reject()
(reverted to the deprecated API).fota_app_defer_update()
->fota_app_defer()
(reverted to the deprecated API).
- On Linux targets, all FOTA related files (candidate, header and so on) were moved to the the configuration directory (PAL/KVstore).
- Require defining
MBED_CLOUD_CLIENT_FOTA_LINUX_SINGLE_MAIN_FILE
in Linux MCCE, Testapp or any Linux app that has a single file update.
Platform Adaptation Layer (PAL)
- [Linux] Fix async sockets after reboot done with execv. After reboot with execv signal, the handler doesn't return, and signals might be blocked. Because the signal mask is inherited, you need to explicitly unblock SIGIO and SIGUSR1.
- Added a compile-time check to require the mandatory Mbed TLS flags are defined when the Connection ID feature (
PAL_USE_SSL_SESSION_RESUME
) is enabled.
Known issues
- The earlier revisions of LPCXpresso 546XX have a 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 file system 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. - Atmel secure element is not configured properly in the Device Management Client example.
To enable the feature, add"mbed-cloud-client.secure-element-support" : 1
to theconfigs-psa/eth_v4_with_se_atmel.json
file. This will be fixed in next release.
Mbed OS
We recommend 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 can't update the precompiled 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 because of 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 its LICENSE.md for details.