Device Management Client Lite 1.4.0 release notes (preview)
Device Management Client Lite
- Fixed bug where client assumed that
event_id
andevent_type
are both 0 when event handler is initialized. Added definitionPDMC_CONNECT_STARTUP_EVENT_TYPE -1
to LWM2M interface. Client uses it initializes connection event handler. - Removed the
need_reboot = false
option in thefota_component_add()
API. When registering a component, theneed_reboot
option must always betrue
. - Updated to support Mbed OS 6.8.0. Baremetal Mbed TLS is now only supported with Mbed OS version 6.8.0 and later.
- The new Connection ID (CID) feature eliminates unnecessary DTLS handshake traffic between the client and the cloud during reconnection. To have the client persist the CID during reboot, the application can call the
pause()
API before shutting down the application. This call stores the CID context in persistent memory for use after reboot. The client then uses the CID to establish a secure connection to the cloud without requiring a DTLS handshake. ThePROTOMAN_USE_SSL_SESSION_RESUME
feature flag, which controls this feature, is enabled by default for Mbed OS and disabled by default for other platforms.- Added a compile-time check to require the mandatory Mbed TLS flags are defined when the Connection ID feature (
PROTOMAN_USE_SSL_SESSION_RESUME
) is enabled.
- Added a compile-time check to require the mandatory Mbed TLS flags are defined when the Connection ID feature (
- Fixed FOTA full resume.
- Changes to implementation of update candidate image encryption:
- Added new
FOTA_USE_ENCRYPTED_ONE_TIME_FW_KEY
option toMBED_CLOUD_CLIENT_FOTA_KEY_ENCRYPTION
. - Replaced
FOTA_USE_DEVICE_KEY
withFOTA_USE_ENCRYPTED_ONE_TIME_FW_KEY
as the default value forMBED_CLOUD_CLIENT_FOTA_KEY_ENCRYPTION
due to security vulnerability found inFOTA_USE_DEVICE_KEY
. - Using
FOTA_USE_ENCRYPTED_ONE_TIME_FW_KEY
is a breaking change and requires a new bootloader that support this feature. - Deprecated the
FOTA_USE_DEVICE_KEY
option, which will be removed in a future version.
- Added new
- Added
fota_app_postpone_reboot()
. Calling this API postpones device reboot, which is required to complete the FOTA process, until the device application explicitly initiates reboot. - Changed
fota_app_defer()
behavior such that the FOTA candidate image download or install resumes only after the device application explicitly callsfota_app_resume()
. - Support calling
fota_app_reject()
after callingfota_app_defer()
. - Fix: Support for resuming installation after an unexpected interruption (for example, power loss) of a component image.
- Added support for updating device firmware with a cloud-encrypted update image.
- Enabled by the
MBED_CLOUD_CLIENT_FOTA_ENCRYPTION_SUPPORT
option. - Limitation: Not supported when
MBED_CLOUD_CLIENT_FOTA_CANDIDATE_BLOCK_SIZE
isn't 1024.
- Enabled by the
- Fixed coverity issues.
- Fixed compilation for Client Lite Linux, release mode. KVStore failed to compile in release mode.
- Fixed a bug that prevented Firmware-Over-the-Air (FOTA) from running successfully after devices were provisioned in the production flow.
- Fixed update flow when the update candidate version is 0.0.10.
- Fota block device configuration changes:
FOTA_INTERNAL_FLASH_BD
changed toFOTA_INTERNAL_FLASH_MBED_OS_BD
,FOTA_CUSTOM_BD
changed toFOTA_CUSTOM_MBED_OS_BD
, added default block device configurationFOTA_DEFAULT_MBED_OS_BD
. - Changed FOTA application interface APIs:
fota_app_on_install_authorization(uint32 token)
tofota_app_on_install_authorization()
(removed token).fota_app_on_download_authorization(uint32_t token, ...)
tofota_app_on_download_authorization(...)
(removed token).fota_app_authorize_update()
tofota_app_authorize()
(reverted to the deprecated API).fota_app_reject_update()
tofota_app_reject()
(reverted to the deprecated API).fota_app_defer_update()
tofota_app_defer()
(reverted to the deprecated API).
- On Linux targets, all FOTA related files (candidate, header and so on) were moved to the the configuration directory (PAL/KVstore).
- Require defining
MBED_CLOUD_CLIENT_FOTA_LINUX_SINGLE_MAIN_FILE
in Linux MCCE, Testapp or any Linux app that has a single file update.
Example application
- Fixed a bug that caused the application to assume
event_id
andevent_type
are both 0 when the event handler is initialized. Now, it usesPDMC_CONNECT_STARTUP_EVENT_TYPE -1
from Client's LWM2M interface when creating the event handler. - [Mbed OS] Updated ISM43362 Wi-Fi driver to #3813a4b with fixes for logging and UDP socket handling.
- Bootloader changes:
- Changed the bootloader library name from
tools.lib
toprebuilt-bl.lib
. - The new bootloader library contains a bootloader binary image and an
mbed_lib.json
file for each target in theprebuilt-bl/TARGET_target_name/TARGET_BL_INTERNAL_FLASH
directory. Thembed_lib.json
file defines common configurations for the bootloader and the application, including the bootloader flash bank size; the storage type, address and size; firmware-over-the-air (FOTA) storage configurations;header_format
; andrestricted_size
. - Added the
target.bootloader_img
parameter to thembed_lib.json
file of the bootloader. This parameter defines the path to the bootloader image. - Set the storage configuration to
null
in thembed_app.json
file to ignore the default storage configuration. As a result, the build system uses the configuration defined by thembed_lib.json
file of the bootloader.
- Changed the bootloader library name from
- [Mbed OS] Updated to 6.12.0:
- minimal-printf is now enabled by default. You can disable it by adding
"target.printf_lib": "std"
to the application configuration. For example, usingfloat
type LWM2M resources requires disabling minimal-printf.
- minimal-printf is now enabled by default. You can disable it by adding
Known issues
Mbed CLI and Mbed OS tools
- Mbed CLI and Mbed OS tools in general don't support manifest-tool v2.
- Mbed Studio has limited support for Device Management Client Lite.
End-to-end test library is incompatible with manifest-tool v2
The provided Pelion E2E Python test library doesn't yet have firmware update support for manifest-tool v2. You can use the test library to verify other functionalities.
Alpha-quality software
- Device Management Client Lite compiles only with the
GCC_ARM
compiler. - Some client features aren't yet available.
- APIs may change.
- Documentation is a work in progress.
NRF52840_DK board
- The NRF52840_DK board uses J-Link. You might encounter some stability issues when flashing the board. The application sometimes ends up in "read only" mode. To fix this, unplug the USB cable and plug it back in.
- The example application doesn't compile with the ARMC6 compiler.
- The example application doesn't work with block-wise sizes smaller than 512kB.
Other issues
-
The device preserves certificates between device flashes (using
.hex
flashing). If you want the device to use new developer credentials, clear the storage - for example, withpyocd erase --mass-erase
- or use thestorage-reset-dev-credentials
configuration option in thembed_app.json
file. The device creates a newDevice ID
if the device doesn't find theDevice ID
in KVStore. A developer certificate limits the number of devices to 100. -
The logs show:
Resource created Error code : 7
You can ignore this error.