Roadmap for BalenaOS Updates in OpenBalena

Hi Balena team,

Congrats on the rebrand and the OpenBalena release, fantastic to see this open source’d instead of the industry re-inventing this particular wheel over and over!

We’re super keen to pivot our development efforts to OpenBalena for base device registration and management, however need to understand the plans for OpenBalena’s OS updates.

Q: Will this be the same “dual partition, auto-reboot into old OS on failed boot” solution currently found in BalenaCloud? Or is this something the community is expected to re-invent for the open source version?

Any details you could expand on the plans here/timeframes and anything the community can do to help push this forward?

Kind Regards,
Matt

2 Likes

Hello @KyrosMatt, host OS updates will be supported on openBalena and will be identical to balenaCloud. The current server-side bits for host OS updates on balenaCloud depend on functionality that is not relevant to openBalena (for legacy device support reasons) so we’re looking to start clean and implement a better solution that will be identical in both platforms.

Currently, host OS updates are planned for the first non-beta openBalena release. There is no ETA currently, we’re working as fast as we can, but also want to reap the benefit of starting clean in some fronts. You can find a brief roadmap here: https://github.com/balena-io/open-balena#roadmap

Hi @KyrosMatt,

HostOS update functionality is available in OpenBalena also.

At this moment the user will need to manually execute some binaries to update the hostOS and the supervisor.

Regards!

Hey @dfunckt @spanceac.

Thanks for the info and the super fast responses :smiley:
That is exactly what we wanted to know.

Hello @spanceac,
could you share any link/hint on where such commands can be found ?

@KyrosMatt, @KingRial, sorry for the delay - a previous reply to this thread failed to be synced here because of an issue with our support software.

We are working to make host OS upgrades easier on openBalena. Meanwhile, the following example shows how to upgrade the host OS and the supervisor by running some commands on the host OS itself.

For example, assuming a Raspberry Pi 3 running balenaOS version v2.26.0 that should be upgraded to version v2.29.0, the first command to run (on a host OS shell) is:

  • hostapp-update -r -i resin/resinos:2.31.0_rev1-raspberrypi3

The names of host OS images (such as “resin/resinos:2.31.0_rev1-raspberrypi3”) can be found on the Docker Hub: https://hub.docker.com/r/resin/resinos/tags
Please select the highest available image “revision”, e.g. ‘rev3’ in preference to ‘rev2’ or ‘rev1’.

Then the balena supervisor needs to be updated as well. For example, the command to update the supervisor to version v9.9.0 (to be executed on a host OS shell) is:

  • update-resin-supervisor -t v9.9.0

Although the balena supervisor can be updated independently of balenaOS, we test selected versions of the supervisor with balenaOS releases, so it’s a good idea to use those supervisor versions. Search the meta-balena ChangeLog for “supervisor” to find out the supervisor version that goes together with a balenaOS version.

WARNING: for anyone reading this post, these instructions only apply to openBalena. If using balenaCloud, or if you are unsure, please upgrade the host OS through the web dashboard.

3 Likes

@pdcastro, has there been any progress on updating balena OS with openBalena ?

@mrrobot, thank you for asking the question: It has had the helpful effect of a renewed internal discussion between the OS / fleet ops / openBalena teams. The work to make it easier to do host OS updates on openBalena is waiting for a pre-requisite redesign of some architecture components, and unfortunately I don’t have a time estimate to share at the moment. Meanwhile, the workaround I am aware of is to manually run the commands mentioned in my post above.

1 Like

@pdcastro, thank you for your reply. Best regards.

@pdcastro Is there any update on the architectural redesign? Roughly speaking, are you targeting this year? Or, are we looking toward sometime next year?

Hi, several pieces are required before this work can take place, and only some of them have been completely specified. Unfortunately we cannot provide any estimate for this support to be available.

@alexgg Thanks for the reply. Is this same work impacting the drift between the open product and it’s dependencies (versions of BalenaOS or CLI that can be used)? Or, is that gap expected to tighten in the near term?

Hi, it’s not related to that. The gap is intended to shrink and allow openBalena use the same OS versions as balenaCloud.

@floion, curious if any progress has been made on this item as we would be interested in it as well.
While we wait for it to be incorporated into openbalena, we are building our own OTA host OS updater into our custom yocto image. I would be interested in any feedback on our proposed approach:

  • Add a new service to the BalenaOS image which on regular intervals monitors a device environment variable (say HOST_OS_VER) which is initially set to the host OS version for the built image
  • When making updates to the host OS in Yocto, ensure the updated images are pushed to docker (probably requires a custom script / modifications to jenkins_build.sh)
  • When ready to push host OS updates to devices in the field, update the HOST_OS_VER for the devices which are to be updated
  • When the service detects a difference between HOST_OS_VER and the running host OS version, it runs the hostapp-update command per @pdcastro above.
  • Same process for updating resin-supervisor (does the order matter?)
1 Like

We appreciate the interest and the updates from your side @drcnyc.
While I don’t have any internal details or discussions to share at the moment besides that the final feature is not quite ready, active work is ongoing and PRs are being submitted on a regular basis.

I’d also like to attach a (somewhat placeholder) GH issue Support native hostapp updates · Issue #102 · balena-io/open-balena · GitHub to track future updates from our side.