Cómo ver y cambiar el códec Bluetooth en Linux (LDAC, aptX, SBC-XQ)

Rubén Castro, 10 agosto 2026
como saber codec bluetooth linux

🛍️ 11.11 de AliExpress: las mayores ofertas del año · del 1 al 18 de noviembre, pedidos a España

  • ESD1103 −3 € desde 18 €
  • ESD1108 −8 € desde 45 €
  • ESD1112 −12 € desde 69 €
  • ESD1123 −23 € desde 135 €
  • ESD1139 −39 € desde 230 €
  • ESD1158 −58 € desde 325 €
  • ESD1175 −75 € desde 429 €
  • ESD11100 −100 € desde 500 €
  • ESD11120 −120 € desde 600 €

Si el carrito no acepta un código ESD11, prueba la variante AEES con el mismo número (AEES03, AEES08… hasta AEES75). ESD11100 y ESD11120 solo valen del 1 al 3 y el 11 y 12 de noviembre.

Pagando con PayPal, además, −9 € desde 99 €, −20 € desde 199 € y −40 € desde 299 €, que sí se suman al código.

Ver las ofertas del 11.11 → Más detalles y ofertas destacadas →

Aquí Linux gana, y por mucho. En Windows el sistema no te dice qué códec Bluetooth está usando y tampoco te permite elegirlo: negocia con los auriculares por su cuenta y te quedas con lo que salga. En Linux, con PipeWire, lo ves con un comando y lo cambias con otro.

Además, la lista de códecs es bastante más extensa que la de Windows: aquí disponemos de LDAC, aptX, aptX HD, AAC, LC3, Opus y SBC-XQ, que en Windows no existen o requieren un pago aparte.

Todo lo que aparece a continuación ha sido probado en PipeWire 1.6 con BlueZ 5.87. Si tu distribución todavía utiliza PulseAudio, los comandos son otros; aunque a estas alturas casi todas las distribuciones grandes ya usan PipeWire.

Ver qué códec estás usando ahora mismo

Con los auriculares conectados y reproduciendo algo, basta con un solo comando:

pactl list sinks | grep -e "Name:" -e "api.bluez5.codec"

Entre las salidas de audio verás la de tus auriculares y, justo debajo, la línea que buscas:

Name: bluez_output.98_80_BB_41_CF_2D.1
    api.bluez5.codec = "ldac"

Eso es todo. api.bluez5.codec es la propiedad que PipeWire rellena con el códec que se ha negociado de verdad, no con el que te gustaría tener.

Si la línea del códec no aparece, significa que no hay ninguna salida Bluetooth activa. Comprueba que los auriculares estén conectados con bluetoothctl devices Connected y que el perfil sea de audio y no el de manos libres, que va aparte y se explica más abajo.

Los otros dos comandos que conviene conocer

Para verlo todo del dispositivo, incluida la ruta, el perfil y la latencia:

pactl list cards | grep -A40 bluez_card

Y para una vista rápida de qué hay conectado, con los identificadores que utilizan los demás comandos:

wpctl status

wpctl es la herramienta de WirePlumber, el gestor de sesión que se integra sobre PipeWire en casi todas las distribuciones actuales. Sirve para consultar el estado y ajustar volúmenes, pero para el códec hay que ir por pactl: wpctl no lo muestra.

Qué códecs trae tu sistema (y por qué te falta LDAC)

PipeWire no integra los códecs internamente: cada uno es un módulo suelto y tu distribución decide cuáles compila. Por este motivo, hay usuarios que no ven el LDAC por ninguna parte aunque sus auriculares sean compatibles.

Para ver los que tienes:

ls /usr/lib/spa-0.2/bluez5/

En un sistema completo la respuesta es algo así:

libspa-bluez5.so             libspa-codec-bluez5-lc3.so
libspa-codec-bluez5-aac.so   libspa-codec-bluez5-ldac.so
libspa-codec-bluez5-aptx.so  libspa-codec-bluez5-opus.so
libspa-codec-bluez5-faststream.so  libspa-codec-bluez5-sbc.so
libspa-codec-bluez5-g722.so  libspa-codec-bluez5-hfp-msbc.so

Cada libspa-codec-bluez5-XXX.so representa un códec disponible. Si el fichero no está, ese códec no existe para ti, por muy compatibles que sean tus auriculares.

La ruta cambia según la distribución. En Debian y Ubuntu suele estar en /usr/lib/x86_64-linux-gnu/spa-0.2/bluez5/, mientras que en Fedora y openSUSE se encuentra en /usr/lib64/spa-0.2/bluez5/. Si el comando ls anterior te indica que el directorio no existe, prueba con find /usr/lib* -name 'libspa-codec-bluez5-*'.

Qué instalar si te falta alguno

Los que suelen faltar son precisamente los más interesantes, y siempre por la misma razón: las licencias. LDAC pertenece a Sony y aptX a Qualcomm, así que algunas distribuciones no los compilan por defecto.

  • Arch y derivadas — vienen todos de serie en el paquete pipewire. El módulo libldac es una dependencia, no hay nada que hacer.
  • Debian y Ubuntu — instala libldacbt-abr2 y libldacbt-enc2 para LDAC, y libfreeaptx0 para aptX. Después hay que reiniciar PipeWire, que no los recoge en caliente: systemctl --user restart pipewire pipewire-pulse wireplumber.
  • Fedora — LDAC y aptX vienen en los paquetes de PipeWire de los repositorios oficiales desde hace ya varias versiones.

Un detalle que despista: aptX en Linux se implementa con libfreeaptx, que es una reimplementación libre, y no con la biblioteca de Qualcomm. Funciona y es compatible, pero por eso el paquete no tiene un nombre parecido a «aptx».

Cambiar el códec, que es lo que Windows no deja

Existen dos formas de hacerlo y sirven para propósitos diferentes: una cambia el códec ahora y se pierde al desconectar, mientras que la otra fija tu preferencia para siempre.

En caliente, con pactl

PipeWire expone un perfil de tarjeta por cada códec que sea compatible con ambos dispositivos. Primero mira cuáles tienes disponibles:

pactl list cards | grep -E "Name: bluez_card|a2dp-sink"

Obtendrás un resultado similar a este, donde el nombre del perfil aparece a la izquierda y su descripción a la derecha:

Name: bluez_card.98_80_BB_41_CF_2D
    a2dp-sink-sbc: High Fidelity Playback (A2DP Sink, codec SBC)
    a2dp-sink-sbc_xq: High Fidelity Playback (A2DP Sink, codec SBC-XQ)
    a2dp-sink-aac: High Fidelity Playback (A2DP Sink, codec AAC)
    a2dp-sink-ldac: High Fidelity Playback (A2DP Sink, codec LDAC)

Y ahora se elige el que quieras, usando el nombre de la tarjeta y el del perfil:

pactl set-card-profile bluez_card.98_80_BB_41_CF_2D a2dp-sink-ldac

El cambio es inmediato: el audio se corta medio segundo y vuelve ya con el códec nuevo. Compruébalo con el comando del primer apartado.

Solo aparecen los perfiles que los auriculares admiten de verdad. Si a2dp-sink-ldac no figura en esa lista, o falta el módulo del sistema (mira el apartado anterior) o tus auriculares no llevan LDAC, aunque así lo indique la caja. Es la forma más rápida de salir de dudas con las especificaciones dudosas de los auriculares baratos.

Para siempre, con la configuración de WirePlumber

Lo anterior se pierde al desconectar. Para dejar tu preferencia fijada, se le indica a WirePlumber qué códecs puede usar y, al recortar la lista, se fuerza el resultado.

Crea el fichero ~/.config/wireplumber/wireplumber.conf.d/50-bluez.conf con esto:

monitor.bluez.properties = {
  bluez5.codecs = [ ldac aac sbc_xq sbc ]
}

El orden importa: PipeWire negocia de izquierda a derecha y elige el primero que los auriculares acepten. Si dejas solo [ ldac ], o utiliza LDAC o no conecta en A2DP.

Los nombres válidos son sbc, sbc_xq, aac, aptx, aptx_hd, aptx_ll, aptx_ll_duplex, ldac, lc3, opus_05, faststream y algunas variantes más. Después, hay que reiniciar:

systemctl --user restart wireplumber

La calidad de LDAC, que también se elige

LDAC dispone de tres modos y, por defecto, funciona en automático, ajustando el bitrate según la calidad del enlace. Se puede fijar en el mismo fichero:

monitor.bluez.properties = {
  bluez5.codecs = [ ldac ]
  bluez5.a2dp.ldac.quality = "hq"
}

Los valores disponibles son hq (990 kbps), sq (660), mq (330) y auto, que es el valor de fábrica. Aviso realista: forzar hq en un lugar con mucho wifi alrededor no mejora el sonido, sino que provoca cortes. Si el audio da saltos, este es el primer sitio donde mirar.

SBC-XQ, el truco que solo tienes aquí

Esto merece un apartado propio porque es la mejora más grande que puedes conseguir gratis, y en Windows sencillamente no existe.

El sonido de SBC tiene mala fama, pero el problema nunca ha sido el códec, sino la configuración conservadora de casi todos los dispositivos, que lo limitan a unos 328 kbps. SBC admite bastante más. Si se sube el bitpool, alcanza los 452 kbps y la diferencia se nota.

A eso se le llama SBC-XQ, y presenta una ventaja enorme sobre LDAC o aptX: no es un códec nuevo, es SBC. Por lo tanto, funciona con cualquier auricular Bluetooth del mundo, sin necesidad de licencias, sin módulos y sin que el fabricante haya tenido que pagar nada.

Para activarlo:

monitor.bluez.properties = {
  bluez5.enable-sbc-xq = true
  bluez5.codecs = [ sbc_xq sbc ]
}

Reinicia WirePlumber. Si al reconectar api.bluez5.codec indica sbc_xq, ya está.

No funciona con todos los auriculares, y cuando falla se nota. Algunos no aceptan un bitpool tan alto y responden con cortes, crujidos o negándose a conectar. Si eso ocurre, vuelve a [ sbc ] y listo; no se rompe nada, pero conviene probarlo con música que conozcas antes de darlo por bueno.

Entonces, ¿qué códec pongo?

Con el hardware normal y en un entorno con wifi alrededor, el orden que funciona es el siguiente:

  1. LDAC en auto, si tus auriculares lo tienen. Es el techo de calidad y el automático ya se encarga de bajar cuando el enlace va justo.
  2. aptX HD o aptX, si no hay LDAC. Menos bitrate, pero muy estable y con menos latencia, que se agradece con vídeo.
  3. SBC-XQ, que puede ganarle a aptX y sirve con cualquier cosa.
  4. AAC solo si es lo único, porque el codificador de Linux no es el de Apple y a bajo bitrate se le nota.

Para evitar discusiones: en unos auriculares de 60 euros no vas a oír la diferencia entre LDAC y SBC-XQ. Donde sí se nota es a partir de SBC estándar y en la latencia. La comparativa de códecs lo desglosa entero.

El micrófono y la caída a mono

Este problema ocurre en todos los sistemas y es lo que realmente arruina la calidad del sonido: el Bluetooth clásico no puede transmitir audio estéreo de calidad y micrófono simultáneamente.

  • A2DP es estéreo y de buena calidad, pero solo va del ordenador a los auriculares.
  • HFP lleva el micrófono, pero es mono y a 8 o 16 kHz. Ahí no hay LDAC que valga: suena a llamada telefónica.

En cuanto abres una videollamada, WirePlumber cambia el perfil automáticamente y el audio se cae. No es un fallo, sino un comportamiento deliberado, y en Linux se puede desactivar, algo que Windows no permite.

Que no cambie solo

En ~/.config/wireplumber/wireplumber.conf.d/50-bluez.conf:

wireplumber.settings = {
  bluetooth.autoswitch-to-headset-profile = false
}

De este modo, el sistema se mantiene en A2DP pase lo que pase. El micrófono de los auriculares deja de funcionar —tendrás que usar el del portátil o uno externo— pero la música ya no se degrada nunca. Para quien escucha más de lo que habla, es la mejor decisión.

Si necesitas el micrófono, al menos que sea el bueno

Cuando toque usar HFP, que sea en banda ancha: mSBC a 16 kHz en lugar de los 8 kHz de la banda estrecha. Se activa de esta forma, y en la mayoría de distribuciones ya viene activado:

monitor.bluez.properties = {
  bluez5.enable-msbc = true
}

Y hay una opción todavía mejor si tu hardware lo permite: los módulos hfp-lc3-swb que aparecían en la lista del segundo apartado son LC3 en banda superancha, y ofrecen bastante más calidad de voz que mSBC. Si están presentes y los auriculares lo soportan, PipeWire lo usa solo.

LE Audio

La solución definitiva al problema del micrófono es Bluetooth LE Audio, que permite transmitir estéreo y voz simultáneamente mediante el códec LC3. En Linux, esta función está disponible si utilizas PipeWire 1.0 o superior con BlueZ 5.72 o superior, y se muestra a través de los perfiles bap-sink, bap-source y bap-duplex en vez de los a2dp-.

Sigue siendo la parte más verde del asunto: depende del adaptador Bluetooth, de que el firmware lo soporte y de que los auriculares también. Pero cuando funciona, se acabó el drama del mono.

Si vienes de Windows, la diferencia se resume en una frase: allí el sistema decide por ti y ni siquiera te informa de su decisión. Lo contamos en cómo saber qué códec Bluetooth usa Windows, donde la respuesta corta es que casi siempre estás en SBC y que LDAC directamente no funciona.
Rubén Castro

Rubén Castro

Redactor

Apasionado de explorar y diseccionar lo último en tecnología. Tengo mucha experiencia en el mundo de los ordenadores y el gaming, aunque también me gustan todos los tipos de gadgets.