Sie sind auf Seite 1von 9

BLUETOOTH Y REDES DE ÁREA PERSONAL (PAN) EN LINUX

Prof. Vincenzo Mendillo

Septiembre 2009

Objetivo

Familiarizarse con la operación de adaptadores inalámbricos Bluetooth bajo Ubuntu (Linux) mediante el soporte que ofrece
protocolo BlueZ, para facilitar la configuración y aplicación de esta tecnología.

Requisitos
Disponer de una computadora con dispositivo Bluetooth y opcionalmente un teléfono celular (o PDA) con Bluetooth.
Alternativamente se requieren 2 computadoras con dispositivo Bluetooth en cada una de ellas. Puede adquirir esos dispositivos
USB de bajo costo en sitios como http://mercadolibre.com.ve. Si no está familiarizado con Linux (Ubuntu), se aconseja realizar
previamente la práctica Configuración y operación de Linux.

Sección A: Introducción
Al igual que Windows, actualmente Linux está dotado de un soporte Bluetooth bastante maduro, robusto y completo el cual
constituye una plataforma ideal para desarrollar soluciones inalámbricas basadas en esta novedosa tecnología, cuyo costo es
bastante bajo. Ubuntu 8.10 integra la conectividad a redes 3G por Bluetooth, WiFi, Ethernet o cualquier otro de los estándares
actualmente utilizados en una sola interfaz de usuario que permite, además, el roaming automático entre diferentes tipos de
conexión para lograr el tan ansiado “always on” (siempre conectado).
Hoy día cualquier sistema Linux con un núcleo superior al 2.4.6 tiene ya incorporado el soporte Bluetooth con BlueZ
(http://www.bluez.org), como el protocolo “oficial”. Inicialmente desarrollado por Qualcomm, ahora es un proyecto open source
distribuido bajo licencia GPL (GNU General Public License). El núcleo de BlueZ forma parte del kernel oficial de Linux desde la
versión 2.4.6. En el 2005 BlueZ recibió la Certificación Bluetooth del SIG de Bluetooth y ya existen varios productos bajo esa
certificación.
El núcleo de BlueZ viene acompañado por un conjunto de herramientas que permiten ejecutar las funciones Bluetooth
implementadas en la pila de protocolos desde una shell de comandos. Estas herramientas son las siguientes:
 Bluepin: Gestión de suministro del PIN para emparejamiento con otros dispositivos.
 Hciattach: Configuración de dispositivos serial UART (Universal Asynchronous Receiver/Transmitter) como interfaces HCI
Bluetooth.
 Hciconfig: Configuración de dispositivos Bluetooth locales.
 Hcid: Demonio interfaz HCI.
 Hcidump: Sniffer local de tráfico HCI que entra y sale por el dispositivo Bluetooth instalado en el sistema.
 Hcitool: Gestión del enlace con otros dispositivos Bluetooth, detección de dispositivos remotos, resolución de nombres,
identificación de clases, etc.
 L2ping: Envío de solicitudes echo request (ping) a nivel L2CAP.
 Pand: Gestión de conexiones PAN (Personal Area Network)
 Rfcomm: Gestión de conexiones RFCOMM
 Sdpd: Demonio del protocolo de descubrimiento de servicios SDP. Se encarga de proporcionar acceso a los servicios
Bluetooth locales.
 Sdptool: Gestión de SDP (Service Discovery Protocol), descubrimiento de servicios Bluetooth en dispositivos remotos.

La mayoría de las herramientas mencionadas se encuentran instaladas por defecto en aquellas distribuciones Linux que incorporan
el núcleo de BlueZ. Sin embargo, también es posible obtener las herramientas y librerías necesarias para el funcionamiento de
BlueZ por medio de módulos del núcleo BlueZ. Estos módulos se encuentran disponibles en http://www.bluez.org.

Sección B: Inicio de Ubuntu


-2-

1. Para iniciar Ubuntu, simplemente introduzca el Live-CD de Ubuntu y luego reinicie la PC (por ejemplo mediante las teclas Alt +
Control + Delete). Pulse F8 (en algunas máquinas F9, F10, F11 o F12) durante el reinicio, para así entrar al menú de opciones,
donde deberá seleccionar el CD-ROM como dispositivo de arranque. Si no lo logra, deberá modificar el Setup del BIOS pulsando
Delete (o quizás F2 o F10) durante el arranque y luego seleccionando el CD-ROM como primer dispositivo de arranque. Si todo
sale bien, Ubuntu se iniciará automáticamente desde el CD-ROM, sin copiar o modificar archivo alguno del disco duro.

2. Al poco rato aparecerá una pantalla con una serie de opciones. Mediante F2 puede seleccionar el idioma (ej. español) y mediante
y F3 el teclado (ej. latinoamericano o español). Deberá hacerlo lo antes posible, ya que hay un temporizador de 30 segundos.

4. Finalmente seleccione Probar Ubuntu y pulse Enter. Si en cambio pulsa Instalar Ubuntu, entra al asistente para la instalación
permanente en el disco duro.

5. En unos pocos minutos debería aparecer la interfaz gráfica en la pantalla y ya podrá utilizar Ubuntu y sus principales
aplicaciones.

6. En caso de que la interfaz gráfica no aparezca, reinicie y pulse F4 para Iniciar Ubuntu en modo gráfico seguro. Con algunas PCs
y laptops resulta díficil o hasta imposible correr Ubuntu Live-CD, ya que quizás no entra en el modo gráfico. En tal caso puede
descargar y utilizar Ubuntu Alternate CD, el cual instala Ubuntu en el disco duro en modo texto y luego reinicializa en modo
gráfico.

Sección C: Pruebas iniciales con Bluetooth

En Linux se dispone de un conjunto bastante completo de herramientas y librerías de programación basadas en BlueZ que permite
detectar dispositivos Bluetooth cercanos, obtener información básica de los mismos y conectarse a dispositivos remotos. En la
versión 8.10 de Ubuntu, el ícono de Bluetooth generado por BlueZ aparece en la barra superior de la pantalla.

1. Para verificar que los módulos Bluetooth están funcionando, en Ubuntu abra el Terminal desde Aplicaciones | Accesorios y
ejecute el comando:

$ dmesg | grep Bluetooth

Debería despegarse información como la siguiente:

Bluetooth: Core ver 2.13


Bluetooth: HCI device and connection manager initialized
Bluetooth: HCI socket layer initialized
Bluetooth: L2CAP ver 2.11
Bluetooth: L2CAP socket layer initialized
Bluetooth: RFCOMM socket layer initialized
-3-
Bluetooth: RFCOMM TTY layer initialized
Bluetooth: RFCOMM ver 1.10
Bluetooth: SCO (Voice Link) ver 0.6
Bluetooth: Sco socket layer initialized
Bluetooth: Generic Bluetooth USB driver ver 0.3

3. A continuación conecte al puerto USB de su PC el dispositivo Bluetooth y Linux debería reconocerlo automática mente, sin
necesidad de instalar nada.

4. No obstante, puede ocurrir que algún dispositivo Bluetooth requiera la instalación adicional de drivers antes de utilizarlo. Para
las siguientes experiencias posiblemente se use un dispositivo de Broadcomm Corporation, Windigo Systems o de Silicon Wave, el
cual debería ser reconocido y pasar al estado activo.

5. Lo más habitual es que Linux monte automáticamente en la interfaz hci0 el módulo Bluetooth conectado, pero quizás haya
dificultades. Para verificarlo, ejecute el commando:

$ hciconfig -a

6. Si no se muestra nada, significa que no está el soporte Bluetooth bien configurado o bien el dispositivo no está bien conectado.
Usualmente se muestra algo como lo siguiente:

hci0: Type: USB


BD Address: 00:06:C9:90:02:1D ACL MTU: 1017:8 SCO MTU: 64:0
UP RUNNING PSCAN ISCAN
RX bytes:7066 acl:275 sco:0 events:192 errors:0
TX bytes:267910 acl:535 sco:0 commands:30 errors:0
Features: 0xff 0xff 0x8d 0xfe 0x8f 0xf9 0x00 0x80
Packet type: DM1 DM3 DM5 DH1 DH3 DH5 HV1 HV2 HV3
Link policy: RSWITCH HOLD SNIFF PARK
Link mode: SLAVE ACCEPT
Name: 'ubuntu-0'
Class: 0x3e0100
Service Classes: Networking, Rendering, Capturing, Object Transfer, Audio
Device Class: Computer, Uncategorized
HCI Ver: 2.0 (0x3) HCI Rev: 0x2000 LMP Ver: 2.0 (0x3) LMP Subver: 0x410d
Manufacturer: Broadcom Corporation (15)

7. En caso de que el dispositivo Bluetooth no se haya activado automáticamente, será necesario hacerlo manualmente mediante el
comando hciconfig hci0 up. La siguiente es una lista de los posibles usos de este comando:

 Display help: hciconfig -h.


 Display information about each bluetooth adapter: hciconfig.
 Display additional information about each bluetooth adapter: hciconfig -a.
 Activate the Bluetooth adapter: hciconfig hci0 up.
 Deactivate the Bluetooth adapter: hciconfig hci0 down.
 Reset the Bluetooth adapter: hciconfig hci0 reset.
 Set the adapter's public name to myname: hciconfig hci0 name myname.
 Display a human-readable list of the Bluetooth features the device supports: hciconfig hci0 features.

La sigla hci proviene de Host Controller Interface. Este protocolo basado en hardware es usado para aislar la banda base de
Bluetooth y el administrador de enlaces de los protocolos de transporte tales como el RS-232 o USB (Universal Serial Bus). Esto
permite una interfaz estándar para el hardware de Bluetooth. Un manejador de dispositivos HCI en el host es usado para interactuar
una aplicación Bluetooth con el protocolo de transporte. Actualmente existen tres mecanismos de transporte admitidos: USB, RS-
232 y el UART (Universal Asynchronous Receiver-Transmitter). Utilizando HCI, una aplicación Bluetooth puede accesar al
hardware de Bluetooth sin el conocimiento de la capa de transporte u otros detalles de implementación del hardware.

8. Antes de establecer comunicación con otro dispositivo Bluetooth, es conveniente revisar los archivos de configuración, que se
encuentran en la carpeta /etc/bluetooth.

9. Si se aplican cambios a esos archivos, debe procederse a la reinicialización de los servicios Bluetooth mediante el comando:

$ sudo /etc/init.d/bluetooth restart


-4-

10. El comando hcitool es una de los más útiles de BlueZ. Para ver las distintas opciones, ejecute el comando solo.

$ hcitool

11. El comando hcitool inq permite enviar paquetes inquiry para así detectar la existencia de dispositivos Bluetooth cercanos
visibles y su dirección MAC (Medium Access Control).

$ hcitool inq

Nota: Los dispositivos Bluetooth cercanos más antiguos usualmente se ponen en modo visible cuando se activan, pero los más
recientes por mayor seguridad debe ponerse en modo visible manualmente y este modo dura apenas unos minutos. En la figura se
muestra cómo se activa en Bluesoleil para Windows bajo la ficha Mi Bluetooth | Propiedades de Dispositivo | Accesibilidad:

12. El comando hcitool scan permite obtener información útil sobre los dispositivos detectados, por ejemplo el nombre. El esceneo
tarda algún tiempo.

$ hcitool scan

13. Una vez que se tenga la dirección MAC de un dispositivo Bluetooth cercano, es cuando se puede interactuar con éste. Por
ejemplo, se puede pedir información sobre sus características y capacidades:

$ sudo hcitool info 00:01:E3:6B:F4:69

Requesting information ...


BD Address: 00:01:E3:6B:F4:69
Device Name: Acssm
LMP Version: 1.1 (0x1) LMP Subversion: 0x555
Manufacturer: Infineon Technologies AG (9)
-5-
Features: 0xef 0xea 0x19 0x00 0x00 0x00 0x00 0x00 <3-slot packets> <5-slot packets> <encryption>
<slot offset> <role switch> <hold mode> <sniff mode> <RSSI> <SCO link> <HV3 packets> <u-law log>
<A-law log> <CVSD> <transparent SCO>

14. Con el comando hcitool cc se pueden establecer una conexión y luego mostrar las conexiones activas utilizando el comando
hcitool con:

$ sudo hcitool cc 00:01:E3:6B:F4:69

$ hcitool con 00:01:E3:6B:F4:69

Connections:
< ACL 00:01:E3:6B:F4:69 handle 45 state 1 lm MASTER
< ACL 00:10:C6:2A:C8:A6 handle 41 state 1 lm SLAVE

Nota: este comando no siempre funciona o consigue respuesta.

15. Con el comando hcitool rssi se puede mostrar el nivel de la señal de una conexión:

$ hcitool rssi 00:01:E3:6B:F4:69

RSSI return value: -2

Este comando no siempre consigue respuesta.

16. Sdptool permite obtener una lista de perfiles admitidos por un dispositivo Bluetooth remoto, que incluye información detallada
sobre las características de cada perfil (ej. Service Discovery) y el canal utilizado (ej. 0x1000). La sigla SDP proviene de S ervice
Discover Protocol.

$ sdptool browse 00:01:E3:6B:F4:69

Este comando no siempre consigue respuesta.

17. Con BlueZ se dispone de otras interesantes utilidades, como el ping para el protocolo L2CAP (l2ping).

$ sudo l2ping 00:01:E3:6B:F4:69

Ping: 00:01:E3:6B:F4:69 from 00:0A:95:2E:4B:EA (data size 20) ...


0 bytes from 00:01:E3:6B:F4:69 id 200 time 1523.03ms
0 bytes from 00:01:E3:6B:F4:69 id 201 time 36.75ms
0 bytes from 00:01:E3:6B:F4:69 id 202 time 33.71ms

Nota: Este comando no siempre consigue respuesta.

18. También se dispone de un analizador de tráfico hcidump a nivel de capa para comprobar si este tipo de tráfico fluye de forma
correcta. (Hay que bajarlo de Internet e instalarlo).

$ hcidump

HCIDump - HCI packet analyzer ver 1.12


device: hci0 snap_len: 1028 filter: 0xffffffff
< ACL data: handle 0x0029 flags 0x02 dlen 95
L2CAP(d): cid 0x0040 len 91 [psm 0]
> HCI Event: Number of Completed Packets (0x13) plen 5
> ACL data: handle 0x0029 flags 0x02 dlen 17
> ACL data: handle 0x0029 flags 0x01 dlen 17
> ACL data: handle 0x0029 flags 0x01 dlen 17
> ACL data: handle 0x0029 flags 0x01 dlen 17
> ACL data: handle 0x0029 flags 0x01 dlen 17
> ACL data: handle 0x0029 flags 0x01 dlen 10
L2CAP(d): cid 0x0040 len 91 [psm 0]
< ACL data: handle 0x0029 flags 0x02 dlen 47
L2CAP(d): cid 0x0040 len 43 [psm 0]
12
-6-

Sección D: Pruebas con Bluez

En Linux existen varias aplicaciones para Bluetooth que facilitan su configuración y uso. Una de ellas es Bluez, que permite
modificar parámetros como el modo de operación (visible o no), el nombre del dispositivo (ej. ubuntu) y su clase (ej. laptop).
Además se encarga de solicitar al usuario la clave de paso (PIN) cuando es requerida por otro dispositivo durante el proceso de
autenticación.

1. Si usted está usando Ubuntu 8.10, Bluez ya está instalado. Si en cambio dispone de una versión anterior, debe instalarlo. Para tal
fin desde un terminal ejecute:

$ sudo apt-get install bluez-gnome

2. Otra aplicación importante es Gnome-bluetooth, que permite el envío y recepción de archivos mediante el protocolo OBEX. Para
tal fin desde un terminal ejecute:

$ sudo apt-get gnome-bluetooth

3. En Ubuntu mediante Sistema | Preferencias | Bluetooth se puede configurar el nombre del dispositivo y las opciones de
visibilidad.
-7-
4. Para las siguientes experiencias se requiere adicionalmente a la computadora equipada con Bluetooth, de otra computadora
también equipada con Bluetooth o de un teléfono celular con Bluetooth, por ejemplo los modelos L7c, V3m, V3c de Motorola, los
cuales admiten algunos los siguientes perfiles: manos libres, auricular, red para discado (DUN), object push, transferencia de
archivos, intercambio de objetos (OBEX), imagen básica.

5. Ponga la otra computadora o el celular en modo visible. En el caso de Motorola L7c se hace por medio de Programación |
Conexión | Enlace Bluetooth | Encuéntrame. El celular permanerá visible o descubierto por pocos minutos, por razones de
seguridad.

6. En la ventana de Preferencia de Bluetooth de Ubuntu haga clic sobre + para así añadir un dispositivo conocido. Cuando se
agrega un dispositivo, el mismo debe ser visible, es decir detectable. Algunos dispositivos permiten activar y desactivar la
visibilidad o detección, y otros siempre son visibles. Por ejemplo, los mouse Bluetooth siempre son visibles, en cambio los
teléfonos casi siempre son invisibles por razones de seguridad, a menos ya que estén emparejados.

7. Una vez que Ud. seleccione el dispositivo, BlueZ genera un PIN (Personal Identification Number) aleatorio para que lo
introduzca. En Windows hay más flexibilidad al poder elegir el propio usuario el PIN (también llamado clave de paso o
contraseña). Esto se hace con el fin de mejorar la seguridad de la conexión y reducir los riesgos de amenazas como bluejacking,
bluebugging y bluesnarfing.

8. Ahora empieza el proceso de emparejamiento (pairing) o vinculación (matching), donde se utiliza ese PIN para controlar el
acceso. En el celular aparecerá un mensaje solicitando autorización para el emparejamiento o vinculación. Al responder
afirmativamente, pedirá que ingrese la contraseña. Si es correcta, los 2 dispositivos terminan felizmente emparejados.

9. Gnome-bluetooth permite enviar y recibir archivos mendiante el protocolo OBEX. Para tal fin, seleccione un archivo que se
quiera enviar, pulse el botón derecho del ratón y luego Enviar a…
-8-

10. La transferencia va a fallar si el otro equipo no está preparado para recibir el archivo. Si el destino es un teléfono celular, no
admitirá cualquier tipo de archivo, sino por ejemplo imágenes y sonido. En la carpeta Escritorio\Examples hay unos archivos .png
que podría enviar de prueba.

11. Si el destino es otra máquina Ubuntu, en Aplicaciones | Accesorios se debe seleccionar Compartición de archivos por
Bluetooth.

Y en la Bandeja del sistema aparecerá el icono de Bluetooth.


-9-

12. Pero es posible que la transferencia falle, entre otras razones porque ya que no todos los tipos de dispositivos Bluetooth
funcionan bien bajo Linux. Si el destino es celular, depende del modelo de teléfono.

13. Si el destino es una máquina Windows, quizás tenga que usar el software que trae el dispositivo USB. Con Bluesoleil, puede
intentar usar la seguridad sin contraseña (PIN).

Sección E: Informe

Elabore un informe de no menos de 8 páginas donde se reportan las experiencias más relevantes, se analizan los resultados
obtenidos, finalizando con conclusiones y eventuales recomendaciones.
El informe debe ser individual y redactado con palabras propias; no se permite repetir el texto del material que se encuentra en
esta guía, en el DVD o en otras fuentes. Debe contener un resumen de las actividades realizadas, con ejemplo de resultados. Deben
analizarse y discutirse esos resultados, en particular si se presentaron problemas o aspectos inesperados. También deben incluirse
las conclusiones y eventuales recomendaciones.
Los informes deben enviarse regularmente al profesor a lo largo del curso, mediante el correo electrónico. Serán penalizadas las
entregas retrasadas y no se aceptarán entregas muy retrasadas. Además NO se aceptarán informes entregados todos juntos los
últimos días de finalización del curso.

Das könnte Ihnen auch gefallen