<html devsite>
  <head>
    <title>Running Builds</title>
    <meta name="project_path" value="/_project.yaml" />
    <meta name="book_path" value="/_book.yaml" />
  </head>
  <body>
  <!--
      Copyright 2017 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.
  -->



<p>This page provides details for running builds on specific devices and
complements the information in <a href="building.html">Preparing to Build</a>.
</p>

<h2 id="building-fastboot-and-adb">Building fastboot and adb</h2>
<p>If you don't already have <code>fastboot</code> and <code>adb</code>, you can
build them with the regular build system. Use the instructions in
<a href="building.html">Preparing to Build</a> and replace the
main <code>make</code> command with:</p>
<pre class="devsite-click-to-copy devsite-terminal">make fastboot adb</pre>

<h2 id="booting-into-fastboot-mode">Booting into fastboot mode</h2>
<p><code>Fastboot</code> is a bootloader mode in which you can flash a device.
During a cold boot of a device, use the following key combinations to boot into
<code>fastboot</code> mode:</p>
<table>
<thead>
<tr>
<th>Device</th>
<th>Code name</th>
<th>Keys</th>
</tr>
</thead>
<tbody>
<tr>
<td>Pixel XL</td>
<td>marlin</td>
<td>Press and hold <em>Volume Down</em>, then press and hold <em>Power</em>.</td>
</tr>
<tr>
<td>Pixel</td>
<td>sailfish</td>
<td>Press and hold <em>Volume Down</em>, then press and hold <em>Power</em>.</td>
</tr>
<tr>
<td>hikey</td>
<td>hikey</td>
<td>Link pins 1 - 2 and 5 - 6 of J15.</td>
</tr>
<tr>
<td>Nexus 6P</td>
<td>angler</td>
<td>Press and hold <em>Volume Down</em>, then press and hold <em>Power</em>.</td>
</tr>
<tr>
<td>Nexus 5X</td>
<td>bullhead</td>
<td>Press and hold <em>Volume Down</em>, then press and hold <em>Power</em>.</td>
</tr>
<tr>
<td>Nexus 6</td>
<td>shamu</td>
<td>Press and hold <em>Volume Down</em>, then press and hold <em>Power</em>.</td>
</tr>
<tr>
<td>Nexus Player</td>
<td>fugu</td>
<td>Press and hold <em>Power</em>.</td>
</tr>
<tr>
<td>Nexus 9</td>
<td>volantis</td>
<td>Press and hold <em>Volume Down</em>, then press and hold <em>Power</em>.</td>
</tr>
<tr>
<td>Nexus 5</td>
<td>hammerhead</td>
<td>Press and hold both <em>Volume Up</em> and <em>Volume Down</em>, then press
and hold <em>Power</em>.</td>
</tr>
<tr>
<td>Nexus 7</td>
<td>flo</td>
<td>Press and hold <em>Volume Down</em>, then press and hold <em>Power</em>.</td>
</tr>
<tr>
<td>Nexus 7 3G</td>
<td>deb</td>
<td>Press and hold <em>Volume Down</em>, then press and hold <em>Power</em>.</td>
</tr>
<tr>
<td>Nexus 10</td>
<td>manta</td>
<td>Press and hold both <em>Volume Up</em> and <em>Volume Down</em>, then press
and hold <em>Power</em>.</td>
</tr>
<tr>
<td>Nexus 4</td>
<td>mako</td>
<td>Press and hold <em>Volume Down</em>, then press and hold <em>Power</em>.</td>
</tr>
<tr>
<td>Nexus 7 (2012)</td>
<td>grouper</td>
<td>Press and hold <em>Volume Down</em>, then press and hold <em>Power</em>.</td>
</tr>
<tr>
<td>Nexus 7 3G (2012)</td>
<td>tilapia</td>
<td>Press and hold <em>Volume Down</em>, then press and hold <em>Power</em>.</td>
</tr>
<tr>
<td>Nexus Q</td>
<td>phantasm</td>
<td>Power the device then cover it with one hand after the LEDs light up and
until they turn red.</td>
</tr>
<tr>
<td>Galaxy Nexus GSM</td>
<td>maguro</td>
<td>Press and hold both <em>Volume Up</em> and <em>Volume Down</em>, then press
and hold <em>Power</em>.</td>
</tr>
<tr>
<td>Galaxy Nexus (Verizon)</td>
<td>toro</td>
<td>Press and hold both <em>Volume Up</em> and <em>Volume Down</em>, then press
and hold <em>Power</em>.</td>
</tr>
<tr>
<td>Galaxy Nexus (Sprint)</td>
<td>toroplus</td>
<td>Press and hold both <em>Volume Up</em> and <em>Volume Down</em>, then press
and hold <em>Power</em>.</td>
</tr>
<tr>
<td>Motorola Xoom</td>
<td>wingray</td>
<td>Press and hold <em>Volume Down</em>, then press and hold <em>Power</em>.</td>
</tr>
<tr>
<td>Nexus S</td>
<td>crespo</td>
<td>Press and hold <em>Volume Up</em>, then press and hold <em>Power</em>.</td>
</tr>
<tr>
<td>Nexus SG</td>
<td>crespo4g</td>
<td>Press and hold <em>Volume Up</em>, then press and hold <em>Power</em>.</td>
</tr>
</tbody>
</table>

<p>You can also use the command <code>adb reboot bootloader</code> to reboot
from Android directly into the bootloader with no key combinations.</p>

<h2 id="unlocking-the-bootloader">Unlocking the bootloader</h2>

<p>You can flash a custom system only if the bootloader allows it, and the
bootloader is locked by default. You can unlock the bootloader, but doing so
deletes user data for privacy reasons. After unlocking, <em>all</em> data on the
device is erased, i.e. both application private data and shared data accessible
over USB (including photos and movies). Before attempting to unlock the
bootloader, be sure to back up any important files on the device.</p>

<p>You need to unlock the bootloader only once, and you can re-lock it if
necessary.</p>

<h3>Unlocking recent devices</h3>
<p>All Nexus and Pixel devices released since 2014 (starting with Nexus 6 and
Nexus 9) have factory reset protection and require a multi-step process to
unlock the bootloader.</p>

<ol>
<li>To enable OEM unlocking on the device:
  <ol>
  <li>In Settings, tap <strong>About phone</strong>, then tap <strong>Build
  number</strong> seven (7) times.</li>
  <li>When you see the message "You are a developer", tap the back button.</li>
  <li>Tap <strong>Developer options</strong> and enable
  <strong>OEM unlocking</strong> and <strong>USB debugging</strong>. (If OEM
  unlocking is disabled, connect to the Internet so the device can check in at
  least once. If it remains disabled, your device may be SIM locked by your
  carrier and the bootloader cannot be unlocked.)</li>
  </ol>
</li>
<li>Reboot into the bootloader and use <code>fastboot</code> to unlock it.
  <ul>
  <li>For new devices (2015 and later):
  <pre class="devsite-click-to-copy devsite-terminal">fastboot flashing unlock</pre>
  </li>
  <li>For older devices (2014 and earlier):
  <pre class="devsite-click-to-copy devsite-terminal">fastboot oem unlock</pre>
  </li>
  </ul>
</li>
<li>Confirm the unlock onscreen.</li>
</ol>

<aside class="note"><strong>Note:</strong> On Nexus 10, after unlocking the
bootloader, the internal storage remains unformatted. You can format the device
using <code>fastboot format cache</code> followed by
<code>fastboot format userdata</code>.</aside>

<h3 id="relocking-the-bootloader">Re-locking the bootloader</h3>
<p>To re-lock the bootloader:</p>
<ul>
<li>For new devices (2015 and later):
<pre class="devsite-click-to-copy devsite-terminal">fastboot flashing lock</pre>
</li>
<li>For older devices (2014 and earlier):
<pre class="devsite-click-to-copy devsite-terminal">fastboot oem lock</pre>
</li>
</ul>

