Usando os smartphones com o Windows Mobile como modem, no Linux

Usando os smartphones com o Windows Mobile como modem, no Linux

Em posts anteriores falei sobre como usar o smartphone como modem bluetooth através do DUN, que está disponível em aparelhos da Nokia e na maioria dos aparelhos de outros fabricantes, com uma exceção importante: os aparelhos com o Windows Mobile.

Até o Windows Mobile 5, o sistema oferecia suporte a DUN e a conexão funcionava perfeitamente. A partir do Windows Mobile 6 (mais especificamente, a partir do WM 5 com o AKU3), a Microsoft decidiu introduzir um novo sistema de compartilhamento, baseado no perfil PAN, que é usado através do “Compartilhamento de Internet”. O uso do PAN é vantajoso sobre alguns pontos de vista; o grande problema é que optaram por simplesmente remover o suporte a DUN, obrigando todos os interessados a migrarem para o novo sistema. Isso complicou as coisas não apenas para usuários de outras plataformas, mas também para usuários de versões antigas do Windows, anteriores ao XP SP2.

No caso do Linux, o PAN é bem suportado, desde que você utilize uma distribuição recente, como o Ubuntu 8.04 (ou mais recente) ou o Mandriva 2008. Eles já vem com o suporte a Bluetooth e os módulos necessários pré-instalados, o que torna a configuração bastante simples.

O primeiro passo é fazer o pairing entre o PC e o smartphone, o que no Windows Mobile 6 é feito através do “Iniciar > Configurações > Conexões > Bluetooth > Bluetooth Manager > Menu > Dispositivos com Correspondência >Adicionar”. Certifique-se também de que o smartphone está configurado para aceitar conexões dentro da configuração do Bluetooth

Com o pairing realizado, abra o “Iniciar > Programas > Compartilhamento de Internet”, usando o “PAN do Bluetooth” como conexão para o PC e a conexão referente ao serviço de acesso como conexão de rede. Ao clicar no “Conectar” o aparelho passa para o modo NAP, onde ele fica disponível para conexão de outros dispositivos autorizados:

Falta agora fazer a conexão no PC, que na verdade consiste em apenas 3 comandos, executados como root. Comece carregando o módulo “bnep”, que é o responsável por fazer tudo funcionar:

# modprobe bnep

O próximo passo é abrir a conexão usando o comando “pand -n –role PANU –connect”, seguido pelo endereço do aparelho (que você descobre usando o “hcitool scan”):

# pand -n –role PANU –connect 00:1E:75:67:2B:30

Da primeira vez que executar o comando, o smartphone exibe uma mensagem perguntando se deve aceitar conexões vindas do PC (que naturalmente você deve autorizar). A partir daí, você verá uma série de mensagens confirmando o estabelecimento da conexão, como em:

pand[8471]: Bluetooth PAN daemon version 3.7
pand[8471]: Connecting to 00:1E:75:67:2B:30
pand[8471]: bnep0 connected
Em caso de erros, verifique se o pairing foi feito corretamente e se o PC foi definido como dispositivo autorizado nas configurações do Bluetooth.

Com isso, é criada uma interface de rede virtual, a “bnep0”, que é usada para a comunicação entre o PC e o smartphone. Para que a conexão seja finalmente ativada, falta configurá-la via DHCP, usando o comando:

# dhclient bnep0

Com isso, seu PC receberá um endereço na faixa 192.168.0.x e o smartphone passará a compartilhar a conexão, ficando disponível através do endereço 192.168.0.1 (que é usado pelo PC como gateway e como DNS), de forma muito similar ao que temos ao compartilhar a conexão usando o ICS do Windows.

Esta é justamente a grande diferença entre o sistema PAN e o DUN. No PAN o bluetooth é usado como uma interface de rede e o smartphone compartilha a conexão via NAT, enquanto no DUN o bluetooth é usado como porta serial e o PC estabelece a conexão “discando” para o provedor, como se estivesse usando um modem discado.

Para fechar a conexão posteriormente, use:

# pand -K

Para listar as conexões ativas (em caso de dúvidas sobre se a conexão está ativada ou não) use:

# pand -l

Como pôde ver, a conexão usando o sistema PAN a partir do Linux é até mais simples do que usando o DUN. A principal observação é que você precisa de uma distribuição relativamente recente para usar esta receita. Em distribuições antigas o suporte é ainda incipiente, fazendo com que você tenha problemas diversos. Assim como em outras áreas, a solução mais simples nesses casos é simplesmente atualizar o sistema.

Com relação à usabilidade, o principal problema com o PAN é que você precisa ativar o Compartilhamento de Internet no smartphone cada vez que for conectar através do PC. Não é possível simplesmente ativar a conexão e sair navegando sem tirar o telefone do bolso, como no caso dos aparelhos da Nokia. Isso elimina parte do appeal de usar o Bluetooth em vez de simplesmente ligar o smartphone no cabo USB.

Em seguida temos o compartilhamento da conexão via USB, que também é um problema. Em outros aparelhos, ao conectar o smartphone ao PC em modo de sincronismo, ele é detectado pelo sistema como um modem USB e você pode criar a conexão seguindo os passos tradicionais, mas no Windows Mobile as coisas são um pouco diferentes.

Eles usam usam um sistema próprio de compartilhamento de conexão, também ativado através do “Compartilhamento da Internet:

Mesmo ao indicar que o PC está ligado através da porta USB e clicar no “ativar”, nada acontece. Não é criada a porta “/dev/ttyACM0” nem a “/dev/ttyUSB0” e, em muitos casos, não é sequer exibida nenhuma mensagem no dmesg.

A dificuldade é que, mais uma vez a Microsoft decidiu “inovar”, criando um novo sistema de compartilhamento em vez de simplesmente usar o perfil de modem USB como em outros aparelhos. No sistema da Microsoft é simulada uma conexão de rede entre o PC e o smartphone através da porta USB, através da qual a conexão é compartilhada.

Com isso, passou a ser necessária toda uma nova camada de drivers e, como pode imaginar, a compatibilidade com o Linux não é exatamente uma prioridade para a Microsoft e a compatibilidade com o Windows Mobile também não é exatamente uma prioridade para as distribuições, já que pouca gente os utiliza no Linux de qualquer forma.

Apesar disso, é possível configurar a conexão usando versões modificadas dos módulos “usbnet”, “cdc_ether” e “rndis_host”, desenvolvidos pela equipe do SynCE.

Para instalá-los, você vai precisar dos compiladores básicos. No Ubuntu, você pode instalá-los através do pacote “build-essential”:

# apt-get install build-essential

Em seguida, baixe o arquivo “usb-rndis-lite-0.11.tar.gz” (ou mais recente), disponível no:
http://www.synce.org/moin/SynceInstallation/Source

O passo seguinte é descompactar o arquivo, o que no terminal pode ser feito usando o tar:

# tar -zxvf usb-rndis-lite-0.11.tar.gz

Isso criará a pasta “usb-rndis-lite-0.11/” no diretório atual. Acesse-a e execute os comandos “make”, “./clean.sh” e “make install” para fazer a instalação:

# cd usb-rndis-lite-0.11/
# make
# ./clean.sh
# make install

Esta é a receita genérica. Você pode também encontrar instruções de instalação em várias distribuições no http://www.synce.org/moin/SynceInstallation.

A partir daí, ao plugar o smartphone na porta USB e ativar o compartilhamento da conexão, o aparelho passa a exibir a mensagem “Aguardando a rede” ou “Conectado” em vez de “Verifique a conexão do cabo USB” (em alguns aparelhos você precisa desconectar e reconectar o cabo USB depois de clicar no “Conectar” para que ele detecte a conexão do PC).

Do lado do PC, o sistema detectará o smartphone como uma nova interface de rede, a “rndis0“. Você pode confirmar a detecção usando o comando dmesg, que incluirá mensagens similares a:

usb 2-2: new full speed USB device using ohci_hcd and address 22
usb 2-2: configuration #1 chosen from 1 choice
usbcore: registered new interface driver cdc_ether
rndis0: register ‘rndis_host’ at usb-0000:00:02.0-2,
RNDIS device (SynCE patched), 80:1b:00:00:77:e4
usbcore: registered new interface driver rndis_host

Se tiver curiosidade de rodar o comando “cat /proc/net/dev” (que lista as interfaces de rede presentes no sistema), você verá uma entrada referente à interface “rndis0” no final da lista.

Se você estiver usando o Ubuntu ou outra distribuição que utilize o NetworkManager, a interface será ativada automaticamente e passará a ser exibida na lista de conexões:

Em outros casos, você pode ativar a conexão usando o dhclient, de forma que o PC obtenha o IP e a configuração da rede via DHCP:

# dhclient rndis0

Se por acaso você tiver outra conexão ativa (uma conexão de rede local, por exemplo), use primeiro o comando “route del default” para eliminar a rota padrão e fazer com que o sistema realmente use a conexão.

Assim como ao usar o compartilhamento via Bluetooth, o smartphone fornece um endereço dentro da faixa “192.168.0.” (ou na faixa “169.254.2.”, dependendo do aparelho) via DHCP e assume o papel de gateway da rede.

Em caso de problemas, acesse (no smartphone, dentro do “Compart. de Internet”) o Menu Configurações da Conexão > USB para PC” e desmarque a opção “Habilitar funcionalidade avançada de rede”. Ela costuma causar problemas não apenas no Linux, mas também no Windows XP.

Sobre o Autor

Redes Sociais:

Deixe seu comentário

X