Qué se puede hacer con el Fastboot de Android

Fastboot es un protocolo de Android que permite modificar el filesystem mediante una conexión USB al smartphone. Este método está desactivado en algunos smartphones que necesitan ser root para poder activarlo.

Fastboot permite modificar el recovery, la rom, borrar el userdata, system, cache, … Cada smartphone tiene su combinación para poder entrar en este modo. En el caso del Galaxy Nexus hay que mantener pulsado de manera simultanea el botón de encendido así como el de subir y bajar volumen.

Para poder interactuar con nuestro teléfono tenemos que tener los drivers del smartphone correctamente instalados en nuestra máquina así como el SDK de Android.

Una vez nuestra máquina cumpla los requisitos, podemos ejecutar desde una terminal comandos para interactuar con nuestro smartphone. Es necesario colocarse en la carpeta platform-tools de la SDK de Android.

En el listado de archivos y carpetas encontramos la utilidad fastboot a través de la cual podemos realizar las siguientes operaciones. Para muchas de ellas tendremos que tener el OEM del smartphone desbloqueado.

# Desbloqueo de OEM
./fastboot oem unlock

Esto nos llevará a la siguiente pantalla donde debemos seleccionar el desbloqueo.

Hecho esto nuestro smartphone está en condiciones de realizar las siguientes tareas:

usage: fastboot [option] [command]

commands:
  update [filename]                        reflash device from update.zip
  flashall                                 flash boot + recovery + system
  flash [partition] [filename]             write a file to a flash 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 bootimage and flash it
  devices                                  list all connected devices
  continue                                 continue with autoboot
  reboot                                   reboot device normally
  reboot-bootloader                        reboot device into bootloader
  help                                     show this help message

options:
  -w                                       erase userdata and cache
  -s [serial number]                       specify device serial number
  -p [product]                             specify product name
  -c [cmdline]                             override kernel commandline
  -i [vendor id]                           specify a custom USB vendor id
  -b [base_addr]                           specify a custom kernel base address
  -n [page size]                           specify the nand page size. default: 2048

El caso más popular es usarlo para flashear el recovery y sustituir el de fábrica por uno que permita actualizar desde un zip, hacer backups, o incluso cifrar/descifrar particiones.

Este es el comando para flashear la partición recovery del smartphone:

# Comprobando que nuestro dispositivo es detectado
./fastboot devices
List of devices attached 
XXXXXXXXXXXX	device

# Flasheando el recovery
./fastboot flash recovery recovery.img

Otro uso bastante habitual es resetear el terminal y dejarlo tal y como viene de fábrica.

Para ello Google pone a disposición de todos los usuarios de smartphones Nexus, las imágenes oficiales de sus diferentes versiones de Android para que mediante el fastboot mode podamos dejar el teléfono como si viniera de fábrica.

El archivo .tgz se puede descargar desde la Web de desarrolladores de Android y contiene el bootloader, la radio y un .zip con la ROM. El .zip incluye:

Para instalar estas imágenes se ejecuta un script en Shell Script (Bash), flash-all.sh, que tiene una serie de comandos que hacen uso de fastboot para borrar y flashear el bootloader, radio y rom.

#!/bin/sh

# Copyright (C) 2011 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.

./fastboot flash bootloader bootloader-maguro-primelc03.img
./fastboot reboot-bootloader
sleep 5
./fastboot flash radio radio-maguro-i9250xxlf1.img
./fastboot reboot-bootloader
sleep 5
./fastboot -w update image-yakju-jro03c.zip

Ejecutando el script dejaremos nuestro smartphone tal y como venía de fábrica con la ROM oficial de Google. Es recomendable una vez terminemos de usar el fastboot mode bloquear de nuevo el bootloader.

# Bloquear bootloader / OEM lock
./fastboot oem lock