1 puntos por GN⁺ 2023-11-25 | 1 comentarios | Compartir por WhatsApp

Mejora de la calidad de audio mediante la modificación de la pila Bluetooth

  • Los usuarios de audífonos inalámbricos experimentan baja calidad de sonido y falta de agudos al usar el códec SBC estándar de Bluetooth.
  • Comprar dispositivos compatibles con los códecs aptX o LDAC es la solución habitual, pero estos códecs implican costos de licencia, por lo que los dispositivos son más caros.
  • La baja calidad de SBC se debe a limitaciones artificiales en la pila Bluetooth y en los audífonos, y esto puede evitarse en todos los dispositivos solo con modificaciones de software.

Códec SBC

  • SBC tiene varios parámetros que se negocian en la etapa de configuración de la conexión: tipo y número de canales de audio, número de bandas de frecuencia, número de bloques de audio por paquete, algoritmo de asignación de bits de cuantización, y bitpool máximo y mínimo usado en el proceso de cuantización.
  • La pila Bluetooth actual normalmente negocia un conjunto de opciones de Joint Stereo, 8 bandas, 16 bloques, Loudness y bitpool 2..53.
  • El valor de bitpool es el parámetro que cambia el bitrate de codificación; mientras más alto sea, mayores serán el bitrate y la calidad.

Modificación de la pila Bluetooth

  • Todas las pilas Bluetooth compatibles con A2DP deben soportar el modo Dual Channel, pero no hay manera de forzar el uso de este modo.
  • Se crearon parches para Android 8.1 y 9 que añaden el modo Dual Channel al menú de desarrollador, y se muestra como códec "HD Audio" en la configuración del dispositivo Bluetooth.
  • Este parche fue integrado en firmwares alternativos como LineageOS, Resurrection Remix y crDroid.

Origen de 551 y 452 kbps

  • La tecnología de multiplexación por tiempo de Bluetooth fue diseñada para transmitir de forma eficiente paquetes grandes de tamaño fijo.
  • La transferencia de datos se realiza mediante slots, y 5 slots es el número máximo que puede transmitirse en una sola transmisión.
  • En 5 slots se pueden transmitir hasta 679 bytes a una velocidad de 2Mbps y hasta 1021 bytes a 3Mbps.

¿Por qué es necesario todo esto?

  • Contrario a la creencia general sobre la calidad de audio de aptX, en algunos casos SBC puede producir una calidad de audio peor que el bitrate estándar de 328k.
  • SBC asigna dinámicamente bits de cuantización a las bandas de frecuencia, mientras que aptX cuantiza las bandas de frecuencia con una cantidad constante de bits.
  • Al usar SBC de alto bitrate, en la mayoría de los casos se puede obtener una calidad de audio superior a aptX, y en audífonos con soporte EDR 3 Mb/s ofrece una calidad muy cercana a aptX HD.

¿Se puede ir más allá?

  • El conjunto de parches para Android ofrece una opción adicional que puede elevar aún más el bitrate de dispositivos EDR 2 mbps de 452 kbps a 595 kbps.
  • Se puede activar el bitrate más alto configurando la variable persist.bluetooth.sbc_hd_higher_bitrate en 1.

Compatibilidad con dispositivos

  • SBC Dual Channel es compatible con casi todos los audífonos, bocinas y unidades principales de automóvil.
  • Los dispositivos que presentan problemas con este modo son muy raros, pero información más detallada sobre compatibilidad puede encontrarse en 4pda y xda-developers.

Comparación de calidad de audio

  • Se creó un servicio web que codifica audio en SBC (así como en aptX y aptX HD) en tiempo real en el navegador para poder comparar la calidad de audio de varios perfiles SBC y códecs.

Contactar a los desarrolladores de Android

  • Se pidió a los desarrolladores de la pila Bluetooth de Google que incluyeran el parche en AOSP, pero todavía no se ha recibido respuesta.
  • Tampoco se ha recibido ningún comentario de las personas relacionadas con el desarrollo en el sistema de revisión de código Gerrit.

Conclusión

  • Los usuarios de los firmwares LineageOS, Resurrection Remix y crDroid pueden mejorar la calidad de audio Bluetooth seleccionando una casilla en la configuración del dispositivo Bluetooth.
  • Los usuarios de Linux también pueden obtener un bitrate SBC más alto instalando el parche de Pali Rohár.

Opinión de GN⁺

Lo más importante de este texto es que la calidad del audio Bluetooth existente puede mejorarse solo con modificaciones de software. Es una solución atractiva porque permite disfrutar audio de mayor calidad en dispositivos existentes sin comprar equipos compatibles con nuevos códecs costosos. En especial, que estas modificaciones sean posibles para usuarios de firmware de código abierto es un avance interesante que mejora la accesibilidad tecnológica y permite a los usuarios tener más control sobre sus dispositivos.

1 comentarios

 
GN⁺ 2023-11-25
Opiniones de Hacker News
  • Evaluación positiva del amplio soporte de SBC y su escalabilidad natural

    Que SBC tenga soporte amplio es excelente, y parece una extensión natural del estándar existente. Personalmente, el problema no es LDAC o AAC frente a SBC, sino la baja calidad de HFP. En el momento en que se activa el micrófono, se siente como volver a los 90. Ojalá mejore la calidad del audio Bluetooth bidireccional.

  • Análisis profundo de un bug en el stack Bluetooth de Android y señalamiento de la variabilidad del hardware

    Este artículo no trata sobre Bluetooth en general, sino sobre un análisis profundo de un bug en el stack Bluetooth de Android. Algo que el autor no menciona en absoluto es que el hardware usado es muy diverso. Android funciona sobre una enorme cantidad de chipsets Bluetooth. Por eso, aunque un parche parezca funcionar en un hardware, puede que no funcione en otros teléfonos Android. Además, puede variar según las otras tareas que el dispositivo esté realizando en ese momento. Por ejemplo, si comparte un chipset BT+Wifi y está transmitiendo video por wifi mientras transmite audio a los audífonos, el dispositivo tiene que asignar recursos según el uso de wifi y BT. Por lo tanto, el audio almacenado localmente y el audio transmitido por streaming no necesariamente obtendrán los mismos parámetros de CODEC. Hay muchas diferencias sutiles en este tema que el autor no consideró, así que conviene leerlo con cautela.

  • Experiencia compartida con el ajuste de parámetros SBC y uso de AAC, aptX, LDAC mediante 'Alternative A2DP Driver' en Windows

    "Alternative A2DP Driver" ofrece esta función en Windows. Permite personalizar los parámetros de SBC y usar AAC, aptX (no lo he probado) y también LDAC con unos Sony XM4. En mi experiencia funciona bien y, aunque es una versión de prueba, es barato. Al usar el modo de alta calidad noté que el alcance de Bluetooth disminuye, lo que confirma que realmente está cambiando el códec (o al menos algo). El enlace de arriba no es de afiliado.

  • Mención de la posibilidad de mejorar el audio de mayor bitrate y la calidad del audio de headset con SBC XQ y mSBC en Linux

    En Linux se puede habilitar audio SBC con mayor bitrate mediante algo llamado "SBC XQ". De la misma manera, se puede usar "mSBC" para tener audio de headset de mayor calidad (aunque, claro, sigue siendo de menor calidad que SBC o APTX). Muchos audífonos soportan mejores códecs de audio, pero el soporte no es universal y tampoco está claro que mejoren el audio bidireccional. Ojalá Google ya integrara algo así o alguna función similar.

  • Planteamiento de la necesidad de una función en los perfiles de audio Bluetooth que permita un buffering largo por adelantado

    Me gustaría que se inventara una función en los perfiles de audio Bluetooth que permitiera hacer buffering durante mucho tiempo por adelantado. Por ejemplo, al reproducir una canción de 1 minuto, debería almacenarse en buffer la canción completa. Si haces clic en "pausa" o cambias el volumen, el buffer debería descartarse. Pero un buffer largo ayudaría al ahorro de energía del teléfono y a tolerar la conectividad de radio inestable.

  • Experiencia usando esta función en LineageOS y mención de la necesidad de mejorar la experiencia de usuario

    He usado esta función en LineageOS y estoy muy satisfecho. Es muy útil poder transmitir audio de mayor calidad a dispositivos como estéreos de auto que no soportan códecs de terceros. También ofrece una gran ventaja en audífonos. La experiencia de usuario necesita algo de mejora, pero la función en sí es excelente.

  • Mención de la necesidad de añadir el año (2019) al título y de que ya está implementado en PulseAudio y PipeWire

    Sería bueno añadir (2019) al título. Se menciona "todos los stacks Bluetooth actuales", pero estas funciones ya están implementadas en PulseAudio y PipeWire.

  • Postura escéptica sobre el impacto real en la calidad de audio de la diferencia de bitrate entre Dual Channel y Joint Stereo

    Soy escéptico de que 551 kbps en Dual Channel ofrezca una calidad notablemente mejor que 328 kbps en Joint Stereo. En la mayoría de la música, me pregunto si no será simplemente usar más bits para codificar información redundante.

  • Pregunta sobre cómo mejorar la calidad de HFP en macOS y experiencia compartida con mSBC en Linux

    Pregunto si alguien sabe cómo mejorar la calidad de HFP usando Bluetooth en macOS. En Linux tuve una calidad bastante buena usando mSBC, pero en macOS es totalmente deficiente y cambia a calidad de línea telefónica/mono. Me pregunto si ya existe algún hack para hacerlo funcionar bien en Darwin.

  • Expresión de agradecimiento por la publicación y comentario sobre no saber que estaba usando SBC

    No sabía que había estado usando la función SBC mientras usaba Lineage 18-1. Gracias a esta publicación me enteré de que sí la estaba usando. "magic -"