Archivo de la etiqueta: infrarrojos

¿Puedo leer la agenda de mi Vodafone Sharp GX20, o enviar y recibir SMS?

Es decir, ¿puedo acceder a esas cosas a través del puerto infrarrojos, con mi portátil?.

La respuesta es sí, claro. Para ello lo único que necesitas es instalar las librerías GSMLIB. Si usas Debian, Fedora, o incluso Gentoo solo tienes que hacer un apt-get o un emerge de nada.

Una vez instalado el GSMLIB, te recomiendo que hagas un enlace blando tal que así (no es imprescindible, pero sí recomendable):

[lacofi@lynette:~]$ su
password:
[root@lynette:/home/lacofi]# cd /dev
[root@lynette:/dev]# ln -s ircomm0 mobilephone

Ahora enciende los infrarrojos de tu móvil en modo módem (en el menú «ajustes», no en el de «aplicaciones»). Puedes hacer una copia de seguridad de la agenda de tu móvil con este comando (tarda un rato, casi un minuto, dependiendo de lo grande que sea tu agenda):

[lacofi@lynette:~]$ gsmpb -i -s /dev/mobilephone -d agenda.txt -p "SM"

Naturalmente, luego puedes usar este fichero para reconstruirla, si la borras accidentalmente, pero deberías consultar la ayuda con el comando «man gsmpb», que es muy detallado y viene con ejemplos.

Del mismo modo, puedes leer desde el ordenador todos los SMS que tengas almacenados en el móvil mediante este otro comando (que también tarda un poco):

[lacofi@lynette:~]$ gsmsmsstore -s /dev/mobilephone -t SM -l

O enviar un SMS a quien quieras mediante el comando:

[lacofi@lynette:~]$ gsmsendsms -d /dev/mobilephone 609555555 "Hola, mundo"

Y como siempre, te recomiendo encarecidamente que te leas los man de gsmsmsstore y gsmsendsms, así como gsmsmsd, un demonio que te permite manipular los SMS con la misma facilidad con que gestionas tus correos electrónicos.

Eso si, no tengo ni idea de cómo transferir melodías o fotos entre ambos dispositivos. Lo siento.

¿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. :-).

¿Puedo conectar el portátil a Internet con un móvil Amena GPRS?

Sí, por supuesto. Supongo que no hay inconveniente tampoco para conectar a través de Movistar, pero en el momento de hacer esto, el móvil que usaba era Amena (cuando era todavía Amena). Luego me pasé a Vodafone, pero ese es otro tema y las configuraciones las tienes más abajo. :-)

En aquel momento, estaba conectando un ordenador portátil Highscreen a través de un teléfono móvil Amena GPRS Sony Ericsson T300 (un teléfono ya obsoleto, claro). El enlace entre ordenador y teléfono era, naturalmente, el puerto infrarrojos (nada de cables ni otras chorradas ;-). Te cuento cómo lo hice:

Naturalmente, 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 crea un fichero /etc/wvdial.conf 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

Ahora crea un fichero /etc/sysconfig/networking/profiles/default/resolv.conf que contenga esto (o cualquier servidor de nombres que quieras):

nameserver 213.143.33.8
nameserver 213.143.32.20

Ahora crea un script, por ejemplo /usr/local/bin/amenagprs (con permisos de lectura y ejecución para root) que contenga esto:

#!/bin/bash
/sbin/modprobe -a irda
/sbin/modprobe -a irtty
/sbin/modprobe -a ircomm
/sbin/modprobe -a 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
echo "Borrando ruta eth0 por defecto..."
/sbin/route del default eth0
echo "Marcando Amena GPRS..."
wvdial Amena
echo "Terminando..."
echo "Añadiendo ruta eth0..."
/sbin/route add default eth0

Bien, ahora coge el teléfono T300, vete a conexiones y activa el puerto de infrarrojos del teléfono. Pon el teléfono al lado del puerto infrarrojos del ordenador. Ahora ejecuta el script «amenagprs» que creaste antes (como root, tal y como está no vale como usuario). La respuesta debería parecerse a esta:

[root@lynette:~]# amenagprs
Borrando ruta eth0 por defecto...
Marcando Amena GPRS...
--> WvDial: Internet dialer version 1.53
--> Initializing modem.
--> Sending: ATZ +cgdcont=1,"IP","internet"
ATZ +cgdcont=1,"IP","internet"
OK
--> Modem initialized.
--> Sending: ATDT*99#
--> Waiting for carrier.
ATDT*99#
CONNECT
--> Carrier detected.  Starting PPP immediately.
--> Starting pppd at Wed Mar  3 02:09:23 2004
--> pid of pppd: 1935

Pues ya está. :-)

No cierres la ventana xterm. Abre otra y haz un ping a cualquier servidor. O haz un telnet a otra máquina. O abre el Firefox y entra en el google. Sí, estás en Internet… :-D

Si falla, asegúrate de que has compilado los módulos de kernel. Al menos irda, irtty, ircomm e ircomm-tty. Mal los vas a instalar con modprobe si no los has compilado, ¿verdad?. Para comprobar que funcionan los infrarrojos, ejecuta un comando «irdadump» en un xterm, si quieres. Al cabo de un par de segundos, deberías ver una salida tal que así:

02:52:16.937587 xid:cmd f8f293cb > ffffffff S=6 s=0 (14)
02:52:17.027582 xid:cmd f8f293cb > ffffffff S=6 s=1 (14)
02:52:17.107577 xid:rsp f8f293cb < 000055f2 S=6 s=1 T300 hint=9124…
02:52:17.117581 xid:cmd f8f293cb > ffffffff S=6 s=2 (14)
02:52:17.207585 xid:cmd f8f293cb > ffffffff S=6 s=3 (14)
02:52:17.297582 xid:cmd f8f293cb > ffffffff S=6 s=4 (14)
02:52:17.387582 xid:cmd f8f293cb > ffffffff S=6 s=5 (14)
02:52:17.477581 xid:cmd f8f293cb > ffffffff S=6 s=* lynette hint=0400…
02:52:19.937587 xid:cmd f8f293cb > ffffffff S=6 s=0 (14)
02:52:20.027581 xid:cmd f8f293cb > ffffffff S=6 s=1 (14)

Lo he puesto todo en plan macarronico, solo para que veas que funciona. Luego, si quieres, se podría adornar un poco usando algún script que permita el diálogo con el usuario en lugar de hacerlo todo de manera tan espartana. 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 "Dialing Amena GPRS..." >> /var/log/wvdial.log
zenity --question --text "Quieres conectar a Amena GPRS?"
status=$?
if [ "$status" = 0 ] ; then
  wvdial Amena &
  gxmessage -geometry 270x2 -iconic -buttons  \
    "Desconectar:1" "Amena 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
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. ;-)

Si pulsamos en el icono que activa este script, saldrá un cuadro de diálogo que nos pregunta si queremos conectarnos a Amena GPRS. Si pulsamos en el botón «Aceptar», nuestro Linux se conectará al GPRS del móvil Amena y aparecerá, en el panel, 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 «Estás conectado a Amena…», con un botón que dice «Desconectar». Cuando lo pulsemos, el ordenador colgará la conexión con el GPRS. Muy útil y práctico :-).

Quisiera agradecer esta configuración al «HOWTO linux & Sony Ericsson T300 mobile phone», de Todor Tanevski. Él no usaba Amena, claro, sino Mobitel, una compañía que no existe en España. Pero sus instrucciones son un ejemplo de cómo deben ser: claras, sencillas y concisas. Puro A, B y C.

Pero esto, por sí solo, no sirve de nada. Quisiera darle las gracias también al magnífico servicio de atención al cliente de Amena, el famoso «470», y a su Grupo Técnico. No dan información sobre Linux, pero saben que existe y que es demasiado grande para darle soporte (Caramba, al fin y al cabo, son un servicio al cliente de telefonía móvil, no de informática). Pero sí me han dado abundante y precisa información sobre la configuración en Windows 2000. Y eso es lo que me ha permitido completar los agujeros de Todor Tanevski y levantar la red para el T300, usando Amena GPRS y los puertos infrarrojos.

Por cierto, si usas Windows 2000 es inútil que intentes usar el T300: aunque parezca que sí, Windows no reconocerá el teléfonocomo módem hasta que instales el Service Pack 2 o superior. También me lo dijeron ellos, sí. ;-)