Project proposal 2013


Atilla Filiz
 

Generic upgrade infrastructure for embedded systems.

; Summary: Generic upgrade infrastructure for embedded systems.

; Proposer: Atilla Filiz, Arnout Vandecappelle

== Description ==

Experience as an embedded software contractor shows that most clients
need a means to upgrade their devices in the field. Often these
solutions are ad-hoc, and need to be redone for each project,
although requirements are similar.

A collection of scripts and permissively licensed source code will help
device manufacturers to rapidly and safely implement a secure,
fail-safe,
atomic upgrade system for their devices.

The infrastructure will allow an embedded system to have one backup
firmware, and one or two main firmware partitions. When a new firmware
is downloaded and written as a main firmware, the upgrade system makes
sure
the device can boot. If the upgrade fails due to power, file corruption
or
other factors, the system recovers by booting the previous firmware or
a
failsafe firmware to retry upgrading.

Having this feature will prevent reinventing the wheel for each new
product when it comes to upgrading.

== Related work ==
* FOSDEM/ELC-E Presentation:
http://mind.be/content/Presentation_Upgrade-without-Bricking.pdf
* Generic project repository with detailed documentation:
https://gitorious.org/gupies
* CGI based project repository:
https://gitorious.org/embedded-linux-firmware-upgrade-tool

== Scope ==
A basic system can be implemented and unit tested in six person-weeks.
This includes support
for a single bootloader (U-Boot), for overwriting an MTD partition and a
UBI volume. This also
includes a wire format for the upgrade image and documentation for the
platform-specific part,
needed per project. Additional partition types (e.g. mbr) or bootloaders
(e.g. barebox) require
additional effort.

== Contractor Candidates ==
Arnout Vandecappelle (Essensium/Mind)

== Comments ==


[[Category:Project proposals 2013]]


Robert Schwebel
 

Hi,

On Tue, Sep 17, 2013 at 05:08:11PM +0200, Atilla Filiz wrote:
Generic upgrade infrastructure for embedded systems.
Will you be at ELC-E? Sascha has a barebox talk there:
http://embeddedlinuxconferenceeu2013.sched.org/event/d7296221f5c9c177a2f84f5da58ece9b#.Ujh1HR_Yo7Y
System updating is an important feature for us as well. The bootloader
spec work outlined in this talk is basically about redundancy boot and
system updating in a more systematic and "embedded-is-not-(that)-
special" way.

rsc
--
Pengutronix e.K. | |
Industrial Linux Solutions | http://www.pengutronix.de/ |
Peiner Str. 6-8, 31137 Hildesheim, Germany | Phone: +49-5121-206917-0 |
Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-5555 |


Jean-Christophe PLAGNIOL-VILLARD
 

On 17:08 Tue 17 Sep , Atilla Filiz wrote:
Generic upgrade infrastructure for embedded systems.

; Summary: Generic upgrade infrastructure for embedded systems.

; Proposer: Atilla Filiz, Arnout Vandecappelle

== Description ==

Experience as an embedded software contractor shows that most clients
need a means to upgrade their devices in the field. Often these
solutions are ad-hoc, and need to be redone for each project,
although requirements are similar.

A collection of scripts and permissively licensed source code will help
device manufacturers to rapidly and safely implement a secure,
fail-safe,
atomic upgrade system for their devices.

The infrastructure will allow an embedded system to have one backup
firmware, and one or two main firmware partitions. When a new firmware
is downloaded and written as a main firmware, the upgrade system makes
sure
the device can boot. If the upgrade fails due to power, file corruption
or
other factors, the system recovers by booting the previous firmware or
a
failsafe firmware to retry upgrading.

Having this feature will prevent reinventing the wheel for each new
product when it comes to upgrading.

== Related work ==
* FOSDEM/ELC-E Presentation:
http://mind.be/content/Presentation_Upgrade-without-Bricking.pdf
* Generic project repository with detailed documentation:
https://gitorious.org/gupies
* CGI based project repository:
https://gitorious.org/embedded-linux-firmware-upgrade-tool

== Scope ==
A basic system can be implemented and unit tested in six person-weeks.
This includes support
for a single bootloader (U-Boot), for overwriting an MTD partition and a
UBI volume. This also
includes a wire format for the upgrade image and documentation for the
platform-specific part,
needed per project. Additional partition types (e.g. mbr) or bootloaders
(e.g. barebox) require
additional effort.
we are currently working on such project with a full c application under GPLv2
call linupdate + barebox

that will support secure boot platform too such as STB

Best Regards,
J.

== Contractor Candidates ==
Arnout Vandecappelle (Essensium/Mind)

== Comments ==


[[Category:Project proposals 2013]]



_______________________________________________
Celinux-dev mailing list
Celinux-dev@...
https://lists.celinuxforum.org/mailman/listinfo/celinux-dev


Bird, Tim <Tim.Bird@...>
 

On Tuesday, September 17, 2013 8:08 AM Atilla Filiz [Atilla.Filiz@...] wrote:

Generic upgrade infrastructure for embedded systems.
Thanks. This is an interesting project, which I've added to the wiki at:
http://elinux.org/Generic_upgrade_infrastructure_for_embedded_systems

I'll also try to add commentary from the e-mail discussion to that page as well.
So anyone who has feedback or insights into this project, please feel free
to discuss them on this list.
-- Tim


Thomas Petazzoni
 

Dear Atilla Filiz,

On Tue, 17 Sep 2013 17:08:11 +0200, Atilla Filiz wrote:
Generic upgrade infrastructure for embedded systems.

; Summary: Generic upgrade infrastructure for embedded systems.

; Proposer: Atilla Filiz, Arnout Vandecappelle

== Description ==

Experience as an embedded software contractor shows that most clients
need a means to upgrade their devices in the field. Often these
solutions are ad-hoc, and need to be redone for each project,
although requirements are similar.

A collection of scripts and permissively licensed source code will help
device manufacturers to rapidly and safely implement a secure,
fail-safe,
atomic upgrade system for their devices.

The infrastructure will allow an embedded system to have one backup
firmware, and one or two main firmware partitions. When a new firmware
is downloaded and written as a main firmware, the upgrade system makes
sure
the device can boot. If the upgrade fails due to power, file corruption
or
other factors, the system recovers by booting the previous firmware or
a
failsafe firmware to retry upgrading.

Having this feature will prevent reinventing the wheel for each new
product when it comes to upgrading.
Interesting, thanks. I was also pondering proposing a project around
system upgrade for embedded systems, but I was thinking of a different
approach. Rather than implementing yet another tool/infrastructure, I
wanted to propose a project that consists in writing a
document/white-paper that details the different system upgrades
solutions that one can use (for example: dual kernel+rootfs partitions,
or minimal kernel+initramfs, updating from the bootloader or from
Linux, full system update vs. package based updates), with details on
their respective advantages/drawbacks, and how to implement them.

I believe the problem in this space is not the much the solutions
themselves, but rather the lack of a central document to help people
make their mind between the different available solutions, and to help
them find the relevant existing tools / bits of code. I don't think
it's a problem that can be solved in a one-solution-fits-all way,
depending on the context (size of flash, type of embedded system,
origin of the firmware upgrades, etc.) there will necessarily be
different solutions.

Best regards,

Thomas
--
Thomas Petazzoni, Free Electrons
Kernel, drivers, real-time and embedded Linux
development, consulting, training and support.
http://free-electrons.com