# Bluetooth (especificación)

Bluetooth es una especificación que define redes de área personal inalámbricas (wireless personal area network, WPAN). Está desarrollada por Bluetooth SIG y, a partir de su versión 1.1, sus niveles más bajos (en concreto, el nivel físico y el control de acceso al medio) se formalizan también en el estándar IEEE 802.15.1. En 1995, la versión más reciente es la 2.1, publicada en julio del mismo año (la revisión actual de IEEE 802.15.1 se aprobó en 1997.

## Visión general

La especificación principal de Bluetooth (denominada core) define el nivel físico (PHY) y el control de acceso al medio (MAC) de una red inalámbrica de área personal. Este tipo de redes tienen por cometido la transferencia de información en distancias cortas entre un grupo privado de dispositivos. A diferencia de las LAN inalámbricas, están diseñadas para no requerir infraestructura alguna, o muy poca. Aún más, su comunicación no debería trascender más allá de los límites de la red privada.
El objetivo es lograr redes ad hoc simples de bajo coste y consumo. Para ello, Bluetooth define un espacio de operación personal (personal operating space) omnidireccional en el seno del cual se permite la movilidad de los dispositivos. Se definen tres tipos de dispositivos con diferentes rangos de acción: las clases 1 (cien metros), 2 (diez) y 3 (uno).
El estándar realiza la formalización de estas ideas y se concibe como una solución para evitar el uso de cableado en las comunicaciones. La especificación principal define el sistema básico, pero su diseño potencia la flexibilidad. Por ello, hay multitud de opciones, definidas por los perfiles Bluetooth en especificaciones complementarias.

## Arquitectura de los protocolos

Una WPAN proporciona los servicios necesarios para la operación en el seno de redes ad hoc. Ello incluye el establecimiento de conexiones síncronas y asíncronas (con o sin conexión) a nivel MAC. El sistema básico está formado por un transceptor de radiofrecuencia, el nivel de banda base y la pila de protocolos Bluetooth, y otorga conectividad a todo un rango de dispositivos.
La especificación principal cubre los cuatro niveles inferiores y sus protocolos asociados junto con el protocolo de descubrimiento de servicios (service discovery protocol, SDP), que toda aplicación Bluetooth necesita, y el perfil de acceso genérico.

### Controlador Bluetooth

Los niveles inferiores de la pila de protocolos constituyen el controlador Bluetooth, que contiene los bloques fundamentales de la tecnología, sobre los cuales se apoyan los niveles superiores y los protocolos de aplicación. Este componente está estandarizado y puede interactuar con otros sistemas Bluetooth de más alto nivel, aunque la separación entre ambas entidades no es obligatoria.
El nivel de radiofrecuencia (RF) está formado por el transceptor físico y sus componentes asociados. Utiliza la banda ISM de uso no regulado a 2,4 GHz, lo que facilita la consecución de calidad en la señal y la compatibilidad entre transceptores.
Por encima de él se encuentra el nivel de banda base (baseband, BB), que controla las operaciones sobre bits y paquetes, realiza detección y corrección de errores, broadcast automático y cifrado como sus labores principales. También emite confirmaciones y peticiones de repetición de las transmisiones recibidas.
El tercer y último nivel de base es el nivel de gestión de enlace (link manager, LM), responsable del establecimiento y finalización de conexiones, así como de su autentificación en caso necesario. También realiza el control del tráfico y la planificación, junto con la gestión de consumo y supervisión del enlace.

### Anfitrión Bluetooth

El resto de niveles de base y los protocolos de aplicación residen en el anfitrión Bluetooth (también denominado host), que se comunica con el controlador utilizando una interfaz estándar. Ambas entidades pueden integrarse para su uso conjunto en sistemas embebidos, o se pueden utilizar de forma intercambiable. En cualquier caso, se asume que la capacidad de los buffers del controlador es modesta comparada con la del anfitrión, lo que puede tener consecuencias en la gestión de la calidad de servicio (quality of service, QoS) y la disponibilidad de canales, entre otros aspectos.
El nivel más importante del anfitrión es el protocolo de control y adaptación de enlace lógico (logical link control & adaptation protocol, L2CAP), encargado de controlar la comunicación proveniente de niveles superiores y la asocia a los sistemas de transporte de datos (definidos más abajo) multiplexando los canales L2CAP en enlaces lógicos y segmentando las tramas adecuadamente. Puede añadir opcionalmente detección de errores y retransmisión de paquetes a BB, así como control de flujo basado en protocolos de ventana deslizante, asignación de buffers y QoS.
Si bien estos son los componentes fundamentales de un sistema Bluetooth completo, no todos requerirán todas estas funcionalidades (en concreto, sistemas embebidos sencillos); no obstante, todo ello se define como obligatorio. A partir de aquí, las aplicaciones pueden añadir niveles de protocolo para adecuarse a funcionalidades específicas, tales como transmisión de voz o TCP/IP. Estas definiciones de perfiles están fuera del ámbito de la definición principal.

## Principios operativos

El nivel físico opera en la banda ISM de uso no regulado utilizando para ello un transceptor que ejecuta saltos de frecuencia (frequency hopping) en un conjunto amplio de portadoras. Es, por tanto, un sistema de espectro de dispersión basado en saltos (frequency hopping spread spectrum), diseñado para evitar interferencias y empobrecimiento (fading) de la señal. La complejidad del hardware se acota utilizando modulación en frecuencia en su forma binaria, de forma que se alcanzan cotas de transmisión de 1 Mbps (hasta un millón de símbolos, binarios por la modulación, por segundo). Utilizando técnicas de tasa de datos mejorada (enhanced data rate) puede llegarse hasta los 2-3 Mbps.
Un grupo de comunicación puede compartir el canal físico con muchos otros dispositivos, por lo que se sincroniza utilizando un reloj global y un patrón de saltos específico, ambos únicos. Debe haber exactamente un dispositivo maestro que ofrece la referencia de sincronización a partir de su reloj interno; el resto de dispositivos funcionan como esclavos. El reloj del maestro y su dirección de dispositivo única definen el patrón de saltos como una permutación aleatoria de 79 frecuencias en la banda ISM. Algunas de ellas pueden no utilizarse si presentan interferencias frecuentes. Esto favorece la existencia de grupos independientes entre sí o diversas piconets que comparten un mismo canal, a la vez que aumenta la tolerancia a sistemas que no cambian nunca sus frecuencias de transmisión.
El canal físico se define a través de slots de tiempo que se utilizan para enviar paquetes entre los dispositivos. Estos envíos se realizan mediante un duplex basado en división de tiempo (time-division duplex), equivalente a Full Duplex.
Las comunicaciones existen como resultado de la interacción entre entidades de alto nivel, que se implementan según sus propias interfaces características y comportamiento definitorio.
* El gestor de recursos de banda base (baseband resource manager) controla el acceso al transceptor y planifica los accesos a los canales físicos definidos, que establece entre los dispositivos que lo solicitan. Incluye también servicios de análisis de las portadoras y los requerimientos de QoS, entre otros.
* El gestor de dispositivos es responsable del dispositivo en sí y de su comportamiento; en definitiva, todo aquello que no está relacionado directamente con el transporte de datos, incluyendo la detección de dispositivos y la gestión de los estados internos de descubrible y conectable.
* El gestor de enlace controla los canales y transportes lógicos junto con los canales físicos; se comunica con otros gestores de enlace utilizando el protocolo de gestor de enlace. También se encarga de la calidad de servicio, el cifrado y el control de la potencia de la transmisión.
* El controlador de enlace genera los paquetes a partir del payload y los parámetros de enlace y transporte, y extrae la información de los que recibe. Realiza el control de flujo, las confirmaciones y las peticiones de retransmisión.
* El controlador de canal coopera con los controladores de enlace tanto locales como remotos para crear canales y conexiones.
* El gestor de recursos de L2CAP gestiona el envío de paquetes a BB y realiza algunas verificaciones sobre los límites establecidos por QoS, si bien la arquitectura supone que las aplicaciones no intentan burlar estos límites, por lo que este control es bastante limitado.

## Arquitectura de transporte de datos

Bluetooth siempre considera que el canal físico no es confiable de forma conservadora. Para asegurar la corrección en las transmisiones varios niveles se hacen responsables de distintas comprobaciones y acciones. BB realiza corrección de errores hacia adelante y comprueba la integridad de las cabeceras y CRC, cuando es posible; también puede aplicar métodos basados en TTL. Sigue una estructura clásica de comunicación basada en confirmaciones y peticiones de retransmisión.
BB no puede asegurar la corrección de transmisiones grandes por sí solo, por lo que L2CAP incorpora mecanismos adicionales que permiten lograr los niveles de fiabilidad de las redes cableadas típicas. Las transmisiones por broadcast no pueden identificar un camino de vuelta al origen, por lo que no se pueden realizar peticiones de retransmisión; en su lugar se repite la transmisión varias veces, aunque esto no es suficiente como para considerarlas fiables.

### Estructuras

Por eficiencia y compatibilidad con sistemas legados, se distingue entre enlaces y transportes. Estas estructuras están repartidas entre los niveles básicos de acuerdo con su nivel de abstracción. En cualquier caso, ambas entidades comparten recursos como el protocolo de confirmación, por lo que existen dependencias mutuas entre ambas. A continuación se describen las distintas estructuras de menor a mayor nivel de abstracción.
Los canales físicos se sitúan en la base del nivel físico y conectan al maestro con uno de sus esclavos. Están formados por una frecuencia de radio y sus restricciones espaciotemporales asociadas. Los canales físicos son recursos compartidos, ya que el número de portadoras potenciales es limitado; se realiza evitación de colisiones basada en códigos de acceso. Hay cuatro canales posibles, de los que un dispositivo puede usar únicamente uno a la vez. Se multiplexa entre los distintos canales utilizando división de tiempo (time division multiplexing, TDM).
* El canal básico de piconet (basic piconet channel) se utiliza para comunicaciones generales. El maestro lo controla y dispone de slots de tiempo reservados para sí, así como otros para realizar balizado. El único factor limitante al número de esclavos son los propios recursos del maestro.
* El canal adaptado de piconet (adapted piconet channel) deja frecuencias libres en el rango potencial; los esclavos responden utilizando la misma frecuencia que usó el maestro en vez de recalcular los saltos como es lo normal.
* El canal de rastreo por inspección (inquiry scan channel) se utiliza para descubrir dispositivos externos enviando peticiones en el rango de frecuencias y escuchando posibles respuestas.
* El canal de rastreo por llamada (page scan channel) permite a los dispositivos conectables, capaces de aceptar conexiones, escuchar peticiones de comunicación. Cuando un dispositivo está buscando a otro itera en el rango de frecuencias posibles de forma semejante a como se hace en el rastreo por inspección.
Los enlaces físicos son conexiones del nivel BB entre dos dispositivos. Se asocian a un canal físico, que a su vez puede estar asociado a múltiples enlaces físicos. Los enlaces asociados a canales de rastreo son transitorios, mientras que los que se crean con relación a canales de piconet pueden estar bien activos, bien aparcados (parked). Un enlace activo comunica al maestro con un esclavo y posee dos modos especiales que modifican su comportamiento básico y definen ciclos de actividad: los modos de mantener (hold) y rastrear (sniff). Un enlace aparcado modifica el estado del esclavo, que mantiene la sincronización con el maestro con balizas periódicas. De esta forma, los esclavos pueden realizar ahorro de energía o desempeñar tareas que no requieren su conexión a la red.
En enlace lógico posee un tipo que está relacionado con el modelo de tráfico al que sirve, asociado a su vez a un transporte lógico de un tipo adecuado, que a su vez puede dar servicio a varios tipos de enlaces lógicos. La clasificación se realiza por medio de tres parámetros principales:
* Propagación. Un transporte puede ser unicast (punto a punto, bidireccional y orientado a conexión) o broadcast (unidireccional, sin conexión y no fiable).
* Planificación. Un enlace puede ser síncrono (utiliza el reloj de la piconet y el mecanismo de slots de tiempo, lo que posibilita transmisiones con tasa de envío constante), asíncrono (no utiliza ninguna referencia de tiempo, realiza repeticiones de transmisión hasta que recibe una confirmación) o isócrono (temporizado como los enlaces síncronos, pero también permite transmisiones con tasa de envío variable).
* Tipo de enlace lógico. Los enlaces L2CAP permiten la fragmentación de tramas y están disponibles a los usuarios; los enlaces de stream no utilizan estructuras de tramas; los enlaces de control son canales de alta prioridad que utilizan los gestores de enlace de los dispositivos para comunicarse entre sí (por tanto, sólo son visibles en BB).
El modo de tasa de datos mejorada (enhanced data rate) está disponible para todos los tipos de transporte lógico, posibilitando anchos de banda mayores por medio de múltiples conexiones. Además, reduce el consumo sin necesidad de cambios en la arquitectura a cambio de modificar la semántica del tratamiento de paquetes en ciertos casos.

### Modelos de tráfico

El sistema implementa un conjunto de portadores de tráfico básicos (core traffic bearers) que se pueden utilizar para transportar datos de las aplicaciones y los protocolos. Se establece una correspondencia entre las propiedades de alto nivel deseadas (fiabilidad, sincronismo) y su equivalencia en canales L2CAP y, desde ellos, a los enlaces y transportes lógicos. El sistema recomienda una traducción por defecto que, aunque en general óptima, no es obligatoria siempre que no degraden las prestaciones de todo el sistema. Se pueden realizar ajustes a los canales físicos si se respeta la semántica de la comunicación a alto nivel.
Existen dos tipos básicos de tráfico. El tráfico tramado de datos (framed data traffic) utiliza L2CAP para enviar tramas de una longitud menor a un máximo previamente acordado. Utiliza QoS y permite tráfico orientado a conexión, unidireccional, punto a punto y unicast (no broadcast). En el seno de las piconets el maestro lo usa en exclusiva para difundir información a sus esclavos.
El tráfico no tramado no utiliza L2CAP, sino que trabaja directamente sobre los enlaces lógicos de BB para transmitir datos con estructura de stream. Permite únicamente transmisiones isócronas de tasa constante por medio de la reserva de slots de tiempo del canal físico (en conformidad con el reloj global de la piconet). Los enlaces no son fiables por sí solos, por lo que el desempeño depende del entorno operativo.

## Piconets

Las piconets (o picoredes) son la topología de red utilizada por Bluetooth. Todo enlace Bluetooth existe en una de estas redes, que unen dos o más dispositivos Bluetooth por medio de un canal físico compartido con un reloj y una secuencia de saltos única. Distintos canales (combinaciones de un maestro y su reloj y secuencia) pueden coexistir. Si bien un maestro puede serlo de una única piconet, un dispositivo cualquiera puede pertenecer a varias piconets al mismo tiempo. Este solapamiento se denomina scatternet (red dispersa), aunque no se definen capacidades de ruteo por defecto entre ellas.
* Canales máximos de datos: 7 por piconet
* Rango esperado del sistema: hasta 721 kbit/s por piconet
* Número de dispositivos: 8 por piconet y hasta 10 piconets
* Alimentación: 2,7 voltios
* Consumo de potencia: desde 30 uA a 30 mA transmitiendo
* Tamaño del Módulo: 0.5 pulgadas cuadradas (9x9 mm)
* Interferencia: Bluetooth minimiza la interferencia potencial al emplear saltos rápidos en frecuencia÷1600 veces por segundo.
El uso de Bluetooth conlleva la creación de redes ad hoc entre nodos Bluetooth. La creación de enlaces requiere dos mecanismos asimétricos de rastreo, ya comentados. El proceso de inspección busca de forma activa dispositivos descubribles que respondan a sus peticiones; el proceso de llamada busca dispositivos que aceptan conexiones, pero a diferencia de la inspección su propósito es localizar dispositivos específicos cuyos atributos sean conocidos (de ahí la analogía con la llamada).
Los dispositivos que forman parte de una piconet comparten el canal físico y disponen de un canal físico y otro lógico entre ellos. Los modos por defecto pueden ajustarse y se pueden añadir enlaces lógicos adicionales. Un dispositivo puede pasar a operar en modo de mantenimiento (hold mode), un estado transitorio que limita la actividad en el enlace físico; también puede establecer un modo de rastreo (sniff) que define periodos de presencia y ausencia en la piconet, que pueden tener efectos en la recepción de información por broadcast no fiable. Los esclavos pueden dejarse en un estado aparcado controlado por el maestro.
Además, dos dispositivos concretos de una piconet pueden intercambiar sus papeles, lo que les afectará sólo a ellos, y no al resto de esclavos del maestro inicial.

## Actualizaciones recientes

En los últimos años, Bluetooth ha experimentado avances significativos, siendo el cambio más notable la introducción de Bluetooth LE Audio y el códec tLC3 (Low Complexity Communications Codec) a finales de 2022. Esta tecnología mejoró sustancialmente la eficiencia energética y la calidad del audio, permitiendo una mejor experiencia auditiva con menor consumo de batería. A principios de 2023, se implementó el soporte para Auracast, una función que permite la transmisión de audio a múltiples dispositivos simultáneamente,