Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Getting device owner's approval to perform update/install/remove #52

Closed
sophokles73 opened this issue Jan 23, 2024 · 3 comments
Closed
Assignees
Labels
feature New feature or request

Comments

@sophokles73
Copy link

We want to use Kanto's Update Manager mechanism in the Software Defined Vehicle context.
In particular, we are thinking about implementing an Update Agent which can perform a firmware update of an OEM specific control unit (ECU).

In general, the process maps pretty well to the Update Agent's state machine. However, after having downloaded the firmware artifact(s) and before applying the update, we would need to obtain the driver's approval for actually performing the firmware update. This is because the vehicle might not be usable during the update process which might take up to several hours.

We already thought about implementing a custom component which monitors the Update Agent's desired state feedback topic and produces a (custom) message for the Update Agent once the driver approval has been gathered (the mechanism for doing so is out-of-scope here). However, given that this seems to be a common use case (not only in the SDV context), we wonder if it makes sense to add to the Update Agent state machine in a generic way.

WDYT?

@k-gostev k-gostev added the feature New feature or request label Jan 23, 2024
@k-gostev
Copy link
Contributor

We have also discussed this functionality with @dimitar-dimitrow, and we think it would be a must have addition to the update manager. We just need to see how to fit this on the roadmap.

@dimitar-dimitrow dimitar-dimitrow self-assigned this Apr 4, 2024
@dimitar-dimitrow dimitar-dimitrow moved this to In Progress (max 10) in Eclipse Kanto Apr 4, 2024
@dimitar-dimitrow
Copy link
Contributor

Getting the device owner's approval could be done as a communication(MQTT) between UM and a software component running on HMI(Human Machine Interface). MQTT topics and payloads should be defined. Here are some open questions that could be used to better define them.

After a discussion with @k-gostev , we aligned on the following things:

  • The whole desired state will be approved at once, to minimize the owner's efforts.
  • As a start a property will be added to the UM to configure before which phase(download/update/activate) the owner's approval will be requested. At a latter stage this configuration could be included to the desired state.
  • The download/update/activate phases should be synced across agents. Currently one agent could be in the updating phase, while another one is still downloading. This will allow us to request an approval once all agents have gone though the downloading phase for example.
  • As of now the owner should have the options to either accept or reject the update. Rejecting the update would mean that the current desired state will be dropped and a new one should be issued from the cloud. In the future scheduling could be added.
  • The approval request should be accompanied with a message describing the update to the owner. The message could include a interval in which the update is expected to finish e.g. 10-30min. The message should be included in the desired state.
  • For a start MQTT topics and message payloads will not follow the Hono/Ditto spec, approvals will be accepted only from HMI on the device . On a latter stage Hono/Ditto support could be added, this will enable the use case of accepting the update through the cloud on another device(e.g. smartphone).

@github-project-automation github-project-automation bot moved this from In Progress (max 10) to Done in Eclipse Kanto Jun 28, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
feature New feature or request
Projects
Status: Done
Development

No branches or pull requests

3 participants