Full vs Incremental OTA (Over-The-Air Update)
There are two types of OTA (that I have encountered so far). Each with its own advantages and usages. But there is only one type typical customer would see (the other one you probably never heard off). Let take a look at them in details.
As you can see on the graph above those two types of OTA are Incremental and Full.
The most significant difference between those OTA types is its ‘start point’ (the build we can upgrade from using the OTA). When Full OTA can be used across the entire firmware lifecycle [∞ -> B], the Incremental can be only used between specific points [A->B].
The typical size of the Full OTA is close to the size of the full firmware image, while for Incremental there is no rule, it can be as small as few KB and as big as Full OTA, there is not rule here (however usually its much smaller than Full).
The reason, why full OTA size is so close to original firmware image, is not coincidental as it practically contains the entire image within – just in a different form, allowing update via recovery mode. Incremental OTA, on the other hand, contains only the binary differences (parts of files that have been altered) between two stages [A->B], thus it carries fewer data.
Regardless of the type of OTA selected both can only be used to update the device (flashing ROM is the only way to downgrade). Both will verify if device’s firmware signature matches those of the OTA. And most important, they will not erase user data.
Advantages – Full OTA:
- can fix firmware issues introduced by a user -> ignores any changes made on the device (alterations in system partition) – a good way of recovering device, even from the ‘bricked’ state
- no need to know a specific build to update -> can be used on all builds (of lower than OTA versions)
Drawbacks – Full OTA:
- its size -> can be the size of the firmware image (longer to download and apply)
- possible leak of factory images -> being close to factory images size, could also mean that the entire image of a partition is embedded into update.zip file
Advantages – Incremental OTA:
- size -> can be much smaller than full
- security -> contain only binary differences for files so full content is not revealed to end users
- control -> possible to control end user update path as can only be successfully applied to particular build
Drawbacks – Incremental OTA:
- not error prone -> any change to ‘system’ might result in an error during update