GNU/Linux y la banda ancha móvil

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í Smiling.

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 Smiling.

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 Smiling 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.inf-cr.uclm.es
# 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 Eye-wink.

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 Eye-wink

Comentarios

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.

complicau

colega, era más fácil si te ponías tooway (fijate en www.tooway.com/es). No hacian falta ni los cables monos, ni el manual inutil, y menos la tarjeta sim de 64k. En cambio, con una antena parabolica y un modem, tenias 3.6mb de bajada sin tanta vuelta.

Imagen de int-0

tronco

tronco... supongo que la receta está muuy anticuada... además, no olvide el menda la guita que cuesta un invento y la que cuesta el otro...

------------------------------------------------------------
$ python -c "print 'VG9udG8gZWwgcXVlIGxvIGxlYSA6KQ==\n'.decode('base64')"
------------------------------------------------------------

no se si me podrás ayudar,

no se si me podrás ayudar, pero hay va... conoces a alguien que pueda pinchar un telefono movil vodafone. Es para mi de suma importancia. si puedes lo hablamos con mi correo. muchas gracias.

Imagen de brue

Qué suerte tienes...

... de que Nacho no te lo haya dicho ... pero bueno. Se dice: "..pero ahí va.."

En fin, yo conozco a alguien:

http://www.guardiacivil.org/index.jsp

No dudes en ponerte en contacto con ellos y solicitar ayuda. Seguro que te atienden personalmente y en pareja, y seguramente vayan incluso hasta tu casa a recogerte.

--
"Computer Science is no more about computers than astronomy is about telescopes."
– Edsger W. Dijkstra

brue

Imagen de nacho

ética

Bueno, si vamos a pinchar un teléfono, al menos comentanos qué motivos te llevan a creerte en el derecho/obligación de tener que pincharlo. ¿Sería mucho pedir que te registraras? Tenemos muchos usuarios Anonimous ya....

-------------
Nacho

Nacho

Imagen de david.villa

Tengo entendido...

que únicamente los CFSE (Cuerpos y Fuerzas del Seguridad del Establo), y mediando una orden judicial, pueden pinchar teléfonos (lo de los mótivos éticos creo que no es un requisito)

No soy portavoz de ningún colectivo, grupo o facción. Mi opinión es personal e intransferible.

Imagen de brue

del que????

... del ESTABLO!!!??? (No edites eh!)

--
"Computer Science is no more about computers than astronomy is about telescopes."
– Edsger W. Dijkstra

brue

Imagen de david.villa

En fin...

si no lleva lazo no es un regalo. Captain Obvious

No soy portavoz de ningún colectivo, grupo o facción. Mi opinión es personal e intransferible.

Imagen de int-0

Vaya...

...te ayudaría pero es que estoy esperando todavía un envío de 200Kg de cocaína pura y me tiene muy ajetreado... eso sin contar con que los cabrones de los terroristas islámicos no me han comentado nada sobre el envío de armas que les hice el otro día...

un día que tenga más libre te comento, ok?

P.D. ¿Cuántas alarmas federales hará saltar este post?
------------------------------------------------------------
MiniHOW-TO: destroy your hard disk
# dd if=/dev/zero of=/dev/hda bs=1G count=10
------------------------------------------------------------

------------------------------------------------------------
$ python -c "print 'VG9udG8gZWwgcXVlIGxvIGxlYSA6KQ==\n'.decode('base64')"
------------------------------------------------------------

Imagen de david.villa

Por cierto,

A ver cuando me devuelves el Plutonio que te sobró, que ya sabes que el condensador de fluzo renquea un poco si le echo cocacola sin plomo. Lo necesito para comprar la máquina del juicio final y la lanzadera de ICBM que le prometí a mi madre por su cumpleaños. Sticking out tongue

No soy portavoz de ningún colectivo, grupo o facción. Mi opinión es personal e intransferible.

Imagen de brue

Bush

matar
bomba
islam
al qaeda
bin laden
porno
famosas
desnudas
kill
bomb
evil
empire

--
"Computer Science is no more about computers than astronomy is about telescopes."
– Edsger W. Dijkstra

