lunes, 17 de noviembre de 2008

Vodafone 3G en Linux

Cuando Vodafone anunció su oferta de ADSL, a mí se me hizo la boca agua... ahora tengo el ADSL con Orange y la línea con Telefónica, y por cabezonería y una cuestión de orgullo estoy sin identificador de llamadas (Telefónica, quién si no, cobra 0,50 euros + IVA al mes por tenerlo a clientes sin ADSL con ellos), y pagando una cuota mensual de 16 euros a mi compañía monopolista de Telecomunicaciones preferida. La forma de escaquearse de pagar eso y de tener Caller-ID es tener el ADSL y la línea con el mismo operador. Veamos mis opciones:

Seguir con Orange, y solicitar el cambio a "Todo en uno". Eso significaría tener el router Livebox y las llamadas de teléfono a través de la tecnología Voz Sobre IP (VoIP), lo que sé por compañeros y por los foros de ADSL que da muchos problemas y es como si no tuvieras teléfono: te llaman y comunicas o da error, cuando llamas no se conecta hasta el enésimo intento y cosas así. Lo arreglarán con el tiempo, pero así es la vida de momento. La única ventaja de esta opción es que podría conservar mi IP fija por 2 euros al mes.

Telefónica es la opción más cara, además de ser ellos con sus cosas, la velocidad más lenta que los demás, y ya he sido cliente y la saturación en horas punta yo la tenía garantizada casi por contrato, y mi experiencia con ellos no fue exenta de problemas, me torearon el alta entre las mesas de los comerciales y tardaron el doble de tiempo porque el señor se fue de vacaciones sin meter mis datos en el ordenador... pero habiendo metido los suficientes como para que sus compañeros no pudieran tomar el control y dejar que el alta continuara. Luego de forma periódica había un corte del ADSL que duraba uno o dos días, para que te dieras cuenta de lo que tenías y lo valoraras. Siempre se arreglaba solo y a los dos o tres días recibía la llamada de un técnico diciendo "acabo de recibir la avería ¿está ya arreglado?. A mí me hacía sentir maltratado. Son cosas que se diluyen con el tiempo y que puede que ya no funcionen así, pero a mí me han dejado huella.

Jazztel... ay, Jazztel. Intenté ser su cliente hace dos años, y fue desastroso. Su servicio de des-atención al cliente es casi perfecto: siempre estaba saturado, te dejaba en espera 1 minuto y después te cortaba la llamada "nuestros operadores siguen ocupados, vuelva a llamar más tarde". En los tres meses que estuve reclamando que me enviaran el router hice miles de llamadas y estuve al habla con operadores durante horas. Juraban y perjuraban que el router estaba enviado urgentísimo, y que me tenía que llegar al día siguiente, pero no llegaba. Cuando volvía a llamar para decirles "no ha llegado" me decían "ah, pero si es que tarda en llegar 5 días ¿quién dijo 48 horas?". Por supuesto a los 5 + 2 días seguía sin llegar, y el bucle infinito lo tuve que cortar porque la tomadura de pelo era absoluta. Para recochineo final, el router llegó tres días después de darme de baja y fue enviado DESPUÉS de darme de baja... (si lo quieren pueden venir a por él) no tengo palabras para una gestión tan desastrosa. Seguramente las cosas hayan cambiado, pero yo no voy a comprobarlo.

De ya.com no sé gran cosa, sólo lo que leo en los foros de ADSL, y es como todas, Voz sobre IP, más barata que Telefónica, IP fija a precio de platino con diamantes y con gente que se queja y gente que no.