<aside class="note"><strong>Note</strong>: Re-locking the bootloading on a
Motorola Xoom erases user data (including the shared USB data).</aside>

<h2 id="flash-unlock">Using Flash Unlock</h2>
<p>The <code>getFlashLockState()</code> system API transmits the bootloader
state and the <code>PersistentDataBlockManager.getFlashLockState()</code> system
API returns the bootloader’s lock status on compliant devices.</p>

<table>
<tr>
<th>Return value</th>
<th>Conditions</th>
</tr>
<tr>
<td><code>FLASH_LOCK_UNKNOWN</code></td>
<td>Returned only by devices upgrading to Android 7.x or higher that did not
previously support the bootloader changes required to get the flash lock
status if they supported flashing lock/unlock capability.<br>
<ul>
<li>New devices running Android 7.x or higher must be in either
<code>FLASH_LOCK_LOCKED</code> or <code>FLASH_LOCK_UNLOCKED</code> state.</li>
<li>Devices upgrading to Android 7.x or higher that do not support flashing
unlock/lock capability should return <code>FLASH_LOCK_LOCKED</code> state.</li>
</ul>
</td>
</tr>
<tr>
<td><code>FLASH_LOCK_LOCKED</code></td>
<td>Should be returned by any device that does not support flashing
lock/unlock (i.e. the device is always locked), or any device that does support
flashing lock/unlock and is in the locked state.</td>
</tr>
<tr>
<td><code>FLASH_LOCK_UNLOCKED</code></td>
<td>Returned by any device that supports flashing lock/unlock and is currently
in the unlocked state.</td>
</tr>
</table>

<p>Manufacturers should test the values returned by devices with locked and
unlocked bootloaders. For an example, the Android Open Source Project (AOSP)
contains a reference implementation that returns a value based on the
<code>ro.boot.flash.locked</code> boot property. Example code is located in the
following directories:</p>

<ul>
<li><code>frameworks/base/services/core/java/com/android/server/PersistentDataBlockService.java</code></li>
<li><code>frameworks/base/core/java/android/service/persistentdata/PersistentDataBlockManager.java</code></li>
</ul>

<h2 id="selecting-device-build">Selecting a device build</h2>

<p>The recommended builds for devices are available from the <code>lunch</code>
menu, accessed when running the <code>lunch</code> command with no arguments.
You can download factory images and binaries for Nexus devices from
developers.google.com. See <a href="requirements#binaries">Device
binaries</a> for downloads. For details and additional resources, see <a
href="building.html#obtaining-proprietary-binaries">Obtaining proprietary
binaries</a>.

