Is there any standard functionality in BalenaOS that allows us to show OS update progress / connectivity status on the screen of our device (or for example a tail of the logs like what is visible on the dashboard device summary page)?
This is our use-case:
Our device uses a Raspberry Pi CM4 that we flash with a base image
We preload this image with the latest release of our application (at the point of flashing, using balena preload)
Because we do frequent releases of our application, almost always when the device is powered on for the first time it needs to download the latest release
Sometimes this causes confusion as to whether or not the device is fully finished installing, because due to a number of reasons (no connectivity, bad connectivity) it might not be 100% done but that is not always obvious just looking at the screen (a previous version of the app can be running)
This can cause some of our tests to fail and we want to be able to spot the difference between a pending software update, or a defect with the hardware / assembly of our device
It is good to mention that in our normal flow during assembly of the device there is no access to the Balena dashboard
As i understand you would like to show on your device display update progress. First idea that gets into my mind is to ask to the supervisor the download_progress and update_pending.
I am familiar with pulling this information from the supervisor. However, this means we would have to either add a new service (or add functionality to an exciting service) to display this information. This was our plan B.
I was hoping there to be BalenaOS native functionality that we could use. Otherwise, besides adding complexity to our application, it would be a bit less robust. (Because if we add it to a service, which for some reason fails to start, it will not show anything on screen and this is exactly one of the cases we are trying to prevent, or at least be made aware of.)
We provide the API/SDK to get this information, but it’s up to you how you’d like to consume it.
We are working on a local dashboard, hosted on device(s), so when this feature is shipped, it will most likely cover your use-case. We can’t give any ETAs though.
In the mean time, you could consider running a simple web server on the device URL (port 80) to show the contents of the device-state endpoint query (JSON). This should only cost a few lines of code.