You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: README.md
+88Lines changed: 88 additions & 0 deletions
Original file line number
Diff line number
Diff line change
@@ -787,6 +787,94 @@ All unit tests are under `mbed-os/UNITTESTS` directory. You can **generate** the
787
787
$ mbed test --unittests --new rtos/Semaphore.cpp
788
788
```
789
789
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:
<spanclass="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
+
<spanclass="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:
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:
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`.
0 commit comments