USB Tether com Motorola Android
Dica publicada em Linux / Introdução
USB Tether com Motorola Android
USB Tether (compartilhar Internet do Celular para o PC) não é possível com o Motorola, pois esta opção não existe no aparelho. No entanto, existe em outros aparelhos que possuem o Android.
Mas sempre tem uma gambiarra, que explico a seguir:
1. Instalar o pacote "iproute2", no caso do Ubuntu e derivados já tem por padrão. No meu caso, baixei e instalei pelo gslapt. Mas é facilmente achado no pkgs.org para sua distribuição.
2. Instalar OpenVPN, também achado no pkgs.org ou (no Ubuntu):
# apt-get install openvpn
3. Precisamos do adb (binário do Android SDK). Download aqui:
4. Dar permissão de execução ao arquivo e copiá-lo pra /usr/bin. Como root:
# chmod +x adb
# cp adb /usr/bin
5. Fazer o udev reconhecer o aparelho, precisamos conhecer a ID (USB) do aparelho.
No caso, estou usando um Motorola que tem a ID "22b8". Aqui tem uma lista dos dispositivos, ou basta verificar no sistema, com o comando lsusb que retorna a ID a ser usada:
lsusb
# mcedit /etc/udev/rules.d/91-android.rules
7. E colocar o seguinte, levando em conta o seu nome de usuário (alemar no meu caso) e a ID do aparelho (22b8):
Salvar e dar permissões devidas ao arquivo:
# chmod a+r /etc/udev/rules.d/91-android.rules
8. Reiniciar o udev para carregar a nova regra:
Ubuntu:
# restart udev
Vector Linux (baseada no Slackware):
# /etc/rc.d/rc.udev force-restart
9. Habilitar o USB debug no aparelho:
Config → Aplicacoes → Desenvolvimento → USB Debug
10. Conectar o aparelho e ver se ele é listado com o comando:
# adb devices
# wget http://azilink.googlecode.com/files/azilink.ovpn
Editá-lo removendo a linha:
Na minha versão do OpenVPN (2.2.2), ela conflita com a "keepalive".
Salvar o arquivo.
12. Instalar o "azilink-release.apk" no aparelho pelo adb:
adb install -r azilink-release.apk
Para versão com Android 2.2, pode-se usar a versão normal do Azilink:
13. Abrir o azilink no aparelho e habilitar a opção: Service active
14. Agora, pode-se executar a sequência a seguir para conectar à Internet ou usar o script, que faz a mesma coisa:
adb forward tcp:41927 tcp:41927
$ sudo echo 'domain lan' > /etc/resolv.conf
$ sudo echo 'search lan' >> /etc/resolv.conf
$ sudo echo 'nameserver 192.168.56.1' >> /etc/resolv.conf
$ sudo openvpn --config azilink.ovpn
Script:
Obviamente, deve ter um plano de dados habilitado e funcionando no aparelho e as conexões (Wi-Fi, eth) não estar ativadas.
É mais fácil rebootar e entrar no Windows né!? Tenho que concordar, mas onde está a diversão nisso?!
Dica também publicada em: David Lopan - USB Tether com motorola android
Mas sempre tem uma gambiarra, que explico a seguir:
1. Instalar o pacote "iproute2", no caso do Ubuntu e derivados já tem por padrão. No meu caso, baixei e instalei pelo gslapt. Mas é facilmente achado no pkgs.org para sua distribuição.
2. Instalar OpenVPN, também achado no pkgs.org ou (no Ubuntu):
# apt-get install openvpn
3. Precisamos do adb (binário do Android SDK). Download aqui:
4. Dar permissão de execução ao arquivo e copiá-lo pra /usr/bin. Como root:
# chmod +x adb
# cp adb /usr/bin
5. Fazer o udev reconhecer o aparelho, precisamos conhecer a ID (USB) do aparelho.
No caso, estou usando um Motorola que tem a ID "22b8". Aqui tem uma lista dos dispositivos, ou basta verificar no sistema, com o comando lsusb que retorna a ID a ser usada:
lsusb
Bus 007 Device 007: ID 22b8:41da Motorola PCS6. Criar um arquivo no diretório /etc/udev/rules.d com o nome "91-android.rules", com um editor de texto qualquer:
# mcedit /etc/udev/rules.d/91-android.rules
7. E colocar o seguinte, levando em conta o seu nome de usuário (alemar no meu caso) e a ID do aparelho (22b8):
SUBSYSTEM=="usb", ATTR{idVendor}=="22b8", MODE="0666", GROUP="plugdev"
SUBSYSTEM=="usb", ATTRS{idVendor}=="22b8", SYMLINK+="android_adb", MODE="0666", OWNER="alemar"
SUBSYSTEM=="usb", ATTRS{idVendor}=="22b8", SYMLINK+="android_adb", MODE="0666", OWNER="alemar"
Salvar e dar permissões devidas ao arquivo:
# chmod a+r /etc/udev/rules.d/91-android.rules
8. Reiniciar o udev para carregar a nova regra:
Ubuntu:
# restart udev
Vector Linux (baseada no Slackware):
# /etc/rc.d/rc.udev force-restart
9. Habilitar o USB debug no aparelho:
Config → Aplicacoes → Desenvolvimento → USB Debug
10. Conectar o aparelho e ver se ele é listado com o comando:
# adb devices
List of devices attached 88B0401600D device11. Baixar o "azilink.openvpn" pra ser usado como script de conexão:
# wget http://azilink.googlecode.com/files/azilink.ovpn
Editá-lo removendo a linha:
ping 10
Na minha versão do OpenVPN (2.2.2), ela conflita com a "keepalive".
Salvar o arquivo.
12. Instalar o "azilink-release.apk" no aparelho pelo adb:
adb install -r azilink-release.apk
Para versão com Android 2.2, pode-se usar a versão normal do Azilink:
13. Abrir o azilink no aparelho e habilitar a opção: Service active
14. Agora, pode-se executar a sequência a seguir para conectar à Internet ou usar o script, que faz a mesma coisa:
adb forward tcp:41927 tcp:41927
$ sudo echo 'domain lan' > /etc/resolv.conf
$ sudo echo 'search lan' >> /etc/resolv.conf
$ sudo echo 'nameserver 192.168.56.1' >> /etc/resolv.conf
$ sudo openvpn --config azilink.ovpn
Script:
#!/bin/bash
adb forward tcp:41927 tcp:41927
sleep 2
sudo echo 'domain lan' > /etc/resolv.conf
sudo echo 'search lan' >> /etc/resolv.conf
sudo echo 'nameserver 192.168.56.1' >> /etc/resolv.conf
sleep 2
sudo openvpn --config azilink.ovpn
adb forward tcp:41927 tcp:41927
sleep 2
sudo echo 'domain lan' > /etc/resolv.conf
sudo echo 'search lan' >> /etc/resolv.conf
sudo echo 'nameserver 192.168.56.1' >> /etc/resolv.conf
sleep 2
sudo openvpn --config azilink.ovpn
Obviamente, deve ter um plano de dados habilitado e funcionando no aparelho e as conexões (Wi-Fi, eth) não estar ativadas.
É mais fácil rebootar e entrar no Windows né!? Tenho que concordar, mas onde está a diversão nisso?!
Fontes
- Issue 43 « code.google.com
- Tethering Motorola Defy. Internet over USB on Windows and Linux | Technosrix
- Linux + GNU = Humans Enabled: Tether Android to Ubuntu / Fedora Linux
Dica também publicada em: David Lopan - USB Tether com motorola android
O parametro --iproute /sbin/ip no script ou na linha de comando do openvpn resolve se o programa estiver em /sbin note que pode estar em outro lugar, O comando 'whereis ip' acha ele pra voce.