Archivo de la etiqueta: vodafone

¿Puedo conectar el portátil a un móvil Vodafone Sharp 703SH con tecnología 3G?

Pues sí. Claro que puedes. La cuestión es cómo configurarlo, porque hasta el momento y que yo sepa, ningún software linux da soporte a éste teléfono. De hecho, el excelente programa GPRS Easy Connect afirmaba en su página web que el teléfono está soportado, pero si lo intentas descubrirás que no es cierto porque no consigues conectar con Vodafone: el programa se empeña en decirte una y otra vez que el teléfono está apagado.

Sin embargo, sí podemos usar el Generador de Scripts que viene incluido en GPRS Easy Connect para crear los scripts que utilizaría un Sharp GX25. Estos Scripts no nos sirven para el 703SH, pero es relativamente fácil modificarlos según los parámetros que proporciona el Servicio de Atención al Cliente de Vodafone. No te preocupes, no te haré seguir todos estos pasos: te lo doy ya todo masticado, ¿vale?. ;-)

Lo primero de todo es configurar una conexión Bluetooth entre el teléfono y el ordenador. Eso, en si mismo, no debería suponer ningún problema, pues está bastante bien documentado y puede encontrarse googleando un poco, pero en fin.

Estableciendo una conexión Bluetooth entre Linux y el teléfono.

Si tu ordenador portátil no tiene Bluetooth, necesitarás un USB Dongle, por ejemplo sirven los de Conceptronic. Deberías poder consultar la lista del hardware soportado por Linux en la página Bluetooth Hardware Support for Bluez, pero si vas a mirar te encontrarás con una sorpresita bastante curiosa: que como esos dispositivos no dan soporte en Linux, podría ser ilegal decir que, de hecho, funcionan en Linux, así que la lista ha desaparecido… Increíble, ¿no?. En fin, googlea un poco y encontrarás un dispositivo USB adecuado. Luego, habrá que configurarlo para que funcione. Y a eso vamos.

Primero tienes que instalar el paquete Bluez. En el caso de Gentoo es muy fácil:

[lacofi@lynette ~]$ su
password:
[root@lynette /home/lacofi]# emerge bluez-utils gnome-bluetooth kdebluetooth

Una vez instalado Bluez, tienes que arrancar el demonio bluetooth:

[root@lynette /home/lacofi]# /etc/init.d/bluetooth start

Y si quieres, mete este demonio en los script de inicio para que se ponga en marcha automáticamente en cada arranque.

[root@lynette /home/lacofi]# rc-update add bluetooth default

Ahora tienes que configurar la conexión con el teléfono. Asegúrate de que la configuración Bluetooth del móvil está ajustada para que el teléfono sea detectable por otros dispositivos. Si no, vas de cráneo. ;-)

Una vez que tu teléfono es visible para las redes Bluetooth, puedes pedirle a Linux que lo busque:

[root@lynette /home/lacofi]# hcitool scan
Scanning ...
        08:00:1F:2D:8B:4F       lacofi

Vale. Lo ha encontrado, y ya sabes cual es su dirección MAC (08:00:1F:2D:8B:4F). Ahora consulta qué servicios ofrece el teléfono para comprobar que uno de ellos es «Dial-up Networking». Esto, además te proporcionará otro dato importante: el canal.

[root@lynette /home/lacofi]# sdptool search DUN
Inquiring ...
Searching for DUN on 08:00:1F:2D:8B:4F ...
Service Name: Dial-up Networking
Service RecHandle: 0x10002
Service Class ID List:
  "Dialup Networking" (0x1103)
  "Generic Networking" (0x1201)
Protocol Descriptor List:
  "L2CAP" (0x0100)
  "RFCOMM" (0x0003)
    Channel: 2
Profile Descriptor List:
  "Dialup Networking" (0x1103)
    Version: 0x0100

El canal es el 2, ¿has visto?. Una vez pasado este trámite, tienes que enganchar esa dirección MAC a un dispositivo /dev/rfcomm?, en el canal 2. Como no tienes ningún otro dispositivo Bluetooth (supongo), será llamado /dev/rfcomm0.

