Bluetooth es una tecnología de radio que permite conectar distintos dispositivos, teléfonos móviles, PDAs, dispositivos periféricos o componentes del sistema como el teclado o el ratón y portátiles entre sí. El nombre tiene su origen en el rey danés Harold Blatand (en inglés “Harold Bluetooth”), que vivió en el siglo X en la región escandinava y logró unificar diversas fracciones enfrentadas. El logotipo de Bluetooth se basa en las runas de sus iniciales: “H” (semejante a una estrella) y “B”.
Bluetooth se diferencia de IrDA en algunos aspectos importantes: por una parte, los distintos dispositivos no deben “verse” necesariamente; por otra, varios dispositivos pueden agruparse y formar redes completas. No obstante, actualmente sólo pueden alcanzarse tasas de datos de hasta 720 Kbps como máximo (al menos en la versión actual 1.2). En teoría, con Bluetooth es posible establecer conexiones entre dispositivos separados por una pared. En la práctica, esto depende en gran medida de la pared y de la clase de dispositivo. Esta última determina el alcance máximo de la transmisión, que varía de diez a cien metros dependiendo de cuál de las tres clases se utilice.
A continuación se describe a grandes rasgos el funcionamiento de Bluetooth, explicando temas como los requisitos de software, la interacción de Bluetooth con el sistema y el funcionamiento de los perfiles Bluetooth.
Para poder utilizar Bluetooth es necesario contar con un adaptador
Bluetooth (integrado en el dispositivo o bien como llave de hardware externa o
dongle), controladores y la pila de protocolo para Bluetooth (“Bluetooth
Protocol Stack”). El kernel de Linux contiene ya los controladores
básicos para el uso de Bluetooth. En cuanto a la pila de protocolo se utiliza
el sistema Bluez. Asimismo, los paquetes básicos bluez-libs y bluez-utils deben estar instalados para que las
distintas aplicaciones funcionen con Bluetooth. Dichos paquetes proporcionan
servicios o programas de servicio que el sistema necesita. Para algunos
adaptadores (Broadcom, AVM
BlueFritz!) se requiere además el paquete bluez-firmware. El paquete bluez-cups posibilita la impresión a través de
conexiones Bluetooth.
Los sistemas Bluetooth están formados por cuatro capas interdependientes, cada una de las cuales cumple una función determinada:
El adaptador y un controlador adecuado que garantiza el soporte en el kernel Linux.
El control del sistema Bluetooth.
Servicios que proporcionan diversas funciones y que están controlados a través de los archivos de configuración.
Programas que ponen al alcance del usuario las funciones proporcionadas por los daemons y que les permiten controlar dichas funciones.
Al conectar un adaptador Bluetooth, el controlador correspondiente se carga a través del sistema hotplug. Una vez que el controlador está cargado, se comprueba por medio de los archivos de configuración si Bluetooth debe iniciarse. En caso afirmativo, se determina qué servicios han de iniciarse y, en función de estos, se activan los daemons correspondientes. El sistema comprueba la existencia de adaptadores Bluetooth durante la instalación. Si se encuentra uno o varios, Bluetooth es activado. En caso contrario, el sistema Bluetooth se desactiva. Si se añade algún dispositivo Bluetooth con posterioridad, debe ser activado manualmente.
Los servicios en Bluetooth se definen por medio de perfiles. Así por ejemplo, en la versión estándar de Bluetooth existen perfiles para la transferencia de archivos (perfil “File Transfer”), la impresión (perfil “Basic Printing”) y las conexiones en red (perfil “Personal Area Network”).
Para que un dispositivo pueda utilizar un servicio de otro, ambos deben entender el mismo perfil. Desgraciadamente, ni la documentación ni la caja del dispositivo incluyen con frecuencia esta información. Otra dificultad añadida es que algunos fabricantes respetan escrupulosamente la definición de cada perfil y otros no. A pesar de ello, en la práctica los dispositivos consiguen “entenderse” por regla general.
En el texto siguiente, los dispositivos locales son aquellos conectados físicamente al ordenador. Los dispositivos a los que sólo puede accederse a través de conexiones inalámbricas se denominarán en adelante dispositivos remotos.
A continuación se describe la configuración de Bluetooth. Entre los temas tratados cabe destacar los archivos de configuración relevantes, las herramientas de configuración necesarias y la posibilidad de configurar Bluetooth manualmente o con YaST.
El módulo Bluetooth de YaST (ver Figura 17.2, “YaST: configuración de Bluetooth”) le permite configurar el soporte Bluetooth. Tan pronto como hotplug detecta un adaptador Bluetooth en el sistema (por ejemplo durante el arranque o al conectarlo), Bluetooth se inicia con la configuración definida en este módulo.
En el primer paso de la configuración puede definir si los servicios
Bluetooth han de iniciarse en el sistema. Si ya ha activado los servicios
Bluetooth puede configurar dos cosas. En primer lugar el , que es el nombre mostrado por otros dispositivos cuando
el ordenador es detectado. Para introducirlo puede utilizar dos comodines:
%h, que sustituye al nombre de máquina (útil en los casos en
los que este se asigne dinámicamente por DHCP) y %d, que
sustituye al nombre de interfaz (de utilidad sólo si dispone de varios
adaptadores Bluetooth en la máquina). Por ejemplo, si introduce en la casilla
el nombre Laptop %h y DHCP asigna a la máquina el nombre
unit123, otros dispositivos remotos mostrarán el equipo como
Laptop unit123.
El segundo parámetro, , afecta al comportamiento del sistema local cuando un dispositivo remoto intenta conectarse con el mismo. La diferencia radica en el uso del PIN. Existen varias posibilidades: permitir a cualquier dispositivo la conexión sin PIN o, en caso de que el PIN sea necesario, determinar cómo se elige. Puede introducir un PIN (guardado en un archivo de configuración) en la casilla de texto disponible a tal efecto. Cuando un dispositivo intente conectarse, utilizará primero este PIN. Si el mecanismo falla, se aplica la opción sin PIN. El nivel más alto de seguridad lo proporciona la tercera opción “Pedir siempre el PIN al usuario”. Esta le permite utilizar distintos PINS para dispositivos (remotos) diferentes.
Pulse el botón para acceder al diálogo de selección y configuración detallada de los servicios ofrecidos (o perfiles, como se denominan en Bluetooth). En el diálogo se muestra una lista de todos los servicios disponibles, los cuales puede activar o desactivar con los botones o . Pulsando se activa una ventana emergente en la que es posible asignar distintos argumentos al servicio (daemon) seleccionado. Modifique las opciones predeterminadas sólo si conoce bien el servicio en cuestión. Después de configurar el daemon, salga de este diálogo con .
De vuelta en el diálogo principal, pulse el botón para acceder al diálogo de seguridad. En él puede definir, entre otras, la configuración relacionada con la criptografía así como los métodos de autenticación y de sondeo. Una vez definida la configuración de seguridad, regresará al diálogo principal. Cuando salga de este diálogo con , el sistema Bluetooth estará listo para el uso.
Desde el diálogo principal también es posible acceder a la ventana de . Los dispositivos Bluetooth se dividen en varias “Clases de dispositivo”. En este diálogo puede escoger la que corresponda a su equipo como “equipo de sobremesa” o “portátil”. La clase de dispositivo no es muy importante a diferencia de la “Clase de servicio”, que también se define aquí. En ocasiones, los dispositivos Bluetooh remotos como los teléfonos móviles sólo permiten algunas funciones si en el sistema se ha detectado la clase de servicio adecuada. Este suele ser el caso de teléfonos móviles que esperan una clase llamada “Transferencia de objetos” antes de permitir la transferencia de archivos desde o hacia el ordenador. Aunque puede elegir varias clases, no se recomienda elegirlas todas “por si acaso”. La selección predeterminada resultará adecuada casi siempre.
Si desea utilizar Bluetooth para establecer una red, active el
en el diálogo y utilice la opción
para definir el modo del daemon. Para que la conexión de red Bluetooth
funcione, pand debe operar en el modo de escucha
() y el conector en el de búsqueda (modo
). El modo predeterminado es el de escucha. Si
es necesario, ajuste el modo del pand local.
Asimismo, utilice el módulo de YaST
para configurar la interfaz bnepX (X
representa el número de dispositivo en el sistema).
Los archivos de configuración para los distintos componentes del sistema
Bluez se recogen en el directorio /etc/bluetooth. La única excepción la
constituye el archivo utilizado para iniciar los componentes,
/etc/sysconfig/bluetooth, el cual es procesado por el
módulo de YaST.
Los archivos de configuración que se describen a continuación sólo pueden
ser modificados por root.
Actualmente no existe ninguna interfaz gráfica para configurar
todos los parámetros. Los más importantes pueden definirse
mediante el módulo Bluetooth de YaST que se describe en la Sección 17.2.2.1, “Configuración de Bluetooth con YaST”. Las demás opciones de configuración
sólo son relevantes para usuarios experimentados con necesidades
específicas. Para el resto, las opciones predeterminadas serán suficientes en
la mayoría de los casos.
Un número de identificación personal (PIN) constituye la primera medida de
protección frente a conexiones no deseadas. Los teléfonos móviles suelen
preguntar este PIN en el primer contacto (o al configurar en el teléfono el
contacto con el dispositivo). Para que dos dispositivos puedan comunicarse
entre sí, ambos deben identificarse con el mismo PIN. Este se encuentra
almacenado en el ordenador en el archivo
/etc/bluetooth/pin.
![]() | Seguridad en las conexiones Bluetooth |
|---|---|
El uso de PINs no garantiza que la conexión entre dos dispositivos esté libre de escuchas por parte de terceros. Tenga presente que tanto la autenticación como la codificación de conexiones Bluetooth están desactivadas en la configuración predeterminada. Al activar ambas opciones puede ocurrir que se produzcan problemas en la comunicación con algunos dispositivos Bluetooth. | |
En el archivo de configuración
/etc/bluetooth/hcid.conf es posible modificar algunas
opciones de configuración tales como nombres de dispositivos y modos de
seguridad. Los valores predeterminados de las opciones de configuración
resultarán adecuados en casi todas las ocasiones. El archivo incluye
comentarios que describen los parámetros posibles en las distintas
opciones. Aquí nos limitaremos a mencionar dos de ellas.
El archivo contiene dos secciones llamadas options y
device. La primera incluye información de carácter general
que es utilizada por hcid durante el inicio. La segunda contiene opciones de
configuración para cada uno de los dispositivos Bluetooth locales.
Una de las principales opciones de configuración de la sección
options es security auto;. Si se le ha
asignado el valor auto, hcid intenta usar el PIN local para
las conexiones entrantes. Si este proceso falla, usa el valor predeterminado
Ninguno y establece la conexión de todos modos. Para
mantener un cierto nivel de seguridad se recomienda cambiar el valor
predeterminado a user para que en cada conexión se le pida
al usuario el PIN.
En la sección device se puede especificar el nombre con
el que el ordenador será mostrado en el otro extremo de la conexión. También
se define la clase de dispositivo (sobremesa,
portátil, servidor, etc.) y se activa o
desactiva la autenticación y la codificación.
El uso de Bluetooth sólo es posible gracias a la combinación de varios
servicios. Como mínimo es necesario que dos daemons se estén ejecutando en
segundo plano: hcid (Host Controller
Interface), el cual actúa de interfaz con el dispositivo
Bluetooth y lo controla, y sdpd
(Service Discovery Protocol), que informa a un
dispositivo remoto de los servicios que ofrece el ordenador. Tanto
hcid como sdpd pueden
iniciarse — en caso de que no haya sucedido automáticamente al
arrancar el sistema — con el comando
rcbluetooth start, que debe ser
ejecutado como usuario root.
A continuación se describen las principales herramientas shell que pueden utilizarse para trabajar con Bluetooth. Aunque ya existen diversos componentes gráficos para manejar Bluetooth, se recomienda echar un vistazo a estos programas.
Algunos comandos sólo pueden ejecutarse como usuario root, como por ejemplo
l2ping ,
con el que se puede probar la conexión a un dispositivo remoto.dirección_dispositivo
Por medio de hcitool es posible averiguar
si se han encontrado dispositivos locales y/o remotos. El comando
hcitool dev muestra el propio
dispositivo. Para cada dispositivo encontrado localmente se muestra una
línea con la siguiente estructura: nombre_interfaz
dirección_dispositivo.
Para detectar dispositivos remotos puede utilizarse el comando
hcitool inq. La salida de este
comando muestra tres valores por cada dispositivo encontrado: la dirección
y la clase de dispositivo y una diferencia horaria. El valor más importante
es la dirección de dispositivo, que es usada por otros comandos para
identificar el dispositivo destino. La diferencia horaria es sólo
interesante desde el punto de vista técnico. En cuanto a la clase de
dispositivo, en ella se recoge el tipo de dispositivo y de servicio en
forma de valor hexadecimal.
Con hcitool name
se puede averiguar el nombre de un
dispositivo remoto. Si se trata por ejemplo de otro ordenador, la clase y
nombre de dispositivo mostrados deben coincidir con la información recogida
en el archivo dirección_dispositivo/etc/bluetooth/hcid.conf de este
ordenador. Las direcciones de dispositivos locales generan un mensaje de
error.
/usr/sbin/hciconfig proporciona información adicional
sobre el dispositivo local. Al ejecutar hciconfig sin
argumentos se muestran datos del dispositivo como su nombre
(hciX), la dirección física de dispositivo (un número de
12 cifras con el formato 00:12:34:56:78) e información
sobre la cantidad de datos transmitidos.
hciconfig hci0 name
muestra el nombre con el que el ordenador responde a solicitudes de
dispositivos remotos. hciconfig no sólo sirve para ver
la configuración del dispositivo local sino también para modificarla. Por
ejemplo, el comando
hciconfig hci0 name TEST
cambia el nombre a TEST.
El programa sdptool proporciona información
sobre los servicios ofrecidos por un dispositivo determinado. El comando
sdptool browse
muestra todos los servicios de un
dispositivo, mientras que sdptool dirección_dispositivosearch
permite buscar un servicio concreto.
Este comando pregunta a todos los dispositivos disponibles por el servicio
deseado. Si este es ofrecido por alguno de los dispositivos, el programa
proporciona al usuario el nombre completo del servicio ofrecido por el
dispositivo junto con una breve descripción del mismo. Al ejecutar
sdptool sin ningún parámetro se muestra una lista de
todas las abreviaturas de servicios posibles.abreviatura_servicio
Al introducir la URL bluetooth:/,
Konqueror muestra los dispositivos Bluetooth
locales y remotos. Pulsando dos veces con el ratón sobre un dispositivo
aparece una lista con los servicios ofrecidos por el mismo. Cuando se mueve
el ratón sobre uno de los servicios, se muestra en la ventana de estado de
la parte inferior del navegador el perfil utilizado para dicho servicio. Al
pulsar sobre un servicio se abre una ventana en la que puede elegir diversas
acciones: guardar, utilizar el servicio (para ello debe iniciarse una
aplicación) o cancelar la acción. Aquí también puede definir que la ventana
no vuelva a mostrarse y que siempre se ejecute la acción seleccionada. Tenga
en cuenta que algunos servicios (todavía) no están soportados y que para
otros puede ser necesario añadir algunos paquetes.
A continuación se presentan dos ejemplos típicos de posibles escenarios Bluetooth. El primero ilustra una conexión Bluetooth entre dos ordenadores y el segundo entre un ordenador y un teléfono móvil.
En el primer ejemplo se va a establecer una conexión de red entre dos
ordenadores C1 y C2. Las
direcciones de dispositivo Bluetooth de estos ordenadores son
baddr1 y baddr2. Estas
direcciones pueden averiguarse en ambos ordenadores con la ayuda del
comando hcitool dev como se ha
descrito arriba. Al final del proceso, los ordenadores han de poder verse
con la dirección IP 192.168.1.3
(C1) y 192.168.1.4
(C2).
La conexión Bluetooth se establece por medio del programa pand
(personal area networking). Los siguientes comandos
deben ser ejecutados por root. La
siguiente descripción se concentra en las acciones específicas de Bluetooth
y no ofrece una explicación detallada del comando de red ip.
Introduzca el comando pand -s para iniciar pand
en C1. A continuación puede establecer una conexión en
C2 introduciendo el comando pand -c
. Si ejecuta el comando
ip baddr1link show en una de las máquinas
para ver la lista de interfaces de red disponibles, obtendrá una entrada como la siguiente:
bnep0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop qlen 1000 link/ether 00:12:34:56:89:90 brd ff:ff:ff:ff:ff:ff
En lugar de 00:12:34:56:89:90 aparecerá la dirección
local del dispositivo baddr1 o bien
baddr2. Ahora es necesario asignar una dirección IP a esta
interfaz y seguidamente activarla. Para ello se ejecutan por ejemplo los
siguientes comandos en C1:
ip addr add 192.168.1.3/24 dev bnep0 ip link set bnep0 up
o de forma análoga en C2
ip addr add 192.168.1.4/24 dev bnep0 ip link set bnep0 up
Ya es posible acceder a C1 desde
C2 con la dirección IP 192.168.1.3.
El comando ssh 192.168.1.4 le
permite acceder a C2 desde C1
(siempre que sshd esté ejecutándose en
C2, como es el caso en la configuración estándar de
SUSE LINUX). El comando
ssh 192.168.1.4 también puede
ejecutarse como usuario “normal”.
En el segundo ejemplo, vamos a transmitir una imagen creada con un
teléfono móvil con cámara a un ordenador sin incurrir en gastos adicionales
como sería por ejemplo el envío de un mensaje multimedia. Tenga en cuenta
que cada teléfono móvil dispone de una estructura de menús diferente, pero
el proceso será parecido en casi todos ellos. En caso necesario, consulte
las instrucciones del teléfono. A continuación se describe la transmisión
de una fotografía desde un teléfono Sony Ericsson a un ordenador portátil.
Para ello es necesario que el servicio Obex-Push
esté disponible en el ordenador y que el ordenador permita el acceso del
teléfono móvil. En el primer paso se activará el servicio en el portátil.
Esto se realiza con el daemon opd incluido en el
paquete bluez-utils. Para iniciar
este daemon, ejecute el comando:
opd --mode OBEX --channel 10 --daemonize --path /tmp --sdp
En este comando merece la pena destacar dos parámetros: el parámetro
--sdp registra el servicio en
sdpd y --path /tmp comunica al
programa dónde debe almacenar los datos recibidos (en este caso en
/tmp). Aquí también es posible
introducir otras rutas. Para ello sólo necesita permiso de escritura en el
directorio especificado.
A continuación, el teléfono debe “conocer” al ordenador.
Con este fin, busque en el teléfono el menú y
seleccione la entrada . Si es necesario, pulse
antes de escoger el punto . Seleccione y
espere a que el teléfono encuentre el portátil. Cuando se encuentra un
dispositivo, este se muestra con su nombre en la pantalla del móvil.
Seleccione el dispositivo que corresponda al portátil. A continuación se le
preguntará por el PIN (aquí debe introducir el PIN que aparece en
/etc/bluetooth/pin). Una vez introducido el PIN
correcto, el teléfono y el portátil se “conocen” y pueden
intercambiar datos. Salga del menú y pase al menú de fotografías.
Seleccione la imagen que desea transmitir y pulse la tecla
. Pulsando en el menú que
aparece a continuación, podrá elegir la forma de envío: seleccione
. Ahora debería poder definir el portátil como
dispositivo destino. Tras efectuar esta selección, la fotografía es
transmitida al portátil y guardada en el directorio especificado al
ejecutar opd. Este procedimiento también puede
emplearse para trasmitir otro tipo de datos, como por ejemplo un archivo de
música.
En caso de problemas de conexión se recomienda comprobar los siguientes puntos. No obstante, tenga siempre presente que el problema puede residir en cualquiera de los extremos de la conexión o, en el peor de los casos, en ambos. Si es posible, reconstruya el problema con un dispositivo Bluetooth distinto para excluir así fallos en el dispositivo:
dev?
Si el dispositivo local no aparece en la salida de este comando, es
posible que hcid no se haya iniciado o que el dispositivo no sea detectado como
dispositivo Bluetooth. Esto puede obedecer a distintas causas, como que el
dispositivo esté estropeado o falte el controlador adecuado. En el caso de
portátiles con Bluetooth incorporado suele haber un interruptor para
dispositivos operados por radio como WLAN y Bluetooth. Consulte en la
documentación del fabricante si el portátil dispone de un interruptor de este
tipo. Reinicie el sistema Bluetooth con rcbluetooth
restart y examine el archivo
/var/log/messages para ver si hay mensajes de error.
En este caso instale bluez-bluefw y reinicie el sistema
Bluetooth con
rcbluetooth restart.
inq otros
dispositivos?En este caso vuelva a probar de nuevo; puede que hubiera algún problema con la conexión la primera vez. La banda de frecuencia de Bluetooth es utilizada también por otros dispositivos.
Compruebe si el PIN en /etc/bluetooth/pin y el
PIN del dispositivo destino coinciden.
Intente iniciar la conexión desde otro dispositivo y compruebe si el nuevo dispositivo “ve” al ordenador.
Si el primer ejemplo (conexión de red) no funciona puede deberse a
distintas causas. Por ejemplo, puede ser que uno de los dos ordenadores
no entienda el protocolo ssh. Pruebe a
ejecutar el comando
ping 192.168.1.3 o
ping 192.168.1.4. En caso de
obtener respuesta, compruebe si sshd está
activo. Otra posible causa es que ya disponga de otras direcciones que
entren en conflicto con las direcciones utilizadas en el ejemplo
192.168.1.X. Repita el proceso con otras direcciones,
como por ejemplo 10.123.1.2 y
10.123.1.3.
Vaya al menú , seleccione el dispositivo correspondiente y consulte la . Si en ella no aparece Obex-Push (aún después de actualizar la lista), la causa del problema es opd en el portátil. ¿Se ha iniciado opd? ¿Tiene permiso de escritura en el directorio especificado?
Si ha instalado el paquete obexftp, la transmisión de datos funciona
en algunos teléfonos con el comando
obexftp -b . Se han probado distintos
modelos de las marcas Siemens y Sony Ericsson y funcionan. Vea a este
respecto la documentación del paquete en dirección_dispositivo
-B 10 -p nombre_imagen/usr/share/doc/packages/obexftp.
Puede encontrar una amplia lista de documentación relacionada con el funcionamiento y la configuración de Bluetooth en: http://www.holtmann.org/linux/bluetooth/. Otras fuentes de información útiles:
Conexión con PDAs PalmOS: http://www.cs.ucl.ac.uk/staff/s.zachariadis/btpalmlinux.html
HOWTO oficial del Bluetooth Protocol Stack integrado en el kernel: http://bluez.sourceforge.net/howto/index.html