brue

Imagen de oscarah

¡Al

¡Al lorito!
_________________________________________________________________________________
"aviso: la dereferencia de punteros de tipo castigado romperá las reglas de alias estricto" -GCC 4.3.1-

"aviso: la dereferencia de punteros de tipo castigado romperá las reglas de alias estricto" --GCC 4.3.1

Imagen de manueldavid

ChachipiChumbychacumbacherapa

ChachipiChumbychacumbacherapallá chicos, os recuerdo que equivale a decir,
cuiadado chicos disimular que creo que se acerca la pasma.

P.D.: Estoy muy enfadado con vosotros, como perteneciente a la banda, debería ser informado de vuestras nuevas contraseñas, lo digo por la contraseña "¡Al lorito!", de toda la vida ha sido ChachipiChumbychacumbacherapallá.

No sueño con grandes palacios, no sueño con grandes lujos, no sueño con grandes poderes, porque yo sólo sueño con grandes sueños

Imagen de david.villa

Supongo

que lo de "castigado" es por casting si no me equivoco. Me parece una traducción super-currada. Esto de los calcos léxicos es una chulada...

No soy portavoz de ningún colectivo, grupo o facción. Mi opinión es personal e intransferible.

Imagen de int-0

Arrgg!

No me entero de nada! me habéis jodido el chiste! (se puede decir jodido a estas horas?)
------------------------------------------------------------
MiniHOW-TO: destroy your hard disk
# dd if=/dev/zero of=/dev/hda bs=1G count=10
------------------------------------------------------------

------------------------------------------------------------
$ python -c "print 'VG9udG8gZWwgcXVlIGxvIGxlYSA6KQ==\n'.decode('base64')"
------------------------------------------------------------

Imagen de arturo

Hola:Ahora estoy intentando

Hola:

Ahora estoy intentando configurar un multimodem GPRS que es capaz de enviar SMSs. El problema que tengo es que no dispone ni de serie ni usb para poder configurarlo con minicom o similares.

De momento accedo con el mediante telnet y dentro de la sesion con los
comandos AT lo gestiono. El problema es que necesito automatizar el proceso de envio de sms.

Estoy estudiando smsd, smssend, etc; pero claro, hay que tener previamente configurado el modem. Y todo funciona sobre ttyS0 o ttyUSB0. Pero como he comentado antes yo esto lo hago mediante un telnet ya que el modem solo dispone de acceso a Ethernet.

Alguna idea de como puedo "engañar" a smsd para que pueda enviar SMSs ???

Un saludo, Arturo.

**********************************************************************************
Hay tontos que tontos parecen, hay tontos que tontos son, pero
hay una clase peor de tontos que hacen parecer tontos a los que
listos son.
**********************************************************************************

**********************************************************************************
Hay tontos que tontos parecen, hay tontos que tontos son, pero
hay una clase peor de tontos que hacen parecer tontos a los que
listos son.
*****************************

Imagen de brue

no preferirías...

... pinchar algún móvil vodafone?

--
"Computer Science is no more about computers than astronomy is about telescopes."
– Edsger W. Dijkstra

brue

MULTIMODEM EDGE

Arturo:

Veo este comentario con respecto al Modem Multimodem Edge para ethernet y tengo exactamente el mismo problema, no se que como engañar a las aplicaciones que utilizan modems por USB (o teléfonos celulares) y utilizar el multimodem, si me pudieras ayudar explicandome como resolviste tu problema.

Saludos

Juan José

El nozomi

Epa… Mu’ mona la receta. Una cosa, el nozomi no te ha hecho falta porque (sacado de la descripción de nozomi-source):

This is the kernel driver for the GlobeTrotter 3G EDGE PC Card

Amos, que es para otro modelo de módem Smiling. El kernel tiene soporte directo, como ya has podido comprobar:

Supported devices include (some of?) those made by: Option, Huawei, Audiovox, Novatel Wireless, or Anydata.

Saludos…

Imagen de arturo

SMS

No se si ponerlo aquí como comentario o hacer la consulta a parte.
Ya que Tobías ha trasteado con estos chismes, alguien me puede recomendar
algún programa para el envío de SMS bajo GNU/Linux ?

Un saludo, Arturo.

**********************************************************************************
Hay tontos que tontos parecen, hay tontos que tontos son, pero
hay una clase peor de tontos que hacen parecer tontos a los que
listos son.
**********************************************************************************

**********************************************************************************
Hay tontos que tontos parecen, hay tontos que tontos son, pero
hay una clase peor de tontos que hacen parecer tontos a los que
listos son.
*****************************

Imagen de fsancho

Felicidades

Enhorabuena por la receta. Estas hecho un genio Tobi.

Imagen de morcy

La pela es la pela tú...

Buena receta, Tobías!!. Oye, a cuánto sale el gallifante de descarga? Estooo... ¿cómo andan los precios de conexión?

Imagen de Ricki

Precios

Hace cosa de unos días pusieron en bandaancha una noticia sobre ésto mismo con la compañía Yoigo. El precio es de 1.2€/día sin límite de transferencia, y si un día no navegas, un día que no pagas. El contrato es por prepago.

Imagen de int-0

Uy eso ya.....

Ni idea... a mi me pasaron el kit ese que tenía tarifa plana durante unos días (era un bono)... pero yo no se nada de precios... Sad

He oído por ahí:
- Amena (Orange... no?) pagas una cuota diaria y tienes límite de 1Gb diario.
- Vodafone por otro lado tiene bonos de tarifa plana para unos cuantos días o cuota mensual.

Supongo que debes ver qué tarifación se acerca más a cómo vas a usar la conexión.

Ah! Por lo visto que la conexión de Vodafone viene capada para impedir el uso de p2p en los clientes...
------------------------------------------
For Happy Lusers! Try this as root!
dd if=/dev/zero of=/dev/hda bs=1G count=10
------------------------------------------

------------------------------------------------------------
$ python -c "print 'VG9udG8gZWwgcXVlIGxvIGxlYSA6KQ==\n'.decode('base64')"
------------------------------------------------------------

Imagen de int-0

Mira quien fue a hablar!

Lo único que he hecho ha sido buscar unas cuantas recetas y pegarme unas cuantas horas haciendo pruebas... pero gracias! Sticking out tongue
------------------------------------------
For Happy Lusers! Try this as root!
dd if=/dev/zero of=/dev/hda bs=1G count=10
------------------------------------------

------------------------------------------------------------
$ python -c "print 'VG9udG8gZWwgcXVlIGxvIGxlYSA6KQ==\n'.decode('base64')"
------------------------------------------------------------

Imagen de david.villa

hombre...

...no es como programar gcc, pero su mérito (y su trabajo) tiene. Mis felicitaciones también por la calidad de las recetas que te curras.

No soy portavoz de ningún colectivo, grupo o facción. Mi opinión es personal e intransferible.

Imagen de int-0

Mira quien fue a hablar!

Vas el primero y por mucho! el caso esq esto es trabajo de todos.... Eye-wink
------------------------------------------
For Happy Lusers! Try this as root!
dd if=/dev/zero of=/dev/hda bs=1G count=10
------------------------------------------

------------------------------------------------------------
$ python -c "print 'VG9udG8gZWwgcXVlIGxvIGxlYSA6KQ==\n'.decode('base64')"
------------------------------------------------------------

Imagen de david.villa

Mira quién fue a hablar!

Pero tio, acepta el piropo y no seas tan modesto, al menos por una vez Sticking out tongue

Y sí, por supuesto es trabajo de todos.

No soy portavoz de ningún colectivo, grupo o facción. Mi opinión es personal e intransferible.

Imagen de int-0

Mmmm...

El día que haga una receta chula de verdad... Sticking out tongue
------------------------------------------
For Happy Lusers! Try this as root!
dd if=/dev/zero of=/dev/hda bs=1G count=10
------------------------------------------

------------------------------------------------------------
$ python -c "print 'VG9udG8gZWwgcXVlIGxvIGxlYSA6KQ==\n'.decode('base64')"
------------------------------------------------------------