Skip to content

Commit 63e3fae

Browse files
Merge pull request #744 from theotherjimmy/document-mbed-dm
Document mbed dm
2 parents f89dc92 + 642fa46 commit 63e3fae

File tree

1 file changed

+88
-0
lines changed

1 file changed

+88
-0
lines changed

README.md

Lines changed: 88 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -787,6 +787,94 @@ All unit tests are under `mbed-os/UNITTESTS` directory. You can **generate** the
787787
$ mbed test --unittests --new rtos/Semaphore.cpp
788788
```
789789

790+
## Device Update
791+
792+
Arm Mbed OS allows you to update your device firmware, enabled by our Pelion IoT platform. Mbed CLI includes features to prepare and ship updates for devices managed through the [Device Management Portal](https://cloud.mbed.com/docs/current/introduction/index.html). Mbed CLI provides the subcommand `mbed device-management` to manage devices (`mbed dev-mgmt` and `mbed dm` are also available as shorter aliases). The remainder of this document uses the `mbed dm` alias for all device management subcommands. This document explains the steps to enable and use Pelion Device Management with a project.
793+
794+
### Project setup
795+
796+
Configure your Mbed Cloud SDK API key, target and toolchain. Obtain the API key from the the Device Management Portal.
797+
798+
```
799+
$ mbed config -G CLOUD_SDK_API_KEY <API_KEY>
800+
$ mbed target K64F
801+
$ mbed toolchain GCC_ARM
802+
```
803+
804+
Initialize the device management feature of Mbed CLI with the following command:
805+
806+
```
807+
$ mbed dm init -d "<company domain name>" --model-name "<product model identifier>"
808+
```
809+
810+
<span class="notes">**Note:** If you do not want to enter the subject information for your update certificate (country, state, city, organization and so on), add the `-q` flag to the command above.</span>
811+
812+
This command asks for information about your update certificate. After completing the prompts, Mbed CLI creates several files:
813+
814+
- A certificate in `.update-certificates/default.der`.
815+
- A matching private key in `.update-certificates/default.key.pem`.
816+
- A set of default settings in `.manifest_tool.json`.
817+
- Device Management update credentials in `update_defalut_resources.c`
818+
- Device Management settings in `.mbed_cloud_config.json`, including default settings for:
819+
- A unique vendor identifier, based on the domain name supplied as the `-d` parameter to `mbed dm init`.
820+
- A unique model identifier, based on the vendor identifier and the model name supplied as the `--model-name` to `mbed dm init`.
821+
- The path of the update certificate and private key.
822+
- Device Management developer credentials in `mbed_cloud_dev_credentials.c`
823+
824+
<span class="notes">**Note:** The certificate created in `mbed dm init` is not suitable for production. Use it for testing and development only. To create a certificate for production purposes, use an air-gapped computer or a Hardware Security Module. When going to production, conduct a security review on your manifest signing infrastructure because it is the core of the security guarantees for update client.</span>
825+
826+
### Single-device update
827+
828+
Mbed CLI provides a subcommand, `mbed dm update device`, for development with a device and for testing purposes. After following the steps in [Project setup](#project-setup), perform firmware updates on a device by running:
829+
830+
```
831+
$ mbed compile
832+
```
833+
834+
This generates a payload to update the device with. After generating the payload, update the device through Device Management with:
835+
836+
```
837+
$ mbed dm update device -D <device ID> -m <target>
838+
```
839+
840+
This performs several actions:
841+
842+
1. Upload the payload, generated by `mbed compile`, to Device Management.
843+
1. Hash the payload, and create a manifest that links to its location in Device Management.
844+
1. Create an update campaign for the supplied device ID, with the newly created manifest.
845+
1. Start the campaign.
846+
1. Wait for the campaign to complete.
847+
1. Delete the payload, manifest and update campaign out of Device Management.
848+
849+
### Multidevice update
850+
851+
To update more than one device, use Mbed CLI to generate and upload a manifest and payload to the Device Management portal. Then use the Device Management portal to create device filters that include many devices in an update campaign. After the steps in [Project Setup](#project-setup), you can create and upload manifests and payloads by running:
852+
853+
```
854+
$ mbed compile
855+
```
856+
857+
This generates a payload to update the device with. After generating the payload, upload the payload and manifest with:
858+
859+
```
860+
$ mbed dm update prepare
861+
```
862+
863+
`mbed dm update prepare` automatically uses the update payload that `mbed compile` generates. You may provide a name and description for the payload and corresponding manifest with additional arguments:
864+
865+
```
866+
$ mbed dm update prepare -n <PAYLOAD_NAME> -d <PAYLOAD_DESCRIPTION>\
867+
--manifest-name <MANIFEST_NAME> --manifest-description <MANIFEST_DESCRIPTION>
868+
```
869+
870+
Both methods of creating a manifest use the defaults created in `mbed dm init`. You can override each default using an input file or command-line arguments.
871+
872+
Once you execute `mbed dm update prepare`, Mbed CLI automatically uploads the payload and manifest to Device Management, and you can then create and start an [update campaign](https://cloud.mbed.com/docs/current/updating-firmware/update-campaigns.html) using the Device Management Portal.
873+
874+
### Advanced use
875+
876+
Mbed CLI allows for significantly more flexibility than the model above shows in exactly the same way as [the manifest tool](https://cloud.mbed.com/docs/current/updating-firmware/manifest-tool.html). You can override each of the defaults that `mbed dm init` sets by using the command-line or an input file. Mbed CLI supports a variety of commands. You can print a full list of commands by using `manifest-tool --help`.
877+
790878
## Publishing your changes
791879

792880
### Checking status

0 commit comments

Comments
 (0)