Mistake on this page? Email us

Device Management Client 2.2.1 General Availability (GA)


[Mbed OS] Device Management Client support for injecting entropy externally boards using secure storage through KVstore (Internal Flash).


Device Management Client example

  • Updated to Mbed OS 5.11.5.
  • Added KVStore support for Nucleo F411RE.
  • Changed the board configuration for Nucleo F429ZI to use internal flash profile.
  • Added bootloaders for the legacy_storage configurations as part of the application repository. Explicitly defined the target offsets for each bootloader to provide more clarify on the board configuration.
  • By default, MBED_CLOUD_CLIENT_STL_API is set to 0 in mbed_lib-json. This disables the deprecated client APIs completely in SimpleM2MResourceString and SimpleM2MResourceInt classes. MBED_CLOUD_CLIENT_STD_NAMESPACE_POLLUTION is 0 also by default. It disables the namespace pollution of code that includes MbedCloudClient.h with using namespace std;. With these changes you can save extra ROM overhead of ~15 KB on ROM budget, depending on the compiler toolchain used.
  • Added Python3 support for Device Management end-to-end tests.
    • Updated the minimum required version of Device Management Python SDK to 2.0.5.
    • Updated the minimum Icetea version to 1.2.1.

Device Management Connect client

  • Fixed handling of blockwise message during concurrent notification sending.
  • Fixed handling of content type format for PUT requests on resource level. Client only accepts text/plain and opaque content-types.

Factory Configurator client

  • [Mbed OS] Support for injecting external entropy for devices using KVstore (internal flash).

Platform Adaptation Layer (PAL)

  • [Mbed OS] Fixed the usage of deprecated socket APIs.
  • Added logic to pal_plat_initTime to recover from data corruption due to power failure.
  • Improved API documentation.
  • [Mbed OS] Support for injecting external entropy for devices using KVstore (internal flash).

Known issues

Older versions of Device Management SDK for Python (v2.03 or older) sent PUT payload with content-type JSON, which is an unsupported content-type for Client. Client version 2.2.1 no longer accepts PUT requests with unsupported data types. We recommend that you update to SDK v2.0.5 or later, which sends the requests with correct content type (text/plain).

Mbed OS

We recommend that you read the Mbed OS release notes for known issues and their latest status.

  • mbed dm may fail with error 401 (Invalid access key) or 401 (Unauthorized) with Mbed CLI versions 1.9.0 or later. As a workaround, you may either run mbed dm init with an explicit server address, for example -S https://api.us-east-1.mbedcloud.com, or remove any local mbed_cloud_config.json which may contain an old or incompatible configuration.
  • Python3 compilation does not work with Mbed OS 5.11 or earlier versions.


  • Firmware update installation for very large images on Raspberry Pi3B or Pi3B+ may fail with 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 newer). 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.