Mistake on this page? Email us

Device Management Client 4.0.0


  • Support for PSA Crypto API v1.0b3 in PSA configurations.
  • Support for Secure Storage with PSA with Linux, too.
  • Support for UNISOC SXOS SDK v8p2.1 for UIS8908A NB-IoT board.
  • Mbed OS - compatibility with Mbed OS 5.14.0.
  • Mbed OS - support for STM Discovery L475VG IOT01A board.
  • Improved support for congested, long latency network registration with configurable random delay to registration.

Device Management Client example

  • Updated to Mbed OS 5.14.0.
  • [Linux] Updated Mbed TLS to 2.19.1.
  • The example application initialization is now done in multiple steps. This ensures the succcessful initialization of the Device Management Client library. It needs to be properly initialized before the memory intensive components (for example nanostack mesh stack).
  • Removed CY8CKIT_062_WIFI_BT_PSA, which is no longer supported starting from Mbed OS 5.13.1.
  • [Linux] Fixed busy-loop when stdin is not connected.
  • Added default behavior for optionally created Factory Reset Resource located under the Device Object /3/0/5.
  • You can overwrite both Reboot and Factory Reset Resource default behavior by implementing corresponding handler functions.
  • Added support for Discovery L475VG IOT01A target board (configs/wifi.json).
  • Added PSA support for NUCLEO_F411RE target board (configs-psa/wifi.json).
  • Added PSA support for Linux (define_linux_psa.txt).
  • Changed NUCLEO_F411RE Wi-Fi configuration to use ESP8266 module instead of the deprecated X-Nucleo IDW01M1.
  • Unified Wi-Fi configuration files. configs/wifi.json and configs-psa/wifi.json now include all supported Wi-Fi configurations except the minimum configuration example, which is still in configs/wifi_esp8266_minimal.json.
  • New application feature to introduce random delay for Device Management Client registration after the network connection has been established. You can use this feature to stabilize large mesh-type networks with high latency and limited bandwidth. By default, it is enabled for mesh-type networks and disabled for other configurations. To enable the random delay, define STARTUP_MAX_RANDOM_DELAY in seconds.

Factory Configurator Client example

  • [Mbed OS] Updated to Mbed OS 5.14.0.
  • [Mbed OS] We now officially support Platform Security Architecture (PSA) on V7 single boards, including K64F, K66F, and NUCLEO_F411RE.
  • [Mbed OS] Added support for the Discovery L475VG IOT01A target board.
  • [Mbed OS] Removed CY8CKIT_062_WIFI_BT_PSA, which is no longer supported starting from Mbed OS 5.13.1.
  • [Linux] Updated to Mbed TLS 2.19.1.
  • Added support for UNISOC SXOS SDK v8p2.1 for the UIS8908A NB-IoT board.

Secure Device Access Client example

  • [Mbed OS] Updated to Mbed OS 5.14.0.
  • [Linux] Updated to Mbed TLS 2.19.1.

Device Management Client

  • Added a new API init() to MbedCloudClient class. You can use this optional API for two-phased memory allocation when initializing the client. It allows the example application to resolve out-of-memory issues during the initialization of the client library.

  • Removed a redundant switch in M2MFirmware class get_resource function.

  • Updated Mbed CoAP to 5.1.1.

  • Fixed the Resource /1/0/7 to return the correct binding mode when trying to GET the value of the Resource using a REST API call.

  • Increased the Device Management Client initial reconnection delay to have range of 10 to 100 seconds.

  • Increased the MBED_CLIENT_TCP_KEEPALIVE_INTERVAL to nine minutes.

  • Implemented DTLS timer handling for handshake.

  • When Device Management Client is compiled with the PSA configuration, it uses PSA-protected storage APIs instead of:

    • KVStore in Mbed OS.
    • ESFS/SOTP for non-Mbed OS platforms.

    Note: Both storage types above are still used in the non-PSA variant of Device Management Client.

Factory configurator client

  • Support for UNISOC SXOS SDK v8p2.1 for UIS8908A NB-IoT board.

Platform Adaptation Layer (PAL)

  • Improved support and proper timer logic for UDP/DTLS.
  • PSA Crypto API v1.0b3 support.
  • Support for UNISOC SXOS SDK v8p2.1 for UIS8908A NB-IoT board.

Known issues

  • [PAL tests] PAL filesystem and PAL update tests currently support external SD card storage. Support for other types of storage 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 64 KiB. For example, large binary objects (opaque resources) cannot exceed 64 KiB.
    • For example large pictures (or other large binary objects) should be uploaded to a different hosting service and use the LwM2M resources for passing the URI for that type of objects.
    • Alternatively you could split the large object to chunks and expose them via multiple opaque resource instances.
  • [Mbed OS] The device may stall at certificate renewal when compiling with the PSA configuration.

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 640 KB flash. PSA takes 192 KB 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 HW PSA implementation).
      • The configuration file that allows this is placed under configs-psa folder in the example.
      • The PSA mode adds RAM consumption (static +3.5 KB) and flash/ROM consumption (+18.5 KB).
      • Arm and partners are optimizing the solution in future releases.


  • The current Yocto version Sumo does not support Rapsberry Pi4B.
  • 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.
  • 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 open source third-party IP (TPIP). 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.

You also get more TPIP with the Mbed OS release itself, see their LICENSE.md for details.