El comando es algo así como «rfcomm bind [nº dispositivo] [MAC] [Canal]». O sea:

[root@lynette /home/lacofi]# rfcomm bind 0 08:00:1F:2D:8B:4F 2
[root@lynette /home/lacofi]# rfcomm show
rfcomm0: 08:00:1F:2D:8B:4F channel 2 clean

Ahora tienes que emparejar los dos dispositivos Bluetooth: El del ordenador y el teléfono. Para ello edita o crea un fichero /etc/bluetooth/pin que contenga un número de al menos 4 cifras (mejor si son 8, mucho mejor si son 10) con el siguiente formato:

#!/bin/sh
echo "PIN:6820317173"

Ahora dale a ese fichero permisos de ejecución para todos:

[root@lynette /home/lacofi]# chmod a+rx /etc/bluetooth/pin

Ahora edita el fichero /etc/bluetooth/hcid.conf y modifica la línea con la entrada pin_helper para que apunte a /etc/bluetooth/pin:

Donde dice:

pin_helper /usr/bin/bluepin;

Debe decir:

pin_helper /etc/bluetooth/pin;

Con esto, el ordenador solicitará al teléfono un emparejamiento a la primera ocasión que tenga (es decir, cuando conectes por primera vez). Una vez emparejados ambos dispositivos, quedarán enlazados para siempre, y ya podrás volver a configurar el Bluetooth del teléfono para que se oculte. A partir de entonces, el teléfono solo será visible para el ordenador. Pero el punto flaco de todo esto son los comandos «sbptool search DUN» y «rfcomm bind» que vimos más arriba, porque es un poco peñazo tener que estar tecleando eso cada vez que quieres conectarte a Internet. Para evitarlo (o sea, para que se enganchen automáticamente), hay que editar el fichero /etc/bluetooth/rfcomm.conf y dejarlo así:

#
# RFCOMM configuration file.
#
# $Id: rfcomm.conf,v 1.1 2002/10/07 05:58:18 maxk Exp $
#

rfcomm0 {
	bind yes;
	device 08:00:1F:2D:8B:4F;
	channel 2;
	comment "Conexion con Movil Sharp 703";
}

Con ello estamos metiendo el número de dispositivo (rfcomm0), la MAC y el canal en el fichero de configuración de rfcomm, con lo cual lo hará todo automáticamente.

Si estás usando UDEV, cosa que te recomiendo, edita además el fichero /etc/udev/rules.d/10-local.rules e introduce una entrada tal que así:

# Bluetooth USB Dongle
KERNEL="rfcomm*", NAME="%k", MODE="660", GROUP="usb"

Esto hará que los dispositivos /etc/rfcomm0 se creen siempre con permisos de acceso para el grupo usb. Asegúrate, naturalmente, de que todos los usuarioa que van a usar la conexión con el teléfono pertenecen a dicho grupo.

Bien, pues lo peor ya ha pasado. Ahora queda solo la parte fácil: conectarse a Internet. :-)

Conectarse a Internet

Solo hay que crear una configuración para el demonio pppd. Es muy fácil, una vez que sabes qué comandos de módem se necesitan. En el directorio /etc/ppp/peers crea tres ficheros tal que así:

El fichero /etc/ppp/peers/sharp-703sh debería ser:

#!/bin/sh
#El fichero original fue generado con el Generador de Scripts de
#GPRS Easy Connect para un Sharp GX20 y modificado por mí para
#adaptarlo al Sharp 703SH.

debug
/dev/rfcomm0
460800
crtscts
modem
lock
receive-all
nopcomp
noaccomp
nomagic
noccp
novj
novjccomp
nodetach
noipdefault
defaultroute
usepeerdns
user vodafone
password vodafone
connect '/usr/sbin/chat -e -f /etc/ppp/peers/sharp-703sh-connect -v'
disconnect '/usr/sbin/chat -e -f /etc/ppp/peers/sharp-703sh-disconnect -v'

