Recientemente ha caído en mis manos un juguetito muy chulo: un kit de conexión a banda ancha móvil... me he pasado unas cuantas horas pegándome con un sinfín de recetas y módulos hasta conseguir la dichosa conexión... que va freshhquísima... aquí viene un resumen de mis periplos...

Ingredientes

El kit con el que me he pegado es el Vodafone HSPDA, con él nos podemos conectar indistintamente a redes GPRS o UMTS según la calidad de la cobertura que tengamos en nuestra zona y tal. El kit viene con los siguientes elementos:
  • Tarjeta SIM de 64k
  • Manuales completamente inútiles
  • Unos cablecitos USB muy monos
  • Un módem 3.5G HUAWEI mod.E220 (muy bonico)
Y en mi PC:
  • Debian (no podía ser de otro modo)
  • Linux 2.6.18-1
¿Tenéis todo? Pues empecemos...

La tarjeta SIM

Aquí sucede lo siguiente: podemos usar la SIM con su PIN o sin él, se supone que ponemos el PIN para que en caso de pérdida nadie lo use y tal, pero el PIN tendremos que almacenarlo en un archivo de texto plano a la hora de conectar con lo que la seguridad del PIN no servirá de mucho. Yo lo tengo desactivado, para desactivarlo podemos usar comandos AT del módem y tal... o podemos pinchar la SIM en un móvil y desactivarlo ahí :-). De todas formas explicaré más adelante como se supone que se debe hacer si tenemos PIN activo.

El módem

Pues nada, cogemos el cable más corto (he leído que con otros cables puede no funcionar) y conectamos el módem... esperamos unos segundos a que el linux lo detecte y taaachán! tenemos detectado un.... ¿¿¡¡Unidad CD-ROM externa!!?? vaaaya... lo montamos y... ¡los drivers y kits de conexión para Hassefroch XP! que bien... lástima que no podamos borrarlo y usarlo de pen-drive en fins... ignoramos esto y desmontamos la unidad, etc. y hacemos lo siguiente:
# modprobe usbserial vendor=0x12d1 product=0x1003
Esto cargará el módulo para adaptadores serie USB, pero hay que indicar explícitamente el identificador el módem. Para el modelo que indiqué son esos, pero podéis verificarlo de la siguinte forma:
$ cat /proc/bus/usb/devices
Con lo que obtenemos (entre otras cosas):
T:  Bus=02 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#=  5 Spd=12  MxCh= 0
D:  Ver= 1.10 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
P:  Vendor=12d1 ProdID=1003 Rev= 0.00
S:  Manufacturer=HUAWEI Technologies
S:  Product=HUAWEI Mobile
C:* #Ifs= 1 Cfg#= 1 Atr=a0 MxPwr=500mA
I:  If#= 0 Alt= 0 #EPs= 2 Cls=08(stor.) Sub=06 Prot=50 Driver=usb-storage
E:  Ad=83(I) Atr=02(Bulk) MxPS=  64 Ivl=0ms
E:  Ad=04(O) Atr=02(Bulk) MxPS=  64 Ivl=0ms
Y ahí tenemos el Vendor y ProdID que buscábamos :-). Ahora debemos crear los dispositivos con los que manejar el módem (si no se ha hecho automáticamente):
# mknod /dev/ttyUSB0 c 188 0
# mknod /dev/ttyUSB1 c 188 1
# mknod /dev/ttyUSB2 c 188 2
Ale, ya tenemos acceso al módem :-) ahora sólo nos queda hablar con él...

Configurar la conexión

Bueno, ahora debemos instalar los siguientes programas:
# apt-get install wvdial
Yo para probar el modem usé:
# apt-get install gnome-ppp minicom
Con minicom podemos mandar comandillos y gnome-ppp busca y detecta módems. Si hicimos todos los pasos anteriores y no detectamos módem, probad a enchufar y desenchufar el USB y ver si con dmesg por fin aparece algo como:
usbserial_generic 2-1:1.0: generic converter detected
usb 2-1: generic converter now attached to ttyUSB0
usbserial_generic 2-1:1.1: generic converter detected
usb 2-1: generic converter now attached to ttyUSB1
Si aparece, gnome-ppp ya debería detectar un módem, en caso contrario... buscad por los enlaces porque hay algo que está fallando... Ahora configuramos el marcado, esto lo hacemos en /etc/wvdial.conf, y lo dejamos como sigue:
# wvdial for Vodacom Data. Created by Tazz_tux
# and adapted by Int-0 for http://crysol.org
# Version 1.0

# Change Log:
#
# Support only for Vodafone Mobile

[Dialer Defaults]

# Con este numero me funciona a mi:
Phone = *99***1#
# Este numero es el que se marca desde hassefroch XP
# si no os funciona con el anterior, probad este.
#Phone = *99#

Username = vodafone
Password = vodafone
Stupid Mode = 1
Dial Command = ATDT

# Si vuestra tarjeta tiene PIN, lo poneis aqui
[Dialer pin]
Init1 = AT+CPIN=1234

[Dialer vodafone]
Modem = /dev/ttyUSB0
Baud = 460800
Init2 = ATZ
Init3 = ATE0V1&D2&C1S0=0+IFC=2,2
ISDN = 0
Modem Type = Analog Modem

[Dialer internet]
# APN al que nos conectamos
Init5 = AT+CGDCONT=1,"IP","ac.vodafone.es";
Ya tenemos el archivo listo, si el módem funcionaba sólo nos queda ejecutar:
# wvdial vodafone internet
o también (para usar PIN):
# wvdial pin vodafone internet
...y ya está! estamos conectados por nuestra nueva interfaz ppp0, para finaliza la conexión sólo pulsad Ctrl+C y finalizáis la ejecución de wvdial.

Apéndice A: Comandos del módem útiles

Si configuráis minicom para que use la puerta serie /dev/ttyUSB0 podemos "hablar" con el módem y mandar comandillos, estos son unos cuantos útiles que he encontrado por ahí (ni que decir tiene que podéis usarlos en el archivo de configuración de wvdial). Ahora pondré un ejemplo de chat con el módem, en cursiva están las respuestas que debemos obtener y en negrita los comandos:
ATZ
OK
ATI
Manufacturer: huawei
Model: E220
Revision: 11.110.01.03.00
IMEI: 351827011164648
+GCAP: +CGSM,+DS,+ES

OK
AT+COPS?
+COPS: 0,0,"vodafone ES D",2

OK

at+cpin=xxxx
OK

at+csq
+CSQ: 22,99

OK
El comando AT+COPS? nos da información sobre la red en la que nos encontramos. Con at+csq obtenemos la calidad de la cobertura, cuanto mayor sea el número, mejor. El primer número (22 en el ejemplo) debe ser mayor de 12 para tener una señal aceptable. Los comandos para el manejo del PIN son: at+clck="sc",0,"1234" (donde "1234" es el PIN actual), con esto deshabilitamos el PIN. Con at+clck="sc",1,"1234" lo volvemos a habilitar. Si queréis saber más comandos: Comandos AT Hayes en wikipedia.

Apéndice B: Configurar modprobe

Como es un rollo todo eso del vendorId y tal podemos hacer más simple la carga del módulo de esta forma: creamos el archivo /etc/modprobe.d/huawei con el siguiente contenido:
# Huawei E220
alias huawei usbserial
options huawei vendor=0x12d1 product=0x1003
Y ahora con modprobe huawei tendremos el módem funcionando ;-).

Apéndice C: nozomi

Bueno, ¿qué es esto de nozomi?... es un modulito que se usa para las conexiones HSDPA y que no viene de serie en linux. Se supone que es necesario para hacer funcionar el invento... pero a mi no me ha hecho falta... de todas formas os digo como instalarlo por si a alguno le hace falta. El módulo no compila con 2.6.18 y no hay parche hasta la fecha (aunque el bug si está abierto). En Debian se supone que se podría hacer:
# m-a ai nozomi
Pero como ya os dije no compila, así que debéis descargaros los fuentes, parchearlos y compilarlos, descargadlo de http://www.insync.za.net/3g_docs/. Lo descomprimís (usad unp y listo) y ahora editáis nozomi.c y modificad lo siguiente: Comentad las líneas 972 a 987 (no os preocupéis, se trata de una comprobación que en los 2.6.18 ya no hay que hacerla, es automática):
/*     if (test_bit(TTY_DONT_FLIP, &tty->flags)) { */
/*         D6("TTY_DONT_FLIP set!! %d", index); */
/*         /\* Here we disable interrupt for that port and schedule *\/ */
/* /\* 		task. Task wakes up a little bit later and enables interrupt.. *\/ */
/*         port->tty_dont_flip = 1; */
/*         disable_transmit_dl(index, dc); */
/* #ifdef KERNEL_2_4 */
/*         schedule_task(&dc->tty_flip_queue); */
/* #endif */
/* #ifdef KERNEL_2_6 */
/*         if (!queue_work(dc->tty_flip_wq, &dc->tty_flip_wq_struct)) { */
/*             ERR("Call to queue_work() failed."); */
/*         } */
/* #endif */
/*         return 0; */
/*     } */
Y ahora modificad la línea 2183 que tiene lo siguiente:
td->flags                 = TTY_DRIVER_REAL_RAW | TTY_DRIVER_NO_DEVFS,
por esto:
td->flags                 = TTY_DRIVER_REAL_RAW | TTY_DRIVER_DYNAMIC_DEV,
Y ya os tiene que compilar, la instalación debéis hacerla a mano.

Enlaces de interés

...y la verdad que hay mucho más... sólo buscad en foros... Ale... disfrutad... para dudas y correciones ya sabéis ;-)


blog comments powered by Disqus