Documentation

Mistake on this page? Email us

Mbed Cloud Client 1.3.2 General Availability (GA)

Changes since the previous release

Mbed Cloud Client

  • Fixed issue: Resource does not notify with content format requested in observation.
  • New internal API: check_config_parameter(), returns SUCCESS if parameter exits in KCM.
  • Do not try to store Timezone/UTC data, if there is no data.
  • A separate CoAP response is used only for POST operation, other ones are using piggybacked responses.
  • Send only one notification at a time.
    • Fixes the issue with an application changing multiple resource values at a same time causing the client to lose notifications from earlier resources. This change ensures that the latest value is always sent to the server.
  • Introducing Mbed Edge specific features:
    • M2MEndpoint class for describing endpoints behind Mbed Edge device.
    • Allow registering M2MEndpoints and M2MObjects using the registration API.
    • Added the endpoint_type attribute to the registration update message.
    • Added the endpoint name attribute to the registration and registration update messages.
  • Improved Edge performance for registration update.
    • This optimization speeds up the registration update. It monitors which endpoints have changed and updates only them.
    • The bandwitdth of the CoAP messages is reduced. Endpoint data for the unchanged endpoints is not sent in the registration update.

Factory configurator client

  • New APIs introduced for keys and CSR generation on the device:
    • kcm_key_pair_generate_and_store
    • kcm_csr_generate
    • kcm_generate_keys_and_csr
  • Chain validations added.
    • A chain is validated when it is stored. Each certificate in the chain is validated against its issuer. An error is returned if the chain is not valid.
    • If the device certificate (bootstrap or LwM2M) or the update authentication certificate is saved as a chain, the expiration of all certificates is checked in the fcc_verify_device_configured_4mbed_cloud function.

Platform Adaptation Layer (PAL)

  • Linux: Converted all timers to use signal-based timer (SIGEV_SIGNAL) instead of (SIGEV_THREAD).
    • This fixes the Valgrind warnings for possible memory leaks caused by LIBC's internal timer helper thread.

      Note: If the client application is creating a pthread before instantiating MbedCloudClient, it needs to block the PAL_TIMER_SIGNAL from it. Otherwise the thread may get an exception caused by the default signal handler with a message such as "Process terminating with default action of signal 34 (SIGRT2)". For a suggested way to handle this please see mcc_platform_init() in here.

  • Linux: Fixed the Linux-specific version of pal_accept()'s addressLen parameter which previously required a platform-specific socket address structure size, not a platform independent one.
  • Fixed a hard fault issue that occurred when calling pal_ECKeyGenerateKey.
  • Return PAL_ERR_BUFFER_TOO_SMALL if the output buffer is too small for write in pal_writePrivateKeyToDer, pal_writePublicKeyToDer and pal_x509CSRWriteDER APIs.
  • Fixed the missing handling for initialization failure of SOTP.
  • New API pal_x509CertGetHTBS: Calculate the hash of the To Be Signed part of an X509 certificate.

Mbed Cloud Update

  • Improvements to the scheduler to ensure that events are not lost. The scheduler now uses a pool allocation mechanism and queue element locks.
  • Implemented an API to get the active firmware details.
  • A rollback protection error will now be reported as "Firmware update failed" (8) when MCCP=1.
  • An error is issued when the firmware payload exceeds the maximum storage-size limit.
  • Mbed Cloud Update now uses a constant time binary compare function.
  • Fixed a build error for Cortex-A9 target when retrieving the current interrupt enabled state.

Mbed Cloud Client example

  • Updated easy-connect to v1.2.9.
  • Updated to Mbed OS 5.8.4.
  • Added the partition_mode configuration. It is enabled by default and supposed to be used with a data storage, such as an SD card.
  • Linux: Updated Mbedtls to 2.7.1 in pal-platform.
  • Linux: Fixed CMake generation and performed generic cleanup in pal-platform scripts.

Known issues

Hard faults have been observed to occur with Cloud Client running in Thread (Mesh) network stack. This is under investigation and will be resolved in a future release.

Mbed OS

  • DTLS handshake fails on Ublox ODIN-W2, issue #6545.
  • Cloud Client registration does not work with IAR compiled binary if using Thread or 6LoWPAN, issue #3466.

Linux

  • 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 the sourceware issue 20116 for details.
    • We have implemented a workaround for this issue to decrease its likelihood. This issue may still occur in certain circumstances.
  • The Mbed Cloud 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 and a more secure implementation will come later.
  • Yocto distribution has only been tested with the developer certificate mode.

Mbed Cloud Client 1.3.2 Third Party IP report

Mbed Cloud Client uses some open source Third Party IP (TPIP). This table lists the TPIPs whose sources we included:

Original License Description
cn-cbor MIT factory configurator client uses cn-cbor: A constrained node implementation of CBOR in C - with slight modifications. The code is located in mbed-cloud-client/factory-configurator-client/secsrv-cbor.
Unity MIT Platform Adaptation Layer (PAL) tests use Unity framework from ThrowTheSwitch. The code is located in mbed-cloud-client/mbed-client-pal/Test/Unity.

You do also get more TPIP via Mbed OS release itself (for example lwIP and FATFS).