¿Puede un Mac convertirse en un pequeño radar capaz de observar los dispositivos Bluetooth que aparecen a su alrededor?
La respuesta es sí.
BlueWatch es un proyecto experimental que permite utilizar el Bluetooth del ordenador para detectar dispositivos cercanos, registrar sus apariciones y analizar su actividad a lo largo del tiempo. El proyecto está pensado como una herramienta educativa para explorar Bluetooth, análisis de datos y, especialmente, las implicaciones que puede tener la información que se obtiene de las emisiones inalámbricas.
Y lo interesante es que no necesitas un Raspberry Pi para empezar.
En macOS, BlueWatch puede ejecutarse directamente utilizando el Bluetooth integrado del Mac.
BlueWatch: Bluetooth desde macOS
BlueWatch realiza escaneos continuos de dispositivos Bluetooth Low Energy (BLE) y Bluetooth Classic.
A medida que encuentra dispositivos, recopila información que puede utilizar posteriormente para clasificarlos y estudiar su presencia:
- Fabricante.
- Nombre anunciado.
- Dirección Bluetooth.
- Tipo de dispositivo.
- UUID de servicios BLE.
- Intensidad de señal RSSI.
- Primera y última detección.
- Número de apariciones.
- Patrones de actividad.
El proyecto utiliza diferentes señales para intentar determinar qué tipo de dispositivo se está observando. Los UUID de servicios BLE tienen prioridad, seguidos por patrones del nombre del dispositivo y la identificación del fabricante mediante OUI.
Esto permite pasar de algo como:
AA:BB:CC:12:34:56
AA:BB:CC:45:67:89
11:22:33:AA:BB:CC
a algo mucho más comprensible:
📱 Smartphone
🎧 Audio
⌚ Wearable
🚗 Vehicle
🏠 IoT
Lo interesante empieza cuando dejamos el scanner funcionando
Detectar un dispositivo Bluetooth durante unos segundos es relativamente sencillo.
Lo realmente interesante es acumular observaciones durante horas o días.
BlueWatch almacena las detecciones en SQLite y permite estudiar posteriormente cuándo aparece cada dispositivo y durante cuánto tiempo permanece dentro del alcance.
Con esos datos pueden aparecer patrones.
Por ejemplo:
Lunes 18:05 ───── 21:15
Martes 18:12 ───── 21:07
Miércoles 18:01 ───── 21:22
Jueves 18:09 ───── 21:10
Viernes 17:55 ───── 20:48
El sistema podría terminar describiendo ese comportamiento como:
Diario · tardes · 17:00–21:00
BlueWatch incorpora precisamente este tipo de análisis de patrones temporales.
El Mac como sensor Bluetooth
La ventaja de probarlo en macOS es que podemos utilizar directamente el hardware Bluetooth del propio equipo.
El proyecto utiliza CoreBluetooth en macOS, gestionado mediante la biblioteca bleak.
La instalación es sencilla:
git clone <this-repo-url>
cd bluewatch
python3 -m venv .venv
source .venv/bin/activate
pip install -e .
Y para iniciar BlueWatch:
python -m bluewatch.daemon
También puede ejecutarse directamente:
bluewatch
El dashboard web queda disponible en:
http://localhost:8080
La primera vez que se ejecuta en macOS, el sistema puede solicitar permiso para acceder al Bluetooth. Ese permiso debe concederse para que el escaneo pueda funcionar.
¿Qué aparece en el dashboard?
Una vez iniciado el proceso podemos abrir el navegador y acceder al dashboard.
La interfaz muestra los dispositivos detectados y permite buscar y filtrar por diferentes características.
También podemos entrar en el detalle de cada dispositivo.
Ahí aparecen datos como:
- Historial de presencia.
- RSSI.
- Heatmap horario.
- Actividad diaria.
- Tiempo de permanencia.
- Patrones.
- Zona de proximidad.
- Servicios BLE.
- Grupo asignado.
- Notas.
El resultado es bastante diferente de utilizar simplemente una aplicación que muestra dispositivos Bluetooth.
Aquí estamos construyendo un histórico del entorno Bluetooth.
RSSI: ¿está cerca o lejos?
BlueWatch utiliza el RSSI para establecer diferentes zonas aproximadas de proximidad.
Por ejemplo:
> -50 dBm Immediate
-50 / -60 dBm Near
-60 / -70 dBm Far
< -70 dBm Remote
Esto permite hacer un experimento muy sencillo con un MacBook.
Colocamos un teléfono a diferentes distancias:
MacBook
│
├── 1 metro
├── 3 metros
├── 5 metros
├── 10 metros
└── fuera de alcance
Y registramos cómo evoluciona el RSSI.
No estamos obteniendo una distancia GPS ni una medición exacta en metros. El RSSI depende de numerosos factores, pero permite experimentar con proximidad relativa y comportamiento de la señal.
¿Y si aparecen dispositivos desconocidos?
Aquí aparece una de las características más interesantes de BlueWatch.
Podemos clasificar nuestros dispositivos habituales como conocidos y utilizar el sistema para prestar atención a los que no hemos identificado.
El propio proyecto plantea esta idea como una especie de radar de presencia: una vez filtrados los dispositivos conocidos, resulta más sencillo detectar aquellos que aparecen inesperadamente.
Imaginemos que normalmente nuestro Mac detecta:
📱 iPhone
⌚ Apple Watch
🎧 AirPods
📺 Smart TV
🔌 Smart Plug
Si aparece otro dispositivo Bluetooth, podemos investigarlo.
No significa automáticamente que sea un dispositivo desconocido físicamente. Simplemente significa que BlueWatch todavía no lo tiene identificado dentro de nuestra clasificación.
Correlacionando dispositivos
Otra funcionalidad interesante es analizar qué dispositivos aparecen juntos.
BlueWatch puede detectar dispositivos que aparecen de forma habitual dentro de una determinada ventana temporal.
Por ejemplo:
📱 Smartphone ─────┐
⌚ Smartwatch ──────┼── aparecen juntos
🎧 Auriculares ────┘
Si este comportamiento se repite durante días, podemos encontrar una relación temporal entre ellos.
Esto abre la puerta a experimentos con correlación de eventos, series temporales y detección de patrones.
El problema de las MAC aleatorias
Los dispositivos modernos pueden utilizar direcciones MAC aleatorias.
Esto complica cualquier intento de identificar persistentemente un dispositivo.
BlueWatch detecta las direcciones aleatorizadas y las filtra de la vista principal.
Además, incorpora mecanismos heurísticos para intentar relacionar identificadores que podrían corresponder al mismo dispositivo cuando existen suficientes evidencias temporales y de señal.
Para dispositivos propios existe además soporte para resolución basada en IRK, cuando se dispone de la clave correspondiente.
Esto convierte el proyecto en un laboratorio bastante interesante para estudiar cómo funcionan los mecanismos de privacidad de Bluetooth.
Un experimento de varios días
Una de las pruebas que más sentido tiene realizar con BlueWatch en macOS consiste simplemente en dejarlo funcionando.
Por ejemplo:
Día 1
Registrar todos los dispositivos detectados.
Día 2
Identificar nuestros dispositivos habituales.
Día 3
Crear categorías.
Día 4
Analizar horarios.
Día 5
Estudiar RSSI y proximidad.
Día 6
Buscar correlaciones.
Día 7
Analizar los patrones obtenidos.
Al final podemos tener algo parecido a un pequeño dataset de actividad Bluetooth del entorno.
Y a partir de ahí podemos empezar a plantear preguntas:
¿A qué horas hay más dispositivos?
¿Cuáles aparecen todos los días?
¿Cuáles permanecen durante más tiempo?
¿Qué dispositivos aparecen juntos?
¿Qué dispositivos cambian de dirección?
¿Cómo varía el RSSI?
Notificaciones
BlueWatch también permite generar notificaciones mediante ntfy.sh.
Podemos configurar avisos para diferentes eventos:
- Nuevo dispositivo detectado.
- Dispositivo monitorizado que vuelve a aparecer.
- Dispositivo monitorizado que desaparece.
- Umbrales configurables de llegada y salida.
De esta forma el Mac deja de ser simplemente un scanner y puede convertirse en un pequeño sistema de monitorización.
Y podemos llevarlo todavía más lejos
El proyecto también permite exportar datos y exponer métricas para Prometheus.
Entre las métricas disponibles encontramos:
bluewatch_scans_total
bluewatch_sightings_total
bluewatch_new_devices_total
bluewatch_devices_total
bluewatch_devices_active
bluewatch_devices_watched
bluewatch_scan_duration_seconds
bluewatch_device_rssi_dbm
Además, el repositorio incluye un dashboard para Grafana.
Por tanto, podemos construir una pequeña arquitectura:
Bluetooth
│
▼
macOS
│
▼
BlueWatch
│
┌────────┴────────┐
▼ ▼
SQLite Prometheus
│ │
▼ ▼
BlueWatch UI Grafana
Y aquí es donde el proyecto empieza a ser especialmente interesante para experimentar con observabilidad e IoT.
La parte que más me interesa: privacidad
BlueWatch no solo es un proyecto para detectar Bluetooth.
También permite comprobar experimentalmente algo importante:
una señal inalámbrica puede convertirse en información sobre presencia y comportamiento cuando acumulamos suficientes observaciones.
No necesitamos necesariamente conocer el contenido de una comunicación.
Podemos trabajar con metadatos:
dispositivo
↓
hora
↓
RSSI
↓
duración
↓
frecuencia
↓
correlaciones
↓
patrones
Y cuanto más tiempo recopilamos información, más posibilidades existen de encontrar regularidades.
El propio proyecto se plantea como una herramienta educativa para generar conciencia sobre la privacidad asociada a Bluetooth.
macOS como laboratorio de Bluetooth
Una de las cosas que más me gusta de este proyecto es que no hace falta comenzar con una infraestructura compleja.
Un MacBook, Python y su adaptador Bluetooth integrado son suficientes para empezar a experimentar.
Después podemos ampliar el laboratorio:
MacBook → Raspberry Pi → varios sensores → Prometheus → Grafana → análisis de patrones
Y comenzar a estudiar cómo cambia el comportamiento observado dependiendo de la ubicación del sensor.
BlueWatch se convierte así en algo más que un scanner Bluetooth.
Es un pequeño laboratorio para experimentar con:
- Bluetooth Low Energy.
- Bluetooth Classic.
- RSSI.
- MAC randomization.
- Identificación de dispositivos.
- Series temporales.
- Correlación de eventos.
- IoT.
- Observabilidad.
- Privacidad.
Una advertencia importante
BlueWatch se encuentra actualmente en fase Alpha y el propio proyecto indica que todavía no está preparado para producción. Los datos recopilados deben considerarse experimentales.
Los experimentos deben realizarse de forma responsable y teniendo en cuenta la normativa aplicable sobre privacidad y protección de datos. El proyecto se distribuye con finalidad educativa y contiene expresamente esta advertencia.
Conclusión
BlueWatch permite convertir un Mac en un pequeño radar Bluetooth.
Pero la parte más interesante no es simplemente descubrir qué dispositivos están cerca.
La verdadera experimentación comienza cuando dejamos el sistema funcionando y empezamos a acumular información:
detección → histórico → RSSI → permanencia → correlación → patrones.
Un MacBook puede convertirse así en un pequeño laboratorio para estudiar Bluetooth, IoT, análisis de datos y privacidad.
Y lo mejor es que podemos empezar directamente desde macOS, sin necesidad de montar inicialmente un Raspberry Pi.
Proyecto: BlueWatch en GitHub
⚠️ BlueWatch es software alfa y de carácter educativo. Utiliza el proyecto de forma responsable y respeta la legislación aplicable en materia de privacidad y protección de datos.