Pelion Device Management Client Lite release notes - previous releases
Pelion Device Management Client Lite 0.9.0 preview release
This is the ninth increment of the Device Management Client Lite preview release.
Client Lite example application
- Updated to Mbed OS 5.13.0.
- Fixed the compatibility issue of
generate_firmware_images.py
with manifest tool version 1.5.0 or later. The script was incorrectly using internal manifest tool APIs.
Device Management Client Lite
No changes.
Update client
- Converted notification handling to use a flag instead of a counter to avoid a deadlock in the scheduler.
- Added support for reporting out-of-memory error from Mbed TLS.
- Removed
TRACE_GROUP
definitions from public header files. - Fixed the Update client state machine reboot state logic so that the active firmware details are not re-sent if reboot does not happen.
- Modified trace and error macros in manifest manager to use common macros.
- Fixed a page rounding issue in PAL blockdevice.
- Fixed an issue where class ID and vendor ID were not reported in Device Management Portal.
Known issues
- IAR8 with protoman debug tracing will cause hardfaults due to NULL tracing. As workaround, do not use tracing with IAR8 compiled binaries.
- Client Lite is not yet production quality and thus, releases are restricted.
- Client Lite does not support delta firmware updates.
- ObjLink type is not supported.
- Opaque or string Resource value changes are not sending notifications 100 % reliably.
- Create with TLV payload fails #15.
- If you give the
mbed-client-lite-example_update.bin
as input forgenerate_firmware_images.py
, it fails with a non-descriptive error[Errno 2] No such file or directory:
. Use thembed-client-lite-example.bin
file instead.
Third Party IP (TPIP)
Client Lite contains no third party IP. All code is licensed under Apache 2.0.
Mbed OS itself contains third party IP, please see their LICENSE.md for details.
Pelion Device Management Client Lite 0.8.0 preview release
This is the eighth increment of the Device Management Client Lite preview release.
Client Lite example application
- Updated to Mbed OS 5.12.1.
- Updated compiler profiles for Mbed OS 5.12.
- Fixed compatibility issue with IAR8.
Device Management Client Lite
Changed event API callback types to match the changes in Update client.
Update client
- Converted notification handling to use a flag instead of a counter to avoid a deadlock in the scheduler.
- Added support for reporting out-of-memory error from Mbed TLS.
- Removed
TRACE_GROUP
definitions from public header files. - Modified event API to use
uintptr_t
types for passing pointers instead ofuint32_t
for 64-bit compatibility. - Fixed the Update client state machine reboot state logic so that the active firmware details are not re-sent if reboot does not happen.
- Modified trace and error macros in manifest manager to use common macros.
- Fixed a page rounding issue in PAL blockdevice.
- Fixed an issue where Class ID and Vendor ID were not reported in portal.
Pelion Device Management Client Lite 0.7.0 preview release
Fixed issues
Client Lite example application
-
Updated to Mbed OS 5.11.5.
-
Updated bootloaders to version 3.5.0.
-
The application now uses a dedicated thread to handle the events for the ESP8266 driver as it does not support non-blocking mode.
-
Modified Wi-Fi configuration
configs/wifi_esp8266_v4.json
to support the new ESP8266 Wi-Fi chip with 2 MB or more flash and ESP8266 AT firmware 1.7.0, with serial flow control (UART0_CTS
,UART0_RTS
) pins and reset pin (EXT_RSTB
) connected. For production devices, we recommend that you upgrade your ESP8266 to this version and connect the control pins to corresponding pins on the target hardware. -
The previous Wi-Fi ESP866 is supported with the new
configs/wifi_esp8266_v4_legacy.json
file.Note: With legacy ESP8266 Wi-Fi with 1 MB flash, the minimum supported firmware version is now 1.6.2. Without flow control and reset pin connected, the device will eventually disconnect and fail to re-connect. The ESP8266 firmware has to be version 1.7.0 (or later) to enable flow control and only boards with 2 MB flash or more can take that firmware in.
-
Increased
events.shared-stacksize
for ESP8266 to 2048.
Device Management Client Lite
- Doxygen fixes and high-level documentation for Client Lite.
- Start reconnection if no response is received to a CoAP ping.
- Fixed auto-observation notification content type.
- Fixed sending of auto-observation token to server.
- Moved storage logic from
ConnectorClient
to C files.- Removed security class from interface and connector as it is no longer used.
- Moved storage logic from
ConnectorClient
to C/lwm2m files. - Changed
ConnectorClient
to be just a wrapper class. - These changes simplify the code and save some memory.
- Split
ServiceClient::initialize_and_register
into two parts to fix sending of uninitialized firmware version to update campaign, which resulted in false campaign deployment result:- The first part runs until it starts initializing the Update client.
- The second part (
ServiceClient::finish_initialization
) runs when the Update client's initialization is complete.
- Added configuration check for the update profile (
ARM_UC_PROFILE_MBED_CLIENT_LITE
).
Update client
- Fixed the Update client state machine reboot state logic so that the active firmware details are not resent if there is no reboot.
- Modified the trace and error macros in the manifest manager to use common macros.
- Fixed the race conditions on critical section code in the
atomic-queue
module. - Fixed various compiler warnings.
- Added the possibility of queueing callbacks with an associated context in the Update client scheduler.
- Implemented an Update client scheduler API to post an error. The scheduler executes the error callback in priority over all the other callbacks in the queue.
- Added a compilation check for the CoAP buffer size.
- Fixed the Update client trace module when
mbed_trace
is off. - Removed the accelerated handling of binary comparisons that relied on unaligned access.
- Sanitized module codes in trace messages. Defined a macro that replaces non-printable characters with the dot character. Wrapped module codes in the new macro wherever traces or debug messages are printed.
- Replaced calls to
mbed_tracef
by calls totr_debug
ortr_error
. - Added a compile-time check for non-zero update storage size.
Known issues
Client Lite does not work reliably with IAR8 compiled binaries. This will be resolved in a future release with Mbed OS 5.12 which provides official IAR8 support.
Pelion Device Management Client Lite 0.6.0 preview release
This is a patch release for the sixth increment of the Device Management Client Lite preview release.
New features
- Script support for the Client Lite production flow. Production process for Client Lite.
- Mbed OS 5.10 support with an updated developer flow (breaking change on application level), see Client Lite tutorial.
- Improved update flow removing the need of manually modifying the HTTP-based upload URI address to CoAP address, when making firmware updates. Client Lite now accepts a direct HTTP URI and internally makes a CoAP download through this address.
- Support for Mesh networks such as 6LoWPAN.
- The example application uses the global event queue provided by Mbed OS. This reduces the dynamic memory usage by client.
Fixed issues
Client Lite example application
- Fixed Lite OMA Object definitions for Objects 10252 and 10255 to match the Update Client implementation.
- Mbed TLS configuration: Enabled size optimizations for software implementation of AES, saving 6200 bytes of ROM.
- Enabled buffered serial.
- Updated to Mbed OS 5.10.2.
- The application now gets the network interface status through console logs.
- The application now uses Mbed OS 5.10 network interfaces directly and the dependency to
easy-connect.lib
is removed. - The application now uses Mbed OS bootloader binaries and the new Mbed OS feature
FEATURE_BOOTLOADER
. This feature makes thecombine_bootloader_with_app.py
script obsolete. We have removed the obsolete script.- The bootloader is now automatically combined with the application binary at compile time:
mbed-client-lite-example-restricted.bin
is the binary you need to flash to the development board.- You can use
mbed-client-lite-example-restricted_update.bin
for the firmware update as long as the prerequisites for firmware update are fulfilled. (See the application tutorial).
- The bootloader is now automatically combined with the application binary at compile time:
- Introduced a new script
generate_firmware_images.py
. It allows you to generate one or more firmware images ready to be flashed to a device. - Updated the application default lifetime to 3600s, thus reducing multiple registration update messages from client to server.
- Updated the size-optimized compilation profiles for Mbed OS 5.10.
- Partial configurations for the NRF52_DK board are now removed. The board configurations will be returned after it fulfills all the client requirements and passes testing.
- The application is now running on the global event queue from the main thread, thus reducing the need for another thread to run the event loop. This saves dynamic and static memory.
- Added the support for K64F board with Mesh network.
Device Management Client Lite
- Implemented the handling of downloading URL into a URI query parameter.
- The Device Management Update Client configuration now supports mapping of an external download protocol definition to internal configurations. This is needed for download protocol selection in Device Management Client. The default for Client Lite is CoAP download.
- Fixed occasional Wi-Fi hardfaults observed during long test runs.
- Fixed a recoverable CoAP error (service unavailable) to resume the firmware download.
- Enabled CoAP message duplication detection by default.
- Fixed firmware download failure during registration update.
Update client
- A new profile flag
ARM_UC_PROFILE_MBED_CLIENT_LITE
is used to enable the correct profile for Client Lite. - Added support for sending update Resource data as part of the Client registration message, thereby reducing network traffic between Client and Device Management.
- Optimized static RAM usage by reusing the static object
ManifestManagerContext
during the initialization. - HTTP URI can now be used as a parameter in the CoAP GET API.
- Fixed the issue with campaign not completing when there is a payload hash mismatch during the firmware update operation.
- Added support for passing the HTTP URI instead of CoAPs to the
generate-manifest
script. - Fixed the memory leak in URI handling when receiving the manifest from cloud.
Known issues
If the size of the firmware to be uploaded is larger than the space available for storing it, the download fails (as it should), but a proper error code is not propagated to Device Management.
Pelion Device Management Client Lite 0.5.1 preview release
This is a patch release for the fifth increment of the Device Management Client Lite preview release.
Device Management Client Lite example application
- Fixed the incorrect flagging for
eventloop
related parameters. Without this fix, the application would hang with Mbed OS 5.9.3 or later. - Fixed the usage of the buttons in the example application.
Known issues
- Device Management Client Lite does not yet work with mesh because of the missing DNS resolving feature on these network stacks in Mbed OS (available in Mbed OS 5.9, but needs integration to Client Lite).
- If the size of the firmware to be uploaded is larger than the space available for storing it, the download fails (as it should), but a proper error code is not propagated to Device Management.
Mbed Client Lite 0.5.0 preview release
This is the fifth increment of the Mbed Client Lite preview release.
New features
- Enabled partial production flow support. Client can read all the needed credentials from NVStore when feature is enabled. See documentation in
tools/storage_injection.md
. Update does not yet fully support production flow. - NVStore is used for storing the Root of Trust. If Root of Trust does no exist in NVStore, it will be automatically generated.
- If you want to trial these features please contact us for more details.
- Applications can now amend the common LwM2M Object metadata in registry with their own data at runtime.
Fixed issues
Connect Client
- Fixed wrong CoAP ping message type. CoAP ping must be sent as an empty confirmable message.
- Fixed issues that sometimes prevented recovery from lost network connection.
Update client
- Added Update client NVStore support.
- Improved the scheduler to ensure that events are not lost.
- Optimized static RAM by reusing the static object ManifestManagerContext during initialization.
- Fixed compiler warnings in Linux and X86 platforms.
- Fixed issue when an update campaign used the wrong keytable, the client did not use a proper error message.
Mbed Client Lite example application
- Updated easy-connect to v1.2.12.
- ESP8266 driver updated to version 1.5. This should fix issue with DNS failures blocking re-connection of client after a broken WiFi connection.
- Updated to Mbed OS 5.9.1.
- Fixed issue in example which was setting string value for Integer type resource 3200/0/5501, hence initial GET request from Cloud failed.
Known issues
- Mbed Client Lite does not yet work with mesh because of the missing DNS resolving feature on these network stacks in Mbed OS (available in Mbed OS 5.9, but needs integration to Client Lite).
- If the size of the firmware to be uploaded is larger than the space available for storing it, the download fails (as it should), but a proper error code is not propagated to Cloud.
- The buttons in the example application do not work.
Mbed Client Lite 0.4.0 preview release
This is the fourth increment of the Mbed Client Lite preview release.
Connect Client
-
This version of client supports Mbed OS 5.8.4 and onwards patch releases.
-
The core logic of M2MInterfaceImpl was rewritten in C (
lwm2m_interface
).- The C++ wrapper preserves the upward functionality. The new API can be used without it.
-
TLV notifications changed to include only the changed resource values.
- This is an optimization for TLV notifications that can include multiple resource values.
- This change has no effect on the notifications only including a single resource value.
- Makes the Object and Object Instance level observation more usable for constrained devices.
Note: Unchanged resource values are no longer sent on TLV notifications that are triggered by value changes. The application should not expect to receive them.
Update client
- Fixed the issue with the firmware update state not reaching the service every time.
- The client is always waiting for a service acknowledgement for the change in the update state value before moving to next state. This shows all the different update states in the service side device events.
- Also other missing states for 10252/0/2 added.
- Fixed the missing device events that can halt the update campaign.
- Update result value of 12 (Asset failed integrity check) for rollback protection case.
- The current specification of Object 10252 (Manifest Object) does not specify a corresponding update result (10252/0/3) value to reflect a rollback protection error. The value 12 "Asset failed integrity check" is now returned on such error.
Mbed Client Lite 0.3.0 preview release
This is the third increment of the Mbed Client Lite preview release.
New features
- Support for an application running the main network event loop from the main program thread instead of a separate thread, thereby saving 3.5 kilobytes of dynamic memory.
- The client supports Mbed OS 5.8.2 onwards.
- Cleanup of unused components in the example application including the storage-selector.
Fixed issues
- The UDP and QUEUE modes now work with notifications.
- An accurate error message is now displayed in the serial console when uploading a wrong key table for the update.
- An improvement in the logic of downloading the firmware image reduces the number of firmware update failures.
Known issues
- The firmware update may fail on rare occasions.
- A network connection error takes place and the client enters the reconnection loop during the firmware download.
- To recover from this, you can start the update sequence again from the Cloud portal.
- Mbed Client Lite does not yet work with mesh because of the missing DNS resolving feature on these network stacks in Mbed OS.
- If the firmware image uploaded on the portal is larger than the available flash on the device, the device doesn't indicate an error. You need to ensure that the new firmware image is smaller than the available flash size.
- An update campaign in the portal doesn't indicate a failure if there is an error in the device caused by the bootloader rejecting the new firmware due to too large firmware size.
- All firmware update statuses are not reflected correctly in the portal.
- The portal doesn't show the state when the device starts updating the firmware.
- The device application doesn't show any update states in the application level console logs.
- If the user has created a manifest with the payload size larger than the image uploaded in Cloud, the client gives two different errors simultaneously resulting in a misleading message reported in the portal.
Mbed Client Lite 0.2.0 preview release
This is the second increment of the Mbed Client Lite preview release.
New features
- Firmware update capability using internal flash (K64F only).
- The client now supports NRF52_DK only for Cloud connectivity and device management. The Update feature is not yet supported for this board.
- The client supports Mbed OS 5.8.1 onwards.
Fixed issues
- Removed unused APIs from sources mentioned in the Known issues of the 0.1.0 release.
- Improved error codes for network connectivity issues.
- The client now informs the application about:
- Unreachable server (Error code: DnsResolvingFailed).
- Using wrong PSK credentials (Error code: SecureConnectionFailed).
- General network break (Error code: NetworkError).
- The client now informs the application about:
- Improved reconnection logic for temporary network connection loss.
- The client now reconnects automatically after a temporarily lost network connection. The retry logic continues connection retrial until there is a successful connection established with Cloud using exponential back-off logic (starting from 2-10 seconds all the way to 1 week).
- The portal displays all the endpoint information populated by the client, such as
Manufacturer/vendor
,Model number/Device class
andSerial number
.
Known issues
- The UDP and QUEUE modes are not working with notifications. The workaround is to continue using the TCP mode.
- This release does not support a multiple device campaign but only supports firmware update to one device at a time. There is direct 1-to-1 mapping between the device firmware image and the device identity, because the PSK credentials are embedded into the update binary. You can only update a device having the particular PSK credentials.
- An accurate error message is not displayed in the serial console when uploading a wrong key table for update.
Mbed Client Lite 0.1.0 preview release
This is the preview release of Mbed Client Lite library that provides:
- The means to connect constrained embedded devices to Mbed Cloud.
- The device management capabilities as described in the OMA Lightweight Machine to Machine specification.
Features
Mbed Client Lite API supports the following features:
-
API for registration and reregistration towards Mbed Cloud service.
-
In-built secure connectivity logic using industry standard TLS/DTLS with Pre-Shared Key (PSK) mechanism.
-
API for device management (based on the OMA LwM2M Specification) and notification sending including full control of endpoint and application logic from the Mbed Cloud service.
-
Supported on Mbed OS (currently, tested only on K64F board) with LwIP Ethernet and ESP8266 WiFi connectivity.
Known issues
-
This is a preview release so some of the LwM2M features may not be supported or working reliably.
-
Update is not yet supported.
-
The credential storage on internal flash is disabled by default. On every board reset, the client performs a full bootstrap sequence but it always gets the same endpoint ID. The REST APIs can then use the same endpoint ID on every device reset.
-
The portal is not displaying all the endpoint information populated by the client, such as
Manufacturer/vendor
,Model number/Device class
andSerial number
. -
Some of the existing unused APIs will be removed in the upcoming release. The following APIs from Mbed Cloud Client are deprecated in Mbed Client Lite. Removing them reduces the flash footprint and simplifies the client solution.
-
M2MBase
class:void set_interface_description(const char *description);
const char* interface_description() const;
void set_resource_type(const char *resource_type);
const char* resource_type() const;
void set_coap_content_type(const uint16_t content_type);
void set_observable(bool observable);
M2MBase::Operation operation() const;
int32_t name_id() const;
uint16_t instance_id() const;
uint16_t coap_content_type() const;
Mode mode() const;
void set_register_uri(bool register_uri);
bool register_uri() const;
size_t resource_name_length() const;
-
M2MResource
class:bool send_delayed_post_response();
-
-
Client Lite has been tested using a maximum of 256 bits PSK secret. We recommend 128 bits for memory efficiency.
-
API documentation is still draft version and subject to modifications in upcoming releases.
-
Occasional network connection losses can occur and the application may not be able to reconnect. If that happens, reset the board.
-
Proper error codes for unsuccessful connection attempts are missing. Currently, any network or SSL level error is translated to a
NetworkError
.