Archive for the 'Informatica' Category

Globus Provision (otra vez)

En un par de posts recientes he aludido al proyecto que he lanzado hace poco, y que acapara la mayoría de mi tiempo últimamente. Es mi nueva criaturita y, cuan orgulloso padre, no puedo parar de hablar sobre ella. En fin, que hoy ha salido publicado un post mío en el blog de Globus Online sobre el susodicho proyecto: Add Computation to the Mix: Deploying HPC Clusters on EC2 with Globus Provision. Está en inglés pero, señora, léaselo si quiere saber más sobre Globus Provision.

FacebookTwitterMeneameDeliciousCompartir/Guardar

Sugerencias para escribir documentación para software

Ayer publiqué un post en Google+ titulado “Fifteen Thoughts and Tips on Writing Software Documentation“, basado en mis experiencias escribiendo documentación a lo largo de los años (incluyendo el libro de Globus, que tuvo protagonismo en este blog hace varios años). Es un post un poco largo, así que no creo que llegue a traducirlo al Español; no obstante, como igual le interesa a más de uno, aquí va el enlace

Y como dije en el post anterior, no olvidéis que podéis seguirme en mi perfil público de Google+ (o, si preferís hacerlo a través de RSS, podéis suscribiros a este feed)

UChicago @ ACM ICPC 2011 World Finals

[This is one of those rare posts in English, since the main audience for this topic is English-speaking. — Este es uno de esos pocos posts en inglés, ya que está dirigido principalmente a gente de la universidad, y la mayoría no entiende español :-) ]

Like last year, and the year before that, the University of Chicago qualified for the World Finals of the ACM’s International Collegiate Programming Contest. This year, however, the road to the World Finals was bumpier than usual. Originally scheduled to take place in Egypt in late February, the World Finals had to be postponed (due to extraordinary circumstances), and were ultimately rescheduled to take place from May 28 to May 31 in Orlando, Florida.

Even though we did not get to see pyramids, going to the World Finals is still a unique and amazing experience, and we feel privileged to have been able to do it for three years in a row. The students on this year’s awesome team were Korei Klein (4th year undergrad, majoring in Computer Science and Mathematics), Denis Pankratov (2nd year PhD student in Computer Science), and Matthew Steffen (4th year undergrad, majoring in Computer Science and Mathematics).


[Official team portrait. Photograph by David Hill. L to R: Borja Sotomayor (coach), Korei Klein, Denis Pankratov, Matthew Steffen]

As you can see, in the spirit of UChicago quirkiness, our team continued last year’s tradition of wearing a dress shirt and tie in combination with the official contest t-shirt.

This year, our team also included Assistant Coach Louis Wasserman (3rd year undergrad, majoring in Mathematics). Louis was a contestant in the teams that made it to the World Finals in 2009 and 2010, but was ineligible to participate this year (students are only allowed to participate twice in the World Finals). So, instead of participating as a contestant, Louis provided valuable support to this year’s team by sharing his insights on the deeper mathematical and algorithmic mysteries of the ICPC problem sets. He also rocked the kilt at ICPC:

Like every year, the World Finals included a packed schedule of events, starting with the IBM TechTrek on Saturday, where we were treated to a day at SeaWorld. Not just that, the day started with a private showing of a new show in Shamu Stadium:

In the evenings, teams had a chance to relax in the IBM Chill Zone, with various games to play, including foosball:

There was also a lot of big bouncy balls that begged to be played with and thrown around. After much cavorting around, we were informed that the balls were meant to be used only to sit on. This made our team sad:

Most of Sunday was spent on orientation and on a practice contest in preparation for the big day on Monday. Here we can see our team hard at work on the practice problem set:

29-may-2011 08:46, Canon Canon PowerShot SD11, 2.8, 6.2mm, 0.05 sec, ISO 200
 
29-may-2011 08:48, Canon Canon PowerShot SD11, 2.8, 6.2mm, 0.125 sec, ISO 200
 

In between practices, we also had a chance to participate in the ICPC Podcast, where our team discussed its “Secret Sauce”.

Finally, on Monday, May 30, the actual World Finals contest took place. For those of you unfamiliar with how ICPC works, here’s a quick primer: a team of three students is given five hours to solve between eight and eleven programming problems. Each team has only one computer, so they must divide their time wisely between coding and thinking about problems. Solutions are submitted electronically to judges who use automatic judging tools that will run insanely exhaustive test cases through the solution; if the solution passes all the tests, it is accepted as a valid solution. Teams are ranked first on number of problems solved and then on the time it took them to solve each problem (with a 20 minute penalty for each incorrect submission).

During the contest, only the contestants are allowed on the contest floor. Everyone else, including the coaches, must observe the contest from a separate room, where we could see the live scoreboard and live commentary:

30-may-2011 07:05, Canon Canon PowerShot SD11, 2.8, 6.2mm, 0.167 sec, ISO 200
 

The scoreboard is frozen for the last hour of the contest and, once it ends, the final standings are revealed. The University of Chicago ultimately placed 79th out of 105 teams:

30-may-2011 12:21, Canon Canon PowerShot SD11, 4.0, 11.614mm, 0.125 sec, ISO 200
 

Our team solved two problems, C and K, and attempted a third one, E (you can see the problem set here). This was actually an improvement over last year, where our team only managed to solve one problem (the year before that, we didn’t manage to solve any). And to put this result into context, just slightly over half the teams solved four or more problems, and only seven US teams (out of 17) managed to solve three or more problems (we actually placed 9th out of the 17 US teams). You can see the full scoreboard here.

So, all in all, we were very happy with our performance, specially after spending so much time honing our World Finals strategy (based on our experiences in past World Finals) and training more than last year in preparation for the contest; it looks like all the extra effort has definitely paid off. So, after the long road to the World Finals, this is us, happy and relieved, at the end of the contest:

30-may-2011 12:51, Canon Canon PowerShot SD11, 2.8, 6.2mm, 0.167 sec, ISO 200
 

After the contest, we were treated to the IBM Celebration, the location of which is a tightly guarded secret every year. This year, however, it was an open secret that we would be going to Universal’s Islands of Adventure theme park, but we did not know what the excursion would involve exactly. As it turns out, IBM went all out and treated us to what (at least in my book) has been the best Celebration so far: they opened part of the park after hours just for us, and we were able to ride on some of the best rides without waiting in line. One part of the park that was open for us was The Wizarding World of Harry Potter. As a Harry Potter fan, I could hardly contain my excitement at walking around a recreation of Hogsmeade and riding on Harry Potter and the Forbidden Journey, a truly awesome dark ride through the world of Harry Potter.

So, like last year and the year before that, a great time was had by all. Now it’s time to start working on qualifying for the the 2012 World Finals in Warsaw, Poland!

Un trimestre de agárrate y no te menees

Jolin, casi tres meses sin escribir en el blog. Y yo que pensaba que después de la tesis por fin iban a acabar estos periodos de sequía en el blog. En fin, la razón es simplemente que este trimestre (el trimestre de invierno, de comienzos de enero a finales de marzo) he estado hasta las cejas de curro, sobre todo porque tenía que impartir dos asignaturas a la vez y, entre las dos asignaturas, tenía 70 estudiantes.

Ya, ya, parece poco, pero aquí en EEUU, donde las clases suelen tener 20 estudiantes, impartir dos asignaturas a la vez y tener tantos estudiantes es bastante raro. De hecho, ¿sabéis esa cara que ponemos cuando nos describen algo desagradable, como cuando a alguien se le sale medio hueso del brazo después de pegarse una leche monumental? Esa es la cara que me ponía casi todo el mundo en la universidad cuando me preguntaban “¿Qué tal este trimestre?” y les decía que estaba impartiendo dos asignaturas y tenía tantos alumnos.

