OTA Updates for Raspberry Pi
Due to its low cost, modularity, and open system design the Raspberry Pi devices have taken the computing and digital world by storm.
In embedded Linux development, there are two approaches when it comes to what operating system to run devices on. Either build a custom distribution with tools such as Yocto or Buildroot, or use a binary distribution where Debian and derivatives are common. Raspberry Pi Foundation provides Raspberry Pi operating system (OS) image, which is a Debian-based binary Linux distribution. For many development teams in small scale IoT projects it is common to start out with a binary distribution such as the Raspberry Pi (RPi) 4 kit .
There are various needs such as bug fixes, vulnerability patches and feature updates that arise during the product development lifecycle that will require over-the-air (OTA) software updates to a fleet of internet connected RPis. Deploying OTA updates can be components related to a whole system or applications:
- System update can be a low level bootloader, kernel, root filesystem that enable the underlying operating system software capabilities.
- Application update (sometimes referred to as partial or micro update) in the higher software stack deals with user experience and device functionality and may require updating docker containers, packages, files, and configurations.
In a system update the entire memory partition on a device is updated. The update will include all software and firmware on the device, even when the update only contains a small change in a file. For a “brick-free” and redundant update process, system update is the most robust and safe updating method. The main disadvantages with this method are additional costs to accommodate the extra storage capacity needed for the two partitions and data costs over cellular networks when hundreds of megabytes of data transfer are required since the entire partition is updated.
In application updates only particular parts of the software on the memory is updated. If there is only a minor change in a file, the OTA update will only include a new version of that particular software. Application updates come in relatively smaller size than system updates and favor use-cases where frequent updates and data transfer cost are the primary concerns. The disadvantages are that the risk of ‘bricking’ the device is higher and also often lead to inconsistencies in versions and dependencies of applications installed across the device fleet over time.
Ultimately, what methods are used is entirely up to the device requirements and the environment they function in.
You can connect almost any device and Linux OS with Mender, but to make it simple during evaluation we recommend using a Raspberry Pi as a test vehicle. Mender provides both system and application updates for deploying over-the-air (OTA) software updates to Raspberry Pis. The Mender client is integrated into the Raspberry Pi OS image with Raspberry Pi 3 Model B and B+ and Raspberry Pi 4 Model B. Follow the step-by-step guide in the Mender documentation to prepare your device and start managing and deploying OTA updates for Raspberry Pi.
Quickly and easily evaluate and deploy OTA updates using a secure server Mender hosts with this step-by-step onboarding guide. In this tutorial, you will learn how to do robust system level updates with rollback and in this tutorial, you will learn how to deploy an application update.
Mender also offers a set of features for solving device management use cases beyond OTA software updates. Some of the add-on features such as Remote Terminal are also available as open source.The add-ons will give users an expansion path to customize and enhance their usage to meet other device fleet management requirements.