Heimdall - O substituto do Odin no Linux


Atualizar um sistema Android deveria, em tese, ser fácil.
Você ligaria seu celular, iria nas Configurações --> Sobre o dispositivo --> Atualização de Software --> Atualizar e pronto! Seu sistema fica atualizado, certo? ERRADO ! Não funciona muito bem assim não.

Aqui cabe uma pequena explicação sobre isso:

Empresas que produzem aparelhos telefônicos (como é o caso da Samsung) personalizam o Android para estes celulares, e convenhamos, nem sempre são felizes nestas personalizações. Por vezes são obrigados a lançarem atualizações para corrigir um ou outro "defeito" no software empacotado.Estas atualizações são chamadas de OTA (Over-The-Air) e são instaladas automaticamente pelo caminho que citei logo no começo do texto. Fora esse método, existem outros para você atualizar seu aparelho, que incluem desde atualizar com ROMS oficiais (Stock ROMS) até instalar ROMS personalizadas, como as ROMS Cyanogenmod, que por sinal são lindas e muito bem faladas pela internet.

A Samsung disponibiliza para seus usuários o KIES, que resolve o problema de atualizações. Claro, se você for um usuário Windows ou MAC. Para Windows ainda tem o ODIN, que é com certeza o software mais usado para flashear ROMS de aparelhos celulares.

Se você é como eu, usuário do Ubuntu, existe uma alternativa.
Esta alternativa chama-se HEIMDALL.

Neste tutorial, não vamos usar uma ROM personalizada, vamos usar uma atualização da própria Samsung.

Aviso a todos os leitores: 

Estes procedimentos podem danificar seriamente seu telefone celular ou tablet. Então faça por sua conta e risco.


Preparação do Ambiente

Primeiro de tudo, vamos instalar o HEIMDALL.

Você pode instalar pela Central de Programas. Veja na imagem abaixo:



Note que em meu caso eu instalei os dois pacotes para meu Ubuntu 14.10 de 64 bits. Se seu sistema for de 32 bits com certeza só aparecerão 2 pacotes. Instale o heimdall-flash e o heimdall-flash-frontend.

Pelo terminal:



UPDATE:

Acabei descobrindo um bug na versão instalada pela Central de Programas do Ubuntu (Versão 1.4 RC1)no Ubuntu 13.10 :
Nesta versão existe um bug que faz o Heimdall contabilizar o progresso da instalação de forma errada, interrompendo abruptamente o processo. Para corrigir, utilize a ultima versão lançada, a 1.4 final:

Versão 32 bits (i386):


Versão 64 bits (amd64):


