PulseAudio no puede establecer el perfil de la tarjeta en ‘a2dp_sink’. ¿Cómo puedo ver los registros y averiguar qué está mal?

Actualmente instalé ubuntu 16.04 y a2dp solía trabajar en una instalación nueva, que preferiría dejar como última opción. Cuando el emparejamiento se borra de la configuración de bluetooth y se vuelve a emparejar, a veces logra estar en el perfil a2dp, pero si el auricular se desconecta y se vuelve a conectar, los perfiles a2dp ya no funcionan (aunque dice que está en a2dp), solo funciona después de cambiar a HSP / HSF y luego no puedo configurarlo en a2dp.

He intentado hacer:

pacmd set-card-profile  a2dp_sink 

pero sale el siguiente error:

 "Failed to set card profile to 'a2dp_sink'" 

Soy bastante inexperto en Linux, así que no sé cómo obtener registros o qué buscar en ellos, pero obtuve esto de las listas de tarjetas de pacmd:

Cuando funciona

 name:  driver:  owner module: 27 properties: device.description = "Jabra REVO a4.0.0" device.string = "50:C9:71:97:A1:86" device.api = "bluez" device.class = "sound" device.bus = "bluetooth" device.form_factor = "headset" bluez.path = "/org/bluez/hci0/dev_50_C9_71_97_A1_86" bluez.class = "0x240404" bluez.alias = "Jabra REVO a4.0.0" device.icon_name = "audio-headset-bluetooth" device.intended_roles = "phone" profiles: headset_head_unit: Headset Head Unit (HSP/HFP) (priority 20, available: unknown) a2dp_sink: High Fidelity Playback (A2DP Sink) (priority 10, available: unknown) off: Off (priority 0, available: yes) active profile:  sinks: bluez_sink.50_C9_71_97_A1_86/#6: Jabra REVO a4.0.0 sources: bluez_sink.50_C9_71_97_A1_86.monitor/#10: Monitor of Jabra REVO a4.0.0 ports: headset-output: Headset (priority 0, latency offset 0 usec, available: unknown) properties: headset-input: Headset (priority 0, latency offset 0 usec, available: unknown) properties: 

Cuando no lo hace:

 name:  driver:  owner module: 25 properties: device.description = "Jabra REVO a4.0.0" device.string = "50:C9:71:97:A1:86" device.api = "bluez" device.class = "sound" device.bus = "bluetooth" device.form_factor = "headset" bluez.path = "/org/bluez/hci0/dev_50_C9_71_97_A1_86" bluez.class = "0x240404" bluez.alias = "Jabra REVO a4.0.0" device.icon_name = "audio-headset-bluetooth" device.intended_roles = "phone" profiles: headset_head_unit: Headset Head Unit (HSP/HFP) (priority 20, available: unknown) a2dp_sink: High Fidelity Playback (A2DP Sink) (priority 10, available: yes) off: Off (priority 0, available: yes) active profile:  ports: headset-output: Headset (priority 0, latency offset 0 usec, available: yes) properties: headset-input: Headset (priority 0, latency offset 0 usec, available: unknown) properties: 

Y el módulo propietario es:

 name:  argument:  used: 0 load once: no properties: module.author = "João Paulo Rechi Vita" module.description = "BlueZ 5 Bluetooth audio sink and source" module.version = "8.0" 

Ya intenté modificar /etc/bluetooth/audio.conf e instalar blueman pero no funcionó. También intenté reinstalar bluez y pulseaudio pero nada cambió.

¿Hay alguna manera de saber qué está mal y arreglarlo?

Sobre la base de la línea “perfil activo: “, el perfil de sonido no se activó.

Un progtwig que es fácil de usar para cambiar el perfil es pavucontrol. Puedes instalarlo con sudo apt install pavucontrol -y . Luego ejecute pavucontrol desde la línea de comando o Alt + F2 si está en Kubuntu y está ingresando a pavucontrol.

Seleccione la pestaña de configuración y luego intente cambiar el perfil de sus auriculares y vea si eso se actualiza para usted. Parece que hay un error con el bluetooth a2dp en linux y afecta a dos de mis 16.04 instalaciones. Si ya dice que A2DP, cámbielo a OFF, desconecte el dispositivo en el applet de bluetooth y luego vuelva a conectarlo. Luego finalmente proceda a cambiar el perfil de nuevo a A2DP y debería funcionar.

También puede probar lo siguiente en la línea de comandos y debería completar la mayor parte de la tabla por usted. Reemplace el número 2 con el número de índice actualmente para los dos comandos de pacmd a continuación.

 pacmd set-card-profile 2 off bluetoothctl disconnect 50:C9:71:97:A1:86 connect 50:C9:71:97:A1:86 pacmd set-card-profile 2 a2dp_sink 

Para una manera más complicada pero automatizada de hacer lo mismo para apagar y volver a encender el perfil y luego volver a a2dp pero no desconectar y conectar el dispositivo Bluetooth

 index=`pacmd list-cards | grep bluez_card -B1 | grep index | awk '{print $2}'`;pacmd set-card-profile $index off; pacmd set-card-profile $index a2dp_sink 

También tenía que hacer un guión funcional pero descuidado para hacer lo mismo, pero también desconectar y volver a conectar los auriculares bluetooth. Agarra el índice del perfil porque el índice cambia cada vez que el dispositivo se desconecta y se vuelve a conectar. Esto está codificado con la identificación del dispositivo para los auriculares que mencionó anteriormente

 pacmd set-card-profile `pacmd list-cards | grep bluez_card -B1 | grep index | awk '{print $2}'` off; sleep 2 ; echo -e "disconnect 50:C9:71:97:A1:86\n quit"|bluetoothctl;sleep 5; echo -e "connect 50:C9:71:97:A1:86\n quit"|bluetoothctl; sleep 5; pacmd set-card-profile `pacmd list-cards | grep bluez_card -B1 | grep index | awk '{print $2}'` a2dp_sink 

Durante las pruebas terminé con los 5 segundos para dormir en lugar de 3 porque el dispositivo aún no estaba listo para cambiar el perfil de audio. Sus resultados pueden variar en unos pocos segundos +/- 5 segundos. Editar con respecto a una trampa potencial. Descubrí que ocasionalmente es necesario ejecutar el script más grande dos veces antes de que funcione. No estoy seguro de si boost los tiempos de sueño ayudaría o no, ya que no lo he probado. Pero lo he usado en dos máquinas con la misma marca de auriculares BT y está haciendo lo que se supone para automatizar el proceso para que el sonido funcione en los auriculares.

Eventualmente, el problema se solucionará en el paquete bluetooth, pero parece que sigue apareciendo en las nuevas versiones de Ubuntu, así como en otras versiones de Linux. Pero de todos modos espero que te sirva de ayuda.

Tuve este problema en Ubuntu 16.04.1 LTS, y aplicando el trabajo de GDM encontrado en https://wiki.debian.org/BluetoothUser/a2dp lo resolví.

Específicamente, crea / edita /var/lib/gdm3/.config/pulse/client.conf para leer:

 autospawn = no daemon-binary = /bin/true 

Entonces

 sudo chown gdm:gdm /var/lib/gdm3/.config/pulse/client.conf 

También agregué a /etc/pulse/default.pa

 load-module module-switch-on-connect 

Aunque esto podría no ser estrictamente necesario.

Después de reiniciar, me conecté a través del administrador de bluetooth y pude cambiar el perfil de audio a a2dp_sink .

Para permitir que su sistema sea detectado como un receptor A2DP (por ejemplo, para reproducir música desde su teléfono a través de los parlantes de su computadora), agregue Enable=Source,Sink,Media,Socket en [General] en /etc/bluetooth/audio.conf .

Después de hacer esto, reinicie el demonio bluetooth

 systemctl restart bluetooth 

Conecte su dispositivo de auriculares

 bluetoothctl connect  

Comprueba tu tarjeta y configura el perfil.

 pacmd list-cards pacmd set-card-profile   

lagerismi publicó un script aquí en launchpad basado en la respuesta de Jamie S.

  • ¡Cambie la dirección MAC de los dispositivos en la variable dentro del script! (Se puede encontrar con bluetoothctl -> Dispositivo)

  • Haga el script ejecutable chmod ax bluetooth_headphone_reactivation.sh

Para ejecución automática al inicio (solo funciona si el auricular ya está encendido):

  • Agregue el script a los scripts de inicio / apagado en el panel de control de KDE

Para una ejecución manual rápida:

  • Agregue una entrada al inicio de la aplicación (también puede configurar un atajo de teclado como “CTRL + ALT + H” y / o fijar este inicio a la barra de la ventana)

La secuencia de comandos:

 #!/bin/sh device_mac='' pacmd set-card-profile `pacmd list-cards | grep bluez_card -B1 | grep index | awk '{print $2}'` off sleep 2 echo "disconnect $device_mac\n quit"|bluetoothctl sleep 5 echo "connect $device_mac\n quit"|bluetoothctl sleep 5 pacmd set-card-profile `pacmd list-cards | grep bluez_card -B1 | grep index | awk '{print $2}'` a2dp_sink 

En Xubuntu 16.04.2
Utilice blueman-manager:

  1. conectar -> desactivar perfil
  2. reconectar -> establecer perfil a2dp
  3. ahora su auricular está bien!

Mi script de bash de JBL

 #!/bin/bash #headset mac mac="00:1D:DF:67:0A:29" profile="a2dp" # Special Bluetooth controller, default is empty btMac="" #connect|disconnect wait time waitTime=5 macId="${mac//:/_}" deviceId="bluez_card.$macId" declare -A profiles profiles['a2dp']='a2dp_sink' profiles['hsp']='headset_head_unit' profiles['off']='off' function btCmd() { cmd="$1\nquit" [ ! -z "$btMac" ] && cmd="select $btMac\n$cmd" echo -e "$cmd" | bluetoothctl } function setProfile() { cmd="pactl set-card-profile $deviceId ${profiles[$1]}" echo $cmd $cmd } function btWaitConnect() { conState=$1 for ((i=1;i<=$waitTime;++i)); do tmp="`btCmd "info $mac"|grep 'Connected: '`" [ ! -z "`echo "$tmp"|grep $conState`" ] && echo "$tmp" && return 0 sleep 1s done echo "$tmp" return 1 } function btConnect() { tmp="`btCmd "trust $mac\nconnect $mac" | grep -v 'NEW\|DEL\| quit'`" echo "$tmp" tmp="`btWaitConnect yes`" echo $tmp [ -z "`echo "$tmp" | grep yes`" ] && echo -e "Device $mac:\n\tConnected: fail." && return 1 sleep 2s return 0 } function btDisConnect() { tmp="`btCmd "disconnect $mac" | grep -v 'NEW\|DEL\| quit'`" echo "$tmp" tmp="`btWaitConnect no`" echo $tmp [ -z "`echo "$tmp" | grep no`" ] && echo -e "Device $mac:\n\tdisconnected: fail." && return 1 sleep 1s return 0 } # controller echo "" btCtls="`btCmd list | grep '^Controller' | grep " $btMac"`" echo -e "controller:\n$btCtls" [ -z "$btCtls" -o ! -z "`echo "$btCtls" | grep "not available"`" ] && exit 1 # connect -> set off echo "" tmp="`btCmd paird-devices | grep '^Device' | grep " $mac"`" echo -e "paird-devices:\n$tmp" [ `echo "$tmp" | wc -l` != 1 ] && echo "Please pair the Bluetooth headset first: $mac" && exit 1 btConnect || exit $? setProfile off # reconnect -> set profile btDisConnect || exit $? btConnect || exit $? setProfile $profile 

Por lo tanto, si está utilizando Debian, puede hacer lo siguiente: Se niega a cambiar el perfil a a2dp_sink: No está conectado

Problema

El auricular Bluetooth está conectado, pero ALSA / PulseAudio no puede detectar el dispositivo conectado o no hay ningún dispositivo para elegir. Esto sucede porque GDM captura el receptor A2DP en el inicio de sesión, ya que GDM necesita pulseaudio en la sesión gdm para la accesibilidad. Por ejemplo, el lector de pantalla lo requiere.

Solución

Para evitar que GDM capture el receptor A2DP al iniciar la sesión, edite /var/lib/gdm3/.config/pulse/client.conf (o /var/lib/gdm3/.config/pulse/client.conf , si no existe):

 autospawn = no daemon-binary = /bin/true 

Después de eso, debe otorgar acceso a este archivo al usuario de Debian-gdm:

 chown Debian-gdm:Debian-gdm /var/lib/gdm3/.config/pulse/client.conf 

También necesitarás deshabilitar el inicio de pulseaudio:

 rm /var/lib/gdm3/.config/systemd/user/sockets.target.wants/pulseaudio.socket 

Para poder conectar automáticamente a2dp para algunos dispositivos, agregue esto a /etc/pulse/default.pa :

 load-module module-switch-on-connect 

Reiniciar.

Estaba intentando configurar mi Bluetooth y siempre recibí este error.

Encontré que el problema era Skype. Si tengo Skype funcionando, no puedo configurar el perfil a2dp_sink .

Entonces, si se encuentra con este problema, vea si tiene Skype ejecutándose y apáguelo.

Estoy seguro de que las respuestas anteriores realmente intentan abordar la causa raíz del problema. Yo, sin embargo, no pude hacer que ninguno de ellos trabajara. Tuve el mismo problema que OP, pero en Linux Mint 17/18. Escribí esta secuencia de comandos para conectar Bluetooth de manera confiable y usar a2dp.

Copiado / pegado para la posteridad, pero la peor parte del asunto es que replica exactamente lo que el OP (y yo) tendríamos que hacer en la interfaz de usuario.

El guión de Dominik no funcionaría de manera confiable para mí, porque solo intentaría una vez configurar todo. Tendría que ejecutarlo varias veces para que funcione. Esto es con lo que terminé, que siempre funciona.

 #!/bin/bash MAC=$1 CARD=$(echo "${MAC}" | sed -e 's/:/_/g') CARD="bluez_card.${CARD}" $(pactl list | grep -qi 'Active Profile: a2dp_sink') a2dpUsed=$? # this loops until a2dp is _actually used_ on the given MAC. while [ ${a2dpUsed} -ne 0 ]; do # echo "Restarting bluetooth." rfkill unblock bluetooth sudo service bluetooth restart sudo hciconfig hci0 up # reconnect echo -e "power on\nconnect ${MAC}" | bluetoothctl # echo "Waiting for headset to be connected..." btConnected=1 while [ ${btConnected} -gt 0 ]; do sleep .1 $(bluetoothctl <<< "info ${MAC}" | grep -qi "Connected: yes") btConnected=$? done # echo "Bluetooth connected, waiting for profiles to register" cardFound=1 while [ ${cardFound} -ne 0 ]; do $(pactl list | grep -qi "${CARD}") cardFound=$? done # echo "Setting bluetooth a2dp profile" pactl set-card-profile ${CARD} a2dp_sink $(pactl list | grep -qi 'Active Profile: a2dp_sink') a2dpUsed=$? done echo "a2dp is working." 
 systemctl restart bluetooth 
  • Abra la configuración de sonido (accesible haciendo clic en el icono del altavoz en la bandeja)
  • Pruebe y cambie el perfil de salida a A2DP Sink.
  • Si eso no funciona, cambie su dispositivo a Altavoces u otra cosa y luego vuelva a cambiarlo.
  • Por lo general, encuentro que puedo configurar mi perfil de salida

Como se documenta aquí , es porque GDM captura el receptor A2DP en el inicio de sesión, ya que GDM necesita pulseaudio en la sesión de gdm para la accesibilidad.
Intente agregar esto a “/var/lib/gdm3/.config/pulse/default.pa”, o créelo, luego reinicie:

! / usr / bin / pulseaudio -nF

#

cargar la configuracion del sistema

.include /etc/pulse/default.pa

descargar módulos de controladores para hardware Bluetooth

.ifexists module-bluetooth-policy.so unload-module module-bluetooth-policy .endif

.ifexists module-bluetooth-discover.so unload-module module-bluetooth-discover .endif