page.title=Block-Based OTAs
@jd:body

<!--
    Copyright 2015 The Android Open Source Project

    Licensed under the Apache License, Version 2.0 (the "License");
    you may not use this file except in compliance with the License.
    You may obtain a copy of the License at

        http://www.apache.org/licenses/LICENSE-2.0

    Unless required by applicable law or agreed to in writing, software
    distributed under the License is distributed on an "AS IS" BASIS,
    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    See the License for the specific language governing permissions and
    limitations under the License.
-->
<div id="qv-wrapper">
  <div id="qv">
    <h2>In this document</h2>
    <ol id="auto-toc">
    </ol>
  </div>
</div>

<p>You can enable block-based over-the-air (OTA) updates for new devices
running Android 5.0. OTA is the mechanism by which OEMs remotely update the
system partition of a device:</p>
<ul>
<li><b>Android 5.0</b> and later versions use block OTA updates to ensure that
each device uses the exact same partition. Instead of comparing individual
files and computing binary patches, block OTA handles the entire partition as
one file and computes a single binary patch, ensuring the resultant partition
contains exactly the intended bits. This allows the device system image to
achieve the same state via fastboot or OTA.</li>
<li><b>Android 4.4</b> and earlier versions used file OTA updates, which
ensured devices contained similar file contents, permissions, and modes, but
allowed metadata such as timestamps and the layout of the underlying storage
to vary between devices based on the update method.</li>

</ul>
<p>Because block OTA ensures that each device uses the same partition, it
enables the use of dm-verity to cryptographically sign the system partition.
For details on dm-verity, see
<a href="{@docRoot}security/verifiedboot/index.html">Verified Boot</a>.
</p>

<p class="note"><strong>Note:</strong> You must have a working block OTA
system before using dm-verity.</p>

<h2 id="Recommendations">Recommendations</h2>

<p>For devices launching with Android 5.0 or later, use block OTA updates in
the factory ROM. To generate a block-based OTA for subsequent updates, pass
the <code>--block</code> option to <code>ota_from_target_files</code>.</p>

<p>For devices that launched with Android 4.4 or earlier, use file OTA
updates. While it is possible to transition devices by sending a full block
OTA of Android 5.0 or later, it requires sending out a full OTA that is
significantly larger than an incremental OTA (and is therefore discouraged).
</p>

<p>Because dm-verity requires bootloader support found only in new devices
shipping with Android 5.0 or later, you <i>cannot</i> enable dm-verity for
existing devices.</p>

<p>Developers working on the Android OTA system (the recovery image and the
scripts that generate OTAs) can keep up with changes by subscribing to the
<a href="https://groups.google.com/forum/#!forum/android-ota">android-ota@googlegroups.com</a>
mailing list.</p>

<h2 id="File vs. Block OTAs">File vs. Block OTAs</h2>

<p>During a file-based OTA, Android attempts to change the contents of the
system partition at the filesystem layer (on a file-by-file basis). The update
is not guaranteed to write files in a consistent order, have a consistent last
modified time or superblock, or even place the blocks in the same location on
the block device. For this reason, file-based OTAs fail on a dm-verity-enabled
device; after the OTA attempt, the device does not boot.</p>
<p>During a block-based OTA, Android serves the device the difference between
the two block images (rather than two sets of files). The update checks a
device build against the corresponding build server at the block level (below
the filesystem) using one of the following methods:</p>
<ul>
<li><b>Full update</b>. Copying the full system image is simple and makes
patch generation easy but also generates large images that can make applying
patches expensive.</li>
<li><b>Incremental update</b>. Using a binary differ tool generates smaller
images and makes patch application easy, but is memory-intensive when
generating the patch itself.</li>
</ul>

<p class="note"><strong>Note:</strong> <code>adb fastboot</code> places the
exact same bits on the device as a full OTA, so flashing is compatible with
block OTA.</p>

<h3 id="Unmodified Systems">Updating unmodified systems</h3>

<p>For devices with <i>unmodified</i> system partitions running Android 5.0,
the download and install process for a block OTA remains the same as for a
file OTA. However, the OTA update itself might include one or more of the
following differences:</p>
<ul>
<li><b>Download size</b>. Full block OTA updates are approximately the same
size as full file OTA updates, and incremental updates can be just a few
megabytes larger.</p>

<img src="../images/ota_size_comparison.png" alt="comparison of OTA sizes">

<p class="img-caption"><strong>Figure 1.</strong> Compare Nexus 6 OTA sizes
between Android 5.0 and Android 5.1 releases (varying target build changes)</p>

<p>In general, incremental block OTA updates are larger than incremental file
OTA updates due to:</p>
<ul>
<li><i>Data preservation</i>. Block-based OTAs preserve more data (file
metadata, dm-verity data, ext4 layout, etc.) than file-based OTA.</li>
<li><i>Computation algorithm differences</i>. In a file OTA update, if a file
path is identical in both builds, the OTA package contains no data for that
file. In a block OTA update, determining little or no change in a file depends
on the quality of the patch computation algorithm and layout of file data in
both source and target system.</li>
</ul>
</li>
<li><b>Sensitivity to faulty flash and RAM</b>. If a file is corrupted, a file
OTA succeeds as long as it doesn't touch the corrupted file, but a block OTA
fails if it detects any corruption on the system partition.</li>
</ul>

<h3 id="Modified Systems">Updating modified systems</h3>
<p>For devices with <i>modified</i> system partitions running Android 5.0:</p>
<ul>
<li><b>Incremental block OTA updates fail</b>. A system partition might be
modified during an <code>adb remount</code> or as a result of malware. File
OTA tolerates some changes to the partition, such as the addition of files
that are not part of the source or target build. However, block OTA does not
tolerate additions to the partition, so users will need to install a full OTA
overwriting any system partition modifications) or flash a new system image to
enable future OTAs.</li>
<li><b>Attempts to change modified files cause update failure</b>. For both
file and block OTA updates, if the OTA attempts to change a file that has been
modified, the OTA update fails.</li>
<li><b>Attempts to access modified files generate errors </b><i>(dm-verity
only)</i>. For both file and block OTA updates, if dm-verity is enabled and
the OTA attempts to access modified parts of the system filesystem, the OTA
generates an error.</li>
</ul>
