Conectar el ordenador a Internet usando un móvil GRPS/3G y Bluetooth (Parte I)

ACTUALIZACIÓN: Estas instrucciones sirven para conectar a Internet usando el perfil Buetooth DUN (Dialup Networking) del teléfono. Si tu teléfono no ofrece este perfil pero en cambio sí ofrece el perfil Bluetooth PAN (Personal Area Network), consulta la segunda parte de las instrucciones. Un ejemplo de teléfonos que no ofrecen DUN pero sí PAN, son los que tienen instalado Windows Mobile 6.

En esta guía explico como conectar el ordenador a Internet a través de un teléfono móvil con capacidades GPRS.

Requisitos:

  • Adaptador Bluetooh (Bluetooth Dongle). En mi caso he probado con éxito estos.
  • Teléfono móvil con capacidad de actuar como puerta de enlace de Internet a través de Bluetooth, es decir, un móvil que incluya módem GPRS o 3G y tenga Bluetooh. En mi caso tengo un Nokia 6230i.
  • Cobertura de transmisión de datos GPRS de tu operador de telefonía. En mi caso uso Yoigo.
  • Kernel 2.6 o superior

Configurar el teléfono

Antes de ponerse a configurar el ordenador, es conveniente (aunque no necesario) comprobar que efectivamente podemos conectarnos a Internet con nuestro teléfono y nuestro operador. Los datos para navegar por Internet con tu móvil te los tiene que proporcionar tu operador. En mi caso, aquí tienes explicados los pasos para navegar con el móvil usando GPRS y Yoigo.

Para configurar el módem del teléfono tienes que ponerte de nuevo en contacto con tu operador. Ellos te guiarán con las opciones de tu teléfono y los datos de conexión. En mi caso la configuración para Yoigo del módem GPRS de mi Nokia 6230i es realmente sencilla:

En el menú del teléfono elegir

Menú » Ajustes » Conectividad » GPRS » 
    Conexión GPRS » Cuando necesario
    Ajustes del módem GPRS » 
        Punto de acceso activo » Yoigo por GPRS
        Punto de acceso de GPRS » internet

Configurar Bluetooth

Esto es solo un resumen de las configuraciones y programas que necesitamos para hacer funcionar el Bluetooh. Si deseas más información puedes consultar la Guía oficial de Bluetooth de Gentoo.

Opciones del kernel:

Networking --->
 [*] Networking support
    <M> Bluetooth subsystem support  --->
      <M>   L2CAP protocol support
      <M>   RFCOMM protocol support
        [*]     RFCOMM TTY support
      <M>   HIDP protocol support
      Bluetooth device drivers  ---> (elegir el módulo necesario para tu dongle. En mi caso es el siguiente)
        <M> HCI USB driver 

Una vez recompilado el kernel hay que instalar las utilidades Bluetooth BlueZ

# emerge -av bluez-utils

Para configurar BlueZ editar /etc/bluetooth/hcid.conf

options {
 autoinit yes;
 security auto;
 pairing multi;
 pin_helper /etc/bluetooth/pin-helper;
 # Si usas KDE puedes usar como pin_helper "/usr/lib/kdebluetooth/kbluepin" o "/usr/lib64/kdebluetooth/kbluepin"
 # pero en ese caso debe estar ejecutándose kbluetoothd o no verás los mensajes de solicitud de PIN
}

device {
 name "Gentoo";
 class 0x3e0100;
 iscan enable; pscan enable;
 lm accept;
 lp rswitch,hold,sniff,park;
}

Introduce en /etc/bluetooth/pin el PIN que quieras usar para emparejar tus dispositivos.
Ya estamos en condiciones de iniciar el servicio Bluetooth:

# /etc/init.d/bluetooth start

Si quieres que se inicie de forma automática al encender el ordenador

# rc-update add bluetooth default

Para comprobar que todo está funcionando ejecutar

# hciconfig -a
hci0: Type: USB
    BD Address: 00:08:1B:85:7A:5B ACL MTU: 192:8 SCO MTU: 64:8
    UP RUNNING PSCAN ISCAN
    ...

Si aparece como UP RUNNING significa que está todo bien.

Configurar RFCOMM

Para establecer una comunicación por radio frecuencia (RFCOMM) antes debemos saber la dirección del dispositivo al que nos queremos conectar, en nuestro caso, el teléfono móvil. Para averiguarla, estando el Bluetooth de nuestro teléfono activado, ejecutar

# hcitool scan
Scanning ...
    00:16:4E:6A:17:30    Nokia 6230i

Una vez conocida, editar /etc/bluetooth/rfcomm.conf

rfcomm0 {
    # Crear el dispositivo /dev/rfcomm0 al iniciar el servicio
    bind no;
    # De momento lo ponemos en "no" para poder probar, luego lo cambiamos

    # Dirección del dispositivo al que se quiere conectar
    device 00:16:4E:6A:17:30;

    # RFCOMM channel for the connection
    channel 1;

    # Description of the connection
    comment "Nokia 6230i Yoigo";
}

Si dispones de varios teléfonos móviles, puedes crear distintas secciones para cada uno, nombrándolas como rfcomm1, rfcomm2, etc.

Por defecto el servicio Bluetooth no activa rfcomm, para que se active al lanzar el servicio editar /etc/conf.d/bluetooth y establecer

RFCOMM_ENABLE=true

Reiniciar el servicio para que los cambios tengan efecto

# /etc/init.d/bluetooth restart

y comprobar que nos podemos conectar por RFCOMM al móvil:

# rfcomm connect 0
Connected /dev/rfcomm0 to 00:16:4E:6A:17:30 on channel 1
Press CTRL-C for hangup

Si todo ha ido bien, editar de nuevo /etc/bluetooth/rfcomm.conf, cambiar bind a Yes y reiniciar el servicio Bluetooth

# /etc/init.d/bluetooth restart

Configurar PPP

Opciones del kernel:

Device Drivers --->
 Network device support  --->
    <M> PPP (point-to-point protocol) support
    <M> PPP support for async serial ports
    <M> PPP Deflate compression (opcional pero recomendada si tu proveedor soporta compresión)
    <M> PPP BSD-Compress compression (opcional pero recomendada si tu proveedor soporta compresión)

Cargar el módulo PPP necesario

# modprobe -v ppp_async

Si queremos que se cargue de forma automática, añadir ppp_async al archivo /etc/modules.autoload.d/kernel-2.6.

Instalar las aplicaciones PPP y wvdial

# emerge ppp wvdial

Editar el archivo /etc/ppp/peers/wvdial para que tenga este aspecto

# Nombre
name wvdial

# El teléfono no requiere autenticarse
noauth

# Añadir el interfaz PPP como ruta por defecto de la tabla de enrutado IP
defaultroute

# PPPD no debe proponer ninguna direccion IP al otro 'peer'
noipdefault

# Usar los DNS devueltos por el servidor
usepeerdns

# Si usas Yoigo y tienes problemas al enviar datos,
# prueba bajando el valor de MTU entre 472 y 1500
mtu 472

Crear el archivo /etc/wvdial.conf con el contenido

[Dialer Defaults]
Modem = /dev/rfcomm0
Baud = 460800
Init1 = ATZ
Init2 = ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0
Init3 = AT+CGDCONT=1,"IP","internet"
Phone = *99***1#
ISDN = 0
Username = ''
Password = ''

Conectarse

# wvdial
--> WvDial: Internet dialer version 1.56
--> 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","internet"
AT+CGDCONT=1,"IP","internet"
OK
--> Modem initialized.
--> Sending: ATDT*99***1#
--> Waiting for carrier.
ATDT*99***1#
CONNECT
~[7f]}#@!}!} } }2}#}$@#}!}$}%\}"}&} }*} } g}%~
--> Carrier detected. Waiting for prompt.
~[7f]}#@!}!} } }2}#}$@#}!}$}%\}"}&} }*} } g}%~
--> PPP negotiation detected.
--> Starting pppd at Thu Feb 15 04:37:29 2007
--> Pid of pppd: 8614
--> Using interface ppp0
--> local IP address 217.168.0.162
--> remote IP address 10.6.6.6
--> primary DNS address 10.8.0.20
--> secondary DNS address 10.8.0.21

Disfruta de tu conexión inalámbrica en casi cualquier parte.

PD: Gracias Yoigo :)