Como descobrir comandos ocultos do Fastboot

Existem muitos comandos fastboot ocultos no seu dispositivo. Para encontrá-los, precisaremos descarregar o bootloader e examinar o conteúdo!

Em minha busca para descobrir o máximo possível sobre a personalização do Android, fiz muitas descobertas obscuras, mas interessantes. Eu mostrei como acessar menus ocultos no seu dispositivo examinando todas as atividades ocultas de aplicativos em seu telefone. Mais recentemente, mostrei como acessar o ferramenta de diagnóstico de hardware oculto em determinados smartphones. Agora, percebo que alguns de vocês ficaram decepcionados com o fato de seu smartphone não ter sido abordado no artigo anterior, e peço desculpas por isso.

Para compensar, vou mostrar algo muito, muito mais avançado e emocionante: despejando o bootloader do seu dispositivo para descobrir comandos fastboot ocultos. Este guia, embora feito no meu Nexus 6P, é definitivamente replicável na maioria dos smartphones. No entanto, os comandos aos quais você terá acesso variam significativamente entre os dispositivos. A maioria dos comandos não irá realmente ajudá-lo em nenhuma situação real, mas mesmo assim é muito interessante se aprofundar nas configurações do seu telefone. Vamos começar.

Isenção de responsabilidade: contanto que você saiba o que está fazendo e possa seguir as instruções adequadamente, nada de ruim deverá acontecer ao seu dispositivo. Mas ainda estamos mexendo nas partições do dispositivo e no gerenciador de inicialização, então não há como dizer o que pode acontecer se você inserir o comando errado. Certifique-se de ter um backup fora do dispositivo pronto!


Preparação

Antes de começarmos, há uma coisa muito, muito importante a ser observada. Para extrair o bootloader do seu dispositivo, você precisará de acesso root em seu telefone. Se você não tiver acesso root, poderá continuar lendo este guia para fins educacionais, mas não conseguirá executar nenhum dos comandos necessários. Percebido? Bom. Outro pré-requisito que você precisará atender é garantir que seu computador tenha todos os recursos drivers ADB/fastboot adequados. Se você não possui os binários ADB/fastboot, recomendo instalar ADB mínimo e inicialização rápida de nossos fóruns. Quanto aos drivers, você pode obter os drivers necessários para dispositivos Google Nexus aqui e para todos os outros dispositivos de aqui. Como você sabe se está pronto para ir? Conecte seu dispositivo, habilite a depuração USB em Configurações do desenvolvedor, abra um prompt de comando e digite:

adb devices

Se você vir o número de série do seu dispositivo aparecer, você tem os drivers corretos.


Descartando o Bootloader

Nosso primeiro passo é abrir um shell em nosso dispositivo para que possamos executar comandos no ADB. É melhor executarmos comandos no ADB porque somos muito mais propensos a cometer erros ao digitar em um teclado virtual, e cometer erros não é algo que você queira fazer aqui. O primeiro comando que você deve executar no prompt de comando é:

adb shell

Se você vir o prompt de comando mudando de exibir o diretório binário ADB para mostrar o codinome do seu dispositivo Android, então você inseriu com sucesso o shell de linha de comando local do seu dispositivo. Agora, para acessar as partições que precisamos despejar, você precisará de acesso de superusuário. Para fazer isso, digite o seguinte:

su

O símbolo na frente do codinome do seu dispositivo deve mudar de $ para # indicando que agora você pode executar comandos com privilégios elevados. Tenha cuidado agora!

A seguir, descobriremos a localização exata da imagem do bootloader do seu dispositivo. Para encontrar o diretório exato, imprimiremos uma lista de todas as partições e seus diretórios por nome e procuraremos por um em particular chamado 'uma bota.' Você precisará inserir dois comandos da seguinte maneira:

cd /dev/block/bootdevice/by-name
ls -all

Como você pode ver acima, uma lista gigante de diretórios de partição é impressa. Essas partições são classificadas por nome, para que possamos discernir facilmente a localização da partição do bootloader. No meu caso, o bootloader, que é 'uma bota' na imagem acima, pode ser encontrado em /dev/block/mmcblk0p10. Esse irá variar dependendo do seu dispositivo, por isso é importante que você siga estas instruções para descobrir o verdadeiro diretório onde seu bootloader está localizado. Anote este diretório, entretanto, pois iremos referenciá-lo no seguinte comando para despejar o bootloader:

dd if=/dev/block/{YOUR ABOOT PARTITION} of=/sdcard/aboot.img

Uma vez bem sucedido, você deverá encontrar um arquivo chamado 'aboot.img'localizado na raiz do seu armazenamento interno. Agora que descartamos o bootloader, precisamos examiná-lo para determinar quais comandos ocultos podemos encontrar.


Comandos ocultos do Fastboot e seus usos

Você deve estar familiarizado com alguns dos comandos fastboot mais comuns, como flash de inicialização rápida ou inicialização rápida. Existem muitos mais comandos fastboot conforme definidos no protocolo fastboot de código aberto. Aqui está uma lista dos comandos fastboot disponíveis em cada dispositivo com um bootloader baseado no código AOSP mais recente:

O que falta nesta lista é fastboot oem comandos. Esses comandos são específico para fabricantes de dispositivos Android, e não há nenhuma lista ou documentação abrangente sobre quais comandos fastboot oem estão disponíveis. Agora, se o fabricante do seu dispositivo tiver a gentileza de fornecer um comando fastboot que lista todos os comandos OEM (tente oem de inicialização rápida? e veja se funciona), então você não precisará fazer mais nada. Se não houver nenhum comando que imprima uma lista de comandos fastboot oem disponíveis, você precisará imprimir uma lista de cordas do aboot.img e procure os comandos oem manualmente.

'strings' é um comando do Linux, cuja documentação é disponivel aqui. Como você pode ver, estou pessoalmente usando uma máquina Windows, então, em vez disso, estou usando um programa que imita 'strings' do Linux. A saída bruta do comando 'strings' em um arquivo aboot.img será bastante bagunçado, mas se você simplesmente CTRL+F para 'oem' você deverá encontrar o que precisa. Se quiser refinar sua pesquisa, você pode tentar este comando (para a versão do Windows que vinculei):

strings * | findstr /i oem

Para o Nexus 6P, compilei a seguinte lista de comandos fastboot oem:

fastboot oem unlock-go
fastboot oem frp-unlock
fastboot oem frp-erase
fastboot oem enable reduced-version
fastboot oem device-info
fastboot oem enable-charger-screen
fastboot oem disable-charger-screen
fastboot oem enable-bp-tools
fastboot oem disable-bp-tools
fastboot oem enable-hw-factory
fastboot oem disable-hw-factory
fastboot oem select-display-panel
fastboot oem off-mode-charge enable
fastboot oem off-mode-charge disable
fastboot oem ramdump enable
fastboot oem ramdump disable
fastboot oem uart enable
fastboot oem uart disable
fastboot oem hwdog certify begin
fastboot oem hwdog certify close
fastboot oem get-imei1
fastboot oem get-meid
fastboot oem get-sn
fastboot oem get-bsn
fastboot oem get_verify_boot_status

Esteja avisado que você não deve tentar nenhum dos comandos acima, ou qualquer um dos comandos que descobrir em seu dispositivo, a menos que esteja disposto a aceitar os riscos. Há uma razão pela qual esses comandos estão ocultos do usuário.

Dito isto, pensei em alguns usos interessantes para alguns desses comandos fastboot que encontrei (que podem ou não ser presente no seu dispositivo, então siga as instruções acima para verificar!) que deve agradar ao Android mais hardcore entusiasta. Existem dois comandos aqui que podem ter alguma utilidade prática.

O primeiro é o fastboot oem (ativar | desativar)-tela do carregador comando. O que isso faz é desativar a tela de carregamento que aparece quando o dispositivo é desligado. Se você não gosta do brilho ofuscante da tela de carregamento quando o telefone está desligado, você pode desativá-lo por meio deste comando oculto de inicialização rápida!

A seguir, há o fastboot oem off-mode-charge (ativar | desativar) comando. Este comando determina se o seu dispositivo será ligado automaticamente ou não quando uma fonte de energia for detectada. Por padrão, está definido como 'desativado'. Admito que este comando não tem muita utilidade para telefones, mas se você está planejando montar seu tablet no painel do seu carro, você achará este comando incrivelmente útil. Você poderá configurar seu dispositivo para ligar imediatamente quando o tablet receber energia, como quando a bateria do seu carro for ligada. Por outro lado, é muito fácil desligar o tablet quando há falta de energia usando um aplicativo de automação como o Tasker. Este comando, aliás, funciona exatamente como está escrito no Nexo 7 (2013).


É isso nesta lição sobre personalização do Android. Compartilhe os comandos que você descobrir (de preferência em um link pastebin) nos comentários abaixo!

Agradecimentos ao desenvolvedor reconhecido sênior XDA Dees_Troy por sua ajuda na elaboração deste artigo!