Device Management Client 3.0.0
Features
- Support for Mbed OS 5.12.0 release.
- Update
mbed-cli
and its dependencies when deploying Mbed OS 5.12.
- Update
- Preview level support for Platform Security Architecture (PSA) for Cypress PSoC6 and NXP LPC55S69 boards.
- PSA is preview level and not yet ready for production.
- Track the Mbed OS repository for open issues and pull-requests.
- See open items.
Deprecation notes
- In Mbed OS, we do not test FAT FS-based configurations anymore.
- FAT FS is not a file system that tolerates for example sudden power losses. Therefore, we do not recommend using it.
- Storage solutions for Mbed OS are KVStore-based using internal flash, SPI-flash or SD card with LittleFS.
- STL and Namespace pollution features are deprecated.
- Python 2 is being phased out.
- Factory configurator Python scripts were always Python 3 only.
mbed cli
tooling is also Python 3 compliant.- Python 2 is facing deprecation 1st January, 2020, so align now to Python 3.
- We recommend using Python 3.5.1 or newer.
Fixes
Device Management Client example
- [Mbed OS] Updated to Mbed OS 5.12.0.
- [Mbed OS] Enabled asynchronous DNS by default for all targets.
- [Mbed OS] Preview support for PSA-enabled boards.
- PSA configuration for PSA-enabled Cypress PSoC6 and NXP LPC55S69 boards. The configuration is in the
configs-psa/
folder. - Both PSA-enabled boards use ESP8266 Wi-Fi.
- PSA configuration for K64F board.
- PSA configuration for PSA-enabled Cypress PSoC6 and NXP LPC55S69 boards. The configuration is in the
Device Management Connect client
- Disabled STL and Namespace pollution by default. These are deprecated features.
- [Mbed OS] Enabled secure storage feature (KVStore) by default.
- [Mbed OS] Disabled certificate enrollment features by default. You can enable them from application by setting
"mbed-cloud-client.disable-certificate-enrollment": null
in thembed_app.json
file. This saves 5.5 KB of flash.
Factory Configurator client
- Integration with PSA APIs.
- Factory Tool Communication Demo layer using asynchronous socket API.
- Bugfix for running with IAR8.32 compiler.
Device Management Update client
Added a temporary workaround for Cypress PSOC6 target to read each block from an external block device twice.
Platform Adaptation Layer (PAL)
- [Mbed OS] Added support for PSA-enabled Mbed TLS that is part of Mbed OS 5.12 release.
- Added new configuration flag for server socket APIs,
PAL_NET_SERVER_SOCKET_API
. The default is1
.- For quick porting, set it to
0
. You do not need to implementpal_plat_accept
andpal_plat_listen
, which factory configurator client requires for the factory flow.
- For quick porting, set it to
- Removed unused synchronous socket API implementation to reduce porting effort across different operating systems.
- Removed unused
PAL_NET_ASYNCHRONOUS_SOCKET_API
flag since there is only asynchronous socket implementation. - Improved test coverage for platform tests.
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 error401 (Invalid access key)
or401 (Unauthorized)
with Mbed CLI versions 1.9.0 or later. As a workaround, you may either runmbed dm init
with an explicit server address, for example-S https://api.us-east-1.mbedcloud.com
, or remove any localmbed_cloud_config.json
which may contain an old or incompatible configuration.- Python3 compilation does not work with Mbed OS 5.11 or earlier versions.
- See issues mbed-cli#836, Mbed OS#8146.
- PSA is in preview level and as such not ready for production yet.
- You cannot update the pre-compiled PSA binary through firmware update. You can only update the application itself.
- Cypress PSoC6:
- Issues with storage. Random failures can occur in testing.
- The native Wi-Fi driver is feature-rich and as such it is quite large (400 KB) and with PSA included (220 KB) there is not much space for the OS and application.
- Client has been tested with ESP8266 (due to flash size) without flow control, because flow-control does not work with this board yet. ESP8266 without flow-control will not work reliably.
- NXP LPC55S69:
- The board has only 640 KB flash. PSA takes 192 KB out of it.
- You can use the Client example (with firmware update and bootloader) with
release
profile due to the flash size limitation. - Only ARMC6 is supported for compilation.
- K64F:
- You can use the board in PSA mode (without real HW PSA implementation).
- The configuration file that allows this is placed under
configs-psa
folder in the example. - The PSA mode adds RAM consumption (static +3.5 KB) and flash/ROM consumption (+18.5 KB).
- Arm and partners are optimizing the solution in future releases.
Linux
- 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.
- If possible, update
- 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.
Device Management Client 3.0 Third Party IP report
Device Management Client uses some open source third-party IP (TPIP). This table lists the TPIP and sources:
Original | License | Description |
---|---|---|
cn-cbor | MIT | Factory configurator client (FCC) uses cn-cbor : A constrained node implementation of CBOR in C, with slight modifications. The code is at mbed-cloud-client/factory-configurator-client/secsrv-cbor. |
Unity | MIT | Platform Adaptation Layer (PAL) tests use Unity framework from ThrowTheSwitch. The code is at mbed-cloud-client/mbed-client-pal/Test/Unity. |
You also get more TPIP with the Mbed OS release itself, see their LICENSE.md for details.