El fichero /etc/ppp/peers/sharp-703sh-connect debería ser:

#El fichero original fue generado con el Generador de Scripts de
#GPRS Easy Connect para un Sharp GX20 y modificado por mí para
#adaptarlo al Sharp 703SH.

'' AT
TIMEOUT 240
OK ATE0
OK ATV1
OK ATDT*99***1#
TIMEOUT 30
CONNECT ""

El fichero /etc/ppp/peers/sharp-703sh-disconnect debería ser:

#El fichero original fue generado con el Generador de Scripts de
#GPRS Easy Connect para un Sharp GX20 y modificado por mí para
#adaptarlo al Sharp 703SH.

SAY "\nDisconnect...\n"
"" "\K"
"" "+++ATH"
SAY "\nDisconnected.\n"

Ahora asegúrate de que estos tres ficheros tienen permisos de lectura para el usuario que ha de conectarse. Si no, solo podrás conectarte como root.

Vale, pues ya está. Ahora solo tienes que conectarte a Internet a velocidad 3G (¡te aseguro que vuela!). Abre una ventana de terminal y arranca la conexión. Para colgar el teléfono y cerrar la conexión solo tienes que pulsar Ctrl-C.

[root@lynette /home/lacofi]# exit
[lacofi@lynette ~]$ /usr/bin/pppd file /etc/ppp/peers/sharp-703sh
AT
OK
ATE0
OK

OK

CONNECT
Serial connection established.
using channel 2
Using interface ppp0
Connect: ppp0 <--> /dev/rfcomm0
sent [LCP ConfReq id=0x1 <asyncmap 0x0>]
rcvd [LCP ConfReq id=0x2 <auth chap MD5> <accomp> <pcomp>
  <asyncmap 0x0> <magic 0xdc84b0b5>]
sent [LCP ConfRej id=0x2 <accomp> <pcomp> <magic 0xdc84b0b5>]
rcvd [LCP ConfAck id=0x1 <asyncmap 0x0>]
rcvd [LCP ConfReq id=0x3 <auth chap MD5> <asyncmap 0x0>]
sent [LCP ConfAck id=0x3 <auth chap MD5> <asyncmap 0x0>]
rcvd [CHAP Challenge id=0x0
  <8d7ffc507bb24322(blablabla)9ce2163bc93ff41b1a22d41>, name = "Kermit"]
sent [CHAP Response id=0x0 <79913c26f3ae1f030ca92fc7fe50286c>, name = "vodafone"]
rcvd [CHAP Success id=0x0 "Congratulations!"]
CHAP authentication succeeded: Congratulations!
sent [IPCP ConfReq id=0x1 <addr 0.0.0.0> <ms-dns1 0.0.0.0> <ms-dns3 0.0.0.0>]
rcvd [IPCP ConfReq id=0x1]
sent [IPCP ConfNak id=0x1 <addr 0.0.0.0>]
rcvd [IPCP ConfNak id=0x1 <addr 62.87.126.93> <ms-dns1 212.73.32.3> <ms-dns3 212.73.32.67>]
sent [IPCP ConfReq id=0x2 <addr 62.87.126.93> <ms-dns1 212.73.32.3> <ms-dns3 212.73.32.67>]
rcvd [IPCP ConfReq id=0x2]
sent [IPCP ConfAck id=0x2]
rcvd [IPCP ConfAck id=0x2 <addr 62.87.126.93> <ms-dns1 212.73.32.3> <ms-dns3 212.73.32.67>]
Could not determine remote IP address: defaulting to 10.64.64.64
local  IP address 62.87.126.93
remote IP address 10.64.64.64
primary   DNS address 212.73.32.3
secondary DNS address 212.73.32.67
Script /etc/ppp/ip-up started (pid 7180)
Script /etc/ppp/ip-up finished (pid 7180), status = 0x7

Esto significa que ya estás conectado a Internet. ¡Con un teléfono UMTS a velocidades 3G!. Abre Firefox y navega un poco, anda, si no me crees.

