26/08/2011

26/08/2011

Asus Transformer Dual Boot: Android + Linux

E se pudessem usufruir do melhor de dois mundos: a flexibilidade do Andoid e versatilidade do Ubuntu?




Um ecrã de 3,5 ou 4” torna-se pequeno quando utilizado para leitura prolongada. Como tenho um netbook (que belo investimento, 280€ com saída hdmi e 720p por hardware), utilizo o mesmo para pesquisa e leitura online. O ideal seria mesmo usar um tablet para estas funções, mas para isso teria que ser capaz de o substituir na grande maioria (totalidade?) das suas funções.
Quando vi o iPad pensei: isto até tem potencial. Cheguei até a pesquisar sobre teclados Bluetooth mas, no final... não fiquei convencido.

Com a saída do Asus Transformer considerei que tinha encontrado um substituto à altura. Algumas pesquisas/análises mais tarde e depois de uma tentativa frustrada de aquisição (que por 4€ não  ficava dentro do limite do cartão de crédito), decidi esperar pelo Kal-El.

Quis o destino que numa visita ao Jumbo, e depois de muita insistência (ou não...) por parte da minha caríssima esposa, acabasse-mos por adquirir um Transformer (doravante, TF).

A experiência de utilização com o Android Honeycomb tem vindo a melhorar: as sucessivas actualizações (num curto espaço de tempo) e as ROMs e Kernel alternativos têm solucionado alguns problemas e melhorado aspectos menos conseguidos.
No entanto, e tendo em conta os requisitos técnicos iniciais, o TF ainda tem bastante que melhorar:


  • Um browser mais “compatível” - por exemplo, a página do blogger não funciona correctamente.
  • Um Office suite mais completo, ou pelo menos mais bem conseguida. Tentei abrir um documento criado no PC, mas os caracteres acentuados não eram representados correctamente. Cheguei a pensar que não havia suporte para os mesmos, mas ao criar um ficheiro no TF e trabalhando o mesmo, o erro já não se manifesta.

Resumindo, são pequenas incompatibilidades, mas que no meu caso se tornam grandes limitações, pois impossibilitam o seu uso de forma prática e eficaz.


Acompanho a secção do TF no XDA com a alguma assiduidade. Se não é a melhor fonte de informação, pelo menos é a mais agregadora de conteúdos.

Foi com agrado que me deparei com um tópico sobre Linux no TF. Já nas minhas pesquisas tinha procurado informação sobre o assunto, mas na altura esta era diminuta e os progressos reduzidos. Acompanhei o desenvolvimento dos acontecimentos e esperei pela melhor altura para me lançar nesta aventura. Não costumo dar este passo sem ter presente como proceder em caso de erros, ou até mesmo como reverter a situação.

Confesso que desta vez foi um tiro no escuro… Tenho uma ideia de como reverter o TF ao estado “original” mas nada de 100% concreto. Penso que o flash de um ROM via NVFlash permite repor a configuração padrão, mas ainda não testei.

Outro aspecto não testado é a actualização da ROM Android. Pelo que li, basta utilizar o método CWM. Já há alguma troca de informação no XDA, mas ainda é inconclusiva (para mim!). Este aspecto não me preocupa muito. Por certo que quando o Roach2010 lançar uma actualização do Prime 1.7, alguém ira partilhar as instruções de como o conseguir.

Actualização(1): Já saiu a versão 1.8.4, vou testar em breve.


Actualização(2): Não resisti e já testei. O update pode ser efectuado via CWM.



Antes de passar a fase de explicação do processo, um último aviso:

Este processo APAGA TODA A INFORMAÇÃO, QUER DA ROM QUER DO SD INTERNO !!!!  pelo que devem fazer um backup prévio. O SD interno é formatado para receber a partição do Ubuntu, vendo assim o seu espaço disponível reduzido para 8,64Gb. O Ubuntu não está 100% funcional (aceleração gráfica por hardware,som, saída HDMI,trackpad da dock station,bluetooth…). 


Passemos então ao que interessa: no final deste processo terão um TF com dual boot - uma Instalação Android Honeycomb 3.2 com root (ROM Prime 1.7), uma instalação do Ubuntu 11.04 e um acesso à recovery ClockworkMod (CWM) .
Nesta versão do Ubuntu, o ecrã sé tem duas funções: clicar e seleccionar. O uso de um rato usb torna-se indispensável.


Antes de começar dever ter disponível o seguinte equipamento:
  • Um computador a correr Linux
  • Um cartão SD (aconselhável ser para uso no TF, vai ser necessário para alternar a partição de boot)
  • Cabo USB do TF
  • TF com mais de 50% de bateria


Existem duas abordagens em tudo semelhantes: uma com CWM (que para além das funções normais, permite escolha da partição de arranque via flash de um zip) e uma outra em que se escolhe de antemão qual o SO principal (opção permanente até novo flash) ficando o secundário disponível via combinação de botões no arranque.
Acabei por optar pela versão do CWM por duas razões: a flexibilidade deste e o facto de no segundo método existirem relatos de problemas na escolha do SO.





