Device Management Client 4.5.0
New features
Device Sentry for Mbed OS and Linux.
Device Management Client example
- Added support for the
MIMXRT1060-EVK
board with the NXP FreeRTOS SDK. - Increased the Renesas
RA6M3
Ethernet buffers from 1+1 to 4+4 to increase stability. - Updated to Pelion E2E test library v0.2.6.
- Added a network error counter that resets the device if too many errors have occurred
- Added a sleeping device example enabled with the
MBED_CLOUD_CLIENT_TRANSPORT_MODE_UDP_QUEUE
option. The sleepy device pauses the client when it goes to sleep. If the client is paused when the application tries to send a notification, it first resumes the client and then sends the notification. - Added support for Device Sentry feature in Mbed OS and Linux.
- Mbed OS - the feature is enabled for
K66F
board. - Linux - to enable the feature, pass
ENABLE_DEVICE_SENTRY
flag to cmake.
- Mbed OS - the feature is enabled for
- Breaking changes (due to the SE
ATECC608A
driver update, the application is not compatible with previous driver releases):- Updated SE ATECC608A driver
COMPONENT_ATECC608A.lib
. - Updated mbed-cloud-client-platform-common
platform.lib
to include adaptation for the new SE ATECC608A driver.
- Updated SE ATECC608A driver
- Updated
EK-RA6M3
to use RenesasArm® Secure Boot Solution for RA6M3 MCU Group
version 1.1.0. - [Mbed OS] Added explicit device key generation. This is for future compatibility with Mbed OS 6.
Factory Configuration Client example
Breaking changes (due to the SE ATECC608A driver update, the application is not compatible with previous driver releases):
- Updated SE
ATECC608A
driverCOMPONENT_ATECC608A.lib
. - Updated mbed-cloud-client-platform-common
platform.lib
to include adaptation for the new SE ATECC608A driver.
Device Management Client
- Updated Mbed CoAP to v5.1.5.
- Fixed a bug that caused a transmission of a notification outside the threshold values after a registration update.
- Added support to define a custom server URI port in the application.
MBED_CLOUD_CLIENT_CUSTOM_URI_PORT
is a build-time optional parameter and is not set by default. When you define this parameter, the client connects to Device Management over this CoAP port rather than over the one provided through factory or developer provisioned URI port. The application must ensure that the provided port is open on the server side to accept an incoming CoAP connection. - Fixed a client crash issue caused by wrong order in the initializing event scheduler. In resource creation, some of the resources may be created as auto observable. Those resources must have a certain base component like Timer created. Timer creation requires an event scheduler created beforehand. Resource creation is an operation independent on instantiating Device Management Client. This means that a resource may be created before the client stack is instantiated, and it is highly dependent on the order of APIs calls. To resolve this issue, we added the scheduler initilization call in the
M2MBase
constructor as a fail-safe mechanism, so that the order of API calls does not matter. - Fixed the issue of reporting an error callback of
MESSAGE_STATUS_SEND_FAILED
when notification sending fails because of a network issue and the internal CoAP retransmission fails. This is especially helpful for UDP and UDP-QUEUE-based client where packets can be lost easily and should be informed to application for booking purposes. However, the notification will still be stored internally in client and it will attempt to resend it on next successful reconnection to Pelion Device Management. - Added a compile-time check to prevent configuring the client with
LIFETIME
values below 60 seconds, which is the minimum allowed. - [Mbed OS] Changed the default storage location for update to
ARM_UCP_FLASHIAP
. - Added support for the Device Sentry feature.
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. DISCO_L475VG_IOT01A
production and update flow is broken due to RoT not being initialized correctly.- Developer flow works correctly with hard-coded RoT. However, that is not suitable for production.
- We are working on a fix, but for any urgent needs please contact us for a workaround.
- [Mbed OS] The current version of the Atmel secure element driver does not support IAR compiler.
- [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. - Client resource size is limited to 64KiB. For example, large binary objects (opaque resources) cannot exceed 64KiB.
- Upload large pictures or other large binary objects to a different hosting service and use the LwM2M resources for passing the URI for that type of objects.
- Alternatively, you can split a large object into chunks, and expose the chunks through multiple opaque resource instances.
- [Mbed OS] Neither firmware update nor production flow is currently working with
Nucleo F303RE
. This is most likely due to issues in SPI flash. - [Mbed OS] The device may stall at certificate renewal when compiling with the PSA configuration.
- [Mbed OS]
Nucleo F429ZI
may hardfault with debug profile. The device may also halt at runtime. - The client code has several unresolved coverity issues that will be fixed in future releases.
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.
- NXP LPC55S69:
- The board has only 640KB flash. PSA takes 192KB out of it.
- You can use the Client example (with firmware update and bootloader) with
release
profile due to the flash size limitation. - Only ARMC6 is supported for compilation.
- 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.