Syntax coloring

quarta-feira, 6 de junho de 2012

Tutorial: Instalando o Cyanogen Mod no LG Optimus ME (P-350) pelo Linux

Tenho um telefone LG Optimus ME (P-350, pecan), e o sistema dele ficou progressivamente mais lento, ao ponto de me fazer aventurar pelo mundo dos ROMs customizadas.
Procurei por aí e só vi tutoriais para aquele sistema operacional da tela azul. Como ele não é muito bem vindo por aqui, tive que experimentar um pouco, e resolvi reportar os passos aqui.
Se você tem este telefone, usa o Linux e quer instalar o Cyanogen Mod, aqui vão os passos. Eles foram realizados no Ubuntu 12.04 Precise Pangolin, mas podem facilmente ser adaptados a outras distribuições.

Atenção: como de costume, estes passos funcionaram para mim, e não me responsabilize caso algo não dê certo... Além disso, obter acesso root no aparelho provavelmente invalide a garantia do aparelho. Siga por sua conta e risco.
Atenção 2: ao realizar este processo, TODOS os dados (contatos, aplicativos, etc) do telefone serão perdidos. Faça um backup de seus dados antes.

1. Acesso root no aparelho

Baixe o aplicativo Gingerbreak, versão 1.20 em http://forum.xda-developers.com/showthread.php?t=1044765. Para instalá-lo, você necessita da opção de permitir instalar aplicativos de fontes desconhecidas. Se preferir, baixe o apk usando o seu computador, copie-o para o cartão SD e instale-o com um aplicativo como o AppInstaller.

Uma vez instalado, Habilite o debug por USB em Configurações > Aplicações > Desenvolvimento e certifique-se de ter um cartão SD montado. Rode o aplicativo, selecionando a opção de root. Depois disso, o aparelho vai reiniciar, já com o acesso root obtido.

2. Obtendo e configurando o ADB

O ADB é um comando que permite executar comandos no celular quando ele está conectado por USB ao computador. Seguindo o que está descrito em http://forum.xda-developers.com/showthread.php?t=1067273, baixe o arquivo http://forum.xda-developers.com/attachment.php?attachmentid=588859&d=1304719623 e extraia o zip para um caminho executável, por exemplo, com o comando:
sudo unzip fastboot-and-adb.zip -d /usr/bin

Depois, é necessário configurar o UDEV para reconhecer o dispositivo. Para tal, baixe o arquivo http://www.joescat.com/linux/51-android.rules, copie-o para o local correto e edite-o, com os seguintes comandos:
sudo cp 51-android.rules /etc/udev/rules.d/
sudo chown root:root /etc/udev/rules.d/51-android.rules
sudo chmod 644 /etc/udev/rules.d/51-android.rules
gksu gedit /etc/udev/rules.d/51-android.rules

Agora, com o editor de textos, remova o comentário na linha logo abaixo do fabricante LG, para que fique assim:
# LG Ally/Optimus One/Vortex/P500 618f, 618e=(debug)
ATTRS{idVendor}=="1004", ATTRS{idProduct}=="618e", ENV{adb_matched}="yes"

Depois, execute sudo /etc/init.d/udev restart

Talvez seja necessário instalar a versão 32 bits do libncurses se você estiver usando o Linux em 64 bits. Caso tenha algum problema executando o adb, rode sudo apt-get install libncurses5:i386

Teste o adb com o telefone conectado por USB. Depois, rode no console: adb devices
Você deve ver 1 linha abaixo de "List of devices attached".

3. Obtendo o custom recovery e a ROM

Primeiro, baixe o custom recovery. Neste caso, usei o AmonRA custom recovery. Para o p350, pode-se usar o seguinte link: http://leaveme.in/wp/wp-content/uploads/2012/01/recovery-RA-pecan-2.2.1-GNM-drap.img_.zip.
Dentro do zip, tem os arquivos flash_image e recovery-RA-pecan-2.2.1-GNM-drap.img. Copie ambos para a raiz do cartão SD.

Você também vai precisar da ROM do Cyanogenmod e do Google Apps (para ter acesso, por exemplo, ao Google Play). Baixe ambos. O GApps, conforme o wiki do próprio Cyanogenmod pode ser baixado de http://cmw.22aaf3.com/gapps/gapps-gb-20110828-signed.zip. Já a ROM eu usei esta aqui: http://forum.xda-developers.com/showthread.php?t=1610605.

Copie também ambos os arquivos zip (do Google Apps e do ROM) para a raiz do cartão SD, sem extrair nenhum.

4. Flash da imagem e acesso ao custom recovery

Com o flash_image, o .img do AmonRA recovery e os zips do ROM do Cyanogenmod e do Google Apps todos na raiz do cartão SD, vamos aos comandos pelo ADB. O debug USB tem que estar ativo.
$ adb shell
su
mount -o remount,rw -t yaffs2 /dev/block/mtdblock1 /system
cat /sdcard/flash_image > /system/bin/flash_image
chmod 755 /system/bin/flash_image
sync
flash_image recovery /sdcard/recovery-RA-pecan-2.2.1-GNM-drap.img
sync
reboot recovery

Você vai ver a tela do recovery, que é um menu com algumas opções que podem ser navegadas com as teclas de volume, e confirmadas com o botão menu.

Faça um backup da sua imagem atual (tem essa opção no menu inicial do recovery). Depois, temos que limpar os dados anteriores do telefone. Isto é muito importante, o telefone pode não bootar sem isto!
Vá na opção Wipe e selecione as seguintes opções, uma a uma:
Wipe ALL data/factory resetWipe Dalvik-cache
Wipe battery stats

Com o botão voltar no telefone, volte ao menu anterior e selecione 
Flash zip menu, e depois Choose zip from sdcard. Selecione o zip com o ROM do Cyanogenmod.
Espere terminar e novamente selecione Choose zip from sdcard e selecione o zip com o Google Apps.
Depois, volte e selecione Reboot system now.

Você verá o pinguinzinho do Linux e depois o splash do Cyanogenmod. O primeiro boot demora bastante. Dá uma tensão, mas é assim mesmo. Depois disso, bem vindo ao seu novo sistema!!!

5. Dica: atualizando o ROM

Você pode ficar monitorando a página do ROM para ver se saiu uma nova versão. Caso tenha saído, basta baixá-la e colocá-la na raiz do cartão SD (apague a anterior caso ainda esteja lá para não se confundir). Depois, pressione o botão de desligar por alguns segundos, selecione Reiniciar > Recuperação.

Após o boot, aparecerá a tela do recovery. Limpe o Dalvik cache, na opção Wipe (isto é muito importante!!!), e vá no Flash zip menu, selecionando o arquivo zip contendo o ROM. Reinicie e pronto!

6. Dica: aumentando a duração da bateria

É possível fazer uma recalibragem da bateria. Basta carregar até 100% (não se engane pelo ícone verde, vá em Configurações, Sobre o telefone, Status e veja se está totalmente carregada). Depois reinicie no recovery (da mesma forma como no item anterior) e selecione Wipe, Wipe battery stats. Reinicie o telefone (de preferência com o carregador ainda ligado).

Quando o telefone tiver iniciado totalmente, remova o carregador e deixe a bateria acabar totalmente (o telefone desligar por causa dela). Depois carregue-o e use-o normalmente. No meu caso, tenho cerca de 5 dias com cada carga.

Considerações finais

Espero ter ajudado. Muitos tutoriais por aí ensinam a fazer este processo pelo Windows, mas pra que precisar de um Windows para configurar o telefone que roda Linux? ;-)