lueschem / edi-cl

This repository contains an edi project configuration for Compulab embedded devices.
https://www.get-edi.io
Other
10 stars 2 forks source link

Firmware update #25

Open anysomewhere opened 1 month ago

anysomewhere commented 1 month ago

Hi Matthias,

edi-cl is a huge help to build our system-images.

Context: With the newest release r3.2.1 from compulab we need to update the firmware of our devices as the new kernel won't work correctly (missing can device besides other issues). Building the new firmware is easy and it works well after flashing

Issue: It's not feasable to manually copy and flash the firmware to all our devices. Is is possible to embed the new firmware in the mender image created by edi-cl?

Thanks in advance.

lueschem commented 1 month ago

Hi

Cool that edi/edi-cl is helpful for building your OS images!

U-Boot updates are always a bit tricky and there is a (small) chance to brick the device if it gets powered off in the wrong moment. However, it is still a viable solution instead of visiting each device out there. Furthermore I would try to schedule the update of U-Boot in a good moment where there is limited likelihood of somebody removing the power supply again. After the update I would reboot the device to double check that everything is working properly.

In case you are using Mender for the OTA update I would personally ship the updated U-Boot as a separate Mender update module artifact: https://docs.mender.io/client-installation/use-an-updatemodule

In case Mender is not being used then the situation is a bit more complex. A possibility would be to include the bootloader into the image and flash it during boot. Some logic needs to be implemented that the current version of u-boot gets retrieved in order to not (re-)flash u-boot on every boot.

IMHO the Mender update module would be the more elegant approach. In a perfect world we could even make use of the fact that the hardware has two boot partitions (/dev/mmcblk2boot0 and /dev/mmcblk2boot1) in order to make it more fail safe. Are you using Mender?

anysomewhere commented 1 month ago

Yes, we are using mender. Shipping the updated U-Boot as a seperate Mender update is for sure a possible solution. We then have a loose dependency between the new kernel and the new firmware as the new kernel only fully works with the new kernel.

Thank you for the hint with the mender update module. I will write a module to update the firmware as safely as possible. Then we will see how that goes.