Na pagina de downloads do Heimdall ( https://bitbucket.org/benjamin_dobell/heimdall/downloads ) tem pacotes para a versão 12.10 também. Essa versão 13.04 instalou sem problemas no meu 13.10.

Se você já tem instalado o Heimdall da Central de Programas, antes de instalar esses pacotes, desinstale os dois nativos senão vai dar problema no pacote heimdall-frontend.



Agora descubra qual é a versão do software instalado em seu celular.
Para isto, vá em Configurações--> Sobre o dispositivo

Encontre a linha Versão de banda de base

No meu caso, meu aparelho é um Samsung Galaxy S Duos, modelo GT-S7562L.
Minha versão:

S7562LVJMB2

Agora vá até o N. ᵒ de compilação

IMM76I.S7562LVJAMB2

Essa atualização é de fevereiro de 2013, segundo o fórum PlusGSM.

 Agora vamos achar a atualização para seu celular. Acesse o link abaixo:

http://www.sammobile.com/firmwares/2/

Aqui você vai achar o último firmware para seu celular.

ATENÇÃO!!!!!!!
TENHA CERTEZA QUE O MODELO ESCOLHIDO SEJA O MODELO DO SEU CELULAR!!!!!!!
SE VOCÊ FLASHEAR UMA ROM INCORRETA SEU CELULAR VAI PARAR DE FUNCIONAR!!!!!!

A atualização é essa para o meu S Duos:

S7562LVJAMH1

Baixe a atualização para sua pasta de download. Todas as atualizações vem em formato .zip que teoricamente deveria ser suportada pelo e3recovery do próprio aparelho instalado a partir do seu SDcard, mas não funciona. Sempre dá o erro de Signature Verification Failed, e foi por este motivo que parti a procura de como atualizar meu Android no Linux.

Feito o download, vamos começa a usar o Heimdall.
Mas antes, vamos colocar o celular em modo de download. A foto abaixo mostra exatamente como fazer:


Preciso explicar?
Após isso conecte o cabo usb no telefone e no seu PC ou notebook.

Agora vamos ligar o Heimdall.
O Heimdall não cria um link para o dash do Unity, então você terá que invocá-lo pelo terminal:



Mantenha o Terminal aberto, porque se fechá-lo, o programa também se fecha.
Isso abrirá a interface gráfica do Heimdall. Vamos vê-la:



Nesta pagina, no botão Browse você carrega o arquivo para o Heimdall atualizar seu celular. Logo abaixo fica o botão de Load/Customize que carregará o ROM para ser transferido ao celular, atualizando ou trocando seu Android.


Esta tela se encarrega de carregar os arquivos para a atualização de um sistema Android (ou troca) e também é a pagina que vamos criar nosso pacote para a atualização do telefone. Mas isso veremos mais para a frente.


E esta é parte que primeiro vamos usar.
Conectado o celular com o PC pelo cabo usb, aperte o botão Detect. Ele irá retornar o seguinte:

Se houver outra saída, verifique os cabos, veja se o seu android ainda está em modo de download. Se não funcionar, tente instalar o aplicativo ADB no seu linux:

Agora vamos extrair do nosso celular o arquivo .pit. Esse arquivo será muito importante para criar nosso pacote de atualização que funcione no Heimdall.


Primeiro, na caixa Download PIT, clique em Save As... , e aponte para o diretório onde está o arquivo .zip de atualização do seu celular e salve com um nome, tipo S7562l.pit.

Feito isto, clique no botão Download logo abaixo. A saída (Output) deve estar exatamente como mostra a foto acima, com a mensagem de "Re-attaching kernel driver...". Isso indica que o arquivo .pit foi salvo com sucesso.

Feche o Heimdall e reinicie seu telefone.

Agora vamos extrair os arquivos do pacote de atualização.

Com o botão direito sob o arquivo, vamos extrair o conteúdo do arquivo zipado.


Uma pasta será criada e dentro dela haverá dois arquivos (ao menos no caso desta atualização tem esses dois arquivos, não sei se outros pacotes são iguais ou se outros celulares e tablets são diferentes) e vamos modificar um arquivo: o arquivo com extensão .tar.md5.

Eu vi alguns vídeos na internet e vi que alguns descompactadores leem e extraem perfeitamente este arquivo .tar.md5, mas aqui no meu Ubuntu isso não aconteceu. Teste no seu sistema e veja se o procedimento da foto acima funciona também com o arquivo .tar.md5. Se não funcionar, renomeie o arquivo de .tar.md5 para .tar somente, e extraia ele.

6 novos arquivos serão criados dentro de uma nova pasta, e são esses arquivos que vão atualizar seu sistema.



Hora de criarmos nosso pacote de atualização.

Criação do Pacote Heimdall

Abra o Heimdall invocando-o pelo terminal usando o sudo conforme instruções acima. Após aberto vá até a aba Flash. Veja a foto abaixo:

Carregue no botão Browse o arquivo .pit criado anteriormente. Deixe desmarcado os dois box abaixo: Repartition e No Reboot.


Na caixa Partitions (Files) clique no botão Add.
Adicione como na imagem.
Ache na caixa de opções Patition Name um por um dos itens que você descompactou e aponte para os seus respectivos arquivos descompactados. No nosso caso, são 6 itens:

FAT              --- arquivo fat.bin
APPS           --- arquivo boot.img
RECOVERY --- arquivo recovery.img
SYSTEM      --- arquivo system.img.ext4
CACHE        --- arquivo cache.img.ext4
HIDDEN      --- arquivo hidden.img.ext4


Depois de add todos os arquivos nós agora vamos empacotar todos esses arquivos.

Clique na aba Create Package


Aqui todas as áreas devem ser preenchidas, menos a URLs (Optional) que como diz o nome, é opcional.

Em Firmware Name você colocará o nome do pacote, no meu caso eu preferi manter o nome do pacote original.

Em Firmware Version você deve colocar exatamente a versão deste firmware que você está empacotando. Aqui você não pode errar.

Platform Name é o nome da plataforma a ser usada, no caso android mesmo.

Platform Version é a versão do Android que será instalada, neste caso a versão é a mesma da instalada, ou seja a 4.0.4

Developer Info deve ser preenchida com pelo menos um nome de quem desenvolveu o pacote. Depois de preenchido aperte o botão Add.

Em Device Info você deve Preencher corretamente as informações. Não erre neste passo!

Na caixa Manufacturer coloque o nome do fabricante do celular, no nosso caso, Samsung.
Em Name coloque o nome correto do seu aparelho, no nosso caso, Galaxy S Duos.
Em Product Code o código correto do seu celular, no nosso caso, GT-S7562L
Terminado de preencher, aperte o botão Add Device.

Revise todas as informações. Não tenha duvidas. Se tiver com alguma duvida, não proceda o empacotamento, procure na internet informações a respeito e só proceda se tiver certeza do que está fazendo!

Está Pronto? Tudo certo e revisado? Então vamos empacotar os arquivos para atualizar seu android.

Aperte o botão Build.
Salve o arquivo com o nome que você especificou no campo Firmware Name


A compressão demorará uns minutos e seu pacote Heimdall estará pronto.

Ao término do processo, encerre o Heimdall.

Aplicando a atualização

Agora vamos zerar seu celular. Faça um backup completo dele e retire seu cartão SD.

Cada celular tem uma forma e um método diferente de se entrar no modo de restauração. No caso do Galaxy S Duos, isso é feito segurando as teclas de Volume UP + Volume Down + Home + Botão de Ligar, conforme a imagem abaixo:

 Quando entrar no modo de restauração, você efetuará 3 procedimentos:



Primeiro, vá em wipe data/factory reset. Na tela seginte vá até o YES e de um clique nele.
Depois vá em wipe cache/partition. Na tela seguinte vá até o YES e de um clique nele.
Então vá em reboot system now.

Recoloque seu telefone ou tablet em modo de download e reconecte-o ao PC usando o cabo USB.

Invoque novamente o Heimdall pelo terminal com o comando sudo conforme ja explicado acima.

Vá até a aba Load Package. Na caixa Heimdall Firmware Package, use o botão Browse e aponte para o pacote criado posteriormente. Ele vai carregar o pacote e depois vai liberar o botão Load / Customise. Clique neste botão.


Clicando em Load / Customise você é direcionado para a aba Flash. Nesta tela você simplesmente deixe desmarcado as opções Repartition, No Reboot e Resume (use after "No Reboot"). Conferido, clique no botão Start e assista a transformação do seu telefone.

Agora, uma dica:


Por algum motivo alheio ao meu conhecimento, o arquivo fat.bin, incluso no pacote oficial da Samsung, foi rejeitado pelo aplicativo do modo de download do celular, dizendo que ouve um erro na confirmação de final de transferência do arquivo, e dando aquela mensagem de erro acima. A solução? Remova a partição FAT da lista dando um clique sobre ele e apertando o botão Remove. Se você tentou assim e deu este erro, sem problemas, o celular vai reiniciar. Desligue-o e ponha-o novamente em modo de download, conecte o celular novamente e sem a partição FAT, aperte o Start novamente.

Veja as telas de progresso:




Após isso o seu android vai reiniciar e aplicar a atualização.
Reconfigure seu aparelho e aproveite!

No nosso caso, veja nosso novo número de compilação:

IMM76I.S7562LVJAMH1

No caso deste meu Galaxy S Duos, as  melhoras foram notáveis logo de cara:

  • A durabilidade da bateria quase que dobrou, aqui no meu celular, antes uma carga completa durava exatos 20 horas, agora dura cerca de 2 dias;
  • Acabou-se os travamentos ridículos e chatos que me atormentavam o tempo todo;
  • Ficou sim mais rápido; baixou bem a quantidade de RAM usada pelo sistema.
Se você quiser não ter o trabalho de criar o pacote para o Heimdall, eu estou disponibilizando o que eu criei para o Galaxy S Duos GT-S7562L:


Bom, espero ter ajudado.
Se você viu neste tutorial algo de errado, ou alguma informação incorreta, ou se você sabe de mais algum detalhe que possa ser útil a outros, por favor, entre em contato que com certeza o artigo será atualizado.




Fontes de pesquisa:

http://www.glassechidna.com.au/products/heimdall/
http://android.stackexchange.com/questions/51062/heimdall-errors-error-failed-to-confirm-end-of-file-transfer-sequence
http://www.youtube.com/watch?v=o6V912VBb8I