What are the supported/recommended software update solutions for Apalis imx8?

Hi, our product is using Apalis imx8 and running Yocto/OpenEmbedded distribution. We would like to provide software update solution to our customer (to update the embedded application, kernel, root filesystem, device tree). Below are the requirements:

  • Update can be done via network (OTA)
  • Preserve specific files across software update
  • Failsafe (A/B approach is preferred)

After browse through the web, I found that Mender and RAUC seems to fulfill my requirement. However, I’m not sure are they supported and tested on Apalis imx8.

Hence, I would like to ask what are the supported/recommended software update solutions for Apalis imx8?
It would be great if you could recommend me a solution that met my requirement, as well as straight forward to implement (have references/guide for me to follow).

Thanks!

Hi @kh_ong , have you heard about Torizon? It should come up at least when installing an image on Toradex Easy Installer :slight_smile:

It is our own Easy-to-use Industrial Linux Software Platform, based on Yocto, that includes features like OTA, which I think fits your use-case.

Given that it is our own solution, that we developed ourselves and specifically oriented for our modules, it is definitely our first option.

We are currently in the middle of a promotion to get customers introduced into Torizon, where you can get a (free) 30 mins consultation with our Engineering Experts in case you are interested: Free 30 minute Consultation - Torizon.

Feel free to further ask in case you have doubts. Kind regards, Alvaro.

Hi @alvaro.tx , unfortunately, my product is not using Torizon (it’s running Yocto image locally) and we are already in the midst of development so we don’t plan to change it.

What would be your recommendation on the software update solution for my case?

I see… Hmm, I’m probably biased, but I still think that you should be able to easily make the change to Torizon, after all it is also based in Yocto Linux, the BSP is also the same since basically Torizon inherits all the BSP development (the kernel uses a different branch, as far as I know, tho), and we just add some extra stuff on it (like the Docker container and the related OTA stuff). The OS has a fancy name (TorizonCore) but that is pretty much it. It should cover your use case with ease.

Not sure what you mean with Yocto local image, but Torizon is also a local image saved in the module eMMC (Is not a Cloud based system or anything like that - Not sure if you meant this). Or why do you think changing to Torizon at this point could be an issue? Is it the Docker implementation? I’m very curious as you might be right.

To be honest, I’m concerned that trying to integrate another complete solution would cost more in terms of development hours (and probably development expenses). But for other solutions, Mender definitely is a well-trusted partner of us and they will provide a great solution. As far as I know, they should support Apalis iMX8. We can introduce them to you if needed.

My understanding is, if we are using Torizon, then our embedded application will be running inside a container. If our application is running inside the container, it seems like it has to go through another layer of hardware abstraction instead of directly interface with the IO/device driver (I could be wrong, as I’m still new to container technology…).

For our product, we design our own carrier board and hence we need to write our own Device Tree and potentially patch the kernel. As we are unsure what limitation Torizon has, and we also want to have more control over the image configuration as well as less complicated solution (so that it’s easier for us to debug if something went wrong), hence we feel more comfortable to run the application locally on the Yocto image rather than running it inside a container.

Mender definitely is a well-trusted partner of us and they will provide a great solution

Do you mind to share with me some documents/references so that I know how to set it up on Apalis iMX8?

Hi @kh_ong

The standard architecture for apps running on Torizon is to run them in containers. This will add some overhead in terms of disk space but is largely mitigated by the Docker layering concept. There is also a small amount of overhead when launching the apps/containers, but at runtime, the processes inside the container are just standard Linux processes with some extra task control flags set. They are scheduled and run natively on the processor by the kernel; there is no extra scheduling overhead or anything like that.

Of course, as @alvaro.tx mentioned, the Torizon Yocto layers are all open source so it is feasible to do a fully custom Yocto build with our layers, and integrate your application into the base OS and avoid containers entirely. The big downside of this approach is that updating your application requires a full OS image update which takes longer, and requires a reboot. If your applications are running in containers, you can more easily do frequent updates of just the application/libraries, and simply restart the container, minimizing downtime for your users.

We are also partners with Mender, which provides the dual A/B update model you mentioned. I am actually the community maintainer for the Mender integration to Toradex boards and can confirm that Yocto/dunfell works fine with the apalis-imx8 platform. You can find specifics about that integration here.

HTH,
Drew

1 Like

Torizon is “Great concept”
but one small flaw: very long startup of the system (OS+ app)
I want to use but I can’t :grimacing: (I need <12s)

The 5.4.0 release has some significant speed-ups. I know for some platforms we have seen under 14s and that is without any significant app-specific optimization, so it’s close to your 12s requirement. I certainly encourage you to give it a try and see if it is close.

There are likely other optimizations that can be done to reduce that even further but we don’t necessarily want to make them in the general project since they are likely going to be application-specific. Things like reordering the startup services and starting a graphical splash screen even earlier in the boot will help. We would definitely like feedback on real-world use cases if you end up working with it. I’m happy to help if you can describe your application stack and what it means for the system to be up and running after 12s. What activities do you expect to be happening in that timeframe?

Drew

1 Like

Hi again @kh_ong , here @drew.tx left you some very interesting comments. He is the official Mender maintainer for our products, so you can trust his advise.

BTW, in case you don’t want to move to containers, you can also use what is known as “TorizonCore Lite” which is basically mixing what would work for you from both worlds:

  • No containers, develop like always with Yocto.
  • OTA updates (using OSTree, instead of the usual A/B system)

Feel free to reach out if you have any doubts about this.

Kind regards,
Alvaro.

2 Likes

Thank you so much @alvaro.tx and @drew.tx! I will look into your recommendation and references, then choose a feasible option for my product. You guys are very helpful, thanks again!

1 Like

Hi @alvaro.tx, the “TorizonCore Lite” seems to be the solution that I want to adopt for one on our project based on colibri-imx6ull. Please, could you point me to the documentation of this release? Looking on developer website I am unable to find anything about “TorizonCore Lite”.

Best regards,
Stefano.

Hi @SCordibella , thanks for the info and great to hear that. I think we don’t have much information on the release itself since it is not like a separation of the current Torizon offering (but based on recent events, we might have to further clarify this so…). I think we don’t even have a separate distro called “Torizon Lite” with the OTA stuff but without the container stuff. But let me ping to the Torizon (and marketing) team about your request. Someone will get back to you.

Basically, and just expanding on what my colleague @drew.tx and I said above, instead of using containers, you will be doing your development with Yocto, like always, forgetting about the existence of containers. As for the OTA solution, this would fall under the “Commercial tier” since you will have to do “Customized TorizonCore OS updates” that are not covered by the free plan: Torizon - Simplifying the Development and Operation of Linux IoT Devices

However, worry not about the pricing since (internally) we just changed the “90 day free trial” to “Free until production” so feel free to experiment and confirm the functionality without any time pressure whatsoever.

Kind regards,
Alvaro.