Releases: PelionIoT/mbed-cloud-client
Device Management Client 4.13.2 General Availability
Device Management Client
Changes:
- PAL_MAX_FOLDER_DEPTH_CHAR increased from 66 to 128 bytes for Linux targets.
- [Linux]: Bugfix - update with large images and a short lifetime was failing.
The downloading of the image happens only after the FOTA state is being updated in the service to FOTA_SOURCE_STATE_DOWNLOADING.
The FOTA state auto-observable resource is kept observable even upon CoAP RESET message from the service.
Release notes can be found here:
https://developer.izumanetworks.com/docs/device-management/current/release-notes/device-management-client.html
Device Management Client 4.13.1 General Availability
Device Management Client
Known issues:
- [Linux/Zephyr] 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.
Changes:
- Improved error logging for certificate enrollment misconfiguration.
- Fixed a failure in FOTA for developer flow in PSA mode. The mechanism of going through a storage reset if the compiled credential file differs from the stored credentials did not work well with PSA. Read a certificate instead of a private key that we can't read in PSA mode.
- Only synchronous DNS is currently supported.
- [Linux] Change the default DNS to synchronous, by setting
PAL_DNS_API_VERSION
flag to 0. - [Zephyr] Change the default DNS to synchronous, by setting
DNS API
selection toPOSIX
.
Note: For Linux devices with version >= 4.11.0, or Zephyr device with version >= 4.9.0 you should override the default DNS setting to synchronous in the application level.
- [Linux] Change the default DNS to synchronous, by setting
Release notes can be found here:
https://developer.izumanetworks.com/docs/device-management/current/release-notes/device-management-client.html
Device Management Client 4.13.0 General Availability
Device Management Client
Known issues:
- [Linux/Zephyr] 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:- For Linux devices, set the
PAL_DNS_API_VERSION
flag to 0. - For Zephyr devices, set the
DNS API
selection to POSIX.
- For Linux devices, set the
Changes:
- Izuma branding changes.
- Support for multiple ciphers via config flag
PAL_MAX_ALLOWED_CIPHER_SUITES
.- This is required for improved LwM2M compliance.
- Please ensure your TLS configuration also enables the required ciphers.
- Add support for parsing Pkcs#7 certificate format. This format is used in EST flow.
- This is required for improved LwM2M compliance.
- Developer flow only: The device goes through a storage reset if the compiled credential file differs from the stored credentials.
- In
LWM2M_COMPLIANT
mode, use Bootstrap server CA as LwM2M server CA for enabling server certificate verification during TLS handshake. - Fix compilation issue with glibc 2.34 and newer where PTHREAD stack sizes have been changed to runtime variables.
- Alternating port fallback function for
MBED_CLOUD_CLIENT_CUSTOM_URI_PORT
added.- If a socket error is encountered, the next try will be done with the original CoaP port
5684
. - After 2nd failure, we alternate back to the custom port.
- NOTE! Only port
443
can be used as an alternative customer port with Izuma Networks.
- If a socket error is encountered, the next try will be done with the original CoaP port
Release notes can be found here:
https://developer.izumanetworks.com/docs/device-management/current/release-notes/device-management-client.html
Device Management Client 4.12.0 General Availability
Device Management Client
Known issues:
- [Linux/Zephyr] 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:- For Linux devices, set the
PAL_DNS_API_VERSION
flag to 0. - For Zephyr devices, set the
DNS API
selection to POSIX.
- For Linux devices, set the
Changes:
- [Linux] Security improvement - the update encryption key is stored in the NVM and not in the header.
- Enable connection to any LwM2M compliant bootstrap and device management services.
- Introduce a new
LWM2M_COMPLIANT
flag that enables connection to any LwM2M compliant bootstrap and device management services. Disabled by default. - Introduce a new
DISABLE_SERVER_CERT_VERIFY
flag that disables the server certificate verification during the TLS handshake. Disabled by default.
- Introduce a new
Device Management Client 4.11.2 General Availability
Device Management Client
Known issues:
- [Linux/Zephyr] 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:- For Linux devices, set the
PAL_DNS_API_VERSION
flag to 0. - For Zephyr devices, set the
DNS API
selection to POSIX.
- For Linux devices, set the
Changes:
- Fixed a potential dead-lock situation in sn_nsdl.c CoAP tracing when tracing is enabled but trace-level is set below INFO. This fixes a regression introduced in 4.11.0 release.
Release notes can be found from:
https://cloud.mbed.com/docs/current/release-notes/device-management-client.html
Device Management Client 4.11.1 General Availability
Device Management Client
Known issues:
- [Linux/Zephyr] 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:- For Linux devices, set the
PAL_DNS_API_VERSION
flag to 0. - For Zephyr devices, set the
DNS API
selection to POSIX.
- For Linux devices, set the
Changes:
- [Remote logging] Fixed internal flash configuration to perform a full storage erase before using it.
- Fixed compiler warnings.
Release notes can be found from:
https://cloud.mbed.com/docs/current/release-notes/device-management-client.html
Device Management Client 4.11.0 General Availability
Known issues:
- [Linux/Zephyr] 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:- For Linux devices, set the
PAL_DNS_API_VERSION
flag to 0. - For Zephyr devices, set the
DNS API
selection to POSIX.
- For Linux devices, set the
Device Management Client
- Removed content type
ct=
field from the register message payload. - Bootstrap LWM2M compliance:
- Bootstrap message parsing extracts instance ID from Uri-Path or from the payload.
- Security instance IDs are no longer hardcoded but are in line with the bootstrap-server resource boolean value.
- Extended DELETE to paths other than 0 and 0/0.
- Updated to ignore and not fail when not supported optional resources are included in bootstrap PUT requests.
- Bootstrap done is triggered on receiving ACK to separate CHANGED response to the bs finish POST request. Previously, bootstrap done was relying only on ssl peer close notification.
- Client has a new configuration flag
MBED_CLIENT_DYNAMIC_OBSERVABLE
, which controls APIs such asset_observable()
. The purpose of these features is to control whether the resource can be observed from the cloud. When enabled, the Client also appends the "obs" parameter to the resources as part of the registration message. If disabled, all resources are always observable, and you don't need to specify such capability separately. As part of improving LwM2M compliance and cleaning up the code base, this feature is wrapped behind this feature flag that is currently enabled by default. In the future, we plan to disable and eventually remove the feature completely.
- Add support to collect and store trace output to NVM for later review.
- You can enable this option by defining compile-time macro
MBED_CONF_MBED_CLIENT_DYNAMIC_LOGGING_BUFFER_SIZE
. This defines the size of a RAM buffer. When the buffer is full or trace level trigger is found, the buffer content is stored in NVM. - When enabled, these resources are published, and you can use them to control logging:
- 33456/0/1 Start log capture.
- 33456/0/2 Stop log capture.
- 33456/0/3 Read current logs from NVM.
- 33456/0/4 Erase existing logs from NVM.
- 33456/0/5 Trace level output. Accepted values are: CMD (0), ERROR (1), WARN (2), INFO (3), and DEBUG(4).
- 33456/0/6 Trace level trigger. Accepted values are: DISABLED(0), ERROR (1), and WARN (2). The default value is ERROR. If disabled, all trace lines defined by trace level are stored in NVM.
- 33456/0/7 Size of the NVM in bytes.
- 33456/0/8 Auto erase NVM when full, disabled by default.
- 33456/0/9 Is capture currently enabled/disabled.
- 33456/0/10 Size of unread logs in NVM.
- 33456/0/11 Error, SUCCESS(0), STORAGE FULL(1), READ FAILURE(2), WRITE FAILURE(3), ABORTED(4), OUT OF MEMORY(5).
- 33456/0/12 Total size if logs in NVM.
- The application can also start and stop capture using
MbedCloudClient::set_dynamic_logging_state(bool state)
API.
- You can enable this option by defining compile-time macro
- Extended the
MbedCloudClient::setup()
API to allow the application to trigger full registration.
Device Management Update Client
- [Linux] Added support for FOTA combined update, a coordinated and simultaneous installation of multiple images on a device. The new
MBED_CLOUD_CLIENT_FOTA_SUB_COMPONENT_SUPPORT
macro enables this. To enable a combined update on a device, register a device component that consists of the relevant subcomponents that need to be updated together.FOTA_MAX_NUM_OF_SUB_COMPONENTS
defines the maximum number of supported sub-components. - Deprecated component update callback prototypes. Customers using Pelion Device Management Client 4.11 and higher should use the new component update callbacks.
- Deprecated the verify-after-installation callback (
fota_component_verify_install_handler_t
). Use thefota_comp_verify_cb_t
callback instead. - Deprecated the installation callback for non-Linux targets (
fota_candidate_iterate_handler_t
). Use thefota_comp_install_cb_t
callback instead. - Deprecated the installation callback for Linux targets for component update (
fota_app_on_install_candidate
). For component update, use thefota_comp_install_cb_t
callback. To update the main application, usefota_app_on_install_candidate
. - Added the
fota_comp_finalize_cb_t
installation finalization callback for future use (not in use yet).
- Deprecated the verify-after-installation callback (
Platform Adaptation Layer (PAL)
[Linux] Enabled PAL_DNS_API_VERSION
3 by default for Linux configurations.
Release notes can be found from:
https://cloud.mbed.com/docs/current/release-notes/device-management-client.html
Device Management Client 4.10.0 General Availability
Known issues:
- [Zephyr] Asynchronous DNS does not work well. 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 in the application's configuration settings.
Device Management Client
- Updated Mbed CoAP to v5.1.11.
- Improved handling of "Bad requests" during bootstrapping. Now the client handles the recovery internally without reporting fatal certificate errors to the upper level.
Previously these errors resulted in factory resets because they were handled as fatal storage failures. - Fixed duplication of sent notifications, which sometimes happened if the application called
set_value()
in theMbedCloudClient::on_registered()
callback. - Added sleep state for
MbedCloudClient::on_status_changed()
.
This makesMbedCloudClient::set_queue_sleep_handler(callback_handler handler)
redundant. It's marked as deprecated. - Added support for LwM2M Discover.
- Allowed the application to control the maximum reconnection timeout using the
MBED_CONF_MBED_CLIENT_MAX_RECONNECT_TIMEOUT
flag.
This flag ensures that the reconnection time doesn't go above the set maximum value. The default value is 4hrs, and the lowest acceptable value is 5min.
Device Management Update Client
- Added support for updating device firmware with a server-encrypted update image.
- Enabled by the new
MBED_CLOUD_CLIENT_FOTA_ENCRYPTION_SUPPORT
macro. - Limitation: Not supported when
MBED_CLOUD_CLIENT_FOTA_CANDIDATE_BLOCK_SIZE
is not 1024.
- Enabled by the new
- Changes to the implementation of update candidate image encryption:
- Added a new
FOTA_USE_ENCRYPTED_ONE_TIME_FW_KEY
option to theMBED_CLOUD_CLIENT_FOTA_KEY_ENCRYPTION
macro. - Replaced
FOTA_USE_DEVICE_KEY
withFOTA_USE_ENCRYPTED_ONE_TIME_FW_KEY
as the default value forMBED_CLOUD_CLIENT_FOTA_KEY_ENCRYPTION
following a security vulnerability found inFOTA_USE_DEVICE_KEY
. - Deprecated the
FOTA_USE_DEVICE_KEY
option, which will be removed in a future version.
- Added a new
- Changed
fota_app_defer()
behavior so that candidate image download or install resumes only after the device application explicitly callsfota_app_resume()
. When the device reboots, the client invokes the download or install callbacks to request the device application’s approval to continue the download or installation. - Added support for calling
fota_app_reject()
afterfota_app_defer()
. - Added the
fota_app_postpone_reboot()
API. Calling this API postpones device reboot, which is required to complete the FOTA process until the device application explicitly initiates reboot. - Fix: Resuming download from the last successfully downloaded fragment was not previously supported on devices with an SD card, like the K64F.
- Fix: Support for resuming installation after an unexpected interruption (for example, power loss):
- Of the main or component image on Linux.
- Of a component image on an Mbed OS devices.
- Fix: Removed the candidate image file from its original path in Linux after FOTA completion.
Release notes can be found from:
https://cloud.mbed.com/docs/current/release-notes/device-management-client.html
Device Management Client 4.9.1 General Availability
Known issues:
- [Zephyr] Asynchronous DNS does not work well. 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 in the application's configuration settings.
Device Management Client
- Fixed the incorrect overriding of CoAP retransmission buffer size.
Platform Adaptation Layer (PAL)
- [Zephyr] Fixed a memory leak on DNs handling.
Release notes can be found from:
https://cloud.mbed.com/docs/current/release-notes/device-management-client.html
Device Management Client 4.9.0
Known issues
- [Zephyr] Asynchronous DNS does not work well. 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 in the application's configuration settings.
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
Release notes can be found from:
https://cloud.mbed.com/docs/current/release-notes/device-management-client.html