SlideShare a Scribd company logo
Software update for IoT
the current state of play
Chris Simmonds
OpenIoT Summit 2016
Software update for IoT 1 Copyright © 2011-2016, 2net Ltd
License
These slides are available under a Creative Commons Attribution-ShareAlike 3.0
license. You can read the full text of the license here
http://creativecommons.org/licenses/by-sa/3.0/legalcode
You are free to
• copy, distribute, display, and perform the work
• make derivative works
• make commercial use of the work
Under the following conditions
• Attribution: you must give the original author credit
• Share Alike: if you alter, transform, or build upon this work, you may distribute
the resulting work only under a license identical to this one (i.e. include this
page exactly as it is)
• For any reuse or distribution, you must make clear to others the license terms of
this work
Software update for IoT 2 Copyright © 2011-2016, 2net Ltd
About Chris Simmonds
• Consultant and trainer
• Author of Mastering Embedded Linux
Programming
• Working with embedded Linux since 1999
• Android since 2009
• Speaker at many conferences and
workshops
"Looking after the Inner Penguin" blog at http://2net.co.uk/
https://uk.linkedin.com/in/chrisdsimmonds/
https://google.com/+chrissimmonds
Software update for IoT 3 Copyright © 2011-2016, 2net Ltd
Overview
• Software update 101
• Update clients
• OTA update
• OTA implementations
Software update for IoT 4 Copyright © 2011-2016, 2net Ltd
What could possibly go wrong?
• Mirai: a recent > 600 Gbps
DDoS attack
• Very simple: looks for open
Telnet ports and logs on using
default, well-known, name
and password
• Prime target: Dahua IP CCTV
cameras
Details on PenTestPartners:
https://www.pentestpartners.com/blog/
optimising-mirai-a-better-iot-ddos-botnet
Software update for IoT 5 Copyright © 2011-2016, 2net Ltd
Problems
Problem 1
• Embedded software is non-trivial (=> has bugs!)
• Devices are often connected to the Internet
• Allowing intruders to exploit the bugs remotely
Problem 2
• We would like to deploy new features, improve
performance, etc.
Conclusion
• We need a software update mechanism
Software update for IoT 6 Copyright © 2011-2016, 2net Ltd
Requirements for SW update
• Secure, to prevent the device from being hijacked
• Robust, so that an update does not render the device
unusable
• Atomic, meaning that an update must be installed
completely or not at all
• Fail-safe, so that there is a fall-back mode if all else
fails
• Preserve persistent state
Software update for IoT 7 Copyright © 2011-2016, 2net Ltd
What to update?
Frequency
Ease of update
Bootloader
Kernel
Root file system
System applications
Software update for IoT 8 Copyright © 2011-2016, 2net Ltd
Update granularity
• File:
• not an option: hard to achieve atomicity over a group
of file updates
• Package:
• apt-get update works fine for servers but not for
devices
• Container:
• neat idea, so long as you have containerised
applications
• Image:
• the most common option: fairy easy to implement and
verify
Software update for IoT 9 Copyright © 2011-2016, 2net Ltd
Device update != server update
• Server
• Secure environment, no power outage, no network
outage
• If update fails, human intervention is possible
• Device:
• Intermittent power and network mean update quite
likely to be interrupted
• Failed update may be difficult (and expensive) to
resolve
Software update for IoT 10 Copyright © 2011-2016, 2net Ltd
Options for image update
Symmetric A/B
(Android after
Nougat)
Bootloader User
data
Boot
flag
OS Copy 1
OS Copy 2
Bootloader
Main OS
Recovery OS
User
data
Boot
flag
Asymmetric
normal/recovery
(Android before
Nougat)
Software update for IoT 11 Copyright © 2011-2016, 2net Ltd
Statelessness
• Image update of a filesystem implies no state is
stored in that filesystem
• See my talk about read-only rootfs
http://www.slideshare.net/chrissimmonds/
readonly-rootfs-theory-and-practice
Software update for IoT 12 Copyright © 2011-2016, 2net Ltd
Update agent
• Update agent is the code on the device that manages
the update
• Tasks
• Receive update from local storage (e.g. USB) or from
remote server
• Apply the update
• Toggle boot flag
Software update for IoT 13 Copyright © 2011-2016, 2net Ltd
swupdate
• Image-based update client
• License: GPLv2
• Code https://github.com/sbabic/swupdate
• Documentation
http://sbabic.github.io/swupdate/index.html
Software update for IoT 14 Copyright © 2011-2016, 2net Ltd
swupdate features
• Symmetric and asymmetric update
• Bootloader support: U-Boot
• Volume formats: MTD, UBI, MBR and UEFI partitions
• Yocto Project layer: meta-swupdate
• Remote/streaming using curl (http/https/ssh/ftp)
• integrated REST client connector to hawkBit
• Signed images
Software update for IoT 15 Copyright © 2011-2016, 2net Ltd
RAUC - Robust Auto-Update Controller
• Image-based update client
• License: LGPLv2.1
• Source Code: https://github.com/jluebbe/rauc
• Documentation: https://rauc.readthedocs.org/
Software update for IoT 16 Copyright © 2011-2016, 2net Ltd
RAUC features
• Symmetric and asymmetric update
• Bootloader support: grub, barebox
• Volume formats: MTD, UBI, MBR and UEFI partitions
• Build systems: Yocto Project (meta-ptx), PTXDist
• Remote/streaming using curl (http/https/ssh/ftp)
• Cryptographic verification using OpenSSL
(signatures based on x.509 certificates)
Software update for IoT 17 Copyright © 2011-2016, 2net Ltd
OTA update
• Solutions so far are mostly suitable for
• Local update (man with a USB thumb drive)
• User initiated/attended remote update
• Local or attended remote update does not scale
• Hence, OTA (Over The Air) update
• Updates pushed from central server
• Update is automatic (or semi-automatic as with
Android/IoS)
Software update for IoT 18 Copyright © 2011-2016, 2net Ltd
OTA update components
Device software
build system
Firmware
images
Sign with
authentication
key
Update
server
Device
Update
agent
Software update for IoT 19 Copyright © 2011-2016, 2net Ltd
Complexities of OTA update
• Authentication (is this update legit?)
• Security (am I receiving what you are sending?)
• Roll-back (if update fails to boot, switch to previous
version)
• Scale (roll out to large populations)
• Monitoring (keeping track of status of the population
of devices)
Software update for IoT 20 Copyright © 2011-2016, 2net Ltd
Roll-back
• Boot limit count
• Feature of bootloader (e.g U-Boot)
• Increment count in bootloader
• Reset after successful boot
• If reboot with count > 0, bootloader knows boot failed
and loads alternate rootfs
• Hardware watchdog
• If hang in early boot, watchdog times out and resets
CPU
• Bootloader checks reset reason
• If watchdog, loads alternate rootfs
Software update for IoT 21 Copyright © 2011-2016, 2net Ltd
Mender.io
• OTA update server and client
• Full system image update
• Licenses: Server and Client: Apache 2
• Code (client):
https://github.com/mendersoftware/mender
• Documentation: https://docs.mender.io
Software update for IoT 22 Copyright © 2011-2016, 2net Ltd
Mender.io features
• Symmetric A/B image update client
• Bootloader support: U-Boot
• Volume formats: MBR and UEFI partitions
• Update commit and roll-back
• Build system: Yocto Project (meta-mender)
• Remote features: deployment server, build artifact
management, device management console
Software update for IoT 23 Copyright © 2011-2016, 2net Ltd
Resin.io
• OTA update server and client
• Container (Docker) based updates
• Licenses: Client: Apache2; Server: proprietary
• Code (client):
https://github.com/resin-os/meta-resin
• Documentation:
https://docs.resin.io/introduction
Software update for IoT 24 Copyright © 2011-2016, 2net Ltd
resin.io features
• Symetric A/B rootfs for core OS ("Resinhup")
• Applications packaged into Docker containers
• Build integration: Yocto Project (meta-resin)
• Docker images can be preloaded into YP build
• Remote features: deployment server, integration with
git
Software update for IoT 25 Copyright © 2011-2016, 2net Ltd
Brillo
• Brillo is cut-down Android for IoT
• License: Apache 2.0
• Android OTA update client
• Symmetric and asymmetric image update
• Licenses: Client: Apache2; Server: proprietary
• Code (client): https://android.googlesource.com
• Documentation:
https://developers.google.com/brillo
Software update for IoT 26 Copyright © 2011-2016, 2net Ltd
Conclusion
• Software update is a hot topic
• Open source solutions described in this presentation:
• Stand-alone update clients
• swupdaed
• RAUC
• End-to-end solutions
• mender.io
• resin.io
This and other topics associated with building robust embedded
systems are coverred in my training courses
http://www.2net.co.uk/training.html
Software update for IoT 27 Copyright © 2011-2016, 2net Ltd

