Acceso a internet mediante bluetooth.
| Sistema operativo |
Ubuntu 7.04 |
| Fecha |
27 de agosto de 2007 |
| Autor |
Amadeo Acera |
| Descripción |
Esta página describe los pasos que he seguido para conectarme a internet en Ubuntu 7.04 a través de bluetooth y utilizando un móvil como modem. |
Los pasos que he seguido han sido los siguientes:
- Emparejar el PC y el móvil.
- Averiguar el canal que el móvil utiliza como modem.
- Configurar el puerto serie (rfcomm).
- Configurar la conexión.
- Establecer la conexión.
1. Emparejar el PC y el móvil.
El proceso de 'emparejamiento' del PC y el móvil nos va a permitir utilizar el acceso bluetooth para establecer una comunicación, en este caso basada en una conexión serie (rfcomm), entre nuestro PC y el móvil que utilicemos. En Ubuntu, al menos en la versión 7.04, todo lo referente a bluetooth está instalado, con lo cual inicialmente no tenemos que hacer nada, salvo como en mi caso, que no dispongo en mi portátil de bluetooth integrado, conectar un disposito bluetooth USB. El procedimiento se inicia en el móvil siguiendo las instrucciones del terminal para descubrir los dispositivos bluetooth que se encuentran cercanos al él (consulta su manual para saber como se realiza este proceso). Yo utilizo un Sony Ericsson K610i donde los pasos son:
- Menú -> Ajustes -> Conectividad -> Bluetooth.
- Activar (si no está ya activado).
- Mis dispositivos -> Nuevo dispositivo -> Añadir.
- Seleccionar nuestro PC de la lista mostrada por el móvil.
En el último paso el móvil pregunta si queremos unir el PC a la lista de dispositivos de confianza (emparejamiento). Al decir que sí tenemos que introducir una clave tanto en el móvil como en el PC. Esta clave tiene que ser la misma en ambos sistemas. En este punto tenemos dos opciones, o tener el PC configurado con una clave por defecto (que será la que hay que introducir en el móvil), o bien que nos la pregunte cada vez que emparejamos un dispositivo. Dichas opciones se indican en el fichero '/etc/bluetooth/hcid.conf':
...
# HCId options
options {
# Automatically initialize new devices
autoinit yes;
# Security Manager mode
# none - Security manager disabled
# auto - Use local PIN for incoming connections
# user - Always ask user for a PIN
#
security auto;
# Pairing mode
# none - Pairing disabled
# multi - Allow pairing with already paired devices
# once - Pair once and deny successive attempts
pairing multi;
# Default PIN code for incoming connections
passkey "1234";
}
...
En el primer caso hay que indicar 'security auto;' y 'passkey "1234";' (obviamente se puede poner otra clave). Con esto le estamos diciendo al PC que se empareje automaticamente y que la clave a introducir en el otro dispositivo es "1234". En el segundo caso tenemos algo más de trabajo, puesto que hay que epecificar qué aplicación utilizará el PC para solicitar la clave, como por ejemplo '/usr/bin/bluez-pin'. Para activar esta aplicación ejecutatermos en segundo plano el siguiente comando (también se podría poner en el 'script' de arranque):
|
passkey-agent --default /usr/bin/bluez-pin&
|
Seguidamente indicaremos en el fichero '/etc/bluetooth/hcid.conf' esta opción escribiendo 'security user;'. De esta forma el PC nos solicitará la clave que hemos introducido en el otro dispositivo.
Después de realizar todos los cambios hay que reiniciar el servicio de bluetooth para que sean efectivos:
|
/etc/init.d/bluetooth restart
|
2. Averiguar el canal que el móvil utiliza como modem.
Un móvil proporciona diferentes servicios a través de su conexión bluetooth. Uno de ellos es utilizar el móvil como modem a través de un interface de puerto serie que en este caso se llama 'rfcomm', y que permite ser utilizado por las aplicaciones como un puerto serie más de nuestro PC. Para utilizar dichos servicios tenemos que saber en qué canal se ofrece cada uno, por consiguiente el próximo paso consiste en averiguar cuál es el canal que nuestro móvil utiliza para el servicio de modem. Para averiguar dicho canal tenemos que comunicarnos con el móvil y para ello necesitaremos su dirección (es como la MAC en un dispositivo ethernet). La forma de obtenerla es mediante el siguiente comando:
La respuesta será de esta forma:
|
00:19:63:0E:EF:7F K610i-Amadeo
|
Reconoceremos nuestro móvil por el nombre que aparece al final de cada línea (este nombre se establece en el móvil). La dirección será la primera parte de la línea, es decir, '00:19:63:0E:EF:7F'.
Una vez que conocemos la dirección, solicitaremos al móvil que nos envíe información sobre los servicios que ofrece. Esto lo haremos con el comando:
|
sdptool browse 00:19:63:0E:EF:7F
|
Como veremos la respuesta puede ser muy larga (dependiendo de la cantidad de servicios que ofrezca el móvil), pero la parte importante para nuestro caso es:
...
Service Name: Dial-up Networking
Service RecHandle: 0x10001
Service Class ID List:
"Dialup Networking" (0x1103)
"Generic Networking" (0x1201)
Protocol Descriptor List:
"L2CAP" (0x0100)
"RFCOMM" (0x0003)
Channel: 1
Profile Descriptor List:
"Dialup Networking" (0x1103)
Version: 0x0100
...
donde podemos comprobrar que el servicio de modem 'Dial-up Networking' se ofrece en el canal 1 'Channel: 1'.
3. Configurar el puerto serie (rfcomm)
Como ya hemos visto, cuando el PC necesita utilizar el puerto serie 'rfcomm' para comunicarse con el modem del móvil tiene que saber qué canal utilizar. Esta indicación se realiza en el fichero '/etc/bluetooth/rfcomm.conf'. Este fichero lo editaremos para indicar en él los datos que conocemos hasta ahora:
#
# RFCOMM configuration file.
#
rfcomm0 {
# # Automatically bind the device at startup
bind yes;
#
# # Bluetooth address of the device
device 00:19:63:0E:EF:7F;
#
# # RFCOMM channel for the connection
channel 1;
#
# # Description of the connection
comment "Bluetooth modem K610i.";
}
Con esta información nuestro PC sabrá perfectamente utilizar el modem de nuestro móvil ('00:19:63:0E:EF:7F') mediante el 'canal 1'.
4. Configurar la conexión.
Hasta ahora hemos establecido todos los datos necesarios para poder utilizar nuestro acceso bluetooth como si fuera un puerto serie. Pero ahora tenemos que configurar la conexión a internet. Yo he utilizado la aplicación 'pppconfig' que es un guión interactivo que nos ayuda a establecer dicha conexión. Los datos que indico seguidamente son los necesarios para mi conexión GPRS a través de Movistar. Para el resto de proveedores entiendo que los datos necesarios son también conocidos puesto que estos no dependen de si el tipo de conexión es bluetooth o no, y serían los utilizados para conectarse a internet mediante cualquier otro tipo de acceso. Teniendo esto en cuenta mis datos son los siguientes:
- El nombre de la conexión. Este nombre identifica la conexión y lo utilizaremos posteriormente para iniciarla o detenerla. En mi caso se llama simplemente 'movistar'.
- El número a marcar. Para una conexión GPRS (que es la que utilizo) el número es de la forma '*99***1#' donde el '1' indica el ID que tenemos en el móvil para la conexión a internet. En mi móvil es el 'ID=1' por ello pongo '1' (la forma de ver el ID en el K610i es: Menú -> Ajustes -> Conectividad -> Comunicación datos -> Cuentas de datos -> Marcar la cuenta -> Más -> Info. de cuenta -> ID externo)
- El puerto a utilizar. Aquí seleccionaremos manualmente el dispositivo '/dev/rfcomm0'.
Llegados a este punto reiniciaremos el PC para que todos los datos que han sido establecidos tomen efecto. Aunque parece ser que se pueden reiniciar los procesos correspondientes sin necesidad de reiniciar el PC, a mi me dio problemas, por ello recomiendo un reinicio del PC.
5. Establecer la conexión.
Una vez que el PC está de nuevo operativo, vamos a comprobar que el puerto serie 'rfcomm0' está listo. Para ello basta con ver que el dispositivo '/dev/rfcomm0' existe.
La conexión la realizaremos mediante la aplicación 'pon' que hace uso de la configuración realizada con 'pppconfig'. Para establecer la conexión indicaremos a 'pon' el nombre de dicha conexión, el cual fue establecido con 'pppconfig':
En este momento el móvil debería estar iniciando los procedimientos de conexión y una vez terminados ya estaría listo. Abre el navegador y pruébalo.
Para cerrar la conexión utilizaremos: