A2DP Windows Bridge (A2DPWB)

Transmisión de audio Bluetooth A2DP para Windows con compatibilidad completa de códecs.

Transmite el audio del sistema mediante LDAC, aptX HD, aptX Low Latency, aptX, AAC, SBC, LHDC V5 y (de forma experimental) Opus y el Opus 05 de PipeWire con un adaptador Bluetooth USB en modo WinUSB, sin controlador de kernel ni firma de prueba.

A2DPWB streaming LDAC 990 kbps / 96 kHz to Sony WH-1000XM4 (Home screen)

Primeros pasos GitHub


Códecs compatibles

Códec Tasa de bits Frecuencia de muestreo Profundidad de bits Latencia
LDAC 330/660/990 kbps 44.1–96 kHz 16/24/32 bits ~200 ms
aptX HD 🧪 576 kbps 44.1/48 kHz 24 bits ~150 ms
aptX Low Latency 🧪 352 kbps 44.1/48 kHz 16 bits ~32 ms
aptX 352/384 kbps 44.1/48 kHz 16 bits –
AAC 128/192/256 kbps 44.1/48 kHz 16 bits ~150 ms
SBC XQ ~385/505/552 kbps 44.1/48 kHz 16 bits ~150 ms
SBC hasta ~345 kbps 44.1/48 kHz 16 bits ~150 ms
FastStream 🧪 198/216 kbps 44.1/48 kHz 16 bits –
LHDC V5 400/500/900/1000 kbps, ABR 160–400 kbps 44.1/48/96/192 kHz 16/24 bits –
Opus 🧪 128/192/256 kbps 48 kHz 16 bits –
Opus 05 🧪 128/192/256 kbps 48 kHz 16 bits –

Compatibilidad de códecs por plataforma (envío a los auriculares)

Códec Windows 10 integrado Windows 11 integrado Ubuntu integrado (PipeWire) A2DPWB (Windows 10 / 11)
LDAC ❌ ❌ ✅ ✅
aptX HD ❌ ❌ ✅ 🧪 experimental
aptX Low Latency ❌ ❌ ✅ 🧪 experimental
aptX ✅ ✅ ✅ ✅
AAC ❌ ✅ ❌ no está en los paquetes de Ubuntu ✅
SBC XQ ❌ ❌ ✅ ✅ (receptores cuyo SBC admite canal dual y bitpool ≥ 43)
SBC ✅ ✅ ✅ ✅
FastStream ❌ ❌ ✅ 🧪 experimental (solo música, si se elige expresamente)
LHDC V5 ❌ ❌ ❌ ✅
Opus (Opus A2DP de Android) ❌ ❌ ✅ PipeWire 1.2+ (opus_g); no está en Ubuntu 24.04 (PipeWire 1.0.5) 🧪 experimental
Opus 05 (Opus propio de PipeWire) ❌ ❌ ✅ PipeWire 0.3.57+ (opus_05, solo hacia dispositivos PipeWire) 🧪 experimental (si se elige expresamente)
aptX Adaptive ❌ ❌ ❌ ❌

✅ compatible · 🧪 experimental · ❌ no compatible. Todas las columnas corresponden al lado emisor (PC → auriculares). «Integrado» es el audio Bluetooth propio del sistema operativo, sin A2DPWB; la columna de Ubuntu es el conjunto de códecs de PipeWire en Ubuntu 26.04 (libspa-0.2-bluetooth).

aptX HD y aptX Low Latency son experimentales. Siguen las implementaciones de Android / PipeWire y superan las pruebas de ida y vuelta de codificación/decodificación, pero aún no se han verificado con auriculares reales. Los valores de latencia de esta tabla son cifras típicas, no medidas con A2DPWB.

Acerca de LHDC V5. Usa un port en C del codificador LHDC V5 que Google añadió a Android 17 (AOSP, Apache-2.0); se verificó que el port produce exactamente los mismos bits que el codificador en Rust de AOSP, y la señalización A2DP sigue a2dp_vendor_lhdcv5 de Android. Un usuario lo verificó con auriculares LHDC V5 reales a 1000 kbps / 192 kHz con la v1.1.1-beta.1 (#50); la v2 usa el mismo codificador. Solo se admite LHDC V5 con pérdida: LHDC V2/V3 (auriculares más antiguos) y el modo sin pérdida «LHDC-RAW» no tienen codificador de código abierto. En modo Automático, LHDC V5 tiene menos prioridad que LDAC y la familia aptX, y más que AAC / SBC.

Opus es experimental. Es el códec de fabricante Opus A2DP de Android (Android 13+, ID de fabricante 0x000000E0 Google): 48 kHz, tramas de 20 ms, 256 kbps estéreo tal como lo solicita Android (Estándar 192, Móvil 128 kbps), codificado con libopus 1.5.2. Supera la prueba de extremo a extremo contra un receptor virtual, pero aún no se ha verificado con auriculares Opus reales. En modo Automático tiene menos prioridad que LHDC V5 y más que AAC / SBC.

Opus 05 es experimental y no está verificado en hardware real. Es el códec de fabricante Opus A2DP propio de PipeWire (ID de fabricante 0x000005F1, códec 0x1005; opus_05 de PipeWire), que solo implementa PipeWire, así que el receptor tiene que ser un PC con PipeWire como receptor A2DP. A2DPWB envía solo la dirección de música estéreo (sin 5.1 / 7.1 ni canal de retorno): 48 kHz, tramas de 10 ms (20 ms si el receptor solo admite esas), el mismo codificador libopus y las mismas tasas de bits que Opus, limitadas al máximo del receptor. El modo Automático nunca lo elige; elíjalo en el perfil o con -c opus05. Supera la prueba de extremo a extremo contra un receptor virtual que ofrece las capacidades de PipeWire, pero no se ha probado con un receptor PipeWire real. PipeWire como receptor A2DP decodifica Opus 05 desde la 0.3.57 y el Opus de Android (opus_g) desde la 1.2.0: Ubuntu 24.04 LTS incluye PipeWire 1.0.5 (solo Opus 05), Ubuntu 25.10 (1.4.7) y 26.04 LTS (1.6.2) incluyen ambos; ninguno está aún verificado con A2DPWB.

SBC XQ se verificó con unos Sony WH-1000XM4 (canal dual, bitpool 43 a 48 kHz, 552 kbps). Los receptores que rechazan la configuración se reconectan con SBC normal. FastStream es experimental: supera la prueba de extremo a extremo contra un receptor virtual, pero no se ha probado con auriculares FastStream reales. Solo la dirección de música; Automático nunca lo elige.

¿Solo necesita aptX clásico? Windows 10 ya admite aptX clásico en su pila Bluetooth integrada (no aptX HD, aptX LL ni aptX Adaptive), así que A2DPWB no es necesario para ese códec. A2DPWB es útil sobre todo para LDAC, aptX HD y aptX Low Latency.

aptX Adaptive no es compatible (no existe un codificador de código abierto). Si sus auriculares también ofrecen aptX clásico, A2DPWB usa aptX directamente; si no, Automático elige AAC o SBC. Consulte Familia aptX y compatibilidad con aptX Adaptive.

Compatibilidad de plataformas

Componente Windows 10 (x64 / ARM64) Windows 11 (x64 / ARM64) Linux (Ubuntu)
A2DPWB (ventana, bandeja, CLI) ✅ (aún no probado en hardware real) ✅ ❌
Compilación desde el código fuente (Rust, Visual Studio 2022+, Node.js) ✅ ✅ ❌
a2dpwb_decode (comprobador del flujo) ✅ ✅ ❌
Prueba de extremo a extremo tools/emu/run_test.py ✅ ✅ ❌
Adaptador virtual tools/emu/emu_vhci.py ❌ ❌ ✅
Receptor de medición tools/linux_sink ❌ ❌ ✅

A2DPWB solo funciona en Windows (Windows 10 22H2 o Windows 11), con compilaciones para x64 y ARM64. Las herramientas de Linux necesitan Python 3.11 o posterior (verificado en Ubuntu 26.04); setup.sh está pensado para Ubuntu / Debian; en otras distribuciones hay que instalar los paquetes a mano.

Hardware verificado

Qué Configuración Códecs Resultado
Sony WH-1000XM4 (auriculares) Windows 11 + TP-Link UB500 LDAC, AAC, SBC, SBC XQ ✅ Reproduce (los XM4 no tienen aptX)
TP-Link UB500 (Realtek RTL8761BU, adaptador) Windows 11, WinUSB, linux-firmware rtl8761bu – ✅
Receptor de medición tools/linux_sink Windows 11 + UB500 → Ubuntu 26.04 por radio SBC, AAC, aptX, aptX HD, aptX LL, LDAC ✅ Recibido y medido
Enlace virtual tools/emu (Bumble) Windows 11, sin radio SBC, SBC XQ, AAC, aptX, aptX HD, aptX LL, LDAC, LHDC V5, FastStream, Opus, Opus 05 ✅ La prueba de extremo a extremo se supera

Windows 10 aún no se ha probado en hardware real. Otros adaptadores: consulte Adaptadores recomendados.

Modos de captura de audio

A2DPWB captura el audio mediante WASAPI y ofrece tres modos:

Modo Descripción Caso de uso
Loopback del sistema Captura toda la salida de audio del sistema del dispositivo de reproducción predeterminado mediante loopback de WASAPI Configuración sencilla: se transmiten todos los sonidos
Dispositivo virtual Captura desde un dispositivo de audio virtual elegido por el usuario (p. ej., VB-CABLE, VoiceMeeter) Enviar aplicaciones concretas a Bluetooth y mantener el resto del audio en los altavoces
Aplicación Captura solo lo que reproduce una aplicación, después de su propio procesamiento (Windows 11 / Windows 10 2004+) Enviar una aplicación, o la salida de una aplicación de efectos para todo el sistema (ecualizador, mejora de sonido)

En el modo Dispositivo virtual, A2DPWB puede cambiar el dispositivo de reproducción predeterminado de Windows al dispositivo virtual seleccionado (Cambiar dispositivo predeterminado) y luego captura su salida de loopback. Las aplicaciones que reproducen en el dispositivo virtual se transmiten por Bluetooth. Al detener la transmisión, se restaura el dispositivo predeterminado anterior.

El Loopback del sistema no le quita el audio al dispositivo de reproducción predeterminado: se oye allí y también por Bluetooth. Consulte Modos de captura.

Cómo funciona

---
config:
  flowchart:
    wrappingWidth: 480
    rankSpacing: 30
---
flowchart TD
    s1["Loopback del sistema"]
    s2["Dispositivo virtual"]
    s3["Aplicación (loopback de proceso)"]
    s1 & s2 & s3 --> cap["Captura de loopback WASAPI (PCM)"]
    cap --> enc["Codificador de audio: LDAC / familia aptX / LHDC V5 / Opus / AAC / SBC"]
    enc --> bt["BTstack: A2DP Source → AVDTP → L2CAP → HCI"]
    bt --> usb["WinUSB → adaptador Bluetooth USB"]
    usb -.-> hp["Auriculares"]

A2DPWB omite por completo la pila Bluetooth de Windows. Se comunica directamente con un adaptador Bluetooth USB a través de WinUSB y usa BTstack para implementar toda la pila de protocolos Bluetooth en modo de usuario. Un pequeño programa residente (a2dpwb-core.exe, con el icono de la bandeja) transmite el audio; la ventana solo muestra su estado, por lo que cerrarla no detiene el audio (consulte Arquitectura).

Funciones

  • Varios códecs: LDAC, aptX HD, aptX Low Latency, aptX, AAC, SBC, LHDC V5 y (de forma experimental) Opus / Opus 05 con negociación automática
  • LE Audio (experimental): LC3 hacia auriculares LE Audio (BAP unicast, los dos auriculares de un par, volumen del auricular, botones multimedia, baja latencia GMAP). Necesita un adaptador con canales isócronos de Bluetooth 5.2; solo probado con el emulador de Bluetooth, todavía no con auriculares LE Audio reales (Uso)
  • Tres modos de captura: loopback del sistema, enrutamiento a través de un dispositivo de audio virtual o la salida de una sola aplicación
  • Ventana, bandeja y CLI: una ventana para la configuración y el diagnóstico, un panel desplegable y un menú en la bandeja para conectarse en el día a día, y una línea de comandos (consulte Uso)
  • WinUSB desde la aplicación: asigna el controlador WinUSB al adaptador y restaura el controlador original, sin necesidad de Zadig (consulte Configuración)
  • Configuración inicial: adaptador, controlador y firmware, auriculares, una primera conexión
  • ABR: tasa de bits adaptativa para conexiones inestables (LDAC y LHDC V5)
  • Reconexión automática: vuelve a conectar si se pierde la conexión (hasta 10 intentos) y cuando el PC sale de la suspensión
  • Calidad del enlace y AFH: muestra lo que se envía, el RSSI y los canales en uso; indica al adaptador qué canales Wi-Fi debe evitar (consulte Uso)
  • Controles de los auriculares (AVRCP): control deslizante de volumen sincronizado con los auriculares y con el volumen de Windows; sus botones de reproducir/pausar, siguiente y anterior controlan la reproducción en el PC (consulte Uso)
  • Gestión de perfiles: configuraciones de dispositivo + códec + captura, que se pueden conectar desde la bandeja
  • Actualizaciones: la versión instalada se actualiza sola cuando se detiene la transmisión (consulte Uso)
  • Localización: inglés, japonés, chino simplificado / tradicional, coreano, alemán, francés y español
  • Firmware de Realtek: descarga guiada del firmware para adaptadores Realtek
  • Diagnóstico: flujo de conexión, registro, captura HCI, información de diagnóstico para informes de errores, prueba con receptor par frente a un PC con Linux (consulte Uso)