Pero, ¿cómo es posible? Vamos, en las universidades Españolas estamos acostumbrados a impartir varias asignaturas al mismo tiempo con muchos más estudiantes, y no es para tanto (el año que estuve dando clase en Deusto tenía casi 100 estudiantes en una misma clase, y no me consumió ni una tercera parte de lo que me consumió una sola de las asignaturas que impartí este trimestre). Vale, pues imaginaros esto (sobre todo los que habéis dado clase a nivel universitario): imaginaros el mejor estudiante de vuestra clase. Motivado, con ganas de aprender, e inteligente. De los que van a por más que el aprobado fácil, pero tampoco quieren sacar nota y ya está. El tipo de estudiante que genuinamente quiere aprender.

Vale, pues ahora imaginaros setenta estudiantes como ese. Así es el aula americana (bueno, en todas las casas se cuecen habas, y también había algunos que iban a por el aprobado y poco más, pero eran ultra-minoría). Me imagino que los lectores docentes pensarán “¡Qué gozada! ¡Ojala esa fuese mi aula!”. Sí, efectivamente, me quejo de vicio, pero tener estudiantes tan motivados es un arma de doble filo: hay que preparar las clases mucho mejor (en EEUU los chavales no se cortan a la hora de hacer preguntas, y no solo para pedir clarificaciones, sino para preguntar casos hipotéticos que a ti igual ni se te habían ocurrido), hay que cubrir mucha más materia, más proyectos, etc. Vamos, requiere bastante trabajo día a día.

Para que os hagais una idea, estas son las dos asignaturas que impartí este trimestre (que, en nuestra universidad, son 10 semanas, con 3 horas por semana para cada asignatura).

  • Introducción a la Programación. En EEUU, como he explicado en otros posts, no escoges una licenciatura desde el primer día, y sueles escoger una especialización en tu segundo o tercer año (el “major” de tu licenciatura), y tienes muchas asignaturas que no tienen nada que ver con tu “major”. Esta asignatura de introducción a la programación era para “non-majors”: gente que no se va a especializar en informática, pero quiere aprender programación (o tiene que aprender, porque la asignatura también sirve para cumplir ciertos requisitos de la carrera).

    Prácticamente todos los estudiantes empezaron desde cero (era su primer contacto con la programación) y, en diez semanas, vimos C/C++, Orientación a Objetos, Python, XML, y SQL. De nuevo, ojo al dato: son “no-informáticos” y, al final del trimestre, algunos de ellos alcanzaron un nivel que mucha gente no alcanza hasta su segundo o tercer año de carrera en España. Canela fina, señora.

  • Sistemas Operativos. Esta asignatura era para “majors” de informática. Vamos, estudiantes que ya saben programar, etc. ¿Y que hacen los estudiantes en esta asignatura? Implementan un kernel para arquitecturas x86. Y esta no es una especie de asignatura-proyecto que realizan después de aprender sobre sistemas operativos en otras asignaturas. Es la primera y única asignatura de Sistemas Operativos que ven en la carrera, e implementan un kernel a la vez que aprenden por primera vez sobre conceptos fundamentales de sistemas operativos. Y lo hacen en diez semanas. Cágate, lorito.

    Vale, vale, no lo implementan completamente desde cero. Partimos de la base de un kernel didáctico llamado Pintos, pero los estudiantes todavía tienen que implementar un planificador de procesos con prioridades, las llamadas de sistema, un gestor de memoria virtual, y un sistema de ficheros. Vamos, similar a la asignatura de sistemas operativos que yo mismo tuve hace seis años aquí en Chicago. En Deusto tuve tres asignaturas de sistemas operativos y pensaba que entendía como funcionaba un sistema operativo pero, cuando tuve que implementar un kernel yo mismo, lo entendí a un nivel mucho más profundo.

    La asignatura de sistemas operativos, en concreto, es un buen ejemplo de por qué las asignaturas aquí, incluso con un número reducido de estudiante, requieren mucho más tiempo. Impartir una asignatura donde treinta y pico estudiantes están peleándose con la implementación de un kernel, y te van a hacer muchas preguntas (porque si no entienden algo, entonces no van a poder implementarlo), requiere mucho más tiempo y preparación que una asignatura “clásica” donde simplemente vas a clase 2-3 días a la semana, largas una chapa sobre un semaforo nosequé, una página de memoria virtual tralará, que la abuela fuma en pipa, etc. y al estudiante no se le exige una aplicación inmediata de esos conocimientos (y, a su vez, el profesor no tiene que estar tan al pie del cañón).

Y eso no es lo único que ha pasado este trimestre. Al igual que el año pasado, y hace dos años, nos hemos vuelto a clasificar para ICPC, el “mundial de programación”. Bueno, de hecho, nos clasificamos en Noviembre y se me pasó escribir un post, pero este trimestre es cuando hemos empezado los entrenamientos. Originalmente, el mundial iba a tener lugar a comienzos de marzo en Egipto y, como os podréis imaginar, tuvieron que posponer el evento. Ahora va a tener lugar en Orlando (Florida) en Mayo. Es mucho más cómodo que tener que ir hasta Egipto, pero la verdad es que ir a DisneyWorld va a saber a poco cuando nos habíamos hecho a la idea de ver pirámides :-/

Ah, y en Globus nos han vuelto a admitir como organización mentora en Google Summer of Code.

Me parece que no me dejo nada en el tintero. El próximo trimestre (otras diez semanas a partir de este lunes) sólo voy a impartir una asignatura, Redes, donde, entre otras cosas, los estudiantes van a implementar un router. En fin, espero que no haya otra sequía blogueril de tres meses, que se supone que andaré menos liado este trimestre (pero eso lo he dicho muchas otras veces, así que quien sabe…).

Simyo + Alcatel X060 + Ubuntu 9.04

ACTUALIZACIÓN (03/06/10): Como mucha gente se ha dado cuenta, estas instrucciones no funcionan con versiones posteriores de Ubuntu. Recomiendo que le echeis un vistazo a este tutorial actualizado de Fel.

ACTUALIZACIÓN (01/08/09): Un lector ha contribuido un fichero DEB que automatiza todo el proceso de instalación descrito en este post (con varias mejoras). Echadle un vistazo a este post actualizado.

ACTUALIZACIÓN (17/07/09): He añadido un enlace a unos paquetes de Ubuntu con un kernel y un NetworkManager parcheados que permiten que el modem funcione con NetworkManager

ACTUALIZACIÓN (07/07/09): He añadido un enlace a un blog donde explican como conseguir que el modem funcione con NetworkManager.

[Después de un mes sin actualizar el blog, ya siento que mi primera actualización sea tan impersonal, pero es que es algo que me han pedido ya un par de personas, y que puede resultar de utilidad a muchas otras. Os prometo actualizaciones más interesantes pronto, incluyendo una sobre un reciente viaje a Seúl]

Por motivos que ya contaré en otra ocasión, este verano he acabado en Madrid en un piso sin Internet y, como me vuelvo a Chicago a finales de septiembre, contratar una linea ADSL o similar no me merece la pena (aunque en el piso tampoco existiría esa posibilidad; es una historia muy larga :-D ) En la inmobiliaria donde me buscaron el piso me dijeron que varios de sus clientes que vienen a Madrid unos pocos meses suelen contratar acceso a Internet con una operadora móvil (osease, con un modem 3G enchufado a portátil), y me sugirieron que explorase esa opción. Tras comparar varias opciones, y preguntar a gente que sabe mejor que yo como está el patio del acceso a Internet en España, me decanté por Simyo: buenas tarifas, sin permanencia (fundamental para mi), un aura general de buen rollo, y (según gente que lo han utilizado) una conexión buena y fiable.

El modem que proporcionan es un Alcatel X060 que, según la web de Alcatel, es compatible con Linux (el modem también aparece mencionado en algunos sitios como X060S; que yo sepa, son el mismo modem). Pero claro, del dicho al hecho hay todo un trecho, y hay que pelearse un poco para conseguir que funcione bajo Linux. Aunque los pasos que hay que seguir son bastante similares a los que hay que seguir con otros modems 3G, no son idénticos (principalmente porque el Alcatel X060 es relativamente nuevo). Por lo tanto, por si le puede resultar útil a alguien más, en este post cuento qué pasos hay que seguir para instalar y utilizar el modem bajo Ubuntu 9.04 (muchos de estos pasos deberían servir también para otras distribuciones).

Paso 1: Conseguir que Linux reconozca el modem

El Alcatel X060 es un periferico USB “multi-dispositivo”: incluye un pequeño disco USB y luego el propio modem. El problema es que, si lo enchufamos bajo Linux, pillará por defecto el disco USB (que contiene programas de instalación para Windows). Así que hay que conseguir que Linux reconozca que lo que acabamos de enchufar es un modem, y no un disco. Esto lo podemos hacer con el programa USB_ModeSwitch. No está incluido en los repositorios de Ubuntu, pero es muy sencillo de instalar. Aunque en la web proporcionan un binario, al parecer es para arquitecturas de 32 bits, con lo cual puede ser necesario compilar las fuentes (esto también es muy sencillo, siguiendo las instrucciones en la web de USB_ModeSwitch; eso sí, necesitaremos las cabeceras de libusb, que en Ubuntu se encuentran en el paquete libusb-dev).

Por si acaso, aquí va la secuencia completa para instalar USB_ModeSwitch (ojo, hay que hacerlo todo como root):

apt-get install libusb-dev libusb-0.1-4
wget http://www.draisberghof.de/usb_modeswitch/usb_modeswitch-1.0.2.tar.bz2
tar xjvf usb_modeswitch-1.0.2.tar.bz2 
cd usb_modeswitch-1.0.2
make
make install

Tras hacer esto, el programa usb_modeswitch estará instalado en /usr/sbin y el fichero de configuración usb_modeswitch.conf en /etc. Eso sí, para que USB_ModeSwitch pueda cambiar el dispositivo al “modo modem”, necesita una serie de números mágicos; si mirais el fichero de configuración, vereis que es una colección de números mágicos para diversos dispositivos USB. Desafortunadamente, los números mágicos del Alcatel X060 no están incluidos en el fichero de configuración de USB_ModeSwitch pero, afortunadamente, resulta que son exactamente los mismos que el Alcatel X200, que sí está incluido. Por lo tanto, lo único que hay que hacer es reemplazar el fichero de configuración con lo siguiente (o descomentar las lineas del Alcatel X200):

########################################################
# Alcatel X060

DefaultVendor=  0x1bbb
DefaultProduct= 0xf000

TargetVendor=   0x1bbb
TargetProduct=  0x0000

# only for reference
# MessageEndpoint=0x01

MessageContent="55534243123456788000000080000606f50402527000000000000000000000"
########################################################

Vale, vamos a verificar si todo esto funciona (para asegurarse de que funciona, conviene seguir el syslog en una ventana aparte utilizando tail -f /var/log/syslog). Tras enchufar el modem, Ubuntu lo reconocerá como un disco USB (curiosamente, aparece como un CD-ROM, porque el disco está formateado como un CD autorun). Una vez hecho esto, hay que ejecutar, como root, el comando usb_modeswitch (sin argumentos). Al hacer esto, la unidad montada de CD-ROM debería desaparecer. Para asegurarnos de que, además, hemos pasado al dispositivo modem, en el syslog deberíamos ver lo siguiente:

Jul  3 21:32:46 tintin kernel: [122120.095868] usb 1-4: USB disconnect, address 22
Jul  3 21:32:46 tintin kernel: [122120.440057] usb 1-4: new high speed USB device using ehci_hcd and address 23
Jul  3 21:32:46 tintin kernel: [122120.579384] usb 1-4: configuration #1 chosen from 1 choice
Jul  3 21:32:46 tintin kernel: [122120.599483] scsi15 : SCSI emulation for USB Mass Storage devices
Jul  3 21:32:46 tintin kernel: [122120.601398] usb-storage: device found at 23
Jul  3 21:32:46 tintin kernel: [122120.601403] usb-storage: waiting for device to settle before scanning
Jul  3 21:32:51 tintin kernel: [122125.613624] usb-storage: device scan complete
Jul  3 21:32:51 tintin kernel: [122125.614509] scsi 15:0:0:0: Direct-Access     USBModem MMC Storage      2.31 PQ: 0 ANSI: 2
Jul  3 21:32:51 tintin kernel: [122125.618502] sd 15:0:0:0: [sdb] Attached SCSI removable disk
Jul  3 21:32:51 tintin kernel: [122125.618624] sd 15:0:0:0: Attached scsi generic sg2 type 0

No os preocupeis por las referencias a usb-storage y a “removable disk”. Lo importante es la linea con “USBModem MMC Storage”. Si aparece “Direct-Access” significa que hemos pasado al dispositivo modem; si aparece “CD-ROM” significa que todavía está en modo CD-ROM.

Ahora que el modem es, efectivamente, un modem, hay que cargar el driver apropiado. Para esto basta con hacer lo siguiente:

modprobe usbserial vendor=0x1bbb product=0x0000

Y en syslog debería aparecer lo siguiente:

Jul  3 21:39:01 tintin kernel: [122495.601474] usbcore: registered new interface driver usbserial
Jul  3 21:39:01 tintin kernel: [122495.601506] USB Serial support registered for generic
Jul  3 21:39:01 tintin kernel: [122495.601547] usbserial_generic 1-4:1.0: generic converter detected
Jul  3 21:39:01 tintin kernel: [122495.601674] usb 1-4: generic converter now attached to ttyUSB0
Jul  3 21:39:01 tintin kernel: [122495.601691] usbserial_generic 1-4:1.1: generic converter detected
Jul  3 21:39:01 tintin kernel: [122495.601782] usb 1-4: generic converter now attached to ttyUSB1
Jul  3 21:39:01 tintin kernel: [122495.601798] usbserial_generic 1-4:1.3: generic converter detected
Jul  3 21:39:01 tintin kernel: [122495.601882] usb 1-4: generic converter now attached to ttyUSB2
Jul  3 21:39:01 tintin kernel: [122495.601909] usbcore: registered new interface driver usbserial_generic
Jul  3 21:39:01 tintin kernel: [122495.601915] usbserial: USB Serial Driver core

Nota: Algunos lectores han observado que tener el Network Manager de Ubuntu activo mientras se realizan estos pasos puede interferir con la detección del modem. Yo simplemente lo tengo desactivado todo el tiempo, pero un lector ha comentado que, si no veis las lineas que aparecen indicadas arriba en el syslog, basta con desactivar el wireless en el Network Manager (esta opción está disponible si haceis click-derecho sobre el icono del Network Manager en el panel de GNOME)

Como podéis ver, ha detectado que hay un dispositivo USB con tres puertos serie (ttyUSB0, ttyUSB1, ttyUSB2). Uno de estos puertos es el que utilizaremos para conectarnos a Simyo. De hecho, para hacer una comprobación rapida, podemos conectarnos a pelo al modem utilizando screen

screen /dev/ttyUSB2

Cuando salga un prompt, escribir simplemente esto:

ATI

El modem debería responder con lo siguiente:

Manufacturer: TCT Mobile International Limited
Model: HSPA Data Card
Revision: C1111000
IMEI: 352079030611766
+GCAP: +CGSM,+DS,+ES

OK

Eso sí, ejecutar el usb_modeswitch y el modprobe cada vez que enchufamos el modem puede ser un coñazo. Evidentemente, hay una manera de automatizarlo. En el directorio /etc/udev/rules.d/ cread un fichero llamado 45-alcatelx060.rules con el siguiente contenido:

SUBSYSTEM=="usb", SYSFS{idProduct}=="f000", SYSFS{idVendor}=="1bbb", RUN+="/usr/sbin/usb_modeswitch"
SUBSYSTEM=="usb", SYSFS{idProduct}=="0000", SYSFS{idVendor}=="1bbb", RUN+="/sbin/modprobe usbserial vendor=0x1bbb product=0x0000"

Ahora, cada vez que enchufemos el modem, pasará directamente a modo “modem” en lugar de modo “CD-ROM”.

Paso 2: Conectarse a la red de Simyo con el modem

Bueno, ya ha pasado lo peor. Ahora que podemos conectarnos al modem, conseguir que se conecte a Simyo es relativamente facil. Para ello, vamos a utilizar el programa wvdial (si no está instalado, basta con hacer apt-get install wvdial). Creamos un fichero llamado wvdial.conf en /etc con los siguientes contenidos:

[Dialer Defaults]
Init1 = ATZ+CPIN=1234
Init2 = ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0
Init3 = AT+CGDCONT=1,"IP","gprs-service.com"
Modem = /dev/ttyUSB2
Check Def Route = on
Phone = *99#
Username = cualquiera
Password = cualquiera
Modem Type = Analog Modem
Stupid Mode = 1
Baud = 460800
New PPPD = yes
ISDN = 0

Importante #1: en la linea “Init1 = ATZ+CPIN=1234” teneis que reemplazar 1234 por el PIN de vuestra tarjeta SIM. Casi todo el tiempo que me pasé peleandome con el modem fue porque toda la documentación que lei online estaba escrita, aparentemente, bajo el supuesto de que la tarjeta no está protegida por PIN (y casi todos los comandos que le mandaba al modem fallaban inexplicablemente, ya que no distingue entre un error general y un error causado por un PIN incorrecto). Yo acabé quitandole el PIN a la tarjeta y, de hecho, algunos usuarios han mencionado que el modem se comporta de manera impredecible si se mantiene el PIN, con lo cual para evitar posibles quebraderos de cabeza, os recomiendo que simplemente le quitéis el PIN a la tarjeta. Basta con conectarse al modem utilizando screen (tal y como describí arriba) y escribir el siguiente comando (de nuevo, reemplazando 1234 por nuestro PIN):

AT+CLCK="SC",0,"1234"

Si haceis esto, entonces hay que cambiar “Init1 = ATZ+CPIN=1234” por “Init1 = ATZ” en el fichero de configuración.

Importante #2: Si utilizais algún otro programa para conectaros, hay que utilizar el dispositivo /dev/ttyUSB2 para comunicarse con el modem. De lo contrario, el modem o no responderá a comandos o, en el caso más incordiante, responderá a comandos pero se quedará colgado al intentar conectarse a Internet.

En fin, ya estamos listos para conectarnos! Basta con ejecutar wvdial como root. Deberíamos ver lo siguiente:

--> WvDial: Internet dialer version 1.60
--> Cannot get information for serial port.
--> Initializing modem.
--> Sending: ATZ
ATZ
OK
--> Sending: ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0
ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0
OK
--> Sending: AT+CGDCONT=1,"IP","gprs-service.com"
AT+CGDCONT=1,"IP","gprs-service.com"
OK
--> Modem initialized.
--> Sending: ATDT*99#
--> Waiting for carrier.
ATDT*99#
CONNECT
--> Carrier detected.  Starting PPP immediately.
--> Starting pppd at Sun Jul  5 10:32:12 2009
--> Pid of pppd: 31457
--> Using interface ppp0
--> pppd: X
--> � �[07]� �
--> � 
--> pppd: X
--> � �[07]� �
--> � 
--> pppd: X
--> � �[07]� �
--> � 
--> pppd: X
--> � �[07]� �
--> � 
--> pppd: X
--> � �[07]� �
--> � 
--> pppd: X
--> � �[07]� �
--> � 
--> local  IP address 95.214.13.54
--> pppd: X
--> � �[07]� �
--> � 
--> remote IP address 10.64.64.64
--> pppd: X
--> � �[07]� �
--> � 
--> primary   DNS address 195.230.105.134
--> pppd: X
--> � �[07]� �
--> � 
--> secondary DNS address 195.230.105.135
--> pppd: X
--> � �[07]� �
--> � 

Si llegamos al punto en el que recibimos una dirección IP y las direcciones de los servidores DNS, entonces es que nos hemos conectado correctamente. Ahora, a disfrutar de nuestra conexión 3G con Simyo (que a mi, de momento, me va bastante bien).

Paso 3: Conectarse a la red de Simyo con el modem… con solo un click

Aunque ya podemos conectarnos, estaría mejor si pudiesemos conectarnos (1) desde nuestra cuenta de usuario, no con root, y (2) con un solo click. Desafortunadamente, parece ser que el Network Manager de Ubuntu no reconoce el Alcatel X060. Sin embargo, en este blog (ver comentario #4, en catalán) explican como conseguir que el Network Manager lo reconozca. Eso sí, requiere modificar y recompilar un módulo del kernel (el modulo “option”), con lo cual puede resultar una opción un poco engorrosa para algunos. Una opción más sencilla (aunque posiblemente un poco engorrosa para el usuario no-experto) es instalar estos paquetes que incluyen un kernel y un Network Manager parcheados. Con un poco de suerte, estos parches se incorporarán a las próximas versiones de Ubuntu.

Por lo tanto, de momento vamos a utilizar el programa gnome-ppp, que es un frontend gráfico para el wvdial (si no está instalado, basta con hacer apt-get install gnome-ppp). Antes de nada, tenemos que darle permiso a nuestro usuario para que pueda acceder a los puertos serie y pueda arrancar el servidor PPP. Para ellos, tenemos que añadirlo a los grupos dip y dialout, ejecutando lo siguiente como root:

adduser borja dialout
adduser borja dip

Si estais en una sesión de GNOME, tendreis que reiniciar la sesión para que estos cambios tengan efecto.

Ahora ejecutamos gnome-ppp, hacemos click en “Setup”, y cambiamos las siguientes opciones:

  • En la pestaña Modem:
    • Device: /dev/ttyUSB2
    • Type: En principio, se puede poner USB Modem o Analog Modem. A mi me funciona con ambos.
    • Speed: En principio, da igual. A mi me funciona con 460800.
    • Init Strings:
      • Init 2: ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0
      • Init 3: AT+CGDCONT=1,"IP","gprs-service.com"
    • El resto lo dejamos tal cual está.
  • Networking: Lo dejamos tal cual está.
  • Options — Desktop Integration: Al gusto del consumidor.
  • Options — Connection: Activar la opción “Ignore terminal strings (stupid mode)”.

En la pantalla principal de gnome-ppp, podemos poner cualquier nombre de usuario y contraseña, y ponemos el número de teléfono *99#. Hacemos click en Connect, y ya está :-) Yo lo tengo configurado para que añada un icono en la barra de notificaciones; al hacer click sobre el icono, podemos desconectarnos o ver detalles de la conexión, que incluye el número de KB transferidos/recibidos (algo que viene bastante bien cuando el ancho de banda es limitado).