Skip to content

Commit bd33863

Browse files
authored
[PC-####] Portenta X8: Using FoundriesFactory Waves Fleet Management Redefinition (#362)
* Initial commit - Tutorial content update * Tutorial content update
1 parent 8f31601 commit bd33863

File tree

1 file changed

+37
-21
lines changed
  • content/hardware/04.pro/boards/portenta-x8/tutorials/waves-fleet-managment

1 file changed

+37
-21
lines changed

Diff for: content/hardware/04.pro/boards/portenta-x8/tutorials/waves-fleet-managment/content.md

+37-21
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
---
2-
title: 'Using FoundriesFactory Waves Fleet Management'
3-
description: 'Learn how to manage multiple Portenta X8 devices using FoundriesFactory fleet management tool, Waves'
2+
title: 'Using FoundriesFactory® Waves Fleet Management'
3+
description: 'Learn how to manage multiple Portenta X8 devices using FoundriesFactory® fleet management tool: Waves.'
44
difficulty: intermediate
55
tags:
66
- Embedded Linux
@@ -13,7 +13,9 @@ hardware:
1313

1414
## Overview
1515

16-
In a production environment it is convenient to plan updates and have control over when and which devices are updated. FoundriesFactory® Waves is the feature for this. It allows you to easily define a group of Portenta X8s and then push updates to that specific group. The difference between standard updates and using Waves to update is that the Wave update will promote targets to production by double signing them, which makes the updates more manageable and controllable. This tutorial will show you how to define that group and how to construct a Wave that can then be pushed to a group.
16+
In a production environment, it is convenient to plan updates and have control over when and which devices are updated. FoundriesFactory® Waves is the feature for this. It allows you to easily define a group of Portenta X8 and then push updates to that specific group. The difference between standard updates and using Waves to update is that the Wave update will promote targets to production by double signing them, which makes the updates more manageable and controllable.
17+
18+
This tutorial will show you how to define fleets and how to construct a Wave that can then be pushed to a group.
1719

1820
## Goals
1921

@@ -23,66 +25,77 @@ In a production environment it is convenient to plan updates and have control ov
2325

2426
### Required Hardware and Software
2527

26-
- USB-C® to USB-A or USB-C® to USB-C®
27-
- Portenta X8
28+
- [Arduino Portenta X8](https://store.arduino.cc/products/portenta-x8)
29+
- USB-C® cable (either USB-C® to USB-A or USB-C® to USB-C®)
2830
- Arduino Create account
29-
- Arduino Cloud for business subscription with Portenta X8 Manager add-on. [Learn more about it](https://cloud.arduino.cc/plans#business).
31+
- Arduino Cloud for business subscription with Portenta X8 Manager add-on: [Learn more about here](https://cloud.arduino.cc/plans#business)
3032
- Foundries.io™ account (linked with the Arduino Cloud for business subscription)
31-
- FoundriesFactory® and devices already attached to your Factory. ([Check the Getting Started tutorial](https://docs.arduino.cc/tutorials/portenta-x8/out-of-the-box))
33+
- FoundriesFactory® and devices already attached to your Factory ([Check the Getting Started tutorial](https://docs.arduino.cc/tutorials/portenta-x8/out-of-the-box))
3234

3335
## Instructions
3436

3537
### Setting Up the Terminal
3638

37-
Waves fleet management requires us to have the X8 setup with FoundriesFactory. If you have not done so, please follow our [Getting Started tutorial](https://docs.arduino.cc/tutorials/portenta-x8/out-of-the-box), as it will walk you through setting up the X8 with your Factory. To use Waves, you need to have fioctl installed and configured. Follow this [guide](https://docs.foundries.io/latest/getting-started/install-fioctl/index.html) to do so.Creating Waves and device groups will be done via the host, which is your factory. As such, the following commands will be entered in a terminal using fioctl to connect to your Factory.
39+
Waves fleet management requires us to have the X8 setup with FoundriesFactory. If you have not done so, please follow our [Getting Started tutorial](https://docs.arduino.cc/tutorials/portenta-x8/out-of-the-box), as it will walk you through setting up the X8 with your Factory.
40+
41+
To use Waves, you need to have fioctl installed and configured. Follow this [guide](https://docs.foundries.io/latest/getting-started/install-fioctl/index.html) to do so. Creating Waves and device groups will be done via the host, which is your factory. As such, the following commands will be entered in a terminal using fioctl to connect to your Factory.
3842

3943
### Rotating Our Keys
4044

41-
For security purposes, we recommend that you rotate your FoundriesFactory keys. Rotation of the key will convert the root role's online-key, which was generated during the bootstrap of your Factory, to an [offline key](https://docs.foundries.io/latest/reference-manual/security/offline-keys.html).
45+
For security purposes, we recommend that you rotate your FoundriesFactory keys. Rotation of the key will convert the root role's online key, which was generated during the bootstrap of your Factory, to an [offline key](https://docs.foundries.io/latest/reference-manual/security/offline-keys.html).
46+
47+
First, we will rotate the root keys. These are the most important keys, as they are used to create new target keys. Rotate them with the command:
4248

43-
First we will rotate the root keys. These are the most important keys, as they can be used to create new target keys. Rotate them with the command:
4449
```
4550
fioctl keys rotate-root --initial /absolute/path/to/root.keys.tgz
4651
```
4752

48-
Now we can rotate the target only keys with:
53+
Now we can rotate the target-only keys with following command:
54+
4955
```
5056
fioctl keys rotate-targets /absolute/path/to/root.keys.tgz
5157
```
5258

53-
And finally, for security reasons, we separate the target keys from root using:
59+
And finally, for security reasons, we separating the target keys from the root using the following command:
60+
5461
```
5562
fioctl keys copy-targets /absolute/path/to/root.keys.tgz /path/to/target.only.key.tgz
5663
```
5764

58-
Now we can move on creating our Wave.
65+
Now we can move on to creating our Wave.
5966

6067
### Creating a Dummy Wave for Production Targets
6168

62-
Before a Factory can start doing production OTAs, an initial production Targets file must be created. More information can be found [here](https://docs.foundries.io/latest/reference-manual/ota/production-targets.html). This can be done by creating a dummy wave with the command:
69+
Before a Factory can start making production OTAs, an initial production Targets file must be created. For more information, please check out [here](https://docs.foundries.io/latest/reference-manual/ota/production-targets.html). We can begin by creating a dummy wave with the command:
70+
6371
```
6472
fioctl wave init -k /absolute/path/to/targets.only.key.tgz populate-targets
6573
```
6674

6775
Then complete the Wave with:
76+
6877
```
6978
fioctl wave complete populate-targets
7079
```
71-
This creates a new targets.json file for production devices, subscribing to the production tag. It will include a single Target from CI build.
80+
81+
This creates a new `targets.json` file for production devices, subscribing to the production tag. It will include a single Target from the CI build.
7282

7383
### Creating a Wave
7484

75-
Now we can start creating our Wave. The command below will create a Wave that can then be pushed to our devices. To create a Wave, we will sign it with a key, here we will use the targets only key. Then we give the Wave a name, target number, and tag. The `target number` needs to correspond to the target that we want the Wave to contain for our devices. The `tag` can be set as production or development.
85+
Now we can start creating our Wave. The command below will create a Wave that is pushable to our devices. To create a Wave, we will sign it with a key, and here we will use the targets-only key. Then we give the Wave a name, target number, and tag. The `target number` needs to correspond to the target that we want the Wave to contain for our devices. The `tag` can be set as production or development.
86+
7687
```
7788
fioctl wave init -k /absolute/path/to/targets.only.key.tgz <waveName> <targetNumber> <tag>
7889
```
7990

8091
And then we can complete the Wave by passing the name to the "complete" function:
92+
8193
```
8294
fioctl wave complete <waveName>
8395
```
8496

85-
Or we can cancel it with:
97+
If you decide to cancel, the following command will help you to do that:
98+
8699
```
87100
fioctl waves cancel <waveName>
88101
```
@@ -94,20 +107,23 @@ After creating the Wave, you should see it on your Factory page. It should also
94107
### Create the Device Group
95108

96109
With this command, we create our group, giving it a name and a short description:
110+
97111
```
98112
fioctl config device-group create <groupName> "<shortDescription>"
99113
```
100114

101-
Now to assign a device to our group we use:
115+
The name and the short description should be as explicit and concise as possible to highlight its group. Now to assign a device to our group we use the following command:
116+
102117
```
103118
fioctl device config group <deviceName> <groupName>
104119
```
105120

106-
On your FoundriesFactory device page you can sort and view devices by group.
121+
On your FoundriesFactory device page, you can sort and view devices by the group.
107122

108123
![Device group sorting on the FoundriesFactory page](assets/foundriesfactory-device-group.png)
109124

110-
To rollout our Wave to our device group, use:
125+
To roll out our Wave to our device group, use the following command:
126+
111127
```
112128
fioctl waves rollout <waveName> <deviceGroupName>
113129
```
@@ -116,7 +132,7 @@ Every device in the device group should now have the target specified in the Wav
116132

117133
### Conclusion
118134

119-
In this tutorial we first looked at what is required to use the Wave tool. We then went through the process of creating a Wave and device group. Then we pushed a target to the device group using the Wave tool.
135+
In this tutorial, we first looked at what is required to use the Wave tool. We then went through the process of creating a Wave and device group. Then we pushed a target to the device group using the Wave tool. With this, you have learned to use FoundriesFactory® Waves Fleet Management for multiple Portenta X8.
120136

121137
## Troubleshooting
122138

0 commit comments

Comments
 (0)