More Related Content

PDF
Embedded Linux Quick Start Guide v1.5
PDF
Linux field-update-2015
PDF
Cloud-Native CI/CD on Kubernetes with Tekton Pipelines
PDF
Jenkins Pipelines
PDF
Kubernetes Networking with Cilium - Deep Dive
PDF
Debian or Yocto Project? Which is the best for your Embedded Linux project?
PDF
How to Choose a Software Update Mechanism for Embedded Linux Devices
PDF
Organiser son CI/CD - présentation
Embedded Linux Quick Start Guide v1.5
Linux field-update-2015
Cloud-Native CI/CD on Kubernetes with Tekton Pipelines
Jenkins Pipelines
Kubernetes Networking with Cilium - Deep Dive
Debian or Yocto Project? Which is the best for your Embedded Linux project?
How to Choose a Software Update Mechanism for Embedded Linux Devices
Organiser son CI/CD - présentation

What's hot (20)

ODP
Introduction to Version Control
PDF
Algunos Conceptos Claves de DevOps
PDF
Replacing iptables with eBPF in Kubernetes with Cilium
PPTX
Gitlab CI/CD
PDF
CI/CD 101
PPTX
Ansible presentation
PDF
Read-only rootfs: theory and practice
PDF
Secure Boot on ARM systems – Building a complete Chain of Trust upon existing...
PDF
Fury devops conf (1)
PDF
Xilinx Vitis FreeRTOS Hello World
PDF
[KubeCon NA 2020] containerd: Rootless Containers 2020
PDF
Quickboot on i.MX6
PDF
Ansible
PDF
Janus SFU cascading @ IIT-RTC 2022
PDF
Quick and Easy Device Drivers for Embedded Linux Using UIO
PPTX
GitLab for CI/CD process
PDF
Trusted firmware deep_dive_v1.0_
PPTX
Azure Pipelines
PDF
Diving into SWUpdate: adding new platform support in 30minutes with Yocto/OE !
PPTX
Amazon Kinesis Video Streams WebRTC 使ってみた
Introduction to Version Control
Algunos Conceptos Claves de DevOps
Replacing iptables with eBPF in Kubernetes with Cilium
Gitlab CI/CD
CI/CD 101
Ansible presentation
Read-only rootfs: theory and practice
Secure Boot on ARM systems – Building a complete Chain of Trust upon existing...
Fury devops conf (1)
Xilinx Vitis FreeRTOS Hello World
[KubeCon NA 2020] containerd: Rootless Containers 2020
Quickboot on i.MX6
Ansible
Janus SFU cascading @ IIT-RTC 2022
Quick and Easy Device Drivers for Embedded Linux Using UIO
GitLab for CI/CD process
Trusted firmware deep_dive_v1.0_
Azure Pipelines
Diving into SWUpdate: adding new platform support in 30minutes with Yocto/OE !
Amazon Kinesis Video Streams WebRTC 使ってみた
Ad

Viewers also liked (18)

PDF
Software update for IoT Embedded World 2017
PDF
Android beyond the smartphone
PDF
Booting Android: bootloaders, fastboot and boot images
PDF
A timeline for embedded Linux
PPTX
自称IQ診断 --- いわゆる頭の体操
PDF
The end of embedded Linux (as we know it)
PPTX
HPCで使えそうなFPGA搭載AWS F1 インスタンス_20161218
PDF
Userspace drivers-2016
PDF
FPGAX2016 ドキュンなFPGA
PDF
Tensor flow usergroup 2016 (公開版)
PPTX
HPC で使えそうな FPGA 搭載 AWS F1 インスタンス 20170127
PPTX
Introducing resinOS: An Operating System Tailored for Containers and Built fo...
DOCX
Anemia de doenças crônicas
PPTX
20161120_HPCでFPGAを使ってみたい_fpgastartup
PDF
電波望遠鏡用の分光器をAltera SDK for OpenCL使ってサクッと作ってみた
PPT
In out system
PDF
Using IO Visor to Secure Microservices Running on CloudFoundry [OpenStack Sum...
PDF
Portland Science Hack Day: Open Source Hardware
Software update for IoT Embedded World 2017
Android beyond the smartphone
Booting Android: bootloaders, fastboot and boot images
A timeline for embedded Linux
自称IQ診断 --- いわゆる頭の体操
The end of embedded Linux (as we know it)
HPCで使えそうなFPGA搭載AWS F1 インスタンス_20161218
Userspace drivers-2016
FPGAX2016 ドキュンなFPGA
Tensor flow usergroup 2016 (公開版)
HPC で使えそうな FPGA 搭載 AWS F1 インスタンス 20170127
Introducing resinOS: An Operating System Tailored for Containers and Built fo...
Anemia de doenças crônicas
20161120_HPCでFPGAを使ってみたい_fpgastartup
電波望遠鏡用の分光器をAltera SDK for OpenCL使ってサクッと作ってみた
In out system
Using IO Visor to Secure Microservices Running on CloudFoundry [OpenStack Sum...
Portland Science Hack Day: Open Source Hardware
Ad

Similar to Software update for IoT: the current state of play (20)

PDF
Evolution of ota_update_in_the_io_t_world
PDF
Software Updates for Connected Devices - OSCON 2018
PDF
The Crucial Component of IoT Products by Aravinth Panchadcharam [ Senior Embe...
PDF
The ultimate guide to software updates on embedded linux devices
PDF
Iot development from prototype to production
PPTX
Software update for embedded systems
PDF
IoT Development from Prototype to Production
PDF
Integrate IoT cloud analytics and over the-air (ota) updates with google and ...
PDF
Update Strategies for the Edge, by Kat Cosgrove
PPTX
IoT Developer Survey 2017
PDF
Resin.io overview (2016 July)
PDF
Introduction to Internet Of Things
PDF
Software Update Mechanisms: Selecting the Best Solutin for Your Embedded Linu...
 
PDF
IoT_Security and impelementation in school
PDF
Secure IOT Gateway
PDF
What is the process of updating Raspberry Pis or IoT devices remotely via OTA?
PDF
Atmosphere 2016 - Arvid Picciani - Continuous Deployment for Massive Scale Em...
PPTX
Managing the IoT OTA via the Akamai OPEN APIs and Google Sheets
PPTX
IoT - Software Updates Via Akamai Over the Air Services
PDF
Internet of things : Beginners view
Evolution of ota_update_in_the_io_t_world
Software Updates for Connected Devices - OSCON 2018
The Crucial Component of IoT Products by Aravinth Panchadcharam [ Senior Embe...
The ultimate guide to software updates on embedded linux devices
Iot development from prototype to production
Software update for embedded systems
IoT Development from Prototype to Production
Integrate IoT cloud analytics and over the-air (ota) updates with google and ...
Update Strategies for the Edge, by Kat Cosgrove
IoT Developer Survey 2017
Resin.io overview (2016 July)
Introduction to Internet Of Things
Software Update Mechanisms: Selecting the Best Solutin for Your Embedded Linu...
 
IoT_Security and impelementation in school
Secure IOT Gateway
What is the process of updating Raspberry Pis or IoT devices remotely via OTA?
Atmosphere 2016 - Arvid Picciani - Continuous Deployment for Massive Scale Em...
Managing the IoT OTA via the Akamai OPEN APIs and Google Sheets
IoT - Software Updates Via Akamai Over the Air Services
Internet of things : Beginners view

More from Chris Simmonds (10)

PDF
Debugging embedded devices using GDB
PDF
Running Android on the Raspberry Pi: Android Pie meets Raspberry Pi
PDF
Reducing the boot time of Linux devices
PDF
Android rpi-csimmonds-fosdem-2019
PDF
Reducing boot time in embedded Linux
PDF
Linux power management: are you doing it right?
PDF
Embedded Android: Android beyond the smartphone
PDF
10 ways hardware engineers can make software integration easier
PDF
Tuning Android for low RAM
PDF
The Android graphics path, in depth
Debugging embedded devices using GDB
Running Android on the Raspberry Pi: Android Pie meets Raspberry Pi
Reducing the boot time of Linux devices
Android rpi-csimmonds-fosdem-2019
Reducing boot time in embedded Linux
Linux power management: are you doing it right?
Embedded Android: Android beyond the smartphone
10 ways hardware engineers can make software integration easier
Tuning Android for low RAM
The Android graphics path, in depth

Recently uploaded (20)

PDF
Complete React Javascript Course Syllabus.pdf
DOCX
The Five Best AI Cover Tools in 2025.docx
PDF
2025 Textile ERP Trends: SAP, Odoo & Oracle
PPTX
Materi-Enum-and-Record-Data-Type (1).pptx
PDF
PTS Company Brochure 2025 (1).pdf.......
PPTX
Introduction to Artificial Intelligence
PPT
Introduction Database Management System for Course Database
PPTX
Odoo POS Development Services by CandidRoot Solutions
PPTX
Materi_Pemrograman_Komputer-Looping.pptx
PPTX
Essential Infomation Tech presentation.pptx
PDF
Addressing The Cult of Project Management Tools-Why Disconnected Work is Hold...
PDF
System and Network Administration Chapter 2
PPTX
L1 - Introduction to python Backend.pptx
PDF
Softaken Excel to vCard Converter Software.pdf
PDF
Adobe Illustrator 28.6 Crack My Vision of Vector Design
PPTX
CHAPTER 12 - CYBER SECURITY AND FUTURE SKILLS (1) (1).pptx
PDF
top salesforce developer skills in 2025.pdf
PDF
System and Network Administraation Chapter 3
PDF
T3DD25 TYPO3 Content Blocks - Deep Dive by André Kraus
PPT
JAVA ppt tutorial basics to learn java programming
Complete React Javascript Course Syllabus.pdf
The Five Best AI Cover Tools in 2025.docx
2025 Textile ERP Trends: SAP, Odoo & Oracle
Materi-Enum-and-Record-Data-Type (1).pptx
PTS Company Brochure 2025 (1).pdf.......
Introduction to Artificial Intelligence
Introduction Database Management System for Course Database
Odoo POS Development Services by CandidRoot Solutions
Materi_Pemrograman_Komputer-Looping.pptx
Essential Infomation Tech presentation.pptx
Addressing The Cult of Project Management Tools-Why Disconnected Work is Hold...
System and Network Administration Chapter 2
L1 - Introduction to python Backend.pptx
Softaken Excel to vCard Converter Software.pdf
Adobe Illustrator 28.6 Crack My Vision of Vector Design
CHAPTER 12 - CYBER SECURITY AND FUTURE SKILLS (1) (1).pptx
top salesforce developer skills in 2025.pdf
System and Network Administraation Chapter 3
T3DD25 TYPO3 Content Blocks - Deep Dive by André Kraus
JAVA ppt tutorial basics to learn java programming

Software update for IoT: the current state of play

  • 1. Software update for IoT the current state of play Chris Simmonds OpenIoT Summit 2016 Software update for IoT 1 Copyright © 2011-2016, 2net Ltd
  • 2. License These slides are available under a Creative Commons Attribution-ShareAlike 3.0 license. You can read the full text of the license here http://creativecommons.org/licenses/by-sa/3.0/legalcode You are free to • copy, distribute, display, and perform the work • make derivative works • make commercial use of the work Under the following conditions • Attribution: you must give the original author credit • Share Alike: if you alter, transform, or build upon this work, you may distribute the resulting work only under a license identical to this one (i.e. include this page exactly as it is) • For any reuse or distribution, you must make clear to others the license terms of this work Software update for IoT 2 Copyright © 2011-2016, 2net Ltd
  • 3. About Chris Simmonds • Consultant and trainer • Author of Mastering Embedded Linux Programming • Working with embedded Linux since 1999 • Android since 2009 • Speaker at many conferences and workshops "Looking after the Inner Penguin" blog at http://2net.co.uk/ https://uk.linkedin.com/in/chrisdsimmonds/ https://google.com/+chrissimmonds Software update for IoT 3 Copyright © 2011-2016, 2net Ltd
  • 4. Overview • Software update 101 • Update clients • OTA update • OTA implementations Software update for IoT 4 Copyright © 2011-2016, 2net Ltd
  • 5. What could possibly go wrong? • Mirai: a recent > 600 Gbps DDoS attack • Very simple: looks for open Telnet ports and logs on using default, well-known, name and password • Prime target: Dahua IP CCTV cameras Details on PenTestPartners: https://www.pentestpartners.com/blog/ optimising-mirai-a-better-iot-ddos-botnet Software update for IoT 5 Copyright © 2011-2016, 2net Ltd
  • 6. Problems Problem 1 • Embedded software is non-trivial (=> has bugs!) • Devices are often connected to the Internet • Allowing intruders to exploit the bugs remotely Problem 2 • We would like to deploy new features, improve performance, etc. Conclusion • We need a software update mechanism Software update for IoT 6 Copyright © 2011-2016, 2net Ltd
  • 7. Requirements for SW update • Secure, to prevent the device from being hijacked • Robust, so that an update does not render the device unusable • Atomic, meaning that an update must be installed completely or not at all • Fail-safe, so that there is a fall-back mode if all else fails • Preserve persistent state Software update for IoT 7 Copyright © 2011-2016, 2net Ltd
  • 8. What to update? Frequency Ease of update Bootloader Kernel Root file system System applications Software update for IoT 8 Copyright © 2011-2016, 2net Ltd
  • 9. Update granularity • File: • not an option: hard to achieve atomicity over a group of file updates • Package: • apt-get update works fine for servers but not for devices • Container: • neat idea, so long as you have containerised applications • Image: • the most common option: fairy easy to implement and verify Software update for IoT 9 Copyright © 2011-2016, 2net Ltd
  • 10. Device update != server update • Server • Secure environment, no power outage, no network outage • If update fails, human intervention is possible • Device: • Intermittent power and network mean update quite likely to be interrupted • Failed update may be difficult (and expensive) to resolve Software update for IoT 10 Copyright © 2011-2016, 2net Ltd
  • 11. Options for image update Symmetric A/B (Android after Nougat) Bootloader User data Boot flag OS Copy 1 OS Copy 2 Bootloader Main OS Recovery OS User data Boot flag Asymmetric normal/recovery (Android before Nougat) Software update for IoT 11 Copyright © 2011-2016, 2net Ltd
  • 12. Statelessness • Image update of a filesystem implies no state is stored in that filesystem • See my talk about read-only rootfs http://www.slideshare.net/chrissimmonds/ readonly-rootfs-theory-and-practice Software update for IoT 12 Copyright © 2011-2016, 2net Ltd
  • 13. Update agent • Update agent is the code on the device that manages the update • Tasks • Receive update from local storage (e.g. USB) or from remote server • Apply the update • Toggle boot flag Software update for IoT 13 Copyright © 2011-2016, 2net Ltd
  • 14. swupdate • Image-based update client • License: GPLv2 • Code https://github.com/sbabic/swupdate • Documentation http://sbabic.github.io/swupdate/index.html Software update for IoT 14 Copyright © 2011-2016, 2net Ltd
  • 15. swupdate features • Symmetric and asymmetric update • Bootloader support: U-Boot • Volume formats: MTD, UBI, MBR and UEFI partitions • Yocto Project layer: meta-swupdate • Remote/streaming using curl (http/https/ssh/ftp) • integrated REST client connector to hawkBit • Signed images Software update for IoT 15 Copyright © 2011-2016, 2net Ltd
  • 16. RAUC - Robust Auto-Update Controller • Image-based update client • License: LGPLv2.1 • Source Code: https://github.com/jluebbe/rauc • Documentation: https://rauc.readthedocs.org/ Software update for IoT 16 Copyright © 2011-2016, 2net Ltd
  • 17. RAUC features • Symmetric and asymmetric update • Bootloader support: grub, barebox • Volume formats: MTD, UBI, MBR and UEFI partitions • Build systems: Yocto Project (meta-ptx), PTXDist • Remote/streaming using curl (http/https/ssh/ftp) • Cryptographic verification using OpenSSL (signatures based on x.509 certificates) Software update for IoT 17 Copyright © 2011-2016, 2net Ltd
  • 18. OTA update • Solutions so far are mostly suitable for • Local update (man with a USB thumb drive) • User initiated/attended remote update • Local or attended remote update does not scale • Hence, OTA (Over The Air) update • Updates pushed from central server • Update is automatic (or semi-automatic as with Android/IoS) Software update for IoT 18 Copyright © 2011-2016, 2net Ltd
  • 19. OTA update components Device software build system Firmware images Sign with authentication key Update server Device Update agent Software update for IoT 19 Copyright © 2011-2016, 2net Ltd
  • 20. Complexities of OTA update • Authentication (is this update legit?) • Security (am I receiving what you are sending?) • Roll-back (if update fails to boot, switch to previous version) • Scale (roll out to large populations) • Monitoring (keeping track of status of the population of devices) Software update for IoT 20 Copyright © 2011-2016, 2net Ltd
  • 21. Roll-back • Boot limit count • Feature of bootloader (e.g U-Boot) • Increment count in bootloader • Reset after successful boot • If reboot with count > 0, bootloader knows boot failed and loads alternate rootfs • Hardware watchdog • If hang in early boot, watchdog times out and resets CPU • Bootloader checks reset reason • If watchdog, loads alternate rootfs Software update for IoT 21 Copyright © 2011-2016, 2net Ltd
  • 22. Mender.io • OTA update server and client • Full system image update • Licenses: Server and Client: Apache 2 • Code (client): https://github.com/mendersoftware/mender • Documentation: https://docs.mender.io Software update for IoT 22 Copyright © 2011-2016, 2net Ltd
  • 23. Mender.io features • Symmetric A/B image update client • Bootloader support: U-Boot • Volume formats: MBR and UEFI partitions • Update commit and roll-back • Build system: Yocto Project (meta-mender) • Remote features: deployment server, build artifact management, device management console Software update for IoT 23 Copyright © 2011-2016, 2net Ltd
  • 24. Resin.io • OTA update server and client • Container (Docker) based updates • Licenses: Client: Apache2; Server: proprietary • Code (client): https://github.com/resin-os/meta-resin • Documentation: https://docs.resin.io/introduction Software update for IoT 24 Copyright © 2011-2016, 2net Ltd
  • 25. resin.io features • Symetric A/B rootfs for core OS ("Resinhup") • Applications packaged into Docker containers • Build integration: Yocto Project (meta-resin) • Docker images can be preloaded into YP build • Remote features: deployment server, integration with git Software update for IoT 25 Copyright © 2011-2016, 2net Ltd
  • 26. Brillo • Brillo is cut-down Android for IoT • License: Apache 2.0 • Android OTA update client • Symmetric and asymmetric image update • Licenses: Client: Apache2; Server: proprietary • Code (client): https://android.googlesource.com • Documentation: https://developers.google.com/brillo Software update for IoT 26 Copyright © 2011-2016, 2net Ltd
  • 27. Conclusion • Software update is a hot topic • Open source solutions described in this presentation: • Stand-alone update clients • swupdaed • RAUC • End-to-end solutions • mender.io • resin.io This and other topics associated with building robust embedded systems are coverred in my training courses http://www.2net.co.uk/training.html Software update for IoT 27 Copyright © 2011-2016, 2net Ltd