out 022010
 

Blz? Tem alguns meses que contratei um serviço 3G, no caso depois de muita pesquisa pra mim ficou uma ótima relação custo beneficio um Tim Web 3G 300k por R$ 59,90. De fato não é a melhor velocidade, porém  para funcionar como Internet Móvel de Final de semana, no interior do Ceará é razoável 😉 não é o tema deste post, por isso vamos pular os detalhes.

Fato quando adquiri o tal plano, foi oferecido um modem 3G Onda[1], achei o máximo já que o mesmo era desbloqueado, porém como eu não entendia nada do assunto e ainda mais para rodar no Linux, comecei a ter alguns causos complicados, por exemplo:

  1. Falta de suporte/driver para Linux;
  2. Detecção de CDROM de drivers para MS-Windows;
  3. Leds fora da padronização do mercado;
  4. Conexão no Linux apenas no modo 2G;

Falta de Suporte/Driver para Linux

Algo  que de fato já meio que me acostume ao longo destes últimos anos como usuário de Linux (Slackware/ArchLinux), pois de fato poucos são os fabricantes de hardware e prestadores de serviço que lembram de seus usuário no Linux, porém graças ao modelo colaborativo do Software Livre, todo hardware que tenho, mesmo que não seja homologado por seu fabricante, existe algo no Linux que os fazem funcionar, no caso do modem o suporte ao mesmo é nativo ao Linux 😉

Detecção de CDROM de drivers para MS-Windows

Ao colocar o modem, inicial o mesmo é detectado como um drive de CDRom, devido um mecanismo de auto instalação para windows, o que pode dificultar um pouco a sua utilização. Porém pesquisando um pouco mais sobre isto, descobri um comando do próprio modem, para desabilitar tal drive virtual, no caso é um comando AT[2]. Para executa-lo no linux basta saber qual o dispositivo correspondente ao modem e como root (sudo/su) executar o seguinte comando:

echo -e "AT+ZCDRUN=9\n\r" > /dev/ttyUSB1

Para ver o que ocorreu você deve também como root executar o comando:

cat /dev/ttyUSB1

Você deverá receber uma mensagem parecida com a seguinte:

OK

Open autorun state result(0:FAIL 1:SUCCESS):1

Feito isso, seu modem não será mais reconhecido como sendo uma unidade de cdrom.

Leds fora da padronização do mercado

Ao utilizar o modem 3G, comecei a ficar com dúvida de qual era minha velocidade conexão, conversando com alguns amigos eles recomendaram olhar a cor do led, a qual geralmente quando AZUL indica modo 3G (HSDPA/UMTS) e VERDE modo 2G (EDGE/GPRS). Porém neste modelo de modem (ou neste fabricante) a cor do led está invertida.

Lembre-se, modem Onda MSA405HS:

  • Led VERDE = 3G (HSDPA/UMTS)
  • Led AZUL = 2G (EDGE/GPRS)

Conexão no Linux apenas no modo 2G

Como citei anteriormente comecei a perceber que só me conectava ao modo 2G, então recorri ao velho modo boot games, a qual é uma instalação dual boot, destinada exclusivamente a jogos ms-windows. Onde havia instalado o discador da TIM, e observei que consegui conexão com o LED VERDE, sendo assim continuei minhas pesquisas e vi que para algumas pessoas os diversos gerenciadores de conexão funcionavam selecionando o modo 3G, não sei dizer se era algo com meu modem ou com as versões dos meus gerenciadores (wvdial, networkmanager), o fato é que todos só conectavam em modo 2G mesmo tentando configurar ou forçar para aceitar somente 3G. Assim os dias foram passados e achei mais alguns comandos AT bem interessantes, os quais configuravam o modem para as preferências de configuração[2], como podem ser vistos abaixo:

Set Operational Mode
AT+ZSNT=0,0,0 (Auto) – Default
AT+ZSNT=1,0,0 GPRS Only
AT+ZSNT=2,0,0 3G Only
AT+ZSNT=0,0,1 GPRS Preferred
AT+ZSNT=0,0,2 3G Preferred

Sendo assim bastava após realizar a conexão em modo 2G, executar como root o comando:

echo -e "AT+ZSNT=2,0,0\n\r" > /dev/ttyUSB1

Que tudo estava resolvido 😉
Porém era algo chato ficar toda hora executando tal comando, foi ai descobri o suporte a scripts do gerenciador de conexões ‘Networkmanager’, o qual executa a cada conexão ou desconexão os scripts localizados no diretório “/etc/NetworkManager/dispatcher.d”, abaixo vai o script que desenvolvi para garantir sempre ter algum tipo de conexão:

#!/bin/sh
export LC_ALL=C
SITE='www.davidferreira.com.br'
if [ "$1" = "ppp0" ]  && [ "$2" = "up" ]
then
	/bin/echo -e "Modo: 3G(HSDPA/UMTS)" > /var/log/modem-3G.log;
		/bin/echo -e "AT+ZSNT=2,0,0\n\r"	> /dev/ttyUSB1;
		/bin/sleep 2
	/bin/ping -c4 $SITE				 > /var/log/modem-3G.ping.log;
	SIZE=$(/bin/du /var/log/modem-3G.ping.log | /bin/cut -c 1);
		if [ $SIZE = "0" ]
	then
		/bin/echo -e "Modo: 3G-2G(Pref 3G)" >> /var/log/modem-3G.log;
				/bin/echo -e "AT+ZSNT=0,0,2\n\r"	> /dev/ttyUSB1;
			/bin/sleep 2
				/bin/ping -c4 $SITE				 > /var/log/modem-3G.ping.log;
		SIZE=$(/bin/du /var/log/modem-3G.ping.log | /bin/cut -c 1);
			if [ $SIZE = "0" ]
		then
					/bin/echo -e "Modo: 2G(EDGE/GPRS)" >> /var/log/modem-3G.log;
						/bin/echo -e "AT+ZSNT=1,0,0\n\r"   > /dev/ttyUSB1;
		fi
	fi
fi

Referências:

  1. http://www.ondacommunication.com/site/index.php?page=shop.product_details&dwb=usbmodem&flypage=shop.ondaphone&product_id=112&category_id=3&manufacturer_id=0&option=com_virtuemart&Itemid=21
  2. http://3g-modem.wetpaint.com/page/ZTE+AT-commands

 Leave a Reply

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

(requerido)

(requerido)