Starting March 27, 2025, we recommend using android-latest-release instead of aosp-main to build and contribute to AOSP. For more information, see Changes to AOSP.
A browser supporting WebUSB,
such as Chrome or Edge 79+
Enable your USB connection
Before running Android on a device, you must enable your USB connection:
Enable OEM unlocking and USB debugging in the developer options:
In the Settings app, tap About phone.
Tap Build number seven times.
When you see the message You are now a developer!, tap <-.
Tap System, then tap Developer options.
Enable OEM unlocking and USB debugging. If
OEM unlocking is unavailable, connect to the internet so the device can
check in. If that still doesn't work, you can force a check
in: In the Dialer app, enter *#*#CHECKIN#*#* (*#*#2432546#*#*)
(no SIM required). After entering the number (no need to press call),
the text disappears and a success notification appears.
If OEM unlocking remains unavailable, your device might be SIM locked by
your carrier and the bootloader can't be unlocked.
Connect your device to a USB port on your workstation.
Flash your device
If you have
Android Debug Bridge (adb)
running on your machine, stop the adb service before proceeding so that
it doesn't interfere with the flashing process. To stop adb, run:
adbkill-server
In a browser on your development workstation, open
flash.android.com. The Welcome page appears.
Click Allow ADB access to allow the tool to communicate with your test
device through adb.
Click Add new device.
Select your device from the list and click Connect. This list might
not contain the full device name.
On your device's screen, select Always allow from this computer
and click OK to accept the USB debugging connection.
Select the connected device in your browser.
Search for and select your build from the list. You can also select
options, such as wiping the device or force flashing all partitions.
To start flashing, click Install. The device reboots and enters fastboot
mode.
After Flash Complete appears, disconnect the device from the USB cable.
Flash devices unable to boot
If your device is unable to boot normally, you might not be able to flash your
device using the previous instructions. Instead, you can try flashing with
Fastboot.
To do this, you need to first boot your device into Fastboot mode by using a
key combination:
Determine the key combination for your device. For a table of Fastboot
key combinations, see
Fastboot key combinations.
Turn the device off.
Turn the device on and immediately hold down the key combination for your
device (determined in step 1).
Content and code samples on this page are subject to the licenses described in the Content License. Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
Last updated 2025-06-12 UTC.
[[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Missing the information I need","missingTheInformationINeed","thumb-down"],["Too complicated / too many steps","tooComplicatedTooManySteps","thumb-down"],["Out of date","outOfDate","thumb-down"],["Samples / code issue","samplesCodeIssue","thumb-down"],["Other","otherDown","thumb-down"]],["Last updated 2025-06-12 UTC."],[],[],null,["# Flash with Android Flash Tool\n\n[Android Flash Tool](https://flash.android.com/)\nis a web-based tool that lets you flash a pre built Android build to your\ndevice for development and testing.\n| **Note:** If you need to flash and test your own AOSP changes, refer to [Flash your device with Fastboot](/docs/setup/test/running).\n\nAndroid Flash Tool supports these devices:\n\n- Pixel 2 and newer\n- [DragonBoard RB3 (also known as db845c)](https://wiki.linaro.org/AOSP/db845c)\n- [HiKey 960](https://www.96boards.org/product/hikey960/)\n- [HiKey](https://www.96boards.org/product/hikey/)\n\nMeet requirements\n-----------------\n\nTo run the Android Flash Tool, you must meet these requirements:\n\n- [Hardware requirements](/docs/setup/start/requirements#hardware-requirements)\n- A browser supporting [WebUSB](https://caniuse.com/#search=Webusb), such as [Chrome](https://www.google.com/chrome/) or Edge 79+\n\nEnable your USB connection\n--------------------------\n\nBefore running Android on a device, you must enable your USB connection:\n\n1. Enable OEM unlocking and USB debugging in the developer options:\n\n 1. In the Settings app, tap **About phone**.\n 2. Tap **Build number** seven times.\n 3. When you see the message **You are now a developer!** , tap **\\\u003c-**.\n 4. Tap **System** , then tap **Developer options**.\n 5. Enable **OEM unlocking** and **USB debugging** . If OEM unlocking is unavailable, connect to the internet so the device can check in. If that still doesn't work, you can force a check in: In the Dialer app, enter **\\*#\\*#CHECKIN#\\*#\\*** (\\*#\\*#2432546#\\*#\\*) (no SIM required). After entering the number (no need to press call), the text disappears and a success notification appears.\n\n If OEM unlocking remains unavailable, your device might be SIM locked by\n your carrier and the bootloader can't be unlocked.\n2. Connect your device to a USB port on your workstation.\n\nFlash your device\n-----------------\n\n1. If you have\n [Android Debug Bridge (adb)](https://developer.android.com/studio/command-line/adb)\n running on your machine, stop the adb service before proceeding so that\n it doesn't interfere with the flashing process. To stop adb, run:\n\n adb kill-server\n\n2. In a browser on your development workstation, open\n [flash.android.com](https://flash.android.com/). The Welcome page appears.\n\n3. Click **Allow ADB access** to allow the tool to communicate with your test\n device through adb.\n\n4. Click **Add new device**.\n\n5. Select your device from the list and click **Connect**. This list might\n not contain the full device name.\n\n6. On your device's screen, select **Always allow from this computer**\n and click **OK** to accept the USB debugging connection.\n\n7. Select the connected device in your browser.\n\n8. Search for and select your build from the list. You can also select\n options, such as wiping the device or force flashing all partitions.\n\n9. To start flashing, click **Install**. The device reboots and enters fastboot\n mode.\n\n10. After **Flash Complete** appears, disconnect the device from the USB cable.\n\n| **Note:** If this is the first time flashing this device from this development workstation, the workstation loses the connection to the device and asks you to find it again. The next time you flash the same device on this workstation, you won't see the request to find the device. After reconnecting, the flashing resumes by downloading the images and performing all the required steps.\n\n### Flash devices unable to boot\n\nIf your device is unable to boot normally, you might not be able to flash your\ndevice using the previous instructions. Instead, you can try flashing with\nFastboot.\n\nTo do this, you need to first boot your device into Fastboot mode by using a\nkey combination:\n\n1. Determine the key combination for your device. For a table of Fastboot key combinations, see [Fastboot key combinations](/docs/setup/reference/fastboot-keys).\n2. Turn the device off.\n3. Turn the device on and immediately hold down the key combination for your device (determined in step 1).\n\nOnce your device is in Fastboot mode, open\n[flash.android.com](https://flash.android.com/) and follow the earlier\n[flashing instructions](#flashing-your-device), ignoring the steps related to\nADB.\n\n### Resolve USB transfer errors\n\nSometimes Android devices have trouble communicating through certain USB ports\nor hubs due to the high throughput of data. To resolve transfer errors:\n\n- Don't use USB hubs. This includes connections through monitors.\n- Don't use USB extension cables or adapters if possible.\n- Try a different USB port. Rear ports are often more reliable than front ones.\n- If you're using a USB C port, try a USB A port instead.\n\nReturn Pixel to public build\n----------------------------\n\nIf you want to return your Pixel device to a public build, use the\n[Android Flash Tool back-to-public option](https://flash.android.com/back-to-public)."]]