Deploy OTA updates for IoT and Linux devices
Deploying Over-The-Air (OTA) software updates to Linux, RTOS, Android based products may help to keep the device software updated and stable with the newest features you developed. But, there are other great reasons and purposes for deploying software updates, here are a few regular and unusual updates that can be done remotely:
Upgrade product software - Deploy a new version of your application to the products in production, this software update may contain new features and modes that would make the product better. When deploying a software upgrade you would like to replace your running code (python files, binaries, etc..) with the new files of your application. You may also want to run BASH commands, install packages that are needed in the new software version and upload new configuration files.
Fix software bugs - Deploy a minor update to close a software bug that can happen on the production devices and cause issues and product recalls. You may deploy and replace the specific file that responsible for the bug and reload or restart the running software.
System update - Deploy or update security packages, replace system files and dependencies as needed. Deploying a new system update can also be done using a package manager command - 'apt update'.
Here at Upswift.io we provide a lightweight, fast and easy-to-use solution for deploying OTA updates to a fleet of devices at once. The micro update technology makes it easy to monitor the update status, deploy the update by groups, set and trigger rollback options in case of an issue with the deployment and even abort the update. The micro update mechanism designed specifically for embedded Linux devices that have low hardware resources. The same mechanism is also responsible for keeping the update package secure and encrypted all the way to the devices that are in the field.
Deploy OTA update example
Here is a filled recipe example for deploying a simple software update to embedded Linux devices.
First, we need to decide which devices would get the next update, it can be a group of devices or a specific device. Continuing with another general section, it's important to set a software version for the next update and comment that includes changes we are going to make to the Linux devices.
The 'Execute command before' section can be used for running a BASH command on the Linux device before making any file or package changes. This is a great opportunity to stop a running device application or running a BASH script with the needed preparations.
The next section may be the most important one. Here we can upload the new software application. It can be any file format, from binary to .py or even directories. All need to be uploaded with the path they need to land on. Keep in mind that in case there is already a file or a directory in the same path, Upswift agent will automatically replace it with the new one you have just uploaded. This method can help to upgrade the running software easily, without deleting files by your self.
In the next section, there is an option to install or upgrade software packages. This can be done using one of the package managers we currently support - apt-get, pip, pip3, and npm.
Rerun the device application with the new files we have just deployed, this can be done with the opposite BASH command to the 'Execute before update'. There is also an option to reboot the device after the update in case it is needed.
The rollback option automatically triggered when an error message appears in each and any part of the update process. In this section, we can select to revert the uploaded files with the ones that were before the update as well as running a BASH command that can help to rerun the application again.
Monitor Update status
After deploying the update, we can trace the deployment progress on each device.