Si es la primera vez que lo haces, estate atento a la pantalla de tu móvil, porque aparecerá un mensaje diciéndote que un dispositivo desconocido está pidiendo emparejarse. Dile que sí. Luego te pedirá una contraseña. Ahí tienes que poner el PIN de 8 ó 10 cifras que habías puesto en el fichero /etc/bluetooth/pin. Esto solo tendrás que hacerlo la primera vez. Después, quedan ya emparejados para siempre con lo que puedes decirle a la configuración Bluetooth del teléfono que se oculte (cosa que te recomiendo encarecidamente), y puedes olvidarte del dichoso PIN.

Para colgar, solo tienes que volver a la ventana de terminal y pulsar Ctrl-C. La respuesta será algo así:

Terminating on signal 2.
Script /etc/ppp/ip-down started (pid 8112)
sent [LCP TermReq id=0x2 "User request"]
Script /etc/ppp/ip-down finished (pid 8112), status = 0x0
rcvd [LCP TermAck id=0x2]
Connection terminated.
Connect time 0.2 minutes.
Sent 80 bytes, received 56 bytes.

Disconnect...

Disconnected.
Serial link disconnected.
Connect time 0.2 minutes.
Sent 80 bytes, received 56 bytes.
[lacofi@lynette ~]$ _

Y ahora llama al Servicio de Atención al Cliente de Vodafone y contrata un bono GPRS de datos, anda. En el momento de escribir estas líneas hay uno muy práctico de 200 Mb/mes por 25 euros. Elige el bono que más te convenga, pero hazme caso y no navegues a pelo, que te vas a pulir una pasta, creeme…

Y sobre todo que lo disfrutes… :-)

¿Puedo conectar el portátil a Internet con un móvil Vodafone Sharp GX20?

Sí, pero no igual que el Sony Ericsson T300. Si usas el script anterior con un teléfono móvil Sharp GX20, comprobarás que se conecta, efectivamente, pero desconecta al cabo de pocos segundos. En consola verías la salida de wvdial diciendo:

--> Modem initialized.
--> Sending: ATDT*99***1#
--> Waiting for carrier.
ATDT*99***1#
CONNECT
~[7f]}#@!}!}%} }<}!}$}&@}#}$@#}%}&_8^G}"}&} } } } }'}"}(}"Tx~~~
--> Carrier detected.  Starting PPP immediately.
--> Starting pppd at Thu May 20 22:13:43 2004
--> pid of pppd: 18283
--> Disconnecting at Thu May 20 22:13:48 2004
--> The PPP daemon has died: PPP negotiation failed (exit code = 10)
--> man pppd explains pppd error codes in more detail.
--> I guess that's it for now, exiting
--> The PPP daemon has died. (exit code = 10)

Vale, ¿qué ha pasado?. Pues que se ha conectado a Vodafone, efectivamente, pero al poco tiempo, Vodafone nos ha colgado con un lacónico «error 10», que viene a significar «fallo en la negociación del protocolo». Si leemos el log de /var/log/messages nos encontramos con esto:

May 20 18:14:25 lynette pppd[7096]: pppd 2.4.1 started by root, uid 0
May 20 18:14:25 lynette pppd[7096]: Using interface ppp0
May 20 18:14:25 lynette pppd[7096]: Connect: ppp0 <--> /dev/ircomm0
May 20 18:14:58 lynette pppd[7096]: IPCP: timeout sending Config-Requests
May 20 18:14:58 lynette pppd[7096]: Connection terminated.
May 20 18:14:58 lynette pppd[7096]: Exit.

o con esto:

May 20 20:32:36 lynette pppd[27484]: pppd 2.4.1 started by root, uid 0
May 20 20:32:36 lynette pppd[27484]: Using interface ppp0
May 20 20:32:37 lynette pppd[27484]: Connect: ppp0 <--> /dev/ircomm0
May 20 20:32:40 lynette pppd[27484]: Could not determine local IP address
May 20 20:32:40 lynette pppd[27484]: Hangup (SIGHUP)
May 20 20:32:40 lynette pppd[27484]: Modem hangup
May 20 20:32:40 lynette pppd[27484]: Connection terminated.
May 20 20:32:40 lynette pppd[27484]: Connect time 0.1 minutes.
May 20 20:32:40 lynette pppd[27484]: Sent 113 bytes, received 64 bytes.
May 20 20:32:40 lynette pppd[27484]: Exit.

Ambas cosas vienen a significar que el ordenador espera que el módem le de la IP local, pero pasa el tiempo límite y el módem (el Sharp GX20) aún no se lo ha dado, por lo que considera que la conexión ha sido terminada y cuelga.

Seguramente existe alguna manera de adaptar mi script para que funcione con el GX20, pero yo no lo he conseguido. :-(

En cambio, buscando una solución por Internet, me encontré con un programa que hace exactamente lo que necesito. Se llama «GPRS Easy Connect», y es, básicamente un dialer para linux que soporta multitud de móviles (entre ellos el Sharp GX20), multitud de compañías telefónicas (entre ellas Airtel Vodafone Spain), y multitud de conexiones (entre ellas el enlace de infrarrojos entre móvil y portátil). Por si fuera poco, está traducido al español. Puedes descargarlo en la Web de «GPRS Easy Connect» e instalarlo en tu ordenador. La versión 2.5.1 beta funcionaba perfectamente en mi máquina.

El proyecto GPRS Easy Connect está actualmene cerrado y ya no habrá nuevas versiones. Una pena, pero hicieron un gran trabajo y cumplieron con creces todas mis expectativas mientras estuvieron en activo. Un gran abrazo para ellos desde aquí. De todas formas, en su página web aún puedes bajarte la última versión que se publicó. Así que mientras no lo retiren, este truco aún sigue siendo factible.

Instalarlo es tan fácil como descomprimir el fichero tar.gz y luego ejecutar el script INSTALL, que comprobará en primer lugar si se cumplen las dependencias (especialmente perlTK). En mi extinto Fedora Core 1, por ejemplo, todas las dependencias se cumplieron a la primera y el programa arrancó y se configuró sin ninguna complicación, como la seda. Luego enganchó el GX20 y conectó con Vodafone también sin problemas. Sencillamente perfecto. :-)

Eso sí, puede que tengas que ejecutarlo como root. Yo he añadí una entrada en /etc/sudoers para ejecutar «sudo /usr/bin/gprsec» desde un icono en el escritorio. Me parecía una solución correcta.

Por cierto: en el móvil Sharp GX20 aparecen dos formas distintas de activar los infrarrojos. Una, en el menú «Ajustes». La otra, en el menú «Aplicaciones». Bien, pues la que está en «Aplicaciones» sirve para transferir ficheros entre el ordenador y el teléfono (con el correspondiente programa Windows, claro), pero NO para conectarse a Internet por GPRS. Para esto último debes activar el infrarrojo usando la opción que viene en «Ajustes».

Y si tienes un Sharp GX20, te felicito. Gran teléfono, ¿verdad?. En su momento era una verdadera joya. Hoy está tecnicamente superado, claro, pero sigue teniendo una estética magnífica. Apetece seguir usándolo, la verdad. :-)

¿Puedo conectar el portátil a Internet con un movil Vodafone GPRS?

Sí, por supuesto. :-)

En mi caso, he conectado a Internet el mismo ordenador Highscreen de antes a través de un teléfono móvil Sony Ericsson T300. El enlace entre ordenador y teléfono es, otra vez, el puerto infrarrojos. Te lo cuento enterito, por si no quieres tener que andar mirando las explicaciones para Amena. De nada.

Igual que antes, lo primero es conseguir que Linux reconozca el puerto de infrarrojos del ordenador. Es fácil, sólo hay que recompilar el kernel, pero eso te lo cuento en otro sitio.

Teclea un «dmesg | grep tty» para localizar un puerto serie funcional y libre. Debería salirte una línea así:

ttyS1 at 0x02f8 (irq = 3) is a 16550A

Así que usaremos ttyS1 como puerto serie ¿de acuerdo?. Bien. Revisa tu fichero /etc/modules.conf. Debería estar correctamente configurado de antemano, pero por si acaso, échale un vistazo y asegúrate de que incluye al menos las siguientes líneas:

alias tty-ldisc-11 irtty
alias char-major-161 ircomm-tty
options ppp_async flag_time=0

Vale. Ahora vuelvete root y vamos a modificar el fichero /etc/wvdial.conf que hemos creado para el Amena, de tal forma que contenga esto:

[Dialer Amena]
Username = CLIENTE
Password = AMENA
Phone = *99#
Stupid Mode = 1
Modem = /dev/ircomm0
Baud = 115200
Dial Command = ATDT
Init1 = ATZ +cgdcont=1,"IP","internet"
FlowControl = NOFLOW
Auto DNS = 1

[Dialer Vodafone]
Username = wap@wap
Password = wap125
Phone = *99***1#
Stupid Mode = 1
Modem = /dev/ircomm0
Baud = 115200
Dial Command = ATDT
Init1 = ATZ +cgdcont=1,"IP","airtelnet.es"
FlowControl = NOFLOW
DNS = 212.73.32.3
DNS = 212.73.32.67

Ahora vamos a modificar el script que lo pone en marcha, de tal forma que podamos elegir con quien queremos conectar. Si tienes en el ordenador instalados los programas zenity y gxmessage, por ejemplo, podrías hacer esto:

#!/bin/bash
/sbin/modprobe irtty
/sbin/modprobe ircomm
/sbin/modprobe ircomm-tty
/usr/sbin/irattach /dev/ttyS1 -s
echo 115200 > /proc/sys/net/irda/max_baud_rate
echo 1000 > /proc/sys/net/irda/min_tx_turn_time
echo 1 > /proc/sys/net/irda/max_tx_window
/sbin/route del default eth0
echo "Marcando GPRS..." >> /var/log/wvdial.log
#zenity --question --text "Quieres conectar a Amena GPRS?"
gxmessage -buttons "Vodafone:2,Amena:1,Cancelar:0" "Selecciona la empresa"
status=$?
if [ "$status" = 2 ] ; then
    empresa="Vodafone"
fi
if [ "$status" = 1 ] ; then
    empresa ="Amena"
fi
if [ "$status" = 0 ] ; then
  exit
fi
  wvdial $empresa &
  gxmessage -geometry 270x2 -iconic -buttons  \
    "Desconectar:1" "$empresa GPRS en línea..."
  salida=$?
  if [ "$salida" = 1 ] ; then
    killall wvdial
    echo "Desconectado" >> /var/log/wvdial.log
    echo "Añadiendo ruta eth0..."
    /sbin/route add default eth0
  fi

Esta otra versión del script sigue teniendo restricciones: solo podría ejecutarse como root, por ejemplo. Así que habría que darle permisos SUID o meterla en /etc/sudoers para que sudo pueda manejarla (yo prefiero esto último). Y después, podríamos crear un icono en el escritorio para «sudo /usr/local/bin/infrarrojos», por ejemplo, si es que llamamos al script «infrarrojos». Pero, con todo, es muchísimo más funcional. De hecho, es lo que usaba yo antes de adquirir un Sharp GX20. ;-)

Si pulsamos en el icono que activa este script, saldrá un cuadro de diálogo que nos pregunta si queremos conectarnos a Vodafone, Amena, o cancelar. Si pulsamos «Vodafone» o «Amena», nuestro Linux se conectará al GPRS del móvil correspondiente, y en el panel, aparecerá una ventana minimizada. Podemos navegar libremente, y cuando queramos colgar, solo tenemos que pulsar en la ventana minimizada. Aparecerá otro cuadro de diálogo que nos dice «Vodafone GPRS en línea…», con un botón que dice «Desconectar». Cuando lo pulsemos, el ordenador colgará la conexión con el GPRS. :-).