Yocto Linux OTA software updates in 2020 - What we need to know
When the development of a Linux Yocto based product is about to end, a simple question usually arises. How are we going to deploy Over The Air (OTA) software updates on the products that we ship? The answer may vary depending on many variables since deploying software on Linux Yocto based devices can be somewhat tricky.
I will mention a few elements that you should include in the solution when considering how to deploy software updates on Linux Yocto or Embedded Debian devices. However, before getting into this, let me quickly go through the main difficulties that the IoT and Smart products sector brings in terms of Over The Air software updates deployment and general maintenance:
1. No human interaction - In most of the times, when you have shipped your product or installed it, you can't physically approach it. Therefore, any issue or a needed software upgrade has to be done remotely.
2. Stable, stable and stable once again - Your product works in various environments as different users may utilize your Smart product differently. Hence, the stability of the product software is supercritical.
3. Connection - The only thing that differs an IoT product from an Embedded device is the connection to the internet. There are multiple ways to connect your devices to the internet, each one of them has its own drawbacks that directly affect the implementation of your project.
Obviously, there are many more difficulties as the product gets smarter and smarter, but for most of the cases, the first "issue" that talks about the need for remote control and management capabilities are by far the most problematic for the majority of IoT companies. In order to successfully overcome it, you must use a Linux OTA software deployment mechanism, which is robust enough to deal with the challenges. Here are several points that must be implemented in such a solution:
1. OTA software update deployment - The first important thing the solution has to offer is a way to deploy over the air software updates on our Linux devices in a reliable way. Given that the network connection may not be stable and the product power supply may be shut down at any time, the update mechanism must be aware of those matters and handle them correctly.
2. Rollback Updates automatically - As we can understand for the first point, things can go wrong while we deploy new software on a Linux based product. For this reason, the solution must have a rollback option that will be able to revert the state of the device software as it was before the update started.
3. Troubleshooting software errors and bugs - In case of a software error while updating your Linux device fleet, you will need to have a way to troubleshoot the issue by at least receiving the error logs.
4. Devices grouping - When deploying new software on remote Linux based product, the best practice is to deploy it progressively. Having the option to organize your fleet in groups, is crucial for a successful careful deployment of new software on your Linux based product fleet.
5. Software version control - After deploying several software updates, you will find yourself confused about which software version is running on each device. It may result in a huge waste of time and may even cause deploying the wrong software in the future.
6. Production scale - Being able to scale your fleet from just a few devices to hundred of thousands is essential for growth. At the beginning of the development, you may implement a "quick" solution that fits your current needs, but as you grow, you figure out that it doesn't function the same at scale. Thus, thinking of scale from the beginning will save you much time at later production stages.
Those points guided us from the beginning when we designed Upswift.io IoT management platform specifically for Linux based products. We are welcome you to open a free account. Right after the registration, you will receive a real Demo Linux device to explore the platform and its features. You can also register your own Yocto based, Debian, Ubuntu or any other Linux based device.