OFF-TOPIC: Ubuntu 10.4 + Motorola Backflip (MB300) + 3G + modem (tethering sem root)
Autor: Jerônimo Mozer | Publicado: 2010-05-21T09:41:00-03:00

Recentemente adquiri o telefone Motorola Backflip com sistema operacional Android 1.5.

Utilizo regularmente o meu plano de dados 3G para navegar não só nos aparelhos celulares que possuo, mas também utilizo os aparelhos servindo de modem para o meu notebook com sistema operacional Ubuntu (atualmente com a versão 10.04), bom, nunca imaginei que a dor de cabeça seria tão grande pra conseguir fazer um sistema baseado em Linux (Android) instalado no aparelho celular servir de modem para conexão 3G, visto que absolutamente todos os aparelhos que eu pluguei no Ubuntu desde a versão 9.04 (ou 8.10 não me lembro direito) ele automaticamente era reconhecido como modem 3G e já me disponibilizava a opção de conexão imediatamente... mas com o Android 1.5 foi diferente, hoje foi lançada a versão 2.2 do Android prometendo disponibilizar a conexão 3G facilmente através da criação de um hotspot pelo aparelho... legal... mas por enquanto na 1.5 nativamente não funciona isso. Depois de muita pesquisa e achar que eu teria que "rootear" o aparelho com menos de 1 semana de vida, eis que surgiu a solução através da criação de uma VPN entre o celular e o notebook. Na verdade encontrei uma dica parecida de uma pessoa que fez isso com um Mac Book e o Backflip, não me lembro mais do link, embora muitas coisas fossem incompatíveis, algumas delas até funcionaram pra mim, mas no final faltaram pacotes relacionados entre o Mac e o Linux, então partindo daí acabei chegando nesta solução....

A "mágica" se faz através do AziLink. Testei no meu notebook com Ubuntu 10.04 e no notebook de um amigo com Windows 7, funcionaram perfeitamente.

Vamos lá:

No celular: 

1) Instale a última versão do AziLink, o link 
http://code.google.com/p/azilink está nesta página, ou se você tem um plano de dados ilimitado acesse diretamente com o seu celular e baixe por este endereço http://azilink.googlecode.com/files/azilink-2.0.2.apk, essa é a versão que estou usando.

2) Habilite a "Depuração USB" em Menu -> Configurações -> Aplicativos -> Desenvolvimento

No computador (todos os comandos descritos abaixo são para o Linux, mas pra quem utiliza Windows existem as formas compatíveis claro... click... click rsrsrsrsrs):

1) Faça o download e instale o Android SDK: 
wget http://developer.android.com/sdk/download.html?v=android-sdk_r05-linux_86.tgz
tar -xvf android-sdk_r05-linux_86.tgz 
cd android-sdk-linux_86/
tools/android update sdk

2) Esse passo os utilizadores de Windows podem pular, na verdade quem utiliza Windows precisa acessar o site do MOTODEV e baixar um driver que já reconhece o aparelho quando você plugar ele na USB, mas pra quem usa Linux precisa criar o arquivo /etc/udev/rules.d/90-android.rules  com o seguinte conteudo:

SUBSYSTEM=="usb", ATTRS{idVendor}=="0bb4", MODE="0666"

3) Instale o OpenVPN 2.1 (não pode ser com versões anteriores):
sudo apt-get install openvpn

4) Crie um arquivo no diretório {de instalação do Android SDK}/tools com o nome azilink.ovpn e com o seguinte conteúdo:

dev tun

remote 127.0.0.1 41927 tcp-client
ifconfig 192.168.56.2 192.168.56.1
route 0.0.0.0 128.0.0.0
route 128.0.0.0 128.0.0.0
socket-flags TCP_NODELAY
keepalive 10 30
dhcp-option DNS 192.168.56.1


4) Pra eu não ter que ficar digitando um monte de comandos cada vez que vou utilizar essa conexão 3G acabei fazendo um shell script pra automatizar um pouco o processo (ainda não fiz o .bat pro meu amigo que utiliza Windows 7, mas assim que fizer eu disponibilizo aqui também), criei um arquivo no meu diretório home e chamei de android3GConnect.sh, com o seguinte conteúdo:

#######################################################
cd /home/je/.android-sdk-linux_86/tools
sudo echo "nameserver 192.168.56.1" >> /etc/resolv.conf
sudo ./adb kill-server
sudo ./adb start-server
./adb devices
./adb forward tcp:41927 tcp:41927
sudo openvpn --script-security 2 --config azilink.ovpn
#######################################################

Explicando o que pode ser diferente no seu caso:
/home/je/.android-sdk-linux_86/tools : 
esse é o meu diretório de instalação do Android SDK, mude conforme necessário para você

sudo echo "nameserver 192.168.56.1" >> /etc/resolv.conf:
Usuários do Windows não precisam disso


5) Dê permissão de execução para esse script com o comando:
chmod +x android3GConnect.sh

6) Pra eu não ter que ficar abrindo o Terminal e digitar o comando pra executar esse arquivo cada vez que vou utilizar a conexão 3G, acabei criando um atalho na minha barra de tarefas, se você optar por fazer isso (no Ubuntu), clique com o botão direito sobre a barra de tarefas (painel) e selecione a opção "Adicionar ao painel..." -> Lançador de Aplicativo Personalizado, no campo "Tipo" você precisa selecionar a opção "Aplicativo no terminal", caso contrário você não vai conseguir parar de rodar esse script sem ter que reiniciar o computador, e no campo comando insira: gksu {caminho do diretorio onde salvou o shell script}/android3GConnect.sh

7) Agora pra economizar uma meia dúzia de comandos... reinicie ambos equipamentos (celular e computador)

8) Bom, feito isto, ao religar o celular, abra o programa AziLink e marque a opção "Service active", o Status será alterado para "Waiting for connection..."


9) Neste momento clique no link criado para chamar aquele shell script, ou se você for masoquista o suficiente e não criou o script abra um terminal e digite aqueles comandos do passo 4

10) Espere até aparecer a mensagem "Initialization Sequence Completed", se ela aparecer está tudo ok, o Status no AziLink no celular deve ter sido alterado para "Connected to host"  e você já pode navegar, caso contrário... ou você esqueceu de alguma coisa desta dica ou eu pulei algum passo....

OBS: 

1) Se você não quiser ter problemas com DNS's etc...etc... é melhor desativar a sua conexão wifi, caso contrário ela pode encontrar uma rede disponível e trocar o servidor de DNS automaticamente, daí bau bau conexão...

2) No caso dos usuários do Windows 7, já que não tem como utilizar o comando "sudo" ou o "gksu" no atalho do painel, abram o terminal como "ADMINISTRADOR" pra executar os comandos do passo 4

3) Quando você se encher o saco de navegar, pra cancelar a execução do script basta dar um CTRL+C na janela do Terminal de comando que está executando o shell script e encerrar a execução...

Bom proveito.

[]'s