1.No PC com Linux, fazer download do ficheiro (cerca de 900Mb) para a instalação do Ubuntu (LINK). Descompactar o mesmo.

2.No PC com Linux, fazer download do ficheiro zip (LINK) que contem as ferramentas para o flash e descompactar o mesmo.

3.Na pasta criada pela extracção referida em 2., encontram uma directoria Bootloaders com 2 ficheiros zip: Android.zip e Ubuntu.zip. Copiar (sem descompactar) estes dois ficheiros para o cartão SD a utilizar no TF.

4.Mover o ficheiro ubuntu.img criado em 1. para a pasta criada em 2.



5.Desligar o TF. Ligar o cabo USB ao TF e à vossa máquina Linux.

6.Entrar em modo APX (no TF). Para tal, carregar no botão de volume-aumentar e no botão de ON/OFF simultaneamente durante aproximadamente 10 segundos. O ecrã vai continuar preto, como se estivesse desligado. Para se certificarem que o TF está em ligado em modo APX, abram na máquina linux uma janela com o terminal e digitem lsusb. O TF deverá aparecer listado como 0955:7820 Nvidia Corp.


7.Abrir uma janela do terminal na máquina Linux e aceder à directoria criada em 2. Executar o comando ls-l. Devem ter algo como o apresentado na imagem em baixo.


8.Na janela do terminal aberta em 7. Executar o seguinte comando:

sudo sh download-ubuntu.sh

Introduzir a password. No canto superior esquerdo do TF deverá aparecer um texto referente ao modo NVFlash. Esta fase demora cerca de 20 minutos. São criadas as partições (daí a necessidade de backup dos dados) e copiados os ficheiros img. Se tudo correr normalmente, o TF arranca para o Android 3.2.


 Vídeo do processo de instalação.

9.Executar as configurações no TF e desligar (não o ecrã, mas o TF efectivamente).

10.Acoplar o teclado do TF. Se não possuem a dock, devem ler no ponto 5 deste LINK,  como activar o teclado virtual.

11. Entrar em modo recovery (CWM). Para tal, carregar simultaneamente no botão volume-baixar e no botão de ON/OFF (sem libertar os mesmos). Quando aparecer um texto no canto superior esquerdo, libertar os dois botões e carregar no botão volume-aumentar.

12.No CWM, escolher install zip from sdcard (navegar com os botões de volume e seleccionar com o botão de ON/FF)-->choose zip from sdcard-->Ubuntu.zip. Este é o processo para alternar o SO. Se quiserem voltar ao Android, devem executar o mesmo procedimento e escolher o ficheiro Andorid.zip.

13.Ligar o TF e executar a configuração inicial do Ubuntu. O wireless não está a funcionar. Os próximos passos explicam como o conseguir.

14.Na máquina Linux, fazer download e descompactar o flash kit disponível neste LINK. Se já tem o ADB para o TF configurado, passar para o ponto 20.

15. Ligar o TF via cabo USB à máquina Linux- O TF deve estar ligado em “modo Ubuntu”

16. Definir o caminho para o ADB (local onde está o ficheiro adb, no caso em questão, a pasta referida em 14.). 


Editar o ficheiro ~/.bashrc (com um editor de texto à vossa escolha: gedit, leafpad, nano, vim, etc) e adicionar as duas linhas em baixo no final do ficheiro.


PATH=$PATH:caminho_para_o_adb
Export PATH


Numa janela de terminal executar o comando adb devices e verificar se o TF é correctamente reconhecido -conjunto 15 letras e números. Em caso afirmativo, passar para o ponto 20. Se o TF não é reconhecido, passar ao ponto seguinte.
No caso do Magalhães, o TF foi logo reconhecido, no HP 311c, tive de executar os passos 17. a 19.



17.Abrir uma janela de terminal e executar o comando lsusb. O TF deve aparecer listado como ASUSTek Computer, Inc. Tomar nota do ID XXXX:YYYY


18.Criar (com um editor de texto) o ficheiro /etc/udev/rules.d/51-android.rules (editar se já existir) e adicionar a entrada em baixo:


SUBSYSTEMS=="usb", ATTRS{idVendor}=="0b05", ATTRS{idProduct}=="4e1f", MODE="0666", OWNER="nome do utilizador" #Asus Transformer

Substituir na linha em cima as entradas a negrito:

idVendor – XXXX do ID em 17.
idProduct – YYYY do ID em 17.
OWNER – nome do utilizador na máquina linux



19.Numa janela de terminal executar o comando em baixo:

sudo chmod a+r /etc/udev/rules.d/51-android.rules


De seguida testar a ligação com o comando (na janela de terminal) adb devices. O TF já deve aparecer listado.


