OS update via OTA

balena cli document says like below

“Cannot update the host os via OTA in openbalena”

If this is true, can I update the host OS with balenaHUP ? I have found this project, but I am not sure if it still works for me. Additionally, I have seen some issues on this GitHub page, but I have not read any responses to them since September 2022. Furthermore, I am running balenaOS on a Raspberry Pi 4, and I cannot find the Dockerfile for Raspberry Pi 4 on this project.

Has anybody experienced this project before?

Thanks in advance.

Hello @chester you only can update the host OS on balenaCloud.

You can read the differences between openBalena and balenaCloud here GitHub - balena-io/open-balena: Open source software to manage connected IoT devices at scale

We know that there are some large fleets using openBalena. However, we as a company consider it still to be in Beta status. We don’t perform regular testing on the platform like we do balenaCloud, and we do not yet have feature-parity between the various services we offer as mentioned before.

What Dockerfile do you need? What project are you trying to build? did you check hub.balena.io?

Good day!

I must have made it clean when I use this. The this in my sentence is balenaHUP. As far as I understood, this project builds a docker image to upgrade the host OS. There are Dockerfiles for RPi2, RPi3 but not for RPi4.

At first, I also understood that the information provided was all the differences between openBalena and Balena Cloud. However, when I tried to update the host OS and checked the Balena CLI documentation, I found the sentence stating that it is only supported on the cloud, as quoted above.

Thank you


I’m afraid I don’t fully get your last statement. Do you have any further question on the remote hostOS update via the balena cli or not?
The balena cli supports host OS updates only when you run the device via balenaCloud und the device is actively connected to balenaCloud.

Best Regards


As I mentioned earlier, I understand that I can only update the host OS via OTA using balena cli when using balenaCloud.

I am here to inquire about the functionality of the balenaHUP project. Upon reviewing the files in this repository, I was unable to locate the files for the Raspberry Pi 4. However, there are files available for Raspberry Pi 2/3.

To clarify, I am not asking how to update the host OS without balenaCloud, but rather seeking information on experiences with this project.

However, upon further investigation, it seems that this project may not work properly.

Thank you.


Just to clear up a few things, I’d like to ask a few followup questions :slight_smile:

  • are you using open balena, or balena cloud (this is on the openbalena forum, but just being sure here)
  • as my colleagues mentioned, host OS updates are currently not supported in open Balena - so if you are looking into open Balena, then I think you could be out of luck.
  • we have a roadmap item here: Enable balenaOS host-updates in openBalena · Balena Roadmap for enabling this - if you upvote it , it could go towards us prioritising this in the future
  • this project: GitHub - balena-os/balenahup: BALENA Host os UPdater - actually contains the scripts that are used in balena cloud to perform host OS updates - I’m not certain that it would work for open balena


@mpous , I have been reading the page you suggests: GitHub - balena-io/open-balena: Open source software to manage connected IoT devices at scale

Maybe I am blind, or there is something I misinterpret, but where does it state that OS updates are not possible with openBalena?

@rcooke-warwick thank you for sharing details on the balenahup project. I had previously thought that balena cloud handled updates using this script included with balenaos, which we are also using and works great. Would you mind explaining how balena cloud uses balenahup and whether or not it uses the meta-balena script linked above? It seems there is some overlap in functionality between the two which is why I’m curious.

UPDATE: In looking through the balenahup code, it appears that it is basically a wrapper for the hostapp-update script (with some checks that it is a supported hostapp OS, etc.). But what I’m most curious about is the question as to how balena cloud uses balenahup - i.e. if I trigger a host OS upgrade request in balena cloud, is it really just running the upgrade-ssh-2.x.sh script for the target devices? I would have thought it would be more involved, i.e. how would it handle a scenario where a device is offline at the time an update request is made? Is the upgrade not orchestrated through the supervisor using a configuration variable?

Hi David, hostOS updates are currently triggered via the VPN from a proxy server (so offline hostOS updates are not possible), and as you say balenaHUP is a wrapper around hostapp-update which will also perform the supervisor update. This proxy element is missing from openBalena. balenaHUP is also performing some pre-update checks and specific device hooks.

Supervisor driven hostOS updates is a roadmap item that the team is working towards but needs several architectural changes to implement.

may this will help somebody:
ssh upgrade for openbalena (combines openbalena API und public API to get correct pre-build images)

to perform ssh proxy tunnel use this setup:

When is the new upgrade process for the hostOS and supervisor available for open balena?