Como soy cliente de Vodafone, más o menos ya conozco a la compañía. Tiene sus más y sus menos: un web con el que puedes gestionar cosas de tu contrato y factura, pero que es muy incómodo de usar, muy lento, mal estructurado, además de que ha sido muy dependiente de Windows y hasta hace poco con Linux no tiraba casi nada. Pero bueno, qué decir, de cualquier forma es mucho más avanzado que Telefonicaonline.com, por mucha pasta que Telefónica haya metido sigue siendo tan útil como un panfleto de los que reparten a la salida del metro, en el que no funciona ni la ayuda. En el portal de Vodafone puedes cambiarte la tarifa de precios con unos pocos clicks y sin hablar con nadie, que es bastante más que lo que puedes hacer con ningún otro operador, y que se agradece mucho cuando estás harto de darle tu DNI y número de teléfono a varios tipos que te lo van preguntando uno tras otro, para contarte una milonga que ya conoces y de la que sólo quieres que te la envuelvan para llevártela. En los años que llevo con ellos no he tenido ningún problema con mi teléfono, y siempre me han atendido muy rápido y muy bien en todas las consultas, contrataciones de promociones, cambios de móvil... Volviendo al tema, el ADSL de Vodafone es muy especial, lo podéis ver en mi comparativa de ADSL que hice para decidirme, así que no os voy a aburrir más. Lo fundamental es que es más barato que lo que tengo ahora (aunque un poco más caro que los operadores que no son Telefónica), incluye conexión 3G de backup y portable fuera de casa, además de que las llamadas del teléfono fijo van por GSM en vez de VoIP, que a pesar de ser teleco y tener gran confianza en Internet (IP es Internet Protocol), tengo muy poca confianza en las compañías de Telecomunicaciones españolas, se lo han ganado a pulso.

La contratación fue rápida, incluso no les tuve que dar mis datos por ser ya cliente, pero con un contratiempo que casi acaba en tragedia: los operadores no eran capaces de corregir un error en mi nombre de su base de datos, y la centralita estuvo saltando de operador en operador cuando me dejaban en espera y dicha espera se alargaba más de cierto tiempo (no sé si eso es un bug o una feature)... en todas partes cuecen habas, que diría mi abuela... bueno, al final tuve que colgar (o no iba a trabajar, ejem) y al día siguiente tardaron 1 minuto en solucionarlo... todo estaba en marcha pues.

Muy rápidamente a los dos o tres días tenía en casa un paquete con el router ADSL. La gestión del traspaso de línea Telefónica-Vodafone y del ADSL Orange-Vodafone tardarán más tiempo (unas tres semanas estimo), pero desde el primer día puedes tener conexión con un módem USB 3G que incluye, sin coste mientras no tengas ADSL, y que es "portable" fuera de casa a un precio de unos 3 euros al día. Es caro-carísimo para usarlo todos los días fuera de casa (para eso hay otras tarifas y contratos), pero para usarlo en vacaciones o los fines de semana 1 día suelto está muy bien.

El módem USB 3G es un Huawei E172, que funciona sin problemas cuando está pinchado en el router. Hay que configurar el pin mediante el interfaz web del router, y tienes que activar y desactivar la conexión a mano, no es automática cuando el ADSL no funciona, simplemente cuando intentas acceder a una página web el router te redirige a sí mismo preguntando "¿activar conexión 3G ya que el ADSL no chuta?. Es una pequeña decepción, lo hubiera preferido automático, pero como tampoco tenía gran confianza ni demasiadas expectativas pues ha sido una pequeña decepción y no una grande.

Módem 3G Huawei E172 en Linux


Pero a mí lo que me interesa es usarlo en Linux, ya sospechaba que en el router iba a funcionar bien, de manera más o menos automática, faltaría más. Pero ¿y en Linux?. Me pongo a buscar en google, y descubro bastantes páginas que hablan de módems USB 3G, y también de Vodafone, varias páginas con instrucciones y HOWTOS, pero sin dar los detalles morbosos que a mí me gustan. Nadie suelta prenda, parece que puede funcionar pero no está claro, y nadie da datos precisos. Vaya, primera decepción. Al final acabo encontrando un proyecto llamado Betavine, que parece que es de Vodafone o pagado por él, y que tiene paquetes Debian listos para usar. Los descargo, pero no los instalo, los desempaqueto e intento aprender qué es lo que hacen... buff... muy farragoso, el tema parece complicadísimo, hay programas que configuran y activan el módem, programas con ventanitas para mandar SMS, conectar y desconectar... muy interesante si es que les funciona todo perfectamente, pero no es lo que yo busco, yo quiero saber qué tengo que hacer para conectarme yo mismo, con mis propios deditos.

Al final me decido a tirar por libre y buscarme la vida. Pincho el módem en un puerto USB, y en los mensajes del kernel veo lo siguiente (ejecutando "dmesg"):