20. Verificar se o TF já aparece como um dispositivo de armazenamento. Se não for esse o caso, numa janela de terminal executar os seguintes comandos:

sudo apt-get install mtpfs
sudo mkdir /media/transformer
sudo chmod 775 /media/transformer
sudo mtpfs -o allow_other /media/transformer

Com estes comandos instalamos o suporte para equipamentos MTP (que é o caso do TF) e criamos um “mount point” e definimos as permissões do mesmo.
Este passo é indispensável para que possam ter acesso ao armazenamento do TF na máquina Linux. Não é necessário para o processo de instalação.

21.Mover o ficheiro system.img da pasta criada em 2. para a sub-pasta images da pasta criada em 14.

22.Via janela de terminal, aceder à directoria criada em 14. e executar o script inject-firmware.sh.


O script copia o firmware do wifi existente no ficheiro system.img para a partição ubuntu.

23.Reiniciar o Ubuntu (no TF)


ADB e inject firmware


24.Até à data, só é possível ter o WiFi a funcionar em modo WPA Supplicant. No TF, editar o ficheiro wpa_supplicant.conf

sudo gedit /etc/wpa_supplicant/wpa_supplicant.conf

25.Adicionar as seguintes entradas:

ctrl_interface=/var/run/wpa_supplicant
eapol_version=1
ap_scan=2

network={
  ssid="SSID da vossa rede"
  scan_ssid=1
  proto=RSN
  key_mgmt=WPA-PSK
  pairwise=CCMP
  group=TKIP
  psk="Password WiFi"
}

No caso de uma configuração WPA, substituir proto=RSN por proto=WPA. Se não conseguirem efectuar a ligação com WPA2, eliminem a entrada  group=TKIP. Tive de eliminar esta entrada para o router ZyXEL da SAPO-Adsl. 

Podem repetir as entradas entre network={ e } para vários SSID. No pouco tempo que tive não consegui mudar de um SSID para outro. Agradeço aos mais experimentados em Linux ajuda para este ponto.

26.No TF, abrir duas janelas de terminal e executar os seguintes comandos:

sudo wpa_supplicant -i wlan0 -D wext -c /etc/wpa_supplicant/wpa_supplicant.conf

na segunda janela:

sudo dhclient wlan0


Configuração para ligação a rede WPA(2)

27.Se desejarem que o wireless se ligue automaticamente no arranque (no TF)  editem o ficheiro /etc/network/interfaces com o comando:

sudo gedit file/etc/network/interfaces

28.Adicionar as seguintes entradas:

auto wlan0
iface wlan0 inet dhcp
wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf

Reiniciar e testar.

FIM
Espero que vos seja útil.
Caso detectem alguma falha, agradeço que a comuniquem para correcção da mesma.

O guia foi feito com base na minha experiência ao realizar a actualização e na informação dos seguintes sites/tópicos:

Tópico no XDA: LINK - lilstevie
Script de instalação: LINK - rdnetto
Guia em Inglês: LINK - phillc
Configurar ADB: LINK, LINK
Configurar WPA: LINK

6 comentários:

  1. Luis,
    Está excelente, só é pena não ter um Transformer, senão instalava já!

    ResponderEliminar
  2. O primeiro post com a palavra "FIM". Como escreveu o Nuno, só é pena não ter o Transformer para experimentar... Muito bom!

    ResponderEliminar
  3. Eu tenho um transformer, e vou experimentar mal acabe de jantar, meu deus android e linux em dual boot no meu TF *.*

    ResponderEliminar
  4. @Luís Mota:

    Neste momento já existe uma rom Android mais recente. Pode usar a versão 2.0.1 que está no 1º post deste tópico; http://forum.xda-developers.com/showthread.php?t=1251044


    Estes ficheiros devem substituir os referidos no ponto 2 do guia.

    Outra possibilidade é usar o guia tal como está, e depois fazer a actualização via CWM para o 2.0.5 e posteriormente aplicar o update 2.0.7

    Se a rom Android for actualizada, para alternar entre o ubuntu e o android é necessário utilizar o kernel correspondente à versão android em questão.

    No caso da 2.0.7, pode utilizar-se este: http://roach.qap.la/Roms/Prime_v2.0/OCKernel_Prime_v2.0.6.zip

    ResponderEliminar
  5. Ao ligar o seu TF, como você decide se vai dar Boot pelo Android ou pelo Ubuntu? Vou dar uma estudada para tentar fazer com meu Acer Iconia Tab A500.

    ResponderEliminar
  6. @Mateus Henrique,

    ATENÇÃO: não actualize o sei Acer com estes ficheiros, esta distribuição é específica para o Transformer.

    No caso do processo de instalação que executei, a escolha é feita via CWM, fazendo uso da opção flash zip.
    O zip em questão deve ser o do kernel do SO que se quer correr, Android ou Ubuntu.

    Havia outras opções, esta pareceu-me a melhor.

    ResponderEliminar