<table>
<thead>
<tr>
<th>Device</th>
<th>Code name</th>
<th>Build configuration</th>
</tr>
</thead>
<tbody>
<tr>
<td>Pixel XL</td>
<td>marlin</td>
<td>aosp_marlin-userdebug</td>
</tr>
<tr>
<td>Pixel</td>
<td>sailfish</td>
<td>aosp_sailfish-userdebug</td>
</tr>
<tr>
<td>HiKey</td>
<td>hikey</td>
<td>hikey-userdebug</td>
</tr>
<tr>
<td>Nexus 6P</td>
<td>angler</td>
<td>aosp_angler-userdebug</td>
</tr>
<tr>
<td>Nexus 5X</td>
<td>bullhead</td>
<td>aosp_bullhead-userdebug</td>
</tr>
<tr>
<td>Nexus 6</td>
<td>shamu</td>
<td>aosp_shamu-userdebug</td>
</tr>
<tr>
<td>Nexus Player</td>
<td>fugu</td>
<td>aosp_fugu-userdebug</td>
</tr>
<tr>
<td>Nexus 9</td>
<td>volantis (flounder)</td>
<td>aosp_flounder-userdebug</td>
</tr>
<tr>
<td>Nexus 5 (GSM/LTE)</td>
<td>hammerhead</td>
<td>aosp_hammerhead-userdebug</td>
</tr>
<tr>
<td>Nexus 7 (Wi-Fi)</td>
<td>razor (flo)</td>
<td>aosp_flo-userdebug</td>
</tr>
<tr>
<td>Nexus 7 (Mobile)</td>
<td>razorg (deb)</td>
<td>aosp_deb-userdebug</td>
</tr>
<tr>
<td>Nexus 10</td>
<td>mantaray (manta)</td>
<td>full_manta-userdebug</td>
</tr>
<tr>
<td>Nexus 4</td>
<td>occam (mako)</td>
<td>full_mako-userdebug</td>
</tr>
<tr>
<td>Nexus 7 (Wi-Fi)</td>
<td>nakasi (grouper)</td>
<td>full_grouper-userdebug</td>
</tr>
<tr>
<td>Nexus 7 (Mobile)</td>
<td>nakasig (tilapia)</td>
<td>full_tilapia-userdebug</td>
</tr>
<tr>
<td>Galaxy Nexus (GSM/HSPA+)</td>
<td>yakju (maguro)</td>
<td>full_maguro-userdebug</td>
</tr>
<tr>
<td>Galaxy Nexus (Verizon)</td>
<td>mysid (toro)</td>
<td>aosp_toro-userdebug</td>
</tr>
<tr>
<td>Galaxy Nexus (Experimental)</td>
<td>mysidspr (toroplus)</td>
<td>aosp_toroplus-userdebug</td>
</tr>
<tr>
<td>Motorola Xoom (U.S. Wi-Fi)</td>
<td>wingray</td>
<td>full_wingray-userdebug</td>
</tr>
<tr>
<td>Nexus S</td>
<td>soju (crespo)</td>
<td>full_crespo-userdebug</td>
</tr>
<tr>
<td>Nexus S 4G</td>
<td>sojus (crespo4g)</td>
<td>full_crespo4g-userdebug</td>
</tr>
</tbody>
</table>

<aside class="note"><strong>Note</strong>: Do not use Android 4.1.1 on a Nexus
7 originally sold with Android 4.1.2 or newer.</aside>

<h2 id="flashing-a-device">Flashing a device</h2>

<p>You can flash an entire Android system in a single command; doing so verifies
the system being flashed is compatible with the installed bootloader and radio,
writes the boot, recovery, and system partitions together, then reboots the
system. Flashing also erases all user data, similarly to <code>fastboot oem
unlock</code>.</p>

<p>To flash a device:</p>
<ol>
<li>Place the device in <code>fastboot</code> mode by holding the appropriate
key combination at boot or using the following command:
<pre class="devsite-click-to-copy devsite-terminal">adb reboot bootloader</pre></li>
<li>After the device is in fastboot mode, run:
<pre class="devsite-click-to-copy devsite-terminal">fastboot flashall -w</pre>
The <code>-w</code> option wipes the <code>/data</code> partition on the
device; this is useful for your first time flashing a particular device but is
otherwise unnecessary.</li>
</ol>

<aside class="note"><strong>Note</strong>: Filesystems created via
<code>fastboot</code> on Motorola Xoom do not function optimally. We recommend
re-creating filesystems through recovery using <code>$ adb reboot
recovery</code>. While in recovery, open the menu (press Power + Volume Up),
wipe the cache partition, then wipe data.</aside>

<h2 id="restoring-devices-to-factory-state">Restoring devices to factory
state</h2>

<p>Factory images for Google devices are available from
<a href="https://developers.google.com/android/nexus/images" class="external">Factory
Images for Nexus and Pixel Devices</a>. Factory images for the Motorola Xoom are
distributed directly by Motorola.</p>

  </body>
</html>
