This page provides details for running builds on specific devices and complements the information in Building the System.
Building fastboot and adb
If you don't already have fastboot and adb, you can
build them with the regular build system. Use the instructions in
Building a System and replace the
main make command with:
make fastboot adb
Booting into fastboot mode
Fastboot 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
fastboot mode:
| Device | Code name | Keys |
|---|---|---|
| Pixel XL | marlin | Press and hold Volume Down, then press and hold Power. |
| Pixel | sailfish | Press and hold Volume Down, then press and hold Power. |
| hikey | hikey | Link pins 1 - 2 and 5 - 6 of J15. |
| Nexus 6P | angler | Press and hold Volume Down, then press and hold Power. |
| Nexus 5X | bullhead | Press and hold Volume Down, then press and hold Power. |
| Nexus 6 | shamu | Press and hold Volume Down, then press and hold Power. |
| Nexus Player | fugu | Press and hold Power. |
| Nexus 9 | volantis | Press and hold Volume Down, then press and hold Power. |
| Nexus 5 | hammerhead | Press and hold both Volume Up and Volume Down, then press and hold Power. |
| Nexus 7 | flo | Press and hold Volume Down, then press and hold Power. |
| Nexus 7 3G | deb | Press and hold Volume Down, then press and hold Power. |
| Nexus 10 | manta | Press and hold both Volume Up and Volume Down, then press and hold Power. |
| Nexus 4 | mako | Press and hold Volume Down, then press and hold Power. |
| Nexus 7 (2012) | grouper | Press and hold Volume Down, then press and hold Power. |
| Nexus 7 3G (2012) | tilapia | Press and hold Volume Down, then press and hold Power. |
| Nexus Q | phantasm | Power the device then cover it with one hand after the LEDs light up and until they turn red. |
| Galaxy Nexus GSM | maguro | Press and hold both Volume Up and Volume Down, then press and hold Power. |
| Galaxy Nexus (Verizon) | toro | Press and hold both Volume Up and Volume Down, then press and hold Power. |
| Galaxy Nexus (Sprint) | toroplus | Press and hold both Volume Up and Volume Down, then press and hold Power. |
| Motorola Xoom | wingray | Press and hold Volume Down, then press and hold Power. |
| Nexus S | crespo | Press and hold Volume Up, then press and hold Power. |
| Nexus SG | crespo4g | Press and hold Volume Up, then press and hold Power. |
You can also use the command adb reboot bootloader to reboot
from Android directly into the bootloader with no key combinations.
Unlocking the bootloader
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, all 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.
You need to unlock the bootloader only once, and you can re-lock it if necessary.
Unlocking recent devices
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.
- To enable OEM unlocking on the device:
- In Settings, tap About phone, then tap Build number seven (7) times.
- When you see the message "You are a developer", tap the back button.
- Tap Developer options and enable OEM unlocking and USB debugging. (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.)
- Reboot into the bootloader and use
fastbootto unlock it.- For new devices (2015 and later):
fastboot flashing unlock
- For older devices (2014 and earlier):
fastboot oem unlock
- For new devices (2015 and later):
- Confirm the unlock onscreen.
Re-locking the bootloader
To re-lock the bootloader:
- For new devices (2015 and later):
fastboot flashing lock
- For older devices (2014 and earlier):
fastboot oem lock
Using Flash Unlock
The getFlashLockState() system API transmits the bootloader
state and the PersistentDataBlockManager.getFlashLockState() system
API returns the bootloader’s lock status on compliant devices.
| Return value | Conditions |
|---|---|
FLASH_LOCK_UNKNOWN |
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.
|
FLASH_LOCK_LOCKED |
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. |
FLASH_LOCK_UNLOCKED |
Returned by any device that supports flashing lock/unlock and is currently in the unlocked state. |
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
ro.boot.flash.locked boot property. Example code is located in the
following directories:
frameworks/base/services/core/java/com/android/server/PersistentDataBlockService.javaframeworks/base/core/java/android/service/persistentdata/PersistentDataBlockManager.java
Selecting a device build
The recommended builds for devices are available from the lunch
menu, accessed when running the lunch command with no arguments.
You can download factory images and binaries for Nexus devices from
developers.google.com. See Device
binaries for downloads. For details and additional resources, see Obtaining proprietary
binaries.
| Device | Code name | Build configuration |
|---|---|---|
| Pixel XL | marlin | aosp_marlin-userdebug |
| Pixel | sailfish | aosp_sailfish-userdebug |
| HiKey | hikey | hikey-userdebug |
| Nexus 6P | angler | aosp_angler-userdebug |
| Nexus 5X | bullhead | aosp_bullhead-userdebug |
| Nexus 6 | shamu | aosp_shamu-userdebug |
| Nexus Player | fugu | aosp_fugu-userdebug |
| Nexus 9 | volantis (flounder) | aosp_flounder-userdebug |
| Nexus 5 (GSM/LTE) | hammerhead | aosp_hammerhead-userdebug |
| Nexus 7 (Wi-Fi) | razor (flo) | aosp_flo-userdebug |
| Nexus 7 (Mobile) | razorg (deb) | aosp_deb-userdebug |
| Nexus 10 | mantaray (manta) | full_manta-userdebug |
| Nexus 4 | occam (mako) | full_mako-userdebug |
| Nexus 7 (Wi-Fi) | nakasi (grouper) | full_grouper-userdebug |
| Nexus 7 (Mobile) | nakasig (tilapia) | full_tilapia-userdebug |
| Galaxy Nexus (GSM/HSPA+) | yakju (maguro) | full_maguro-userdebug |
| Galaxy Nexus (Verizon) | mysid (toro) | aosp_toro-userdebug |
| Galaxy Nexus (Experimental) | mysidspr (toroplus) | aosp_toroplus-userdebug |
| Motorola Xoom (U.S. Wi-Fi) | wingray | full_wingray-userdebug |
| Nexus S | soju (crespo) | full_crespo-userdebug |
| Nexus S 4G | sojus (crespo4g) | full_crespo4g-userdebug |
Flashing a device
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 fastboot oem
unlock.
To flash a device:
- Place the device in
fastbootmode by holding the appropriate key combination at boot or using the following command:adb reboot bootloader
- After the device is in fastboot mode, run:
fastboot flashall -w
The-woption wipes the/datapartition on the device; this is useful for your first time flashing a particular device but is otherwise unnecessary.
Restoring devices to factory state
Factory images for Google devices are available from Factory Images for Nexus and Pixel Devices. Factory images for the Motorola Xoom are distributed directly by Motorola.