Month: July 2012

Instalando o rVoix no LG P698F

Se voce ainda nao conhece, o rVoix e’ um gravador de ligacoes muito util. Voce pode usa-lo para gravar todas as ligacoes que voce faz ou recebe. Infelizmente este programa so’ funciona em smartphones com processadores Qualcomm, como e’ o caso do P698F que utiliza o MSM7227 da Qualcomm.

Outro detalhe e’ que o seu kernel precisa criar quatro arquivos para comunicacao com o canal de audio do processador baseband (i.e. /dev/voc*).

E’ provavel que seu kernel nao venha com isto ativado por padrao, entao voce precisa’ baixar o kernel para o seu celular, acrescentar o driver que cria os dispositivos /dev/voc* e compila-lo para gerar o zImage.

O arquivo com o codigo fonte do Android e do kernel para o LG P698F pode ser baixado do site http://www.lg.com/global/support/opensource/opensource.jsp. Na categoria coloque Mobile Phone e no modelo digite P698F, apos clicar no link LGP698F que aparecera’ voce tera a opcao de baixar dois arquivos, escolha o LGP698F(Optimus_Net)_Android_GB_LGP698Fv10e.zip que e’ o mais atual.

Em seguida voce precisara’ baixar o arquivo http://rvoix.googlecode.com/svn/branches/snapdragon/kernel/msm7k/vocpcm.c e copia-lo para arch/arm/mach-msm/qdsp5/vocpcm.c acrescentando a seguinte linha no Makefile deste diretorio:

obj-y += vocpcm.o

Siga o procedimento de compilacao do kernel que esta’ descrito no README.txt dentro do arquivo que voce baixou do site da LG.

Nota: Nao aconselho este tipo modificacao para usuarios que nao dominem Linux, que nao saibam compilar o kernel e que nao tenham experiencia com gravacao de ROMs customizadas em smartphones com Android.

Compilando e gravando seu proprio kernel para o LG P698F

Encontrei um tutorial explicando como abrir a imagem boot.img e reempacotar com seu kernel e/ou ramdisk modificado.

Porém após reempacotar notei que o Android nao iniciava com esta imagem boot.img que foi gerada.

Após várias tentativas sem sucesso resolvi recriar uma imagem usando os arquivos originais que foram extraidos do boot.img (ao invés de tentar gerar uma boot.img com o kernel e ramdisk que eu compilei) e usar um hexa-editor, neste caso o wxHexEditor, para comparar a imagem boot.img original com a imagem boot.img que eu gerei usando os arquivos extraidos da imagem boot.img original.

Na imagem original notei que os bytes 14 e 15 eram “0x80 0x12” e na imagem gerada eram “0x00 0x10”, os bytes 22 e 23 também mudaram de “0x80 0x13” para “0x00 0x11”, os bytes 48 e 49 de “0x70 0x13” para “0x0F 0x10” e finalmente os bytes 52 e 53 mudaram de “0x80 0x12” para “0x00 0x10”.

Analisando estas posicoes, descobri que elas referem-se ao endereço base que é passado para o comando mkbootimg. Então adicionando “–base 0x12800000” resolveu o problema da imagem não bootar no LG P698F.

O comando final ficou assim:

$ ./mkbootimg --cmdline 'mem=471M console=ttyHSL1,115200n8 androidboot.hardware=gelatods' --kernel boot.img-kernel --ramdisk boot.img-ramdisk.gz --base 0x12800000 -o myboot.img