[265585.704058] usb 2-2: new full speed USB device using uhci_hcd and address 4
[265585.866947] usb 2-2: configuration #1 chosen from 1 choice
[265585.881278] scsi4 : SCSI emulation for USB Mass Storage devices
[265585.887366] usb 2-2: New USB device found, idVendor=12d1, idProduct=1003
[265585.887384] usb 2-2: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[265585.887393] usb 2-2: Product: HUAWEI Mobile
[265585.887399] usb 2-2: Manufacturer: HUAWEI Technologies
[265585.887867] usb-storage: device found at 4
[265585.887879] usb-storage: waiting for device to settle before scanning
[265586.096071] usb 2-2: USB disconnect, address 4
[265587.360056] usb 2-2: new full speed USB device using uhci_hcd and address 5
[265587.523793] usb 2-2: configuration #1 chosen from 1 choice
[265587.529020] usb-storage: probe of 2-2:1.0 failed with error -5
[265587.529047] option 2-2:1.0: GSM modem (1-port) converter detected
[265587.529147] usb 2-2: GSM modem (1-port) converter now attached to ttyUSB0
[265587.534849] usb-storage: probe of 2-2:1.1 failed with error -5
[265587.534876] option 2-2:1.1: GSM modem (1-port) converter detected
[265587.534966] usb 2-2: GSM modem (1-port) converter now attached to ttyUSB1
[265587.542007] scsi7 : SCSI emulation for USB Mass Storage devices
[265587.563191] usb 2-2: New USB device found, idVendor=12d1, idProduct=1003
[265587.563202] usb 2-2: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[265587.563207] usb 2-2: Product: HUAWEI Mobile
[265587.563210] usb 2-2: Manufacturer: HUAWEI Technologies
[265587.563460] usb-storage: device found at 5
[265587.563466] usb-storage: waiting for device to settle before scanning
[265592.561909] usb-storage: device scan complete
[265592.564841] scsi 7:0:0:0: CD-ROM HUAWEI Mass Storage 2.31 PQ: 0 ANSI: 2
[265592.627875] sr0: scsi-1 drive
[265592.628045] sr 7:0:0:0: Attached scsi CD-ROM sr0
[265592.628108] sr 7:0:0:0: Attached scsi generic sg0 type 5

Hmmm... vaya, parece que lo detecta y lo reconoce como un "GSM Modem", lo que es esperanzador. Además reconoce un "CD-ROM" dentro del módem USB, pero algo no funciona y no se monta automáticamente. Ejecutando "mount /dev/sr0 /cdrom" se monta sin ningún problema, y dentro están lo que supongo son los drivers para Windows y algo de documentación, pero no parece útil, así que lo desmonto. El programa "gcom", que es especial para módems 3G parece que lo reconoce parcialmente, ejecutando "gcom -d /dev/ttyUSB0" me pide el PIN, y contesta con "Registered on Home network", lo que es también muy esperanzador. Por lo tanto, veo que me ha reconocido un módem en la terminal /dev/ttyUSB0, así que arranco el programa "minicom", y efectivamente, ahí hay un módem: si escribo AT me contesta con OK, ATI da la información del módem, ATZ (resetear configuración) contesta con OK... efectivamente se llama módem, se anuncia como módem y se comporta como módem. Bien, pues yo en 1995 trabajaba en un ISP y los módems y yo eramos colegas, así que, igual que entonces, me asaltan las siguientes preguntas, como en cualquier otra conexión a Internet por módem:
  1. ¿Hay que configurar el módem con algún comando AT especial?
  2. ¿Cuál es el número de teléfono al que hay que llamar?
  3. ¿Cual es el nombre de usuario y la contraseña?
  4. ¿Cúales son los servidores de DNS?
Si logro contestar a esas preguntas, ya está todo hecho, podré utilizar cualquier programa de Módem para conectarme: gnome-ppp, vwdial... Así que me pongo a buscar con nuestro amigo Google, y al final acabo encontrando lo que necesito, gracias a que GPRS y 3G son primos hermanos y sobre GPRS hay mucha información:
  1. Configuración del módem mediante comandos AT. Las palabras mágicas son: AT+CGDCONT=1,"IP","airtelnet.es", pero antes hay que configurar el PIN de la tarjeta SIM con el comando AT^CPIN=1234 (suponiendo que el PIN es 1234). Lo malo es que el PIN sólo se puede configurar una vez, después contesta con ERROR en vez de un OK, así que yo he optado por hacerlo a mano con "gcom -d /dev/ttyUSB0" después de pinchar el módem.
  2. El número de teléfono es un tanto especial: *99***1#
  3. El nombre de usuario y la contraseña son ambos "vodafone", qué original (no se lo digáis a nadie, que es secreto). Como método de autenticación funciona PAP, no he probado CHAP.
  4. Los DNS se asignan automáticamente.
Por lo tanto, en cualquier Linux basta con ejecutar "pppconfig" e ir contestando a las preguntas con esos datos, y luego conectarse con "pon vodafone" (suponiendo que le hemos dado ese nombre a la conexión) y desconectarse con "poff vodafone". Incluso se puede utilizar conexión y desconexión automáticas bajo demanda, si funcionaba con los módems antiguos el PPPD va a funcionar igual con estos modernos. Pero eso lo dejo como ejercicio para el lector (pistas: buscar "persist" e "idle" en el manual de "pppd"). Cuando arranco la conexión con "pon vodafone" ocurre lo siguiente:

Nov 17 10:31:17 debian pppd[18763]: pppd 2.4.4 started by root, uid 0
Nov 17 10:31:18 debian chat[18764]: abort on (BUSY)
Nov 17 10:31:18 debian chat[18764]: abort on (NO CARRIER)
Nov 17 10:31:18 debian chat[18764]: abort on (VOICE)
Nov 17 10:31:18 debian chat[18764]: abort on (NO DIALTONE)
Nov 17 10:31:18 debian chat[18764]: abort on (NO DIAL TONE)
Nov 17 10:31:18 debian chat[18764]: abort on (NO ANSWER)
Nov 17 10:31:18 debian chat[18764]: abort on (DELAYED)
Nov 17 10:31:18 debian chat[18764]: send (ATZ^M)
Nov 17 10:31:18 debian chat[18764]: expect (OK)
Nov 17 10:31:18 debian chat[18764]: ATZ^M^M
Nov 17 10:31:18 debian chat[18764]: OK
Nov 17 10:31:18 debian chat[18764]: -- got it
Nov 17 10:31:18 debian chat[18764]: send (AT+CGDCONT=1,\"IP\",\"airtelnet.es\"^M)
Nov 17 10:31:18 debian chat[18764]: expect (OK)
Nov 17 10:31:18 debian chat[18764]: ^M
Nov 17 10:31:18 debian chat[18764]: AT+CGDCONT=1,"IP","airtelnet.es"^M^M
Nov 17 10:31:18 debian chat[18764]: OK
Nov 17 10:31:18 debian chat[18764]: -- got it
Nov 17 10:31:18 debian chat[18764]: send (ATDT*99***1#^M)
Nov 17 10:31:18 debian chat[18764]: expect (CONNECT)
Nov 17 10:31:18 debian chat[18764]: ^M
Nov 17 10:31:18 debian chat[18764]: ATDT*99***1#^M^M
Nov 17 10:31:18 debian chat[18764]: CONNECT
Nov 17 10:31:18 debian chat[18764]: -- got it
Nov 17 10:31:18 debian chat[18764]: send (\d)
Nov 17 10:31:19 debian pppd[18763]: Serial connection established.
Nov 17 10:31:20 debian pppd[18763]: using channel 1
Nov 17 10:31:20 debian pppd[18763]: Using interface ppp0
Nov 17 10:31:20 debian pppd[18763]: Connect: ppp0 <--> /dev/ttyUSB0
Nov 17 10:31:21 debian pppd[18763]: sent [LCP ConfReq id=0x1 ]
Nov 17 10:31:21 debian pppd[18763]: rcvd [LCP ConfReq id=0x0 ]
Nov 17 10:31:21 debian pppd[18763]: sent [LCP ConfNak id=0x0 ]
Nov 17 10:31:21 debian pppd[18763]: rcvd [LCP ConfAck id=0x1 ]
Nov 17 10:31:21 debian pppd[18763]: rcvd [LCP ConfReq id=0x1 ]
Nov 17 10:31:21 debian pppd[18763]: sent [LCP ConfAck id=0x1 ]
Nov 17 10:31:21 debian pppd[18763]: sent [LCP EchoReq id=0x0 magic=0xdf14263d]
Nov 17 10:31:21 debian pppd[18763]: sent [PAP AuthReq id=0x1 user="vodafone" password=]
Nov 17 10:31:21 debian pppd[18763]: rcvd [LCP DiscReq id=0x2 magic=0x103ea0f7]
Nov 17 10:31:21 debian pppd[18763]: rcvd [LCP EchoRep id=0x0 magic=0x103ea0f7 df 14 26 3d]
Nov 17 10:31:21 debian pppd[18763]: rcvd [PAP AuthAck id=0x1 ""]
Nov 17 10:31:21 debian pppd[18763]: PAP authentication succeeded
Nov 17 10:31:21 debian kernel: [265629.985199] PPP BSD Compression module registered
Nov 17 10:31:21 debian kernel: [265630.128780] PPP Deflate Compression module registered
Nov 17 10:31:21 debian pppd[18763]: sent [CCP ConfReq id=0x1 ]
Nov 17 10:31:21 debian pppd[18763]: sent [IPCP ConfReq id=0x1 ]
Nov 17 10:31:21 debian pppd[18763]: rcvd [LCP ProtRej id=0x3 80 fd 01 01 00 0f 1a 04 78 00 18 04 78 00 15 03 2f]
Nov 17 10:31:21 debian pppd[18763]: Protocol-Reject for 'Compression Control Protocol' (0x80fd) received
Nov 17 10:31:22 debian pppd[18763]: rcvd [IPCP ConfNak id=0x1 ]
Nov 17 10:31:22 debian pppd[18763]: sent [IPCP ConfReq id=0x2 ]
Nov 17 10:31:23 debian pppd[18763]: rcvd [IPCP ConfNak id=0x2 ]
Nov 17 10:31:23 debian pppd[18763]: sent [IPCP ConfReq id=0x3 ]
Nov 17 10:31:24 debian pppd[18763]: rcvd [IPCP ConfReq id=0x0]
Nov 17 10:31:24 debian pppd[18763]: sent [IPCP ConfNak id=0x0 ]
Nov 17 10:31:24 debian pppd[18763]: rcvd [IPCP ConfRej id=0x3 ]
Nov 17 10:31:24 debian pppd[18763]: sent [IPCP ConfReq id=0x4 ]
Nov 17 10:31:24 debian pppd[18763]: rcvd [IPCP ConfReq id=0x1]
Nov 17 10:31:24 debian pppd[18763]: sent [IPCP ConfAck id=0x1]
Nov 17 10:31:24 debian pppd[18763]: rcvd [IPCP ConfNak id=0x4 ]
Nov 17 10:31:24 debian pppd[18763]: sent [IPCP ConfReq id=0x5 ]
Nov 17 10:31:24 debian pppd[18763]: rcvd [IPCP ConfAck id=0x5 ]
Nov 17 10:31:24 debian pppd[18763]: Could not determine remote IP address: defaulting to 10.64.64.64
Nov 17 10:31:24 debian pppd[18763]: Cannot determine ethernet address for proxy ARP
Nov 17 10:31:24 debian pppd[18763]: local IP address 212.166.174.104
Nov 17 10:31:24 debian pppd[18763]: remote IP address 10.64.64.64
Nov 17 10:31:24 debian pppd[18763]: primary DNS address 212.73.32.3
Nov 17 10:31:24 debian pppd[18763]: secondary DNS address 212.73.32.67


Test de VelocidadEstá activada la opción "debug" del pppd, así que sale más basurilla de la cuenta, entre la que podemos ver que se pueden desactivar los protocolos de compresión BSD y VJ, que son rechazados de todas formas, pero como se negocian tampoco molestan. El caso es que funciona perfectamente y un primer test de velocidad da un resultado bastante aceptable, para ser una conexión HSUPA: 1840 Kbps de bajada y 492 Kbps de subida. Vodafone dice que la velocidad es de 7.2 Mbps de bajada y 2 Mbps de subida, que está bastante lejos de la realidad que yo veo desde mi casa, pero de todas formas es perfectamente usable para lo que se le pretende.