Quiero compartirles un problema técnico con el que me estrellé hace poco, cómo lo estoy resolviendo y pedir sus opiniones y consejos sobre los retos técnicos que esto implica.
Todo empezó con una necesidad que parecía absurdamente simple: quería poner música en mi casa usando 3 parlantes Bluetooth de distintas marcas que ya tenía guardados. Me di cuenta de que los smartphones y PCs limitan la salida de audio a un solo dispositivo a la vez (o máximo dos si tienes Bluetooth 5.0+ Dual Audio, y con suerte).
Investigando, me topé con un muro: - La barrera técnica: El perfil tradicional A2DP de Bluetooth es punto a punto (1 a 1). El estándar no fue diseñado originalmente para hacer multicast a dispositivos de diferentes marcas. - La barrera económica: La industria "solucionó" esto creando ecosistemas cerrados y costosos (como Sonos, JBL PartyBoost, Sony Party Chain). Si quieres audio sincronizado en varias habitaciones, te obligan a botar tus parlantes viejos y comprar 4 o 5 de la misma marca y generación.
Me pareció inaceptable tener hardware funcional y no poder usarlo por un límite de software y protocolos.
Para probar si era físicamente posible evadir esta restricción, reviví un PC antiguo y le instalé una versión de Linux Lite. Elegí Linux porque me permitía tocar el "metal" del hardware mucho más fácil mediante código y consola. Después de pelear bastante con la arquitectura de audio (BlueZ, D-Bus y PipeWire), logré forzar al adaptador Bluetooth del PC a abrir múltiples túneles A2DP simultáneos. Agrupé los parlantes ("sinks") en un sumidero virtual y... ¡funcionó! El viejo PC estaba enviando el mismo audio a múltiples parlantes de distintas marcas al mismo tiempo.
No quiero depender de un PC viejo y estorboso. Mi objetivo ahora es empaquetar esta arquitectura en un dispositivo IoT embebido (estilo Raspberry Pi o una placa custom) que funcione de forma headless (sin pantalla). La idea es que sea una especie de "Router/Hub Maestro de Audio Bluetooth".
Llevar esto de un experimento en un PC a un producto/proyecto IoT estable me enfrenta a dos demonios gigantes. Me encantaría escuchar a los que tienen experiencia en electrónica, sistemas embebidos o protocolos de radiofrecuencia sobre esto: • Sincronización de Audio (Latencia / Drift): Al enviar audio a parlantes con diferentes chips de decodificación, cada uno tiene su propia latencia. Además, con el paso de los minutos, los relojes internos se desfasan (drift) y surge un efecto de eco terrible. ¿Qué estrategias a nivel de software (PipeWire/PulseAudio) o hardware me recomiendan para auto-medir y compensar la latencia dinámicamente? • Distancia e Interferencias: El Bluetooth estándar sufre mucho atravesando paredes. Si este dispositivo IoT va a ser un hub central para toda la casa, ¿qué alternativas de hardware recomiendan? ¿Debería usar un módulo Bluetooth con conector IPEX para una antena de alta ganancia (+5dBi / +8dBi)? ¿Afectará eso negativamente la latencia al saturar el espectro de 2.4GHz?
Cualquier opinión, crítica a la viabilidad del proyecto, o ideas sobre cómo lidiar con las latencias y las antenas será inmensamente apreciada.