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.

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)