fastboot

NAME
fastboot - manipulate the non-volatile flash partitions

SYNOPSIS
fastboot [options] [commands]

DESCRIPTION
fastboot is a program used to manipulate (list, install, erase) the non-volatile memory such as flash filesystem partitions on devices that adhere to the fastboot protocol, via a USB connection from a host computer. It requires that the device be started in a boot loader mode with the fastboot protocol enabled. Once connected to the device, the program accepts a specific set of commands sent to it via the USB using the fastboot program on the host.

fastboot is primarily used for installing the operating system binary `images' into the non-volatile flash memory of the devices.

The partition should adhere to a specific layout. Fastboot was designed for use with phones and tablets running the Android operating system.

To allow non-root user access to the devices, one might needed to add udev rules file for the specific device and add the user to the appopriate group (typically the group is named plugdev).

If the device is not connected, certain fastboot commands display the output:

    < waiting for the device >

and waits till it detects and establish a fastboot connection with the connected device. Otherwise, it prints a helpful list of commands and switches and exits.

OPTIONS

-w  Erase userdata and cache and format, if supported by the partition type.

-u  Do not first erase partition before formatting.

-s device
    Specify device serial number or path to device port.

    The device serial number can also be set by setting the environment variable ANDROID_SERIAL.

-l  Lists device paths. Works only with the command devices.

-p product
    Specify the device product name.

    Normally `fastboot' binary is built when building Android from the source using the `Android Open Source Project' (AOSP) repositories. Assuming $aosp is the root of the AOSP source code, the output binaries and images are stored in the $AOSP/out directory. `fastboot' binary lives in `$AOSP/out/host/linux-x86/bin' directory. If run from this directory, the images are looked for in `../../../target/product/$product' directory where $product is specified with the `-p' switch.

    If this switch is not set, the environment variable ANDROID_PRODUCT_OUT should be set to the directory containing the binary images.

    This switch is generally specified with the flash and flashall commands.

-c commandline
    Override linux kernel command line. This switch is typically used along with the command boot. See the EXAMPLES section for a typical usage.

-i VendorID
    Specify a custom USB Vendor ID for the device.

-b base_addr
    Specify a custom linux kernel base address.

-n pagesize
    Specify page size for the flash device. Default value is 2048.

-S size[K|M|G]
    Automatically sparse files greater than the specified size. Specify the size as 0 to disable sparse files.

COMMANDS

update filename
    Reflash the device from the give update file. The filename must be a zip file.

flashall
    Reflash boot partition, recovery partition and the system partition.

flash partition [filename]
    Write the given file to the specified partition.

erase partition
    Erase a flash partition.

format partition
    Format a flash partition.

getvar variable
    Display a bootloader variable.

boot kernel [ramdisk]
    Download and boot kernel.

flash:raw boot kernel [ramdisk]
    Create boot image and flash it.

devices
    List all connected devices.

continue
    Continue with autoboot.

reboot-bootloader
    Reboot device into bootloader.

reboot
    Reboot the device normally..

help
    Show a help message.

ENVIRONMENT
ANDROID_PRODUCT_OUT

    This variable should be set to the root of the directory where the images for the specific product is stored.

ANDROID_SERIAL

    Thie variable can be used to specify the device serial number.

EXAMPLES
1. Flashing the recovery image:
	fastboot flash recovery recovery.img
2. Flash the kernel and bootloader:
	fastboot flash boot boot.img
3. Erase a partition:
	fastboot erase cache
4. Reboot the phone:
	fastboot reboot
5. Boot with a custom built kernel and root filesystem (but not write them into the flash memory):
	fastboot boot linux-2.6/arch/arm/boot/zImage root-image/recovery.img-ramdisk.cpio.gz
6. Format partitions:
	fastboot format cache
	fastboot format userdata
7. Flash all partitions at once:
	fastboot -w flashall
8. Restoring from backed up images in the user's computer::
	fastboot erase system
	fastboot erase data
	fastboot erase cache
   and then flash the images (starting with system):
	fastboot flash system system.img
	fastboot flash data data.img
	fastboot flash cache cache.img
9. Boot the phone with a specific linux kernel commandline argument:
	fastboot -c "console=ttyHSL0,115200,n8" boot boot.img

DIAGNOSTICS
Make sure that the device is connected and is visible via lsusb. If the device is detected by `lsusb' and `adb devices' output shows `???????????? device', then try reloading udev rules or try disconnecting and connecting the cables.

BUGS
The command name should have been chosen more carefully to reflect its purpose.

AUTHOR
fastboot was written by engineers at Google for the Android project.

Ramakrishnan Muthukrishnan wrote this manual page, originally for the Debian Project, with a lot of suggestions from Raul Miller.

SEE ALSO
adb(1), udev(7), lsusb(8)