Firmware communication protocol and implementation thereof
Fastboot is a
communication protocol used primarily with
Android devices.[1] It is implemented in a
command-line interface tool of the same name and as a mode of the
bootloader of Android devices. The tool is included with the
Android SDK package and used primarily to modify the
flashfilesystem via a
USB connection from a host computer. It requires that the device be started in Fastboot mode. If the mode is enabled, it will accept a specific set of commands,[2] sent through
USB bulk transfers. Fastboot on some devices allows
unlocking the bootloader, and subsequently, enables installing custom
recovery image and
custom ROM on the device. Fastboot does not require
USB debugging to be enabled on the device.[3] To use fastboot, a specific combination of keys must be held during boot.[4]
Not all Android devices have fastboot enabled,[5] and Android device manufacturers are allowed to choose if they want to implement fastboot or some other protocol.[6]
Keys pressed
The keys that have to be pressed for fastboot differ for various vendors.[7]
HTC, Google Pixel, and Xiaomi: Power and volume down
Zebra and symbol devices: Right scan/action button
Sony: Power and volume up
Google Nexus: Power, volume up and volume down
On Samsung devices, (excluding the Nexus S and Galaxy Nexus devices), power, volume down and home has to be pressed for entering
ODIN mode. This is a proprietary protocol, and tool, as an alternative to fastboot. The tool has a partial
alternative.
Commands
Some of the most commonly used fastboot commands include:
flash – rewrites a partition with a binary image stored on the host computer.
flashing unlock/oem unlock *** – unlocks an OEM locked bootloader for flashing custom/unsigned ROMs. The *** is a device specific unlock key.
flashing lock/oem lock *** – locks an OEM unlocked bootloader.
erase – erases a specific partition.
reboot – reboots the device into either the main operating system, the system recovery partition or back into its boot loader.
devices – displays a list of all devices (with the serial number) connected to the host computer.
format – formats a specific partition; the file system of the partition must be recognized by the device.
oem device-info – checks the bootloader state.
getvar all – displays all information about device (
IMEI, bootloader version, battery state etc.).