Device Management Client 4.9.0
This release includes general enhancements and security fixes.
Important note on testing before upgrading:
Before upgrading deployed devices to a new version of Device Management Client, you must test that you can:
- Perform a firmware-over-the-air update of a device with the new firmware image.
- Perform an additional firmware-over-the-air update on the device with the new firmware image to check that the new firmware image is updateable.
Device Management Client example
- [Mbed OS] Increased
SN_COAP_BLOCKWISE_MAX_TIME_DATA_STORED
stored time to 15min for mesh to account for long retransmission chains during blockwise transfers. - [Mbed OS] Updated ISM43362 Wi-Fi driver to #09a71bf with fix for mutex handling.
- Removed unregister resource
5000/0/1
from the application. Device Management Client library now implements OMA resource1/0/4
, which supports deregistration. - Removed delta-tool from the application.
- The current supported version (2.2.0 or later) of manifest-tool provides the functionality internally.
- Updated cURL to 7.76.0 in
pal-platform
. - Fixed Atmel SE configuration.
- Updated to Mbed OS 6.9.0.
- [Linux] Updated Mbed TLS to 2.25.0.
Factory Configurator Client example
- Updated to Mbed OS 6.9.0.
- [Linux] Updated Mbed TLS to 2.25.0.
Device Management Client
- Fixed a race condition in the handling of message status callback (particularly the handling of
MESSAGE_STATUS_SENT
). Previously, it was getting reported just before the operation had finished successfully. - Added support for TLV to single resource.
- PUT to a resource 1/0/1 now triggers a registration update.
- POST to a resource 1/0/4 now triggers a deregister process.
- Removed deprecated STL APIs. These APIs and classes were removed:
SimpleM2MResource*
.MbedCloudClient::set_device_resource_value(M2MDevice::DeviceResource resource, const std::string &value)
.MbedCloudClient::register_update_callback(string route, SimpleM2MResourceBase* resource)
.
- Added new API
MbedCloudClient::alert()
to send high-priority messages.- In alert mode, Device Management Client halts all data sendings/active operations and waits for priority data to be sent.
- Added new status callback API
MbedCloudClient::on_status_changed()
, which replaces these callback APIs:MbedCloudClient::on_registered()
.MbedCloudClient::on_unregistered()
.MbedCloudClient::on_registration_updated()
.- The old APIs are deprecated and will be removed in a future release.
- Added option to reduce traffic in bootstrap flow:
MBED_CONF_MBED_CLIENT_BOOTSTRAP_PIGGYBACKED_RESPONSE
flag added to control whether delay or piggybacked response is used. By default, piggybacked response type is used.- Piggybacked response can be disabled by setting
mbed-client.bootstrap-piggybacked-response" : 0
inmbed_app.json
.
- Fixed register and register update content type to
COAP_CT_LINK_FORMAT
(Core Link Format). - Fixed a memory leak when
setup()
andclose()
were called multiple times in row.
Device Management Update client
- Removed the
need_reboot = false
option in thefota_component_add()
API. When registering a component, theneed_reboot
option must always betrue
. - Fixed storage erase calculations for boards with a non-uniform sector map.
- Fixed the FOTA defer download behavior. Device registration update won't cause the client to resume FOTA download after the application calls the
fota_app_defer()
API.
Platform Adaptation Layer (PAL)
- Added new PAL_DNS_API_VERSION 3. It's an asynchronous DNS API that can return multiple DNS results.
- This feature is currently implemented only for the Linux platform and is disabled by default. You can enable it by defining
PAL_DNS_API_VERSION=3
. In future releases, this feature will be enabled by default for Linux.
- This feature is currently implemented only for the Linux platform and is disabled by default. You can enable it by defining
Yocto changes
Changed the default compilation profile to debug as an a workaround for FORTIFY_SOURCE compilation.
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. - Update client full resume doesn't work. If the image download was interrupted, a full download starts from the beginning.
- Update client image encryption feature is going to be improved in the next PDMC release with a bootloader change. Customers that are planning to release an Mbed OS based device to production, that is using an external flash, are advised to wait for the next PDMC 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 isn't 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.
Zephyr OS
- Asynchronous DNS does not work well, and the device fails to reconnect to the cloud if some of the pods are restarted. In such a scenario, the device needs to be restarted.
To address this issue, the default DNS settings should be overridden to synchronous DNS in the application level by setting the
DNS API
selection to POSIX.
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 with 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 with 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 file for details.