SlideShare a Scribd company logo
1
Swupdate: how to update
your embedded device?
Charles-Antoine Couret September 2018
2
Summary
 Introduction
 Main update designs
 Swupdate presentation
 Implementation
 Conclusion
Embedded recipesEmbedded recipes
Swupdate: how to update your embedded devices?Swupdate: how to update your embedded devices?
Charles-Antoine Couret September 2018
3
Introduction
Embedded recipesEmbedded recipes
Swupdate: how to update your embedded devices?Swupdate: how to update your embedded devices?
Charles-Antoine Couret September 2018
4
Introduction
Why update your embedded devices?
 Fix security issues or bugs
 Add new features
Some constraints to keep in mind
 Cost (bandwidth + development)
 Reliability
 Hardware capabilities (CPU power + memory + storage)
 Local or remote operation
 Security
 Downtime
Embedded recipesEmbedded recipes
Swupdate: how to update your embedded devices?Swupdate: how to update your embedded devices?
Charles-Antoine Couret September 2018
5
Main update designs
Embedded recipesEmbedded recipes
Swupdate: how to update your embedded devices?Swupdate: how to update your embedded devices?
Charles-Antoine Couret September 2018
6
Main update design: packages repository
 Similar to other distributions
Pros:
 Reduced bandwidth usage
 Low required storage
 Simple to deploy (especially with Yocto)
 Short downtime
Cons:
 No atomic operations (until OS-Tree)
 Complex / impossible roll back mechanism
 Unknown state of the device, several combinations of packages are
possible
Embedded recipesEmbedded recipes
Swupdate: how to update your embedded devices?Swupdate: how to update your embedded devices?
Charles-Antoine Couret September 2018
7
Main update design: recovery OS
 Recovery OS to download then install full update
Pros:
 Easy to update another image in case of invalid system
 Low storage (just kernel + initrd with some tools => extra ~10 MiB)
Cons:
 Recovery OS not updated
 Big bandwidth is required : complete firmware is downloaded
 Possible long downtime
Embedded recipesEmbedded recipes
Swupdate: how to update your embedded devices?Swupdate: how to update your embedded devices?
Charles-Antoine Couret September 2018
8
Main update design: dual copy
Pros:
 Everything is updatable (except the bootloader)
 Atomic operation
 Short downtime
Cons:
 Need more bandwidth + storage
 Could require a good process to validate new image
Embedded recipesEmbedded recipes
Swupdate: how to update your embedded devices?Swupdate: how to update your embedded devices?
Charles-Antoine Couret September 2018
9
Other considerations for all designs
Must have:
 Redundant bootloader environment
 Signed or encrypted updates
 Infinite loop proof based on watchdog or consecutive restarts
Not to do:
 Update bootloader (if you don’t have redundant bootloader)
Embedded recipesEmbedded recipes
Swupdate: how to update your embedded devices?Swupdate: how to update your embedded devices?
Charles-Antoine Couret September 2018
10
SWupdate
Embedded recipesEmbedded recipes
Swupdate: how to update your embedded devices?Swupdate: how to update your embedded devices?
Charles-Antoine Couret September 2018
11
Swupdate presentation: general
OpenSource software
Developped by Stefano Babic from DENX company
Repository: https://github.com/sbabic/swupdate
Features:
 Configuration at compile time
 Handle embedded storage: UBI, eMMC, SD, Raw NAND, NOR and SPI-
NOR
 Get updates from local / remote web server, hawkBit connector or local
file
 Support compression, encryption, signature checking, etc.
 Support redundant dual-copy and recovery OS designs
 U-boot integration
 Check software and hardware compatibility
Embedded recipesEmbedded recipes
Swupdate: how to update your embedded devices?Swupdate: how to update your embedded devices?
Charles-Antoine Couret September 2018
12
Swupdate presentation: other features
 Adding new hook or handler (in C or Lua), to update a specific FPGA for example
 Get progression of the process, to display on GUI
 Lua or shell scripting
 Has a rescue GUI in Lua: SWUpdateGUI
 Integration in Yocto and buildroot
Embedded recipesEmbedded recipes
Swupdate: how to update your embedded devices?Swupdate: how to update your embedded devices?
Charles-Antoine Couret September 2018
13
Swupdate presentation: other features
 Integrated web server:
mongoose
Embedded recipesEmbedded recipes
Swupdate: how to update your embedded devices?Swupdate: how to update your embedded devices?
Charles-Antoine Couret September 2018
14
Swupdate presentation: update image
 CPIO image with checksum
 Includes software description file like this:
software =
{
Version = "1.42";
Project_name = {
hardware-compatibility: [ "1" ];
stable = {
copy-1: {
images: (
{
name = "rootfs";
Version = "1.42";
filename = "cmc-imx6ul-image-cmc-imx6ul.ext4.gz";
device = "/dev/mmcblk1p1";
type = "raw";
compressed = true;
}
);
Embedded recipesEmbedded recipes
Swupdate: how to update your embedded devices?Swupdate: how to update your embedded devices?
Charles-Antoine Couret September 2018
15
Implementation
Embedded recipesEmbedded recipes
Swupdate: how to update your embedded devices?Swupdate: how to update your embedded devices?
Charles-Antoine Couret September 2018
16
Implementation: use case
IoT devices
 Based on iMX6UL processor from Variscite provider
 Yocto BSP
 Internal storage: eMMC 8GiB
 Firmware size: ~60 MiB
 Product lifetime: > 10 years
 No SD card or USB slots
 Internet connection from LAN or LTE
Use Cumulocity platform
 MQTT connection
 Firmware / config / software repositories
 Update size (GZ compression): ~19 MiB
 Update notification: 515,SerialNumber,https://aircloud.cumulocity.com/binaries/1568965
Embedded recipesEmbedded recipes
Swupdate: how to update your embedded devices?Swupdate: how to update your embedded devices?
Charles-Antoine Couret September 2018
17
Implementation: design
Update design: dual copy
 Enough storage and bandwidth
 Atomic
 No long downtime (less than 1 minute)
When notification received
 Send ack to Cumulocity after each step
 execlp("swupdate", "swupdate", "-e", "stable,copy-1", "-d", url, NULL);

Download to /tmp (avoid useless eMMC writes)

Check image validity (checksum, hardware, signature)

Install to standby partition

Change U-boot environment
 Reboot
 Validate software (around one hour) + change U-boot variable again
Embedded recipesEmbedded recipes
Swupdate: how to update your embedded devices?Swupdate: how to update your embedded devices?
Charles-Antoine Couret September 2018
18
Embedded recipesEmbedded recipes
Swupdate: how to update your embedded devices?Swupdate: how to update your embedded devices?
Charles-Antoine Couret September 2018
19
Embedded recipesEmbedded recipes
Swupdate: how to update your embedded devices?Swupdate: how to update your embedded devices?
Charles-Antoine Couret September 2018
20
Embedded recipesEmbedded recipes
Swupdate: how to update your embedded devices?Swupdate: how to update your embedded devices?
Charles-Antoine Couret September 2018
21
stable = {
copy-1: {
images: (
{
name = "rootfs";
Version = "1.42";
filename = "cmc-imx6ul-image-cmc-imx6ul.ext4.gz";
device = "/dev/mmcblk1p1";
type = "raw";
compressed = true;
}
);
uboot: (
{
name = "updated";
value = "1";
}
);
};
copy-2: {
images: (
{
name = "rootfs";
Version = "1.42";
filename = "cmc-imx6ul-image-cmc-imx6ul.ext4.gz";
device = "/dev/mmcblk1p2";
type = "raw";
compressed = true;
}
);
uboot: (
{
name = "updated";
value = "1";
}
);
};
Embedded recipesEmbedded recipes
Swupdate: how to update your embedded devices?Swupdate: how to update your embedded devices?
Charles-Antoine Couret September 2018
22
Implementation
 U-boot change
$ fw_setenv updated 0
 Generate image
$ bitbake cmc-imx6ul-swu
or
$ echo -e "sw-descriptionnsw-description.signcmc-imx6ul-image-cmc-imx6ul.ext4.gz" | cpio -ov -H crc >
update.swu
 Yocto recipe (meta-swupdate layer)
SRC_URI = "file://sw-description 
file://post_update.sh 
"
inherit swupdate
COMPATIBLE = "var-som-mx6"
SWUPDATE_IMAGES = "cmc-imx6ul-image"
SWUPDATE_IMAGES_FSTYPES[cmc-imx6ul-image] = ".ext4.gz"
SWUPDATE_SIGNING = "RSA"
SWUPDATE_PRIVATE_KEY = "/path/to/private/key"
Embedded recipesEmbedded recipes
Swupdate: how to update your embedded devices?Swupdate: how to update your embedded devices?
Charles-Antoine Couret September 2018
23
Conclusion
Embedded recipesEmbedded recipes
Swupdate: how to update your embedded devices?Swupdate: how to update your embedded devices?
Charles-Antoine Couret September 2018
24
Conclusion
 Update your software while the product is alive
 Adapt the update design to your constraints
 Swupdate is a nice and flexible OpenSource project
 It is easy to integrate and develop this feature for your product (some days)
Embedded recipesEmbedded recipes
Swupdate: how to update your embedded devices?Swupdate: how to update your embedded devices?
Charles-Antoine Couret September 2018
25
Do you have questions?
www.mind.be
www.essensium.com
Essensium NV
Mind - Embedded Software Division
Gaston Geenslaan 9, B-3001 Leuven
Tel : +32 16-28 65 00
Fax : +32 16-28 65 01
email : info@essensium.com
Embedded recipesEmbedded recipes
Swupdate: how to update your embedded devices?Swupdate: how to update your embedded devices?
Charles-Antoine Couret September 2018

More Related Content

What's hot

Sw update elce2017
Sw update elce2017Sw update elce2017
Sw update elce2017
Stefano Babic
 
Run Qt on Linux embedded systems using Yocto
Run Qt on Linux embedded systems using YoctoRun Qt on Linux embedded systems using Yocto
Run Qt on Linux embedded systems using Yocto
Marco Cavallini
 
Diving into SWUpdate: adding new platform support in 30minutes with Yocto/OE !
Diving into SWUpdate: adding new platform support in 30minutes with Yocto/OE !Diving into SWUpdate: adding new platform support in 30minutes with Yocto/OE !
Diving into SWUpdate: adding new platform support in 30minutes with Yocto/OE !
Pierre-jean Texier
 
QEMU - Binary Translation
QEMU - Binary Translation QEMU - Binary Translation
QEMU - Binary Translation
Jiann-Fuh Liaw
 
Yocto - Embedded Linux Distribution Maker
Yocto - Embedded Linux Distribution MakerYocto - Embedded Linux Distribution Maker
Yocto - Embedded Linux Distribution Maker
Sherif Mousa
 
Angelo Compagnucci - Upgrading buildroot based devices with swupdate
Angelo Compagnucci - Upgrading buildroot based devices with swupdateAngelo Compagnucci - Upgrading buildroot based devices with swupdate
Angelo Compagnucci - Upgrading buildroot based devices with swupdate
linuxlab_conf
 
Linux field-update-2015
Linux field-update-2015Linux field-update-2015
Linux field-update-2015Chris Simmonds
 
Yocto project and open embedded training
Yocto project and open embedded trainingYocto project and open embedded training
Yocto project and open embedded training
H Ming
 
Xvisor: embedded and lightweight hypervisor
Xvisor: embedded and lightweight hypervisorXvisor: embedded and lightweight hypervisor
Xvisor: embedded and lightweight hypervisor
National Cheng Kung University
 
Secure Boot on ARM systems – Building a complete Chain of Trust upon existing...
Secure Boot on ARM systems – Building a complete Chain of Trust upon existing...Secure Boot on ARM systems – Building a complete Chain of Trust upon existing...
Secure Boot on ARM systems – Building a complete Chain of Trust upon existing...
Linaro
 
Reaching the multimedia web from embedded platforms with WPEWebkit
Reaching the multimedia web from embedded platforms with WPEWebkitReaching the multimedia web from embedded platforms with WPEWebkit
Reaching the multimedia web from embedded platforms with WPEWebkit
Igalia
 
Qemu Introduction
Qemu IntroductionQemu Introduction
Qemu Introduction
Chiawei Wang
 
A practical guide to buildroot
A practical guide to buildrootA practical guide to buildroot
A practical guide to buildroot
Emertxe Information Technologies Pvt Ltd
 
SPACK: A Package Manager for Supercomputers, Linux, and MacOS
SPACK: A Package Manager for Supercomputers, Linux, and MacOSSPACK: A Package Manager for Supercomputers, Linux, and MacOS
SPACK: A Package Manager for Supercomputers, Linux, and MacOS
inside-BigData.com
 
[KubeConEU] Building images efficiently and securely on Kubernetes with BuildKit
[KubeConEU] Building images efficiently and securely on Kubernetes with BuildKit[KubeConEU] Building images efficiently and securely on Kubernetes with BuildKit
[KubeConEU] Building images efficiently and securely on Kubernetes with BuildKit
Akihiro Suda
 
BusyBox for Embedded Linux
BusyBox for Embedded LinuxBusyBox for Embedded Linux
BusyBox for Embedded Linux
Emertxe Information Technologies Pvt Ltd
 
Qemu device prototyping
Qemu device prototypingQemu device prototyping
Qemu device prototyping
Yan Vugenfirer
 
Building RT image with Yocto
Building RT image with YoctoBuilding RT image with Yocto
Building RT image with Yocto
Alexandre LAHAYE
 

What's hot (20)

Sw update elce2017
Sw update elce2017Sw update elce2017
Sw update elce2017
 
Run Qt on Linux embedded systems using Yocto
Run Qt on Linux embedded systems using YoctoRun Qt on Linux embedded systems using Yocto
Run Qt on Linux embedded systems using Yocto
 
Diving into SWUpdate: adding new platform support in 30minutes with Yocto/OE !
Diving into SWUpdate: adding new platform support in 30minutes with Yocto/OE !Diving into SWUpdate: adding new platform support in 30minutes with Yocto/OE !
Diving into SWUpdate: adding new platform support in 30minutes with Yocto/OE !
 
QEMU - Binary Translation
QEMU - Binary Translation QEMU - Binary Translation
QEMU - Binary Translation
 
Yocto - Embedded Linux Distribution Maker
Yocto - Embedded Linux Distribution MakerYocto - Embedded Linux Distribution Maker
Yocto - Embedded Linux Distribution Maker
 
Angelo Compagnucci - Upgrading buildroot based devices with swupdate
Angelo Compagnucci - Upgrading buildroot based devices with swupdateAngelo Compagnucci - Upgrading buildroot based devices with swupdate
Angelo Compagnucci - Upgrading buildroot based devices with swupdate
 
Linux field-update-2015
Linux field-update-2015Linux field-update-2015
Linux field-update-2015
 
Yocto project and open embedded training
Yocto project and open embedded trainingYocto project and open embedded training
Yocto project and open embedded training
 
Xvisor: embedded and lightweight hypervisor
Xvisor: embedded and lightweight hypervisorXvisor: embedded and lightweight hypervisor
Xvisor: embedded and lightweight hypervisor
 
Secure Boot on ARM systems – Building a complete Chain of Trust upon existing...
Secure Boot on ARM systems – Building a complete Chain of Trust upon existing...Secure Boot on ARM systems – Building a complete Chain of Trust upon existing...
Secure Boot on ARM systems – Building a complete Chain of Trust upon existing...
 
Reaching the multimedia web from embedded platforms with WPEWebkit
Reaching the multimedia web from embedded platforms with WPEWebkitReaching the multimedia web from embedded platforms with WPEWebkit
Reaching the multimedia web from embedded platforms with WPEWebkit
 
Qemu Introduction
Qemu IntroductionQemu Introduction
Qemu Introduction
 
A practical guide to buildroot
A practical guide to buildrootA practical guide to buildroot
A practical guide to buildroot
 
SPACK: A Package Manager for Supercomputers, Linux, and MacOS
SPACK: A Package Manager for Supercomputers, Linux, and MacOSSPACK: A Package Manager for Supercomputers, Linux, and MacOS
SPACK: A Package Manager for Supercomputers, Linux, and MacOS
 
Toolchain
ToolchainToolchain
Toolchain
 
Qemu
QemuQemu
Qemu
 
[KubeConEU] Building images efficiently and securely on Kubernetes with BuildKit
[KubeConEU] Building images efficiently and securely on Kubernetes with BuildKit[KubeConEU] Building images efficiently and securely on Kubernetes with BuildKit
[KubeConEU] Building images efficiently and securely on Kubernetes with BuildKit
 
BusyBox for Embedded Linux
BusyBox for Embedded LinuxBusyBox for Embedded Linux
BusyBox for Embedded Linux
 
Qemu device prototyping
Qemu device prototypingQemu device prototyping
Qemu device prototyping
 
Building RT image with Yocto
Building RT image with YoctoBuilding RT image with Yocto
Building RT image with Yocto
 

Similar to Embedded Recipes 2018 - swupdate: update your embedded device - Charles-Antoine Couret

Ubuntu Core 技术详解
Ubuntu Core 技术详解Ubuntu Core 技术详解
Ubuntu Core 技术详解
Rex Tsai
 
Managing Installations and Provisioning of OSGi Applications - Carsten Ziegeler
Managing Installations and Provisioning of OSGi Applications - Carsten ZiegelerManaging Installations and Provisioning of OSGi Applications - Carsten Ziegeler
Managing Installations and Provisioning of OSGi Applications - Carsten Ziegeler
mfrancis
 
Simplifying and accelerating converged media with Open Visual Cloud
Simplifying and accelerating converged media with Open Visual CloudSimplifying and accelerating converged media with Open Visual Cloud
Simplifying and accelerating converged media with Open Visual Cloud
Liz Warner
 
Evolution of ota_update_in_the_io_t_world
Evolution of ota_update_in_the_io_t_worldEvolution of ota_update_in_the_io_t_world
Evolution of ota_update_in_the_io_t_world
Stefano Babic
 
Eclipsecon 2017 presentation
Eclipsecon 2017 presentationEclipsecon 2017 presentation
Eclipsecon 2017 presentation
Kynetics
 
Software update for embedded systems - elce2014
Software update for embedded systems - elce2014Software update for embedded systems - elce2014
Software update for embedded systems - elce2014
Stefano Babic
 
Practical virtual network functions with Snabb (SDN Barcelona VI)
Practical virtual network functions with Snabb (SDN Barcelona VI)Practical virtual network functions with Snabb (SDN Barcelona VI)
Practical virtual network functions with Snabb (SDN Barcelona VI)
Igalia
 
AVG PC TuneUp Whitepaper 2015
AVG PC TuneUp Whitepaper 2015AVG PC TuneUp Whitepaper 2015
AVG PC TuneUp Whitepaper 2015
AVG Technologies
 
Lab Handson: Power your Creations with Intel Edison!
Lab Handson: Power your Creations with Intel Edison!Lab Handson: Power your Creations with Intel Edison!
Lab Handson: Power your Creations with Intel Edison!
Codemotion
 
Inptools Manual
Inptools ManualInptools Manual
Inptools Manual
Mawar 99
 
OPTEE on QEMU - Build Tutorial
OPTEE on QEMU - Build TutorialOPTEE on QEMU - Build Tutorial
OPTEE on QEMU - Build Tutorial
Dalton Valadares
 
C# Production Debugging Made Easy
 C# Production Debugging Made Easy C# Production Debugging Made Easy
C# Production Debugging Made Easy
Alon Fliess
 
Apache Bigtop and ARM64 / AArch64 - Empowering Big Data Everywhere
Apache Bigtop and ARM64 / AArch64 - Empowering Big Data EverywhereApache Bigtop and ARM64 / AArch64 - Empowering Big Data Everywhere
Apache Bigtop and ARM64 / AArch64 - Empowering Big Data Everywhere
Ganesh Raju
 
Optimizing Your CI Pipelines
Optimizing Your CI PipelinesOptimizing Your CI Pipelines
Optimizing Your CI Pipelines
Sebastian Witowski
 
A Love Story with Kubevirt and Backstage from Cloud Native NoVA meetup Feb 2024
A Love Story with Kubevirt and Backstage from Cloud Native NoVA meetup Feb 2024A Love Story with Kubevirt and Backstage from Cloud Native NoVA meetup Feb 2024
A Love Story with Kubevirt and Backstage from Cloud Native NoVA meetup Feb 2024
Cloud Native NoVA
 
Readme
ReadmeReadme
Readme
rec2006
 
App container rkt
App container rktApp container rkt
App container rkt
Xiaofeng Guo
 
generate IP CORES
generate IP CORESgenerate IP CORES
generate IP CORES
guest296013
 
Google Cloud Platform for DeVops, by Javier Ramirez @ teowaki
Google Cloud Platform for DeVops, by Javier Ramirez @ teowakiGoogle Cloud Platform for DeVops, by Javier Ramirez @ teowaki
Google Cloud Platform for DeVops, by Javier Ramirez @ teowaki
javier ramirez
 
Agentless System Crawler - InterConnect 2016
Agentless System Crawler - InterConnect 2016Agentless System Crawler - InterConnect 2016
Agentless System Crawler - InterConnect 2016
Canturk Isci
 

Similar to Embedded Recipes 2018 - swupdate: update your embedded device - Charles-Antoine Couret (20)

Ubuntu Core 技术详解
Ubuntu Core 技术详解Ubuntu Core 技术详解
Ubuntu Core 技术详解
 
Managing Installations and Provisioning of OSGi Applications - Carsten Ziegeler
Managing Installations and Provisioning of OSGi Applications - Carsten ZiegelerManaging Installations and Provisioning of OSGi Applications - Carsten Ziegeler
Managing Installations and Provisioning of OSGi Applications - Carsten Ziegeler
 
Simplifying and accelerating converged media with Open Visual Cloud
Simplifying and accelerating converged media with Open Visual CloudSimplifying and accelerating converged media with Open Visual Cloud
Simplifying and accelerating converged media with Open Visual Cloud
 
Evolution of ota_update_in_the_io_t_world
Evolution of ota_update_in_the_io_t_worldEvolution of ota_update_in_the_io_t_world
Evolution of ota_update_in_the_io_t_world
 
Eclipsecon 2017 presentation
Eclipsecon 2017 presentationEclipsecon 2017 presentation
Eclipsecon 2017 presentation
 
Software update for embedded systems - elce2014
Software update for embedded systems - elce2014Software update for embedded systems - elce2014
Software update for embedded systems - elce2014
 
Practical virtual network functions with Snabb (SDN Barcelona VI)
Practical virtual network functions with Snabb (SDN Barcelona VI)Practical virtual network functions with Snabb (SDN Barcelona VI)
Practical virtual network functions with Snabb (SDN Barcelona VI)
 
AVG PC TuneUp Whitepaper 2015
AVG PC TuneUp Whitepaper 2015AVG PC TuneUp Whitepaper 2015
AVG PC TuneUp Whitepaper 2015
 
Lab Handson: Power your Creations with Intel Edison!
Lab Handson: Power your Creations with Intel Edison!Lab Handson: Power your Creations with Intel Edison!
Lab Handson: Power your Creations with Intel Edison!
 
Inptools Manual
Inptools ManualInptools Manual
Inptools Manual
 
OPTEE on QEMU - Build Tutorial
OPTEE on QEMU - Build TutorialOPTEE on QEMU - Build Tutorial
OPTEE on QEMU - Build Tutorial
 
C# Production Debugging Made Easy
 C# Production Debugging Made Easy C# Production Debugging Made Easy
C# Production Debugging Made Easy
 
Apache Bigtop and ARM64 / AArch64 - Empowering Big Data Everywhere
Apache Bigtop and ARM64 / AArch64 - Empowering Big Data EverywhereApache Bigtop and ARM64 / AArch64 - Empowering Big Data Everywhere
Apache Bigtop and ARM64 / AArch64 - Empowering Big Data Everywhere
 
Optimizing Your CI Pipelines
Optimizing Your CI PipelinesOptimizing Your CI Pipelines
Optimizing Your CI Pipelines
 
A Love Story with Kubevirt and Backstage from Cloud Native NoVA meetup Feb 2024
A Love Story with Kubevirt and Backstage from Cloud Native NoVA meetup Feb 2024A Love Story with Kubevirt and Backstage from Cloud Native NoVA meetup Feb 2024
A Love Story with Kubevirt and Backstage from Cloud Native NoVA meetup Feb 2024
 
Readme
ReadmeReadme
Readme
 
App container rkt
App container rktApp container rkt
App container rkt
 
generate IP CORES
generate IP CORESgenerate IP CORES
generate IP CORES
 
Google Cloud Platform for DeVops, by Javier Ramirez @ teowaki
Google Cloud Platform for DeVops, by Javier Ramirez @ teowakiGoogle Cloud Platform for DeVops, by Javier Ramirez @ teowaki
Google Cloud Platform for DeVops, by Javier Ramirez @ teowaki
 
Agentless System Crawler - InterConnect 2016
Agentless System Crawler - InterConnect 2016Agentless System Crawler - InterConnect 2016
Agentless System Crawler - InterConnect 2016
 

More from Anne Nicolas

Kernel Recipes 2019 - Driving the industry toward upstream first
Kernel Recipes 2019 - Driving the industry toward upstream firstKernel Recipes 2019 - Driving the industry toward upstream first
Kernel Recipes 2019 - Driving the industry toward upstream first
Anne Nicolas
 
Kernel Recipes 2019 - No NMI? No Problem! – Implementing Arm64 Pseudo-NMI
Kernel Recipes 2019 - No NMI? No Problem! – Implementing Arm64 Pseudo-NMIKernel Recipes 2019 - No NMI? No Problem! – Implementing Arm64 Pseudo-NMI
Kernel Recipes 2019 - No NMI? No Problem! – Implementing Arm64 Pseudo-NMI
Anne Nicolas
 
Kernel Recipes 2019 - Hunting and fixing bugs all over the Linux kernel
Kernel Recipes 2019 - Hunting and fixing bugs all over the Linux kernelKernel Recipes 2019 - Hunting and fixing bugs all over the Linux kernel
Kernel Recipes 2019 - Hunting and fixing bugs all over the Linux kernel
Anne Nicolas
 
Kernel Recipes 2019 - Metrics are money
Kernel Recipes 2019 - Metrics are moneyKernel Recipes 2019 - Metrics are money
Kernel Recipes 2019 - Metrics are money
Anne Nicolas
 
Kernel Recipes 2019 - Kernel documentation: past, present, and future
Kernel Recipes 2019 - Kernel documentation: past, present, and futureKernel Recipes 2019 - Kernel documentation: past, present, and future
Kernel Recipes 2019 - Kernel documentation: past, present, and future
Anne Nicolas
 
Embedded Recipes 2019 - Knowing your ARM from your ARSE: wading through the t...
Embedded Recipes 2019 - Knowing your ARM from your ARSE: wading through the t...Embedded Recipes 2019 - Knowing your ARM from your ARSE: wading through the t...
Embedded Recipes 2019 - Knowing your ARM from your ARSE: wading through the t...
Anne Nicolas
 
Kernel Recipes 2019 - GNU poke, an extensible editor for structured binary data
Kernel Recipes 2019 - GNU poke, an extensible editor for structured binary dataKernel Recipes 2019 - GNU poke, an extensible editor for structured binary data
Kernel Recipes 2019 - GNU poke, an extensible editor for structured binary data
Anne Nicolas
 
Kernel Recipes 2019 - Analyzing changes to the binary interface exposed by th...
Kernel Recipes 2019 - Analyzing changes to the binary interface exposed by th...Kernel Recipes 2019 - Analyzing changes to the binary interface exposed by th...
Kernel Recipes 2019 - Analyzing changes to the binary interface exposed by th...
Anne Nicolas
 
Embedded Recipes 2019 - Remote update adventures with RAUC, Yocto and Barebox
Embedded Recipes 2019 - Remote update adventures with RAUC, Yocto and BareboxEmbedded Recipes 2019 - Remote update adventures with RAUC, Yocto and Barebox
Embedded Recipes 2019 - Remote update adventures with RAUC, Yocto and Barebox
Anne Nicolas
 
Embedded Recipes 2019 - Making embedded graphics less special
Embedded Recipes 2019 - Making embedded graphics less specialEmbedded Recipes 2019 - Making embedded graphics less special
Embedded Recipes 2019 - Making embedded graphics less special
Anne Nicolas
 
Embedded Recipes 2019 - Linux on Open Source Hardware and Libre Silicon
Embedded Recipes 2019 - Linux on Open Source Hardware and Libre SiliconEmbedded Recipes 2019 - Linux on Open Source Hardware and Libre Silicon
Embedded Recipes 2019 - Linux on Open Source Hardware and Libre Silicon
Anne Nicolas
 
Embedded Recipes 2019 - From maintaining I2C to the big (embedded) picture
Embedded Recipes 2019 - From maintaining I2C to the big (embedded) pictureEmbedded Recipes 2019 - From maintaining I2C to the big (embedded) picture
Embedded Recipes 2019 - From maintaining I2C to the big (embedded) picture
Anne Nicolas
 
Embedded Recipes 2019 - Testing firmware the devops way
Embedded Recipes 2019 - Testing firmware the devops wayEmbedded Recipes 2019 - Testing firmware the devops way
Embedded Recipes 2019 - Testing firmware the devops way
Anne Nicolas
 
Embedded Recipes 2019 - Herd your socs become a matchmaker
Embedded Recipes 2019 - Herd your socs become a matchmakerEmbedded Recipes 2019 - Herd your socs become a matchmaker
Embedded Recipes 2019 - Herd your socs become a matchmaker
Anne Nicolas
 
Embedded Recipes 2019 - LLVM / Clang integration
Embedded Recipes 2019 - LLVM / Clang integrationEmbedded Recipes 2019 - LLVM / Clang integration
Embedded Recipes 2019 - LLVM / Clang integration
Anne Nicolas
 
Embedded Recipes 2019 - Introduction to JTAG debugging
Embedded Recipes 2019 - Introduction to JTAG debuggingEmbedded Recipes 2019 - Introduction to JTAG debugging
Embedded Recipes 2019 - Introduction to JTAG debugging
Anne Nicolas
 
Embedded Recipes 2019 - Pipewire a new foundation for embedded multimedia
Embedded Recipes 2019 - Pipewire a new foundation for embedded multimediaEmbedded Recipes 2019 - Pipewire a new foundation for embedded multimedia
Embedded Recipes 2019 - Pipewire a new foundation for embedded multimedia
Anne Nicolas
 
Kernel Recipes 2019 - ftrace: Where modifying a running kernel all started
Kernel Recipes 2019 - ftrace: Where modifying a running kernel all startedKernel Recipes 2019 - ftrace: Where modifying a running kernel all started
Kernel Recipes 2019 - ftrace: Where modifying a running kernel all started
Anne Nicolas
 
Kernel Recipes 2019 - Suricata and XDP
Kernel Recipes 2019 - Suricata and XDPKernel Recipes 2019 - Suricata and XDP
Kernel Recipes 2019 - Suricata and XDP
Anne Nicolas
 
Kernel Recipes 2019 - Marvels of Memory Auto-configuration (SPD)
Kernel Recipes 2019 - Marvels of Memory Auto-configuration (SPD)Kernel Recipes 2019 - Marvels of Memory Auto-configuration (SPD)
Kernel Recipes 2019 - Marvels of Memory Auto-configuration (SPD)
Anne Nicolas
 

More from Anne Nicolas (20)

Kernel Recipes 2019 - Driving the industry toward upstream first
Kernel Recipes 2019 - Driving the industry toward upstream firstKernel Recipes 2019 - Driving the industry toward upstream first
Kernel Recipes 2019 - Driving the industry toward upstream first
 
Kernel Recipes 2019 - No NMI? No Problem! – Implementing Arm64 Pseudo-NMI
Kernel Recipes 2019 - No NMI? No Problem! – Implementing Arm64 Pseudo-NMIKernel Recipes 2019 - No NMI? No Problem! – Implementing Arm64 Pseudo-NMI
Kernel Recipes 2019 - No NMI? No Problem! – Implementing Arm64 Pseudo-NMI
 
Kernel Recipes 2019 - Hunting and fixing bugs all over the Linux kernel
Kernel Recipes 2019 - Hunting and fixing bugs all over the Linux kernelKernel Recipes 2019 - Hunting and fixing bugs all over the Linux kernel
Kernel Recipes 2019 - Hunting and fixing bugs all over the Linux kernel
 
Kernel Recipes 2019 - Metrics are money
Kernel Recipes 2019 - Metrics are moneyKernel Recipes 2019 - Metrics are money
Kernel Recipes 2019 - Metrics are money
 
Kernel Recipes 2019 - Kernel documentation: past, present, and future
Kernel Recipes 2019 - Kernel documentation: past, present, and futureKernel Recipes 2019 - Kernel documentation: past, present, and future
Kernel Recipes 2019 - Kernel documentation: past, present, and future
 
Embedded Recipes 2019 - Knowing your ARM from your ARSE: wading through the t...
Embedded Recipes 2019 - Knowing your ARM from your ARSE: wading through the t...Embedded Recipes 2019 - Knowing your ARM from your ARSE: wading through the t...
Embedded Recipes 2019 - Knowing your ARM from your ARSE: wading through the t...
 
Kernel Recipes 2019 - GNU poke, an extensible editor for structured binary data
Kernel Recipes 2019 - GNU poke, an extensible editor for structured binary dataKernel Recipes 2019 - GNU poke, an extensible editor for structured binary data
Kernel Recipes 2019 - GNU poke, an extensible editor for structured binary data
 
Kernel Recipes 2019 - Analyzing changes to the binary interface exposed by th...
Kernel Recipes 2019 - Analyzing changes to the binary interface exposed by th...Kernel Recipes 2019 - Analyzing changes to the binary interface exposed by th...
Kernel Recipes 2019 - Analyzing changes to the binary interface exposed by th...
 
Embedded Recipes 2019 - Remote update adventures with RAUC, Yocto and Barebox
Embedded Recipes 2019 - Remote update adventures with RAUC, Yocto and BareboxEmbedded Recipes 2019 - Remote update adventures with RAUC, Yocto and Barebox
Embedded Recipes 2019 - Remote update adventures with RAUC, Yocto and Barebox
 
Embedded Recipes 2019 - Making embedded graphics less special
Embedded Recipes 2019 - Making embedded graphics less specialEmbedded Recipes 2019 - Making embedded graphics less special
Embedded Recipes 2019 - Making embedded graphics less special
 
Embedded Recipes 2019 - Linux on Open Source Hardware and Libre Silicon
Embedded Recipes 2019 - Linux on Open Source Hardware and Libre SiliconEmbedded Recipes 2019 - Linux on Open Source Hardware and Libre Silicon
Embedded Recipes 2019 - Linux on Open Source Hardware and Libre Silicon
 
Embedded Recipes 2019 - From maintaining I2C to the big (embedded) picture
Embedded Recipes 2019 - From maintaining I2C to the big (embedded) pictureEmbedded Recipes 2019 - From maintaining I2C to the big (embedded) picture
Embedded Recipes 2019 - From maintaining I2C to the big (embedded) picture
 
Embedded Recipes 2019 - Testing firmware the devops way
Embedded Recipes 2019 - Testing firmware the devops wayEmbedded Recipes 2019 - Testing firmware the devops way
Embedded Recipes 2019 - Testing firmware the devops way
 
Embedded Recipes 2019 - Herd your socs become a matchmaker
Embedded Recipes 2019 - Herd your socs become a matchmakerEmbedded Recipes 2019 - Herd your socs become a matchmaker
Embedded Recipes 2019 - Herd your socs become a matchmaker
 
Embedded Recipes 2019 - LLVM / Clang integration
Embedded Recipes 2019 - LLVM / Clang integrationEmbedded Recipes 2019 - LLVM / Clang integration
Embedded Recipes 2019 - LLVM / Clang integration
 
Embedded Recipes 2019 - Introduction to JTAG debugging
Embedded Recipes 2019 - Introduction to JTAG debuggingEmbedded Recipes 2019 - Introduction to JTAG debugging
Embedded Recipes 2019 - Introduction to JTAG debugging
 
Embedded Recipes 2019 - Pipewire a new foundation for embedded multimedia
Embedded Recipes 2019 - Pipewire a new foundation for embedded multimediaEmbedded Recipes 2019 - Pipewire a new foundation for embedded multimedia
Embedded Recipes 2019 - Pipewire a new foundation for embedded multimedia
 
Kernel Recipes 2019 - ftrace: Where modifying a running kernel all started
Kernel Recipes 2019 - ftrace: Where modifying a running kernel all startedKernel Recipes 2019 - ftrace: Where modifying a running kernel all started
Kernel Recipes 2019 - ftrace: Where modifying a running kernel all started
 
Kernel Recipes 2019 - Suricata and XDP
Kernel Recipes 2019 - Suricata and XDPKernel Recipes 2019 - Suricata and XDP
Kernel Recipes 2019 - Suricata and XDP
 
Kernel Recipes 2019 - Marvels of Memory Auto-configuration (SPD)
Kernel Recipes 2019 - Marvels of Memory Auto-configuration (SPD)Kernel Recipes 2019 - Marvels of Memory Auto-configuration (SPD)
Kernel Recipes 2019 - Marvels of Memory Auto-configuration (SPD)
 

Recently uploaded

GlobusWorld 2024 Opening Keynote session
GlobusWorld 2024 Opening Keynote sessionGlobusWorld 2024 Opening Keynote session
GlobusWorld 2024 Opening Keynote session
Globus
 
Why React Native as a Strategic Advantage for Startup Innovation.pdf
Why React Native as a Strategic Advantage for Startup Innovation.pdfWhy React Native as a Strategic Advantage for Startup Innovation.pdf
Why React Native as a Strategic Advantage for Startup Innovation.pdf
ayushiqss
 
Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...
Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...
Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...
Globus
 
OpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoam
OpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoamOpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoam
OpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoam
takuyayamamoto1800
 
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...
Globus
 
Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...
Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...
Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...
informapgpstrackings
 
How Does XfilesPro Ensure Security While Sharing Documents in Salesforce?
How Does XfilesPro Ensure Security While Sharing Documents in Salesforce?How Does XfilesPro Ensure Security While Sharing Documents in Salesforce?
How Does XfilesPro Ensure Security While Sharing Documents in Salesforce?
XfilesPro
 
TROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERROR
TROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERRORTROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERROR
TROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERROR
Tier1 app
 
Webinar: Salesforce Document Management 2.0 - Smarter, Faster, Better
Webinar: Salesforce Document Management 2.0 - Smarter, Faster, BetterWebinar: Salesforce Document Management 2.0 - Smarter, Faster, Better
Webinar: Salesforce Document Management 2.0 - Smarter, Faster, Better
XfilesPro
 
How to Position Your Globus Data Portal for Success Ten Good Practices
How to Position Your Globus Data Portal for Success Ten Good PracticesHow to Position Your Globus Data Portal for Success Ten Good Practices
How to Position Your Globus Data Portal for Success Ten Good Practices
Globus
 
Accelerate Enterprise Software Engineering with Platformless
Accelerate Enterprise Software Engineering with PlatformlessAccelerate Enterprise Software Engineering with Platformless
Accelerate Enterprise Software Engineering with Platformless
WSO2
 
Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...
Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...
Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...
Globus
 
A Comprehensive Look at Generative AI in Retail App Testing.pdf
A Comprehensive Look at Generative AI in Retail App Testing.pdfA Comprehensive Look at Generative AI in Retail App Testing.pdf
A Comprehensive Look at Generative AI in Retail App Testing.pdf
kalichargn70th171
 
Corporate Management | Session 3 of 3 | Tendenci AMS
Corporate Management | Session 3 of 3 | Tendenci AMSCorporate Management | Session 3 of 3 | Tendenci AMS
Corporate Management | Session 3 of 3 | Tendenci AMS
Tendenci - The Open Source AMS (Association Management Software)
 
Prosigns: Transforming Business with Tailored Technology Solutions
Prosigns: Transforming Business with Tailored Technology SolutionsProsigns: Transforming Business with Tailored Technology Solutions
Prosigns: Transforming Business with Tailored Technology Solutions
Prosigns
 
top nidhi software solution freedownload
top nidhi software solution freedownloadtop nidhi software solution freedownload
top nidhi software solution freedownload
vrstrong314
 
BoxLang: Review our Visionary Licenses of 2024
BoxLang: Review our Visionary Licenses of 2024BoxLang: Review our Visionary Licenses of 2024
BoxLang: Review our Visionary Licenses of 2024
Ortus Solutions, Corp
 
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
Juraj Vysvader
 
Globus Compute Introduction - GlobusWorld 2024
Globus Compute Introduction - GlobusWorld 2024Globus Compute Introduction - GlobusWorld 2024
Globus Compute Introduction - GlobusWorld 2024
Globus
 
Visitor Management System in India- Vizman.app
Visitor Management System in India- Vizman.appVisitor Management System in India- Vizman.app
Visitor Management System in India- Vizman.app
NaapbooksPrivateLimi
 

Recently uploaded (20)

GlobusWorld 2024 Opening Keynote session
GlobusWorld 2024 Opening Keynote sessionGlobusWorld 2024 Opening Keynote session
GlobusWorld 2024 Opening Keynote session
 
Why React Native as a Strategic Advantage for Startup Innovation.pdf
Why React Native as a Strategic Advantage for Startup Innovation.pdfWhy React Native as a Strategic Advantage for Startup Innovation.pdf
Why React Native as a Strategic Advantage for Startup Innovation.pdf
 
Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...
Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...
Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...
 
OpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoam
OpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoamOpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoam
OpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoam
 
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...
 
Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...
Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...
Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...
 
How Does XfilesPro Ensure Security While Sharing Documents in Salesforce?
How Does XfilesPro Ensure Security While Sharing Documents in Salesforce?How Does XfilesPro Ensure Security While Sharing Documents in Salesforce?
How Does XfilesPro Ensure Security While Sharing Documents in Salesforce?
 
TROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERROR
TROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERRORTROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERROR
TROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERROR
 
Webinar: Salesforce Document Management 2.0 - Smarter, Faster, Better
Webinar: Salesforce Document Management 2.0 - Smarter, Faster, BetterWebinar: Salesforce Document Management 2.0 - Smarter, Faster, Better
Webinar: Salesforce Document Management 2.0 - Smarter, Faster, Better
 
How to Position Your Globus Data Portal for Success Ten Good Practices
How to Position Your Globus Data Portal for Success Ten Good PracticesHow to Position Your Globus Data Portal for Success Ten Good Practices
How to Position Your Globus Data Portal for Success Ten Good Practices
 
Accelerate Enterprise Software Engineering with Platformless
Accelerate Enterprise Software Engineering with PlatformlessAccelerate Enterprise Software Engineering with Platformless
Accelerate Enterprise Software Engineering with Platformless
 
Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...
Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...
Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...
 
A Comprehensive Look at Generative AI in Retail App Testing.pdf
A Comprehensive Look at Generative AI in Retail App Testing.pdfA Comprehensive Look at Generative AI in Retail App Testing.pdf
A Comprehensive Look at Generative AI in Retail App Testing.pdf
 
Corporate Management | Session 3 of 3 | Tendenci AMS
Corporate Management | Session 3 of 3 | Tendenci AMSCorporate Management | Session 3 of 3 | Tendenci AMS
Corporate Management | Session 3 of 3 | Tendenci AMS
 
Prosigns: Transforming Business with Tailored Technology Solutions
Prosigns: Transforming Business with Tailored Technology SolutionsProsigns: Transforming Business with Tailored Technology Solutions
Prosigns: Transforming Business with Tailored Technology Solutions
 
top nidhi software solution freedownload
top nidhi software solution freedownloadtop nidhi software solution freedownload
top nidhi software solution freedownload
 
BoxLang: Review our Visionary Licenses of 2024
BoxLang: Review our Visionary Licenses of 2024BoxLang: Review our Visionary Licenses of 2024
BoxLang: Review our Visionary Licenses of 2024
 
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
 
Globus Compute Introduction - GlobusWorld 2024
Globus Compute Introduction - GlobusWorld 2024Globus Compute Introduction - GlobusWorld 2024
Globus Compute Introduction - GlobusWorld 2024
 
Visitor Management System in India- Vizman.app
Visitor Management System in India- Vizman.appVisitor Management System in India- Vizman.app
Visitor Management System in India- Vizman.app
 

Embedded Recipes 2018 - swupdate: update your embedded device - Charles-Antoine Couret

  • 1. 1 Swupdate: how to update your embedded device? Charles-Antoine Couret September 2018
  • 2. 2 Summary  Introduction  Main update designs  Swupdate presentation  Implementation  Conclusion Embedded recipesEmbedded recipes Swupdate: how to update your embedded devices?Swupdate: how to update your embedded devices? Charles-Antoine Couret September 2018
  • 3. 3 Introduction Embedded recipesEmbedded recipes Swupdate: how to update your embedded devices?Swupdate: how to update your embedded devices? Charles-Antoine Couret September 2018
  • 4. 4 Introduction Why update your embedded devices?  Fix security issues or bugs  Add new features Some constraints to keep in mind  Cost (bandwidth + development)  Reliability  Hardware capabilities (CPU power + memory + storage)  Local or remote operation  Security  Downtime Embedded recipesEmbedded recipes Swupdate: how to update your embedded devices?Swupdate: how to update your embedded devices? Charles-Antoine Couret September 2018
  • 5. 5 Main update designs Embedded recipesEmbedded recipes Swupdate: how to update your embedded devices?Swupdate: how to update your embedded devices? Charles-Antoine Couret September 2018
  • 6. 6 Main update design: packages repository  Similar to other distributions Pros:  Reduced bandwidth usage  Low required storage  Simple to deploy (especially with Yocto)  Short downtime Cons:  No atomic operations (until OS-Tree)  Complex / impossible roll back mechanism  Unknown state of the device, several combinations of packages are possible Embedded recipesEmbedded recipes Swupdate: how to update your embedded devices?Swupdate: how to update your embedded devices? Charles-Antoine Couret September 2018
  • 7. 7 Main update design: recovery OS  Recovery OS to download then install full update Pros:  Easy to update another image in case of invalid system  Low storage (just kernel + initrd with some tools => extra ~10 MiB) Cons:  Recovery OS not updated  Big bandwidth is required : complete firmware is downloaded  Possible long downtime Embedded recipesEmbedded recipes Swupdate: how to update your embedded devices?Swupdate: how to update your embedded devices? Charles-Antoine Couret September 2018
  • 8. 8 Main update design: dual copy Pros:  Everything is updatable (except the bootloader)  Atomic operation  Short downtime Cons:  Need more bandwidth + storage  Could require a good process to validate new image Embedded recipesEmbedded recipes Swupdate: how to update your embedded devices?Swupdate: how to update your embedded devices? Charles-Antoine Couret September 2018
  • 9. 9 Other considerations for all designs Must have:  Redundant bootloader environment  Signed or encrypted updates  Infinite loop proof based on watchdog or consecutive restarts Not to do:  Update bootloader (if you don’t have redundant bootloader) Embedded recipesEmbedded recipes Swupdate: how to update your embedded devices?Swupdate: how to update your embedded devices? Charles-Antoine Couret September 2018
  • 10. 10 SWupdate Embedded recipesEmbedded recipes Swupdate: how to update your embedded devices?Swupdate: how to update your embedded devices? Charles-Antoine Couret September 2018
  • 11. 11 Swupdate presentation: general OpenSource software Developped by Stefano Babic from DENX company Repository: https://github.com/sbabic/swupdate Features:  Configuration at compile time  Handle embedded storage: UBI, eMMC, SD, Raw NAND, NOR and SPI- NOR  Get updates from local / remote web server, hawkBit connector or local file  Support compression, encryption, signature checking, etc.  Support redundant dual-copy and recovery OS designs  U-boot integration  Check software and hardware compatibility Embedded recipesEmbedded recipes Swupdate: how to update your embedded devices?Swupdate: how to update your embedded devices? Charles-Antoine Couret September 2018
  • 12. 12 Swupdate presentation: other features  Adding new hook or handler (in C or Lua), to update a specific FPGA for example  Get progression of the process, to display on GUI  Lua or shell scripting  Has a rescue GUI in Lua: SWUpdateGUI  Integration in Yocto and buildroot Embedded recipesEmbedded recipes Swupdate: how to update your embedded devices?Swupdate: how to update your embedded devices? Charles-Antoine Couret September 2018
  • 13. 13 Swupdate presentation: other features  Integrated web server: mongoose Embedded recipesEmbedded recipes Swupdate: how to update your embedded devices?Swupdate: how to update your embedded devices? Charles-Antoine Couret September 2018
  • 14. 14 Swupdate presentation: update image  CPIO image with checksum  Includes software description file like this: software = { Version = "1.42"; Project_name = { hardware-compatibility: [ "1" ]; stable = { copy-1: { images: ( { name = "rootfs"; Version = "1.42"; filename = "cmc-imx6ul-image-cmc-imx6ul.ext4.gz"; device = "/dev/mmcblk1p1"; type = "raw"; compressed = true; } ); Embedded recipesEmbedded recipes Swupdate: how to update your embedded devices?Swupdate: how to update your embedded devices? Charles-Antoine Couret September 2018
  • 15. 15 Implementation Embedded recipesEmbedded recipes Swupdate: how to update your embedded devices?Swupdate: how to update your embedded devices? Charles-Antoine Couret September 2018
  • 16. 16 Implementation: use case IoT devices  Based on iMX6UL processor from Variscite provider  Yocto BSP  Internal storage: eMMC 8GiB  Firmware size: ~60 MiB  Product lifetime: > 10 years  No SD card or USB slots  Internet connection from LAN or LTE Use Cumulocity platform  MQTT connection  Firmware / config / software repositories  Update size (GZ compression): ~19 MiB  Update notification: 515,SerialNumber,https://aircloud.cumulocity.com/binaries/1568965 Embedded recipesEmbedded recipes Swupdate: how to update your embedded devices?Swupdate: how to update your embedded devices? Charles-Antoine Couret September 2018
  • 17. 17 Implementation: design Update design: dual copy  Enough storage and bandwidth  Atomic  No long downtime (less than 1 minute) When notification received  Send ack to Cumulocity after each step  execlp("swupdate", "swupdate", "-e", "stable,copy-1", "-d", url, NULL);  Download to /tmp (avoid useless eMMC writes)  Check image validity (checksum, hardware, signature)  Install to standby partition  Change U-boot environment  Reboot  Validate software (around one hour) + change U-boot variable again Embedded recipesEmbedded recipes Swupdate: how to update your embedded devices?Swupdate: how to update your embedded devices? Charles-Antoine Couret September 2018
  • 18. 18 Embedded recipesEmbedded recipes Swupdate: how to update your embedded devices?Swupdate: how to update your embedded devices? Charles-Antoine Couret September 2018
  • 19. 19 Embedded recipesEmbedded recipes Swupdate: how to update your embedded devices?Swupdate: how to update your embedded devices? Charles-Antoine Couret September 2018
  • 20. 20 Embedded recipesEmbedded recipes Swupdate: how to update your embedded devices?Swupdate: how to update your embedded devices? Charles-Antoine Couret September 2018
  • 21. 21 stable = { copy-1: { images: ( { name = "rootfs"; Version = "1.42"; filename = "cmc-imx6ul-image-cmc-imx6ul.ext4.gz"; device = "/dev/mmcblk1p1"; type = "raw"; compressed = true; } ); uboot: ( { name = "updated"; value = "1"; } ); }; copy-2: { images: ( { name = "rootfs"; Version = "1.42"; filename = "cmc-imx6ul-image-cmc-imx6ul.ext4.gz"; device = "/dev/mmcblk1p2"; type = "raw"; compressed = true; } ); uboot: ( { name = "updated"; value = "1"; } ); }; Embedded recipesEmbedded recipes Swupdate: how to update your embedded devices?Swupdate: how to update your embedded devices? Charles-Antoine Couret September 2018
  • 22. 22 Implementation  U-boot change $ fw_setenv updated 0  Generate image $ bitbake cmc-imx6ul-swu or $ echo -e "sw-descriptionnsw-description.signcmc-imx6ul-image-cmc-imx6ul.ext4.gz" | cpio -ov -H crc > update.swu  Yocto recipe (meta-swupdate layer) SRC_URI = "file://sw-description file://post_update.sh " inherit swupdate COMPATIBLE = "var-som-mx6" SWUPDATE_IMAGES = "cmc-imx6ul-image" SWUPDATE_IMAGES_FSTYPES[cmc-imx6ul-image] = ".ext4.gz" SWUPDATE_SIGNING = "RSA" SWUPDATE_PRIVATE_KEY = "/path/to/private/key" Embedded recipesEmbedded recipes Swupdate: how to update your embedded devices?Swupdate: how to update your embedded devices? Charles-Antoine Couret September 2018
  • 23. 23 Conclusion Embedded recipesEmbedded recipes Swupdate: how to update your embedded devices?Swupdate: how to update your embedded devices? Charles-Antoine Couret September 2018
  • 24. 24 Conclusion  Update your software while the product is alive  Adapt the update design to your constraints  Swupdate is a nice and flexible OpenSource project  It is easy to integrate and develop this feature for your product (some days) Embedded recipesEmbedded recipes Swupdate: how to update your embedded devices?Swupdate: how to update your embedded devices? Charles-Antoine Couret September 2018
  • 25. 25 Do you have questions? www.mind.be www.essensium.com Essensium NV Mind - Embedded Software Division Gaston Geenslaan 9, B-3001 Leuven Tel : +32 16-28 65 00 Fax : +32 16-28 65 01 email : info@essensium.com Embedded recipesEmbedded recipes Swupdate: how to update your embedded devices?Swupdate: how to update your embedded devices? Charles-Antoine Couret September 2018