Guía para configurar la tarjeta Option GlobeTrotter Fusion Quad Lite 1.5.5 en GNU/Linux.
Cualquier mejora, comentario o sugerencia es bienvenida: usa el formulario correspondiente.
Esta obra está bajo una licencia de Creative Commons.
Resumen para impacientes:
Versiones:
La tarjeta en cuestión permite la conexión mediante UMTS (384/64 Kbps), GPRS (56 Kbps) o WiFi (hasta 54 Mbps), enlazando con algún Hotspot. En principio no tiene soporte cuando se usa en GNU/Linux (sí lo trae tanto para Windows (XP, XP Pro, 2000) como para MAC OS X 10.2.6 ó superior), pero al utilizar el protocolo PPP (en inglés) para conexiones GPRS y UMTS, con un poco de configuración se podrá utilizar sin problemas en nuestro SO favorito. Para la parte de WiFi sólo indico cómo parece ser que lo hacen por esos lares porque yo no lo he probado, ya que mi ordenador viene provisto de conexión inalámbrica y sólo me serviría para conectarme a HotSpots de Vodafone en los que me tendría que autenticar con mi tarjeta SIM.
El presente documento es una guía para hacer funcionar dicha tarjeta. La configuración del autor del mismo (y por tanto los ejemplos), corresponden a un Dell Latitude D610 (19.02.2006: y a un Dell Inspiron 8600) donde está instalada una FC4 con núcleo 2.6.14-1.1656_FC4 (10.08.2006: actualizado a 2.6.17-1.2157_FC5). Por supuesto, se trata de una recopilación de la información que me ha servido para instalar satisfactoriamente la tarjeta en mi equipo, basándome en la que he encontrado por Internet y en mi propia experiencia.
Lo primero para hacer funcionar la tarjeta es tener una ranura PCMCIA en el ordenador que funcione, pueste que es el formato físico de la tarjeta. También habrá que asegurarse de que tenemos el demonio correspondiente (cardmgr) corriendo. Cuando no hay nada en el puerto, la salida ha de ser la siguiente (ejecutar como súper usuario):
# service pcmcia status cardmgr (pid 3369) is running... # cardctl config Socket 0: not configured # cardctl status Socket 0: no cardNota: en Fedora, service nombre_servicio es equivalente a /etc/init.d/nombre_servicio
En principio si tenemos cobertura GPRS con el móvil (muchos aparatos indican si la tienen o no, lo normal es que sí) la tarjeta ya puede funcionar. Para la cobertura UMTS, habrá que descifrar cuando menos la información que brindan los pilotos que lleva incorporada la tarjeta.
Para la cobertura WiFi, si poseemos una interfaz inalámbrica en nuestro ordenador (en mi caso se trata de un Intel Centrino con una PRO/Wireless 2915ABG MiniPCI Adapter), se puede ver con el comando iwlist como súper usuario (cambiar eth1 por la interfaz que corresponda):
# iwlist eth1 scan eth1 No scan results # iwlist eth1 scan eth1 Scan completed : Cell 01 - Address: 00:30:F1:FC:1A:53 ESSID:"WLAN" Protocol:IEEE 802.11bg Mode:Master Channel:11 Encryption key:on Bit Rate:54 Mb/s Extra: Rates (Mb/s): 1 2 5.5 6 9 11 12 18 22 24 36 48 54 Signal level=-70 dBm Extra: Last beacon: 58ms ago
La tarjeta en cuestión permite conectarse a una red WiFi "Vodafone compatible" de manera que la autenticación es hecha por la tarjeta SIM que incluye. Este tipo de HotSpots suele estar bien visible con los anagramas correspondientes, así que normalmente nos daremos cuenta de si tenemos cobertura o no por la publicidad que nos rodee.
Linux maneja la tarjeta como un dispositivo accesible por USB, así que es necesario que funcione correctamente en el sistema. Por ejemplo, yo tengo los siguientes dispositivos por USB (bueno, en realidad en este momento únicamente un ratón óptico):
# cat /proc/bus/usb/devices T: Bus=05 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#= 1 Spd=12 MxCh= 2 B: Alloc= 0/900 us ( 0%), #Int= 0, #Iso= 0 D: Ver= 1.10 Cls=09(hub ) Sub=00 Prot=00 MxPS= 8 #Cfgs= 1 P: Vendor=0000 ProdID=0000 Rev= 2.06 S: Manufacturer=Linux 2.6.14-1.1656_FC4 uhci_hcd S: Product=UHCI Host Controller S: SerialNumber=0000:00:1d.3 C:* #Ifs= 1 Cfg#= 1 Atr=c0 MxPwr= 0mA I: If#= 0 Alt= 0 #EPs= 1 Cls=09(hub ) Sub=00 Prot=00 Driver=hub E: Ad=81(I) Atr=03(Int.) MxPS= 2 Ivl=255ms T: Bus=04 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#= 1 Spd=12 MxCh= 2 B: Alloc= 93/900 us (10%), #Int= 1, #Iso= 0 D: Ver= 1.10 Cls=09(hub ) Sub=00 Prot=00 MxPS= 8 #Cfgs= 1 P: Vendor=0000 ProdID=0000 Rev= 2.06 S: Manufacturer=Linux 2.6.14-1.1656_FC4 uhci_hcd S: Product=UHCI Host Controller S: SerialNumber=0000:00:1d.2 C:* #Ifs= 1 Cfg#= 1 Atr=c0 MxPwr= 0mA I: If#= 0 Alt= 0 #EPs= 1 Cls=09(hub ) Sub=00 Prot=00 Driver=hub E: Ad=81(I) Atr=03(Int.) MxPS= 2 Ivl=255ms T: Bus=04 Lev=01 Prnt=01 Port=01 Cnt=01 Dev#= 2 Spd=1.5 MxCh= 0 D: Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS= 8 #Cfgs= 1 P: Vendor=046d ProdID=c016 Rev= 3.40 S: Manufacturer=Logitech S: Product=Optical USB Mouse C:* #Ifs= 1 Cfg#= 1 Atr=a0 MxPwr=100mA I: If#= 0 Alt= 0 #EPs= 1 Cls=03(HID ) Sub=01 Prot=02 Driver=usbhid E: Ad=81(I) Atr=03(Int.) MxPS= 4 Ivl=10ms T: Bus=03 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#= 1 Spd=12 MxCh= 2 B: Alloc= 0/900 us ( 0%), #Int= 0, #Iso= 0 D: Ver= 1.10 Cls=09(hub ) Sub=00 Prot=00 MxPS= 8 #Cfgs= 1 P: Vendor=0000 ProdID=0000 Rev= 2.06 S: Manufacturer=Linux 2.6.14-1.1656_FC4 uhci_hcd S: Product=UHCI Host Controller S: SerialNumber=0000:00:1d.1 C:* #Ifs= 1 Cfg#= 1 Atr=c0 MxPwr= 0mA I: If#= 0 Alt= 0 #EPs= 1 Cls=09(hub ) Sub=00 Prot=00 Driver=hub E: Ad=81(I) Atr=03(Int.) MxPS= 2 Ivl=255ms T: Bus=02 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#= 1 Spd=12 MxCh= 2 B: Alloc= 0/900 us ( 0%), #Int= 0, #Iso= 0 D: Ver= 1.10 Cls=09(hub ) Sub=00 Prot=00 MxPS= 8 #Cfgs= 1 P: Vendor=0000 ProdID=0000 Rev= 2.06 S: Manufacturer=Linux 2.6.14-1.1656_FC4 uhci_hcd S: Product=UHCI Host Controller S: SerialNumber=0000:00:1d.0 C:* #Ifs= 1 Cfg#= 1 Atr=c0 MxPwr= 0mA I: If#= 0 Alt= 0 #EPs= 1 Cls=09(hub ) Sub=00 Prot=00 Driver=hub E: Ad=81(I) Atr=03(Int.) MxPS= 2 Ivl=255ms T: Bus=01 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#= 1 Spd=480 MxCh= 8 B: Alloc= 0/800 us ( 0%), #Int= 0, #Iso= 0 D: Ver= 2.00 Cls=09(hub ) Sub=00 Prot=01 MxPS= 8 #Cfgs= 1 P: Vendor=0000 ProdID=0000 Rev= 2.06 S: Manufacturer=Linux 2.6.14-1.1656_FC4 ehci_hcd S: Product=EHCI Host Controller S: SerialNumber=0000:00:1d.7 C:* #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr= 0mA I: If#= 0 Alt= 0 #EPs= 1 Cls=09(hub ) Sub=00 Prot=00 Driver=hub E: Ad=81(I) Atr=03(Int.) MxPS= 2 Ivl=256ms
Al meter la tarjeta en la ranura PCMCIA del ordenador se obtienen los siguientes mensajes por parte del sistema:
Jan 29 16:03:11 portdav kernel: PCI: Enabling device 0000:04:00.0 (0000 -> 0002) Jan 29 16:03:11 portdav kernel: ACPI: PCI Interrupt 0000:04:00.0[A] -> Link [LNKD] -> GSI 5 (level, low) -> IRQ 5 Jan 29 16:03:11 portdav kernel: ohci_hcd 0000:04:00.0: OHCI Host Controller Jan 29 16:03:11 portdav kernel: ohci_hcd 0000:04:00.0: new USB bus registered, assigned bus number 6 Jan 29 16:03:11 portdav kernel: ohci_hcd 0000:04:00.0: irq 5, io mem 0x52000000 Jan 29 16:03:11 portdav kernel: hub 6-0:1.0: USB hub found Jan 29 16:03:11 portdav kernel: hub 6-0:1.0: 1 port detected Jan 29 16:03:11 portdav kernel: PCI: Enabling device 0000:04:00.1 (0000 -> 0002) Jan 29 16:03:11 portdav kernel: ACPI: PCI Interrupt 0000:04:00.1[B] -> Link [LNKD] -> GSI 5 (level, low) -> IRQ 5 Jan 29 16:03:11 portdav kernel: ohci_hcd 0000:04:00.1: OHCI Host Controller Jan 29 16:03:11 portdav kernel: ohci_hcd 0000:04:00.1: new USB bus registered, assigned bus number 7 Jan 29 16:03:11 portdav kernel: ohci_hcd 0000:04:00.1: irq 5, io mem 0x52001000 Jan 29 16:03:12 portdav kernel: hub 7-0:1.0: USB hub found Jan 29 16:03:12 portdav kernel: hub 7-0:1.0: 1 port detected Jan 29 16:03:14 portdav kernel: usb 7-1: new full speed USB device using ohci_hcd and address 2 Jan 29 16:03:14 portdav kernel: option 7-1:1.0: Option 3G data card converter detected Jan 29 16:03:14 portdav kernel: usb 7-1: Option 3G data card converter now attached to ttyUSB0 Jan 29 16:03:14 portdav kernel: option 7-1:1.1: Option 3G data card converter detected Jan 29 16:03:14 portdav kernel: usb 7-1: Option 3G data card converter now attached to ttyUSB1 Jan 29 16:03:14 portdav kernel: option 7-1:1.2: Option 3G data card converter detected Jan 29 16:03:14 portdav kernel: usb 7-1: Option 3G data card converter now attached to ttyUSB2 Jan 29 16:03:14 portdav kernel: option 7-1:1.3: Option 3G data card converter detected Jan 29 16:03:14 portdav kernel: usb 7-1: Option 3G data card converter now attached to ttyUSB3
En lo referente a los dispositivos USB, ha añadido los buses 6 y 7:
T: Bus=07 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#= 1 Spd=12 MxCh= 1 B: Alloc= 0/900 us ( 0%), #Int= 1, #Iso= 0 D: Ver= 1.10 Cls=09(hub ) Sub=00 Prot=00 MxPS= 8 #Cfgs= 1 P: Vendor=0000 ProdID=0000 Rev= 2.06 S: Manufacturer=Linux 2.6.14-1.1656_FC4 ohci_hcd S: Product=OHCI Host Controller S: SerialNumber=0000:04:00.1 C:* #Ifs= 1 Cfg#= 1 Atr=c0 MxPwr= 0mA I: If#= 0 Alt= 0 #EPs= 1 Cls=09(hub ) Sub=00 Prot=00 Driver=hub E: Ad=81(I) Atr=03(Int.) MxPS= 2 Ivl=255ms T: Bus=07 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#= 2 Spd=12 MxCh= 0 D: Ver= 1.10 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs= 1 P: Vendor=0af0 ProdID=6300 Rev= 0.00 S: Manufacturer=Option N.V. S: Product=Fusion UMTS Quad-GPRS S: SerialNumber=?Serial Numbe C:* #Ifs= 4 Cfg#= 1 Atr=a0 MxPwr=100mA I: If#= 0 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=ff Driver=option E: Ad=81(I) Atr=03(Int.) MxPS= 16 Ivl=128ms E: Ad=82(I) Atr=02(Bulk) MxPS= 64 Ivl=0ms E: Ad=02(O) Atr=02(Bulk) MxPS= 64 Ivl=0ms I: If#= 1 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=option E: Ad=84(I) Atr=02(Bulk) MxPS= 64 Ivl=0ms E: Ad=04(O) Atr=02(Bulk) MxPS= 64 Ivl=0ms I: If#= 2 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=option E: Ad=85(I) Atr=02(Bulk) MxPS= 64 Ivl=0ms E: Ad=05(O) Atr=02(Bulk) MxPS= 64 Ivl=0ms I: If#= 3 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=option E: Ad=83(I) Atr=02(Bulk) MxPS= 64 Ivl=0ms E: Ad=03(O) Atr=02(Bulk) MxPS= 64 Ivl=0ms T: Bus=06 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#= 1 Spd=12 MxCh= 1 B: Alloc= 0/900 us ( 0%), #Int= 0, #Iso= 0 D: Ver= 1.10 Cls=09(hub ) Sub=00 Prot=00 MxPS= 8 #Cfgs= 1 P: Vendor=0000 ProdID=0000 Rev= 2.06 S: Manufacturer=Linux 2.6.14-1.1656_FC4 ohci_hcd S: Product=OHCI Host Controller S: SerialNumber=0000:04:00.0 C:* #Ifs= 1 Cfg#= 1 Atr=c0 MxPwr= 0mA I: If#= 0 Alt= 0 #EPs= 1 Cls=09(hub ) Sub=00 Prot=00 Driver=hub E: Ad=81(I) Atr=03(Int.) MxPS= 2 Ivl=255msNota: A partir de los núcleos 2.6.12 se incluye soporte para este tipo de dispositivos, que normalmente viene compilado en forma de módulo. Lo que tiene que aparecer en la configuración del núcleo es:
CONFIG_USB_SERIAL_OPTION=m
La información que proporciona la interfaz PCMCIA (no sé muy bien para qué vale, pero ahí queda):
# cardctl config Socket 0: Vcc 3.3V Vpp1 3.3V Vpp2 3.3V interface type is "cardbus" irq 5 [exclusive] [level] function 0: Vcc 3.3V Vpp1 3.3V Vpp2 3.3V interface type is "cardbus" irq 5 [exclusive] [level] function 0: # cardctl info PRODID_1="" PRODID_2="" PRODID_3="" PRODID_4="" MANFID=0000,0000 FUNCID=255 # cardctl status Socket 0: 3.3V CardBus card function 0: [ready] function 1: [ready]
Se comprueba que los dispositivos existen en el sistema:
# ls -latr /dev/ttyUSB* crw-rw---- 1 root uucp 188, 0 Jan 27 19:54 /dev/ttyUSB0 crw-rw---- 1 root uucp 188, 1 Jan 27 19:54 /dev/ttyUSB1 crw-rw---- 1 root uucp 188, 2 Jan 27 19:54 /dev/ttyUSB2 crw-rw---- 1 root uucp 188, 3 Jan 27 19:54 /dev/ttyUSB3
Vamos a ver qué tal responde la tarjeta como módem para asegurarnos de que va a funcionar. Para ello lo más sencillo es utilizar la utilidad minicom, que según reza su página man (man minicom para más detalles), se trata de un programa de "entorno amigable para la comunicaciones por puerto serie". Típicamente no tendrá ningún fichero de configuración ni nada, así que habrá que configurar lo mínimo indispensable para que sepa con qué dispositivo se va a trabajar a través del puerto serie.
Ctrl+A O nos lleva al menú de configuración. En Serial port setup se indica dónde se encuentra el módem (/dev/ttyUSB0 en este caso) y en Modem and dialing se pone que la cadena de inicialización sea únicamente ATZ. Se guarda como perfil por defecto en el menú y a continuación se inicializa el módem con Ctrl+A M. En pantalla aparecerá la cadena de inicialiación que se ha puesto antes. Pulsando la tecla ENTER la enviamos y se deberá ver un OK que indica que todo va bien. En este punto se puede jugar con los comandos ETSI AT Hayes que se quiera. Algunos son:
ATZ OK ATI Manufacturer: Option N.V. Model: GlobeTrotter Fusion Quad Lite Revision: 1.5.5 (Date: May 17 2005, Time: 14:55:44) OK AT+COPS? +COPS: 0,0,"Limited Service",2 OK at+cpin=xxxx OK at+csq +CSQ: 25,0 OK at_opsys? _OPSYS: 1,2 OK at_opsys=0,2 OK at+csq +CSQ: 28,0 OK at+cgdcont? +CGDCONT: 1,"IP","web.vodafone.de","",0,0
La explicación de los comandos anteriores:
Esto también está relacionado con el parpadeo de las luces (azul y roja en mi caso) de la tarjeta:
Para salir de minicom, se puede hacer con Ctrl+A X (reseteando el módem) ó Ctrl+A Q (sin resetear). Ctrl+A Z da ayuda sobre las teclas de comando.
En este momento también se puede deshabilitar el PIN de la tarjeta mediante comandos AT (aunque habrá quien prefiera meterla en un móvil y deshabilitarlo con los menús correspondientes). Hay que tener en cuenta que se trata de una medida de seguridad para que nadie que no conozca dicho código pueda utilizarla, así que cada cual que decida según su propia cuenta y riesgo. De cualquier manera, los comandos para hacerlo son (xxxx es el PIN de la tarjeta):
Una vez que ya se han establecido los paramétros de configuración (básicamente introducir el PIN y elegir a qué tipo de red se quiere acceder), se está en disposición de iniciar la comunicación.
Para establecer la conexión PPP existen varias posibilidades, de las que se mostrarán ejemplos de 2: asistente gráfico de configuración de interfaz de red (WvDial) y mediante scripts para su ejecución con el demonio PPP (pppd). También se puede hacer mediante el interfaz gráfico kppp (de igual manera existe un interfaz gráfico para establecer conexiones ppp en Gnome, pero anda en paños menores. En la página del proyecto de Gnome-PPP se puede encontrar más información), pero al instalarlo también lo hacen un montón de cosas que no necesito, así que paso de él. De cualquier manera, el proceso debe ser muy parecido al gráfico mostrado a continuación.
En Fedora se puede encontrar un asistente de configuración a Internet bastante sencillo, pero antes hay que hacer que ese asistente (que es un poco limitado por otra parte, ya que no deja de ser un front-end) reconozca nuestro módem. En este caso, se hace un enlace simbólico a la tarjeta desde un dispositivo que reconoce automáticamente como módem:
# ln -s /dev/ttyUSB0 /dev/modem # ll /dev/modem lrwxrwxrwx 1 root root 12 feb 18 19:06 /dev/modem -> /dev/ttyUSB0
El proceso es el siguiente:
Tras la pantalla de confirmación ya se configura la nueva conexión a Internet que está junto con el resto de las otras conexiones que existan en el equipo. De manera gráfica en "Menú Gnome (Aplicaciones) -> Escritorio -> Configuración del sistema -> Red" o lanzando system-config-network desde consola, y en modo consola con el comando ifconfig (más info con man ifconfig). En los logs del sistema aparece:
Feb 18 19:08:10 portdav ifup-ppp: pppd iniciado para Vodafone_UMTS en /dev/modem a 460800 Feb 18 19:08:11 portdav kernel: CSLIP: code copyright 1989 Regents of the University of California Feb 18 19:08:11 portdav kernel: PPP generic driver version 2.4.2 Feb 18 19:08:11 portdav pppd[3458]: pppd 2.4.2 started by root, uid 0 Feb 18 19:08:12 portdav wvdial[3474]: WvDial: Internet dialer version 1.54.0 Feb 18 19:08:12 portdav wvdial[3474]: Initializing modem. Feb 18 19:08:12 portdav wvdial[3474]: Sending: ATZ Feb 18 19:08:12 portdav wvdial[3474]: ATZ Feb 18 19:08:12 portdav wvdial[3474]: OK Feb 18 19:08:12 portdav wvdial[3474]: Sending: ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0 Feb 18 19:08:12 portdav wvdial[3474]: ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0 Feb 18 19:08:12 portdav wvdial[3474]: OK Feb 18 19:08:12 portdav wvdial[3474]: Sending: ATM1L2 Feb 18 19:08:12 portdav wvdial[3474]: ATM1L2 Feb 18 19:08:12 portdav wvdial[3474]: OK Feb 18 19:08:12 portdav wvdial[3474]: Modem initialized. Feb 18 19:08:12 portdav wvdial[3474]: Sending: ATDT*99***1# Feb 18 19:08:12 portdav wvdial[3474]: Waiting for carrier. Feb 18 19:08:13 portdav wvdial[3474]: ATDT*99***1# Feb 18 19:08:13 portdav wvdial[3474]: CONNECT 384000 Feb 18 19:08:13 portdav wvdial[3474]: Carrier detected. Chatmode finished. Feb 18 19:08:13 portdav pppd[3458]: Serial connection established. Feb 18 19:08:13 portdav pppd[3458]: Using interface ppp0 Feb 18 19:08:13 portdav pppd[3458]: Connect: ppp0 <--> /dev/modem Feb 18 19:08:14 portdav pppd[3458]: CHAP authentication succeeded Feb 18 19:08:14 portdav kernel: PPP Deflate Compression module registered Feb 18 19:08:18 portdav pppd[3458]: Could not determine remote IP address: defaulting to 10.x.x.x Feb 18 19:08:18 portdav pppd[3458]: local IP address 10.x.x.x Feb 18 19:08:18 portdav pppd[3458]: remote IP address 10.x.x.x Feb 18 19:08:18 portdav pppd[3458]: primary DNS address 139.7.30.125 Feb 18 19:08:18 portdav pppd[3458]: secondary DNS address 139.7.30.126 Feb 18 19:08:18 portdav NET[3526]: /etc/sysconfig/network-scripts/ifup-post : updated /etc/resolv.conf ...bla, bla, bla... Feb 18 20:13:13 portdav pppd[3458]: Connect time 65.0 minutes. Feb 18 20:13:13 portdav pppd[3458]: Sent 440441 bytes, received 1700391 bytes. Feb 18 20:13:13 portdav pppd[3458]: Exit.
WvDial es un programa "medianamente inteligente" para establecer conexiones PPP. Primero coge la configuración de /etc/wvdial.conf para inicializar el dispositivo y luego lanza pppd para que negocie la conexión. En algunos documentos he visto que la gente incluye el PIN dentro del script de conexión al servicio. A mí me parece un error: si quiero seguridad, pregunto por el PIN; si no la quiero, simplemente desactivo el PIN, pero nunca lo dejaría en un script "a fuego". En fin, ya se sabe: "las opiniones son como los culos: cada cual con lo suyo".
Como se puede comprobar, el proceso automático envía comandos no necesarios que se pueden evitar en posteriores conexiones con la edición del fichero /etc/wvdial.conf:
# cat /etc/wvdial.conf [Modem0] Modem = /dev/ttyUSB0 Baud = 460800 SetVolume = 3 Dial Command = ATDT Init1 = ATZ FlowControl = CRTSCTS [Dialer Vodafone_UMTS] Username = torpedo Password = clave Phone = *99***1# Stupid Mode = 1 Init1 = ATZ Inherits = Modem0
Y la salida que produce en los logs del sistema:
Feb 18 21:09:43 portdav ifup-ppp: pppd iniciado para Vodafone_UMTS en /dev/ttyUSB0 a 460800 Feb 18 21:09:43 portdav pppd[6904]: pppd 2.4.2 started by root, uid 0 Feb 18 21:09:44 portdav wvdial[6905]: WvDial: Internet dialer version 1.54.0 Feb 18 21:09:44 portdav wvdial[6905]: Initializing modem. Feb 18 21:09:45 portdav wvdial[6905]: Sending: ATZ Feb 18 21:09:45 portdav wvdial[6905]: ATZ Feb 18 21:09:45 portdav wvdial[6905]: OK Feb 18 21:09:45 portdav wvdial[6905]: Modem initialized. Feb 18 21:09:45 portdav wvdial[6905]: Sending: ATDT*99***1# Feb 18 21:09:45 portdav wvdial[6905]: Waiting for carrier. Feb 18 21:09:45 portdav wvdial[6905]: ATDT*99***1# Feb 18 21:09:45 portdav wvdial[6905]: CONNECT 384000 Feb 18 21:09:45 portdav wvdial[6905]: Carrier detected. Chatmode finished. Feb 18 21:09:45 portdav pppd[6904]: Serial connection established. Feb 18 21:09:45 portdav pppd[6904]: Using interface ppp0 Feb 18 21:09:45 portdav pppd[6904]: Connect: ppp0 <--> /dev/ttyUSB0 Feb 18 21:09:46 portdav pppd[6904]: CHAP authentication succeeded Feb 18 21:09:50 portdav pppd[6904]: Could not determine remote IP address: defaulting to 10.x.x.x Feb 18 21:09:50 portdav pppd[6904]: local IP address 10.226.x.x Feb 18 21:09:50 portdav pppd[6904]: remote IP address 10.x.x.x Feb 18 21:09:50 portdav pppd[6904]: primary DNS address 139.7.30.125 Feb 18 21:09:50 portdav pppd[6904]: secondary DNS address 139.7.30.126 Feb 18 21:09:50 portdav NET[6945]: /etc/sysconfig/network-scripts/ifup-post : updated /etc/resolv.conf ...bla, bla, bla ... Feb 18 21:10:57 portdav pppd[6904]: Terminating on signal 15. Feb 18 21:10:57 portdav pppd[6904]: Connection terminated. Feb 18 21:10:57 portdav pppd[6904]: Connect time 1.2 minutes. Feb 18 21:10:57 portdav pppd[6904]: Sent 15922 bytes, received 85966 bytes. Feb 18 21:10:58 portdav NET[7120]: /etc/sysconfig/network-scripts/ifdown-post : updated /etc/resolv.conf Feb 18 21:10:58 portdav su(pam_unix)[7136]: session opened for user root by (uid=0) Feb 18 21:10:58 portdav su(pam_unix)[7136]: session closed for user root Feb 18 21:10:58 portdav pppd[6904]: Connect time 1.2 minutes. Feb 18 21:10:58 portdav pppd[6904]: Sent 15922 bytes, received 85966 bytes. Feb 18 21:10:58 portdav pppd[6904]: Exit.
Resumiendo, para la ejecución y parada de la conexión, tenemos varias opciones disponibles:
Para la conexión directamente con PPPD, se utilizan dos ficheros (los nombres son a título de ejemplo):
# cat /etc/ppp/peers/vodafone /dev/ttyUSB0 460800 crtscts defaultroute noipdefault usepeerdns noauth connect "/usr/sbin/chat -v -f /etc/ppp/vodafone-chat
# cat vodafone-chat ABORT BUSY ABORT 'NO CARRIER' ABORT 'NO DIALTONE' ABORT 'NO ANSWER' ABORT ERROR REPORT CONNECT TIMEOUT 120 '' ATZ OK-AT-OK "AT+CPIN?" OK-AT-OK 'AT_OPSYS=3,2' OK-AT-OK 'AT+CSQ' OK-AT-OK 'AT+CGDCONT=1,"IP","web.vodafone.de"' OK-AT-OK 'ATD*99***1#'
La conexión propiamente dicha:
# pppd nodetach call vodafone Serial connection established. Using interface ppp0 Connect: ppp0 <--> /dev/ttyUSB0 Could not determine remote IP address: defaulting to 10.x.x.x local IP address 10.226.x.x remote IP address 10.x.x.x primary DNS address 139.7.30.125 secondary DNS address 139.7.30.126 Terminating on signal 2. Connection terminated. Connect time 1.3 minutes. Sent 2546 bytes, received 34227 bytes. Connect time 1.3 minutes. Sent 2546 bytes, received 34227 bytes.
Nota: para terminar la ejecución, Ctrl+C que es lo que produce Terminating on signal 2.
Cuando se haya terminado de usar la tarjeta, podemos hacer que el sistema deje de reconocerla de manera ordenada utilzando las utilidades proporcionadas con el paquete pcmciautils. En versiones antiguas, con el comando:
# cardctl eject
En versiones más actuales:
# rpm -ql pcmciautils-012-0.FC5.2 /etc/pcmcia/config.opts /etc/udev/rules.d/60-pcmcia.rules /sbin/pccardctl /sbin/pcmcia-check-broken-cis /sbin/pcmcia-socket-startup /usr/share/man/man8/pccardctl.8.gz
Para más información, consultar la página del manual: man pccardctl. Aunque la funcionalidad para informar al sistema de que se va a sacar la tarjeta es:
# pccardctl eject
Que apagará las luces de la tarjeta y en el log del sistema provocará algo como lo siguiente:
Jan 29 22:01:25 portdav kernel: ohci_hcd 0000:04:00.0: remove, state 1 Jan 29 22:01:25 portdav kernel: usb usb6: USB disconnect, address 1 Jan 29 22:01:25 portdav kernel: ohci_hcd 0000:04:00.0: USB bus 6 deregistered Jan 29 22:01:25 portdav kernel: ACPI: PCI interrupt for device 0000:04:00.0 disabled Jan 29 22:01:25 portdav kernel: ohci_hcd 0000:04:00.1: remove, state 1 Jan 29 22:01:25 portdav kernel: usb usb7: USB disconnect, address 1 Jan 29 22:01:25 portdav kernel: usb 7-1: USB disconnect, address 2 Jan 29 22:01:25 portdav kernel: option ttyUSB0: Option 3G data card converter now disconnected from ttyUSB0 Jan 29 22:01:25 portdav kernel: option 7-1:1.0: device disconnected Jan 29 22:01:25 portdav kernel: option ttyUSB1: Option 3G data card converter now disconnected from ttyUSB1 Jan 29 22:01:25 portdav kernel: option 7-1:1.1: device disconnected Jan 29 22:01:25 portdav kernel: option ttyUSB2: Option 3G data card converter now disconnected from ttyUSB2 Jan 29 22:01:25 portdav kernel: option 7-1:1.2: device disconnected Jan 29 22:01:25 portdav kernel: option ttyUSB3: Option 3G data card converter now disconnected from ttyUSB3 Jan 29 22:01:25 portdav kernel: option 7-1:1.3: device disconnected Jan 29 22:01:25 portdav kernel: ohci_hcd 0000:04:00.1: USB bus 7 deregistered Jan 29 22:01:25 portdav kernel: ACPI: PCI interrupt for device 0000:04:00.1 disabled
Y nos podemos sentir tranquilos al sacarla físicamente de la ranura en cuestión.
Parece ser que la tarjeta en cuestión está soportada por el proyecto NdisWrapper. Más información al respecto se puede encontrar en el Wiki del proyecto NdisWrapper .
A continuación se presenta una lista con problemas típicos:
Es lo que pasa si al introducir la tarjeta en la ranura PCMCIA, obtenemos lo siguiente en el fichero de log del sistema (típicamente /var/log/messages):
USB device X (vend/prod 0xaf0/0x5000) is not claimed by any active driver
Entonces habrá que cargar el driver correspondiente (como súper-usuario):
modprobe usbserial vendor=0xaf0 product=0x5000
Para comprobar que el driver ha cargado bien:
# lsmod | grep usbserial usbserial 30377 1 option
Si queremos que el driver se cargue cada vez que arranquemos el sistema operativo, habrá que añadir la línea options modprobe usbserial vendor=0xaf0 product=0x5000 al fichero /etc/modprobe.conf.
NOTA: En mi equipo ha cargado bien siempre, por lo que este apartado puede no reflejar la realidad de cada usuario y se pone como ejemplo. De cualquier manera, los parámetros de mi tarjeta son: Vendor=0af0 ProdID=6300.
En el caso de que no se hubieran creado, se puede hacer con los siguientes comandos:
# mknod /dev/ttyUSB0 c 188 0 # mknod /dev/ttyUSB1 c 188 1 # mknod /dev/ttyUSB2 c 188 2 # mknod /dev/ttyUSB3 c 188 3
De no haber existido, está claro que no habrían podido ser asignados a los de la tarjeta, por lo cual sería necesario volver a introducirla con el driver correspondiente cargado en el sistema y cruzar los dedos.
Si no aparece nada raro en los logs, esto se puede dar por básicamente dos razones:
Esto se puede comprobar rápidamente verificando las rutas del sistema. Si se obtiene algo como lo siguiente está claro que ha fallado algo en la configuración porque no hay ruta:
# netstat -ar Kernel IP routing table Destination Gateway Genmask Flags MSS Window irtt Iface # /sbin/route Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface
Sin embargo, puede que alguna otra interfaz de red esté interfiriendo en la conexión que se trata de iniciar:
# netstat -anr Kernel IP routing table Destination Gateway Genmask Flags MSS Window irtt Iface 192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0 0.0.0.0 192.168.1.1 0.0.0.0 UG 0 0 0 eth0
Para que no haya interferencias indeseadas, lo más sencillo es deshabilitar la interfaz que da problemas. Sí, lo más elegante es que cada interfaz enrute por su propio camino. Para deshabilitarla:
# ifconfig eth0 down
Y estamos en el caso anterior en el que no hay ruta. Habrá que revisar que se ha seleccionado que sea la ruta por defecto:
En la siguiente conexión, aparecerá algo como:
# netstat -anr Kernel IP routing table Destination Gateway Genmask Flags MSS Window irtt Iface 10.x.x.x 0.0.0.0 255.255.255.255 UH 0 0 0 ppp0 0.0.0.0 10.x.x.x 0.0.0.0 UG 0 0 0 ppp0
Siendo 10.x.x.x la dirección IP que interpreta el sistema como remota, a la que nos conectamos.
Típicamente este tipo de conexiones trabaja con sus propios servidores DNS, dejando de lado la configuración habitual (/etc/resolv.conf) del sistema. Habrá que revisar que se ha seleccionado que use los DNS del proveedor:
Al realizar de nuevo la conexión, en el fichero /var/run/ppp/resolv.conf estarán los DNS proporcionados por el proveedor:
# cat /var/run/ppp/resolv.conf nameserver 139.7.30.125 nameserver 139.7.30.126
Típicamente las tarifas de este tipo de tarjetas son por volumen de conexión, así que es interesante tener un control fiable para no tener sorpresas en la factura. En este caso, he optado por hacerlo en dos pasos:
Lo más enrevesado es que, en /var/log/messages aparecen entradas duplicadas, a veces con la misma hora, a veces cambia un segundo, con lo que la contabilidad resulta alterada:
Jul 22 22:16:07 portdav pppd[3041]: Sent 1350054 bytes, received 4256019 bytes. Jul 22 22:16:08 portdav pppd[3041]: Sent 1350054 bytes, received 4256019 bytes. Jul 23 15:01:34 portdav pppd[3034]: Sent 643995 bytes, received 1538574 bytes. Jul 23 15:01:34 portdav pppd[3034]: Sent 643995 bytes, received 1538574 bytes. Jul 23 17:12:41 portdav pppd[3104]: Sent 1123096 bytes, received 6242923 bytes. Jul 23 17:12:42 portdav pppd[3104]: Sent 1123096 bytes, received 6242923 bytes.
No creo que sea necesario destripar el script ni decir que puede ser fácilmente mejorado. De hecho, espero comentarios y sugerencias:
$ cat ~/Informática/scripts/logs_ppp.sh #!/bin/bash stat_file="$HOME/stats_ppp.log" stat_file_raw="$HOME/stats_ppp.log_raw" temp="$HOME/ppp_temp" if [ -d "$temp" ]; then rm -rf $temp fi mkdir -p $temp/meses echo "** Estadísticas de conexión PPP v0.03 **" # Siempre se busca la info en los logs (descarto comprimidos por antiguos) for fichero in `ls /var/log/messages* | grep -iv gz`; do echo "Extrayendo información de $fichero" cat $fichero | grep Sent | sort | uniq >> $temp/borrar done # verifica si se ha encontrado alguna entrada if [ -s "$temp/borrar" ]; then while read linea; do echo "$linea" | awk '{print ($1" "$2" "$5" "$7" "$10)}' >> $temp/borrar2 done < $temp/borrar cat $temp/borrar2 | sort | uniq > $temp/logs_raw # si hay un histórico anterior hay que juntar los datos if [ -a "$stat_file_raw" ]; then echo "Sí hay histórico anterior, juntando datos..." conex_old=`cat $stat_file_raw | wc -l` cat $stat_file_raw >> $temp/logs_raw else echo "No se ha encontrado histórico anterior" conex_old=0 fi cat $temp/logs_raw | sort | uniq > $stat_file_raw conex_new=`cat $stat_file_raw | wc -l` ((conex_add=$conex_new-$conex_old)) echo "Total conexiones: $conex_new | Nuevas: $conex_add" # se comprueba cuantos meses diferentes hay echo "Contabilizando datos de conexión..." while read linea; do mes=`echo $linea | awk '{print $1}'` echo "$linea" | awk '{print ($4+$5)}' >> $temp/meses/$mes done < $stat_file_raw echo "+++ Actualizado a `date '+%H:%M:%S %d.%m.%Y'` +++" > $stat_file for datos_mes in `ls $temp/meses/`; do total_mes=0 total_mes_MB=0 while read datos_con; do ((total_mes+=$datos_con)) done < $temp/meses/$datos_mes ((total_mes_MB=$total_mes/(1024*1024))) #echo "Total mes (MB): $total_mes_MB" echo "$datos_mes: $total_mes_MB MB" >> $stat_file done else echo "No se ha encontrado ninguna entrada en los ficheros de log" fi echo "Borrando ficheros temporales..." rm -rf $temp exit
Únicamente que hay que ejecutarlo con permisos de root (problemas de permisos con /var/log/messages):
# sudo ~/Informática/scripts/logs_ppp.sh
Y la salida:
$ cat stats_ppp.log_raw Apr 23 pppd[3042]: 7144856 8662423 Apr 23 pppd[3209]: 87620 67547 Aug 10 pppd[2523]: 1003595 4466327 Aug 1 pppd[2404]: 177669 517877 Aug 1 pppd[2476]: 601152 1431489 Aug 1 pppd[3884]: 980884 12344204 Aug 2 pppd[2407]: 1711134 11296659 Aug 2 pppd[2423]: 211626 1846948 Aug 2 pppd[2450]: 495208 1205397 ... $ cat stats_ppp.log +++ Actualizado a 21:26:57 10.08.2006 +++ Apr: 15 MB Aug: 77 MB Jul: 142 MB Jun: 156 MB May: 181 MB
Utilizando la utilidad Minicom, primero enviar:
#¿está dado de alta el centro de SMS? AT+CSCA? +CSCA: "+49XXXXXXXXXX",145 OK #Algunos parámetros at+csmp=17,167,0,0 #se pone en modo texto AT+CMGF=1 AT+CMGS="+49YYYYYYYYYY" >No se te olviden los hielos!^Z
Y luego para recibir (hay que probarlo un poco más):
AT+CMTI:"SM",x Siendo X la posición del mensaje recibido AT+CMGR=X Leer SMS de la posición X AT+CMGD=X Borrar mensaje de la posición X
Algunos comandos útiles:
Comando AT Significado +CNMI Indicación de nuevo mensaje +CMGL Listar mensajes +CMGR Leer mensajes +CNMA Informa a la red de la recepción del mensaje +CMGS Enviar mensaje +CMSS Enviar mensaje guardado +CMGW Guardar mensaje en memoria +CMGD Borrar mensaje +CMGC Enviar comando +CMMS Modo multi-mensaje
Cosas que serían interesantes hacer para completar la guía:
Utilidades
Sobre tarjetas 3G/GPRS/WLAN:
Sobre tarjetas 3G/GPRS:
Sobre comandos SMS: