PulseAudio не может установить профиль карты в «a2dp_sink». Как я могу посмотреть логи и выяснить, что не так?

В настоящее время я установил Ubuntu 16.04 и a2dp, используемый для новой установки, который я предпочел бы оставить как последний вариант. Когда спаривание удаляется из настроек Bluetooth и снова выполняется сопряжение, иногда удается установить профиль a2dp, но если гарнитура отключена, а затем повторно подключена, профили a2dp больше не работают (хотя и указано, что используется для a2dp), она работает только после переключения на HSP / HSF, а затем я не могу установить его на a2dp.

Я пытался сделать:

 pacmd set-card-profile <index> a2dp_sink

, но появляется следующая ошибка:

"Failed to set card profile to 'a2dp_sink'"

Я довольно неопытен в Linux, поэтому я не знаю, как получить журналы или что искать в них, но я получил это из списка карт pacmd:

Когда это работает:

name: <bluez_card.50_C9_71_97_A1_86>
driver: <module-bluez5-device.c>
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: <a2dp_sink>
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:

Когда это не так:

name: <bluez_card.50_C9_71_97_A1_86>
driver: <module-bluez5-device.c>
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: <off>
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:

И модуль-владелец:

name: <module-bluez5-device>
argument: <path=/org/bluez/hci0/dev_50_C9_71_97_A1_86>
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"

Я уже пытался изменить /etc/bluetooth/audio.conf и установить blueman, но это не сработало. Я также попытался переустановить bluez и pulseaudio, но ничего не изменилось.

Есть ли способ узнать, что случилось, и исправить это?

31
задан 30 April 2016 в 04:19

12 ответов

На основе строки "активный профиль: < прочь>" звуковой профиль не активировался.

Одна программа, которая проста в использовании для изменения профиля, является pavucontrol. Можно установить его с sudo apt install pavucontrol -y. Затем выполненный pavucontrol из командной строки или Alt+F2, если Вы находитесь на Kubuntu и вводе pavucontrol.

Выбор вкладка конфигурации и затем пытается изменить профиль для Ваших наушников и видит, обновляет ли это для Вас. Кажется, существует ошибка с Bluetooth a2dp все еще в Linux, и это влияет на две из моих 16,04 установок. Если это уже говорит, что A2DP изменяет его на ПРОЧЬ, отключает устройство в апплете Bluetooth, то повторно подключает его. Затем наконец продолжите возвращать профиль к A2DP, и он должен работать.

можно также попробовать следование командной строки, и это должно снабдить вкладками завершенный большая часть из него для Вас. Замените номер 2 индексом в настоящее время для обоих команды pacmd ниже.

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

Для более сложного, но автоматизированного способа сделать то же самое для циклического повторения профиля к прочь и затем обратно к a2dp, но не делают разъединение 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 

, я должен был также сделать работу, но неаккуратный сценарий, чтобы сделать то же самое, но также и разъединить и повторно подключить Bluetooth-гарнитуру. Это захватывает индекс профиля, потому что индекс изменяется каждый раз, когда устройство отключено и повторно подключено. Это - hardcoded с идентификатором устройства для гарнитуры, которую Вы упомянули выше

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

Во время тестирования, я закончил с этими 5 секундами для сна вместо 3, потому что устройство не было готово изменить профиль аудио все же. Ваши результаты могут варьироваться на несколько секунд +/-5 секунд. Редактирование относительно потенциальной ловушки. Я действительно находил, что это, иногда необходим для запущения большего скрипта дважды, прежде чем это будет работать. Я не уверен, если увеличение времен сна помогло бы или не, поскольку я не протестировал это. Но я использовал его на двух машинах с тем же брендом наушников BT, и это делает то, что это, как предполагается, для автоматизации процесса для получения звука, работающего над наушниками.

В конечном счете проблема будет исправлена в пакете Bluetooth, но, кажется, продолжает возвращаться в новых релизах Ubuntu, а также других версиях Linux. Но во всяком случае надежда, которая помогает для Вас

22
ответ дан 30 April 2016 в 14:19
  • 1
    Я знаю, как обновить ядро, но это doesn' t решают мою проблему. – jaskmar 13 October 2017 в 02:25

У меня была эта проблема на Ubuntu 16.04.1 LTS и применение работы GDM вокруг найденного в https://, wiki.debian.org/BluetoothUser/a2dp решил его.

А именно, создавайте/редактируйте /var/lib/gdm3/.config/pulse/client.conf для чтения:

autospawn = no
daemon-binary = /bin/true

Затем

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

я также добавил к /etc/pulse/default.pa

load-module module-switch-on-connect

, Хотя это не могло бы быть строго необходимо.

После того, как перезагрузка, которую я соединил через менеджера по Bluetooth, смогла успешно переключить профиль аудио на a2dp_sink.

13
ответ дан 30 April 2016 в 14:19
  • 1
    Я вижу, где ошибка была теперь. Работы как очарование!Спасибо! – Grind919 3 October 2017 в 02:25

lagerismi отправил сценарий здесь на панели запуска на основе ответ Jamie S.

  • Изменение MAC-адрес устройств в переменной в сценарии! (может быть найден с bluetoothctl-> Устройство)

  • , Делают исполняемый файл сценария chmod a-x bluetooth_headphone_reactivation.sh

Для автоматического выполнения при запуске (только работы, если гарнитура уже включена):

  • Добавляют сценарий к запустить/завершить работу сценариям в панели управления KDE

Для быстрого ручного выполнения:

  • Добавляют запись в прикладного начинающего (можно также установить keyboad ярлык как "CTRL+ALT+H" и/или прикрепить этого начинающего к шпингалету)

сценарий:

#!/bin/sh
device_mac='<your-devices-mac-address-here>'
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
5
ответ дан 30 April 2016 в 14:19
  • 1
    Я получаю следующую ошибку - пакет python3.5 должен быть переустановлен, но я can' t находят архив для него – Ciaran Doran 3 October 2017 в 01:31

На Xubuntu 16.04.2
blueman-менеджер по Использованию:

  1. подключение-> профиль набора прочь
  2. снова соединяется-> a2dp
  3. профиля набора теперь, Ваша гарнитура в порядке!

Мой сценарий

#!/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 paired-devices | grep '^Device' | grep " $mac"`"
echo -e "paired-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
удара JBL
3
ответ дан 30 April 2016 в 14:19
  • 1
    I' ve редактируют ответ, Вы могли попробовать его теперь? – Samer Abu Gahgah 3 October 2017 в 01:42

Чтобы позволить Вашей системе быть обнаруженной, поскольку A2DP снижается (например, играть музыку с Вашего телефона через Ваши компьютерные динамики), добавьте Enable=Source,Sink,Media,Socket под [General] в /etc/bluetooth/audio.conf.

После выполнения этого, перезапустите демона Bluetooth

systemctl restart bluetooth

Подключение Вы устройство наушника

bluetoothctl
connect <MAC>

Проверка Ваша карта и установите профиль

pacmd list-cards
pacmd set-card-profile <index> <profile>
17
ответ дан 30 April 2016 в 14:19
  • 1
    если ядро или драйверы не устраняют проблему тогда, наклон говорит – SIDDHARTH 13 October 2017 в 08:14

Я пытался настроить свой Bluetooth и всегда получал эту ошибку.

я нашел, что проблемой был Skype. Если у меня есть выполнение Skype, я не могу установить a2dp_sink профиль.

Так, если Вы сталкиваетесь с этой проблемой, видят, имеете ли Вы выполнение Skype и выключаете его.

0
ответ дан 30 April 2016 в 14:19
  • 1
    I' d нравится, но I' m слишком новый! Еще раз спасибо. – Ciaran Doran 4 October 2017 в 02:10

Я принял решение решить его с правилом udev, поскольку я - единственный пользователь системы, таким образом $USER, $XAUTHORITY и $DISPLAY известны.

, Возможно, это полезно для кого-то, который хочет решение, определенное в единственном файле, работая на Ubuntu 18.04.1 LTS.

рычаг инициирован через input подсистема, потому что динамик, кажется, полностью инициализируется на данном этапе.

# file: /etc/udev/rules.d/99-jbl-go2.rules
# fix JBL GO2 with CSR bluetooth: switch to a2dp profile upon connect
# byteborg 20190110
SUBSYSTEMS=="input", ACTION=="add", ATTRS{name}=="70:99:1C:41:C6:EB", ENV{DISPLAY}=":0", ENV{XAUTHORITY}="/run/user/1000/gdm/Xauthority", RUN+="/bin/su alpha -c '/usr/bin/pacmd set-card-profile bluez_card.70_99_1C_41_C6_EB a2dp_sink'"

Wiki Archlinux упоминает Кембриджский Кремний Радио-устройства, обеспечивающие неправильный профиль в подключении ( https://wiki.archlinux.org/index.php/Bluetooth_headset#A2DP_sink_profile_is_unavailable). Я могу подтвердить, что это поведение с "JBL ИДЕТ 2" беспроводных колонки, уже неправильно себя ведя как упомянутый. a2dp, кажется, доступен короткое время после подключения - возможно, проблема синхронизации?

0
ответ дан 29 September 2019 в 17:06

Это устранило проблему профиля карты набора для меня: https://bugs.launchpad.net/ubuntu / + source/pulseaudio / + Кавычка bug/1181106/comments/15

:

1) Modify the /etc/bluetooth/audio.conf
================================

[General]
Enable = Source,Sink,Headset,Gateway,Control,Media
Disable = Socket

HFP=false

[A2DP]
SBCSources=1
MPEG12Sources=0

2) Check for pulseaudio module :
==========================

$ pactl list | grep -i module-bluetooth

If you dont have :
     module-bluetooth-policy
     module-bluetooth-discover
     module-bluetooth-device

Just do :
$ sudo apt-get install pulseaudio-module-bluetooth
$ pulseaudio -k
$ pactl load-module module-bluetooth-device
$ pactl load-module module-switch-on-connect

3) Connect the bluetooth headset
===========================

Use blueman to pair, and connect audio sink
Use pavucontrol to change for A2DP (even if blueman said "audio profile off")

Please confirm that works for you too.
0
ответ дан 23 November 2019 в 00:43

Как зарегистрировано в здесь, Это - потому что приемник A2DP получений GDM на сессии запускается, поскольку GDM нужен pulseaudio на gdm сессии для доступности.
Попытайтесь добавить это к "/var/lib/gdm3/.config/pulse/default.pa" или создать его, затем перезагрузка:

#!/usr/bin/pulseaudio -nF
#

# load system wide configuration
.include /etc/pulse/default.pa

### unload driver modules for Bluetooth hardware
.ifexists module-bluetooth-policy.so
  unload-module module-bluetooth-policy
.endif

.ifexists module-bluetooth-discover.so
  unload-module module-bluetooth-discover
.endif
1
ответ дан 23 November 2019 в 00:43

Я уверен, что предыдущие ответы на самом деле пытаются обратиться к первопричине проблемы. Я, однако, не смог заставить любого из них работать. У меня была та же самая проблема как OP, но на Linux Mint 17/18. Я записал этот сценарий для надежного подключения Bluetooth и использующий a2dp.

Копируйте/вставляйте для потомства, но главный удар вопроса - то, что это точно копирует то, что OP (и I) должен был бы сделать в UI.

Сценарий Dominik надежно не работал бы на меня, потому что он только попытается однажды настроить все. Я должен был бы выполнить его многократно, чтобы заставить его работать. Это - то, с чем я закончил, который работает каждый раз.

#!/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."
1
ответ дан 23 November 2019 в 00:43
systemctl restart bluetooth
  • Открытые звуковые настройки (доступный путем нажатия на значок динамика в лотке)
  • Попытайтесь изменить Профиль вывода на Приемник A2DP.
  • Если это не работает, изменяет Ваше устройство на Динамики или что-то еще и затем переключает его назад.
  • Я обычно нахожу, что могу затем установить свой Профиль вывода
0
ответ дан 23 November 2019 в 00:43

Так, при использовании Debian, можно сделать следующее: Отказанный для переключения профиля на a2dp_sink: Не соединенный

Проблема

Гарнитура Bluetooth подключена, но ALSA/PulseAudio не удается взять подключенное устройство или нет никакого устройства для выбора. Это происходит, потому что приемник A2DP получений GDM на сессии запускается, поскольку GDM нужен pulseaudio на gdm сессии для доступности. Например, программа для чтения с экрана требует его.

Решение

Чтобы препятствовать тому, чтобы GDM получил приемник A2DP на сессии, запускаются, редактирование /var/lib/gdm3/.config/pulse/client.conf (или создайте его, если это не существует):

autospawn = no
daemon-binary = /bin/true

После этого необходимо предоставить доступ в этот файл пользователю Debian-gdm:

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

Необходимо будет также отключить запуск pulseaudio:

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

Для автосоединения a2dp для некоторых устройств добавьте это к /etc/pulse/default.pa:

load-module module-switch-on-connect

Перезагрузка.

2
ответ дан 23 November 2019 в 00:43

Другие вопросы по тегам:

Похожие вопросы: