PulseAudio kart profilini 'a2dp_sink' olarak ayarlayamıyor. Günlükleri nasıl görebilir ve neyin yanlış olduğunu anlayabilirim?


31

Şu anda ubuntu 16.04'ü yükledim ve a2dp yeni bir yükleme üzerinde çalışıyordu, ki son seçenek olarak bırakmayı tercih ediyorum. Eşleştirme bluetooth ayarlarından silindiğinde ve tekrar eşleştirildiğinde, bazen a2dp profilinde kalmayı başarır, ancak kulaklıklı mikrofon setinin bağlantısı kesildikten sonra yeniden bağlanırsa, a2dp profilleri artık çalışmaz (a2dp'de olmasına rağmen) HSP / HSF'ye geçtikten sonra a2dp'ye ayarlayamıyorum.

Yapmayı denedim:

 pacmd set-card-profile <index> a2dp_sink

ancak aşağıdaki hata ortaya çıkıyor:

"Failed to set card profile to 'a2dp_sink'"

Linux'ta oldukça deneyimim yok, bu yüzden günlükleri nasıl alacağımı ya da ne arayacağımı bilmiyorum, ama bunu pasmd liste kartlarından aldım:

Ne zaman çalışır?

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:

Olmadığında:

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:

Ve sahip olma modülü:

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 dosyasını değiştirmeye ve blueman'ı kurmaya çalıştım ama işe yaramadı. Bluez ve pulseaudio'yu tekrar yüklemeye çalıştım ama hiçbir şey değişmedi.

Neyin yanlış olduğunu bilmem ve düzeltmem mümkün mü?


Lütfen bu bilgiyi nereden aldığınızı açıklayabilir misiniz? ve indeks nedir? Teşekkürler!
Ezequiel Moreno

Yanıtlar:


23

"Etkin profil: <off>" satırına dayanarak ses profili etkin değil.

Profili değiştirmek için kullanımı kolay bir program pavucontrol. İle yükleyebilirsiniz sudo apt install pavucontrol -y. Daha sonra komut satırından pavucontrol komutunu veya Kubuntu üzerindeyseniz ve pavucontrol kodunu girerseniz Alt + F2 komutunu çalıştırın.

Yapılandırma sekmesini seçin ve ardından kulaklıklarınızın profilini değiştirmeyi deneyin ve bunun sizin için güncellenip güncellenmediğine bakın. Hala bluetooth a2dp ile linux hala bir hata gibi görünüyor ve benim 16.04 yüklemelerimin ikisini etkiler. A2DP'nin zaten KAPALI olarak değiştiğini söylüyorsa, bluetooth uygulamasında cihazın bağlantısını kesin, ardından tekrar bağlayın. Sonra nihayet profili tekrar A2DP olarak değiştirmeye devam edin ve çalışması gerekir.

Aşağıdakileri komut satırında da deneyebilirsiniz ve sekmesini sizin için tamamlamanız gerekir. 2 numaralı numarayı aşağıdaki her iki pacmd komutu için geçerli olan indeks numarasıyla değiştirin.

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

Profili kapatıp sonra a2dp'ye geri döndürmek için aynı şeyi yapmanın daha karmaşık fakat otomatik bir yolu için, ancak bluetooth cihazının bağlantısını kesip bağlanmasını sağlayın

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 

Ben de aynı şeyi yapmak için çalışan ama özensiz bir komut dosyası yapmakla kaldım, aynı zamanda bluetooth kulaklıkların bağlantısını kesip tekrar takın. Profil endeksini kapar çünkü endeks, cihazın her bağlantısı kesildiğinde ve tekrar bağlandığında değişir. Bu, yukarıda listelenen kulaklığın cihaz kimliğiyle kodlanmış

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

Test sırasında, cihazın ses profilini değiştirmeye hazır olmadığı için 3 yerine 5 saniye uykuya daldım. Sonuçlarınız birkaç saniye +/- 5 saniye değişebilir. Potansiyel bir çöküntüyle ilgili düzenleme yapın. Büyük betiği çalışmadan önce iki kez çalıştırmanın gerekli olduğunu buldum. Uyku sürelerini arttırmanın, test etmediğim gibi yardımcı olup olmayacağından emin değilim. Ancak aynı marka BT kulaklıklı iki makinede kullandım ve kulaklıkta sesin çalışmasını sağlamak için işlemi otomatikleştirmek için ne gerekiyorsa onu yapıyorum.

Sonunda sorun bluetooth paketinde düzeltilecek ancak Ubuntu'nun yeni sürümlerinde ve Linux'un diğer sürümlerinde geri dönmeye devam ediyor gibi görünüyor. Ama her nasılsa umarım sana yardımcı olur


>> Günlükleri nasıl görebilirim ve neyin yanlış olduğunu anlayabilirim? << Bu soruya cevap verebilirseniz çok iyi olur :)
kitingChris

Pavucontrol gui bluetooth kulaklık ses ayarlamak benim için çalışıyor. Gnome ses aletinden daha iyi çalışır.
QkiZ

1
2 yıl sonra ve bu cevabım benim için Sony WH-H900N ile gerekliydi.
Joakim Wimmerstedt

(1 yıl sonra) XFCE ve blueman-manager kullanarak bluetoothctl disconnect aa:bb:cc:dd:ee:ff && bluetoothctl connect aa:bb:cc:dd:ee:ff, Aygıtlar menüsünde sağ tıklatmadan önce ses profilini A2DP'ye değiştirmeme izin verecek. Ayrıca zaman zaman cihazlar menüsünü açmak çok uzun sürdüğünde bir çocuk blueman yöneticisi sürecini öldürmek zorunda kalıyorum.
ericP

Bu komutları verdiğiniz için teşekkür ederiz. Ubuntu 18.04 ve Sony WH-1000xm2 ile çalışan tek geçici çözüm budur. Bu özlemin
egelev

19

Amacıyla sistem bir A2DP lavabo olarak algılanabilir izin vermek (örneğin bilgisayarınızın hoparlörlerinden aracılığıyla telefonunuzdan müzik dinlemek için), ekleme Enable=Source,Sink,Media,Socketaltında[General] içinde /etc/bluetooth/audio.conf.

Bunu yaptıktan sonra, bluetooth arka planını yeniden başlatın

systemctl restart bluetooth

Kulaklık cihazını bağlayın

bluetoothctl
connect <MAC>

Kartınızı kontrol edin ve profili ayarlayın

pacmd list-cards
pacmd set-card-profile <index> <profile>

1
Ubuntu 16.04 /etc/bluetooth/audio.conf kullanmak hiç de yardımcı değil, bu satırı nerede yazmalıyım?
thebeancounter 4:17

Bu benim için Debian Sid’de düzeltti, teşekkür ederim!
Xerz

@thebeancounter yoksa, dosyayı ekler
Jimubao

Eğer A2DP lavabo ile bağlantıyı kaybetti ara sıra halinde bluetoothctl içinde "kapalı gücü" denemek ve ardından "systemctl yeniden başlatma bluetooth" ve bluetoothctl içinde sonra "güç" ve tekrar cihazınıza bağlamak
Jimubao

1
ARch / Manjaro'da çalıştı! Ancak dosya şimdi /etc/bluetooth/main.confson sürümünde bulunur
MCMZL

13

Ubuntu 16.04.1 LTS'de bu sorunu yaşadım ve https://wiki.debian.org/BluetoothUser/a2dp adresinde bulunan GDM çalışmasını uygulamak sorunu çözdü.

Özellikle, /var/lib/gdm3/.config/pulse/client.confokumak için oluşturun / düzenleyin :

autospawn = no
daemon-binary = /bin/true

Sonra

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

Ben de ekledim /etc/pulse/default.pa

load-module module-switch-on-connect

Yine de bu kesinlikle gerekli olmayabilir.

Yeniden başlattıktan sonra, bluetooth yöneticisi ile bağlandım, ses profilini başarıyla değiştirebildim a2dp_sink.


Bağlantıdaki ilk adımda bluez firmware'in kullanılamaması sorunu vardı, sonra gdm kullanıcısı bulunamıyor. Ayrıca, gdm3 klasörü mevcut değildi, o yüzden bu yolun tamamını oluşturmak zorunda kaldı.
Wordforthewise

Debian'ın bu bağlantısından ikinci geçici çözümü yaptım, cazibe gibi çalışıyor!
Amfasis

5

lagerismi , Jamie S. tarafından verilen cevaba dayanarak, launchpad'de bir senaryo yayınladı .

  • Cihazın MAC adresini betiğin içindeki değişkende değiştirin! ( bluetoothctl- - Aygıtla bulunabilir)

  • Komut dosyasını çalıştırılabilir yap chmod a-x bluetooth_headphone_reactivation.sh

Başlangıçta otomatik çalıştırma için (yalnızca kulaklık açıksa çalışır):

  • Komut dosyasını KDE'nin kontrol panelindeki başlatma / kapatma komut dosyalarına ekleyin

Hızlı manuel çalıştırma için:

  • Uygulama-başlatıcısına bir giriş ekleyin ("CTRL + ALT + H" gibi bir keyboad kısayolu da ayarlayabilir ve / veya bu başlatıcıyı pencere çubuğuna sabitleyebilirsiniz)

Senaryo:

#!/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

Sen kullanmalıdır -eile echo.
jarno

3

On Xubuntu 16.04.2 blueman
-manager kullan:

  1. connect -> profili kapat
  2. reconnect -> a2dp profilini ayarlayın
  3. şimdi kulaklığın iyi durumda!

JBL bash betiğim

#!/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

Bu cevap ve @freespace bir i3 kurulumumu bana yardımcı oldu
Luis Lobo Borobia

En son güncelleme varsayılan evyeyi ayarlamayı içeriyor, ancak gerekli olup olmadığını bilmiyorum.
jarno

2

Yani, Debian kullanıyorsanız, aşağıdakileri yapabilirsiniz: Profili a2dp_sink olarak değiştirmeyi reddetti: Bağlı değil

Sorun

Bluetooth kulaklıklı mikrofon seti bağlı, ancak ALSA / PulseAudio bağlı cihazı alamıyor veya alacak bir cihaz yok. Bunun nedeni, GDM'nin oturum açma sırasında A2DP havuzunu yakalamasıdır, çünkü GDM'nin erişilebilirlik için gdm oturumunda pulseaudio'ya ihtiyacı vardır. Örneğin, ekran okuyucu buna ihtiyaç duyar.

Çözüm

GDM'nin oturum başlangıcında A2DP havuzunu ele geçirmesini önlemek için düzenleyin /var/lib/gdm3/.config/pulse/client.conf(veya mevcut değilse oluşturun):

autospawn = no
daemon-binary = /bin/true

Bundan sonra bu dosyaya Debian-gdm kullanıcısına erişim izni vermelisin:

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

Pulseaudio başlangıcını devre dışı bırakmanız da gerekir:

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

A2dp'yi bazı cihazlara otomatik olarak bağlamak için şunu ekleyin /etc/pulse/default.pa:

load-module module-switch-on-connect

Yeniden Başlatma.


Kargo kültü kalabalığını takip etmediğiniz ve sorunu açıkladığınız için teşekkürler. Bunun Debian'ın gerilmesine yardımcı olduğunu onaylayabilirim.
Marcin Owsiany,

1

Eminim önceki cevaplar, sorunun asıl nedenini gidermeye çalışır. Ancak bunların hiçbirinin işe yaramadı. OP ile aynı sorunu yaşadım, ancak Linux Mint 17/18. Yazdığım bu senaryoyu güvenilir bluetooth bağlı ve kullanma A2DP olsun.

Posterity için kopyalayın / yapıştırın, ancak meselenin özü, OP'nin (ve ben) kullanıcı arayüzünde ne yapmak zorunda kaldığını tam olarak kopyalamasıdır.

Dominik'in senaryosu benim için güvenilir bir şekilde çalışmadı, çünkü her şeyi ayarlamak için sadece bir kez denerdi. Çalışması için birden çok kez çalıştırmam gerekirdi. Sonunda bu oldu, bu her zaman işe yarıyor.

#!/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

Belgelendiği gibi burada GDM yakalar oturumun başında lavabo A2DP çünkü GDM ihtiyaçları erişilebilirlik için GDM oturumda pulseaudio Mesela, o vardır.
Bunu "/var/lib/gdm3/.config/pulse/default.pa" dizinine eklemeye çalışın ya da oluşturup yeniden başlatın:

#!/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

0

Bluetooth'umu kurmaya çalışıyordum ve her zaman bu hatayı aldım.

Sorunun Skype olduğunu buldum. Skype çalışıyorsa ayarlayamıyoruma2dp_sink profil .

Öyleyse, bu sorunla karşılaşırsanız, Skype'ın çalışıp çalışmadığını kontrol edin ve kapatın.


0
systemctl restart bluetooth
  • Ses ayarlarını aç (tepsideki hoparlör simgesine tıklayarak erişilebilir)
  • Çıktı profilini A2DP Lavabosu olarak değiştirmeyi deneyin.
  • Bu işe yaramazsa, cihazınızı Hoparlörler veya başka bir şeyle değiştirin ve sonra tekrar değiştirin.
  • Genelde çıktı profilimi ayarlayabileceğimi öğrendim.

0

Ben, ben, sistemin sadece kullanıcı olduğum gibi, bir udev kuralı ile çözmeye seçti $USER, $XAUTHORITYve$DISPLAY tanınmış bulunmaktadır.

Belki de bu, Ubuntu 18.04.1 LTS'de çalışan, tek bir dosyada tanımlanmış bir çözümü isteyen biri için faydalıdır.

Kanca inputalt sistem üzerinden tetiklenir, çünkü hoparlör bu aşamada tamamen başlatılmış görünmektedir.

# 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'"

Archlinux Wiki, bağlantıda yanlış profil sağlayan Cambridge Silicon Radio cihazlarından bahseder ( https://wiki.archlinux.org/index.php/Bluetooth_headset#A2DP_sink_profile_is_unavailable ). Bu davranışı "daha önce belirtildiği gibi yaramazlık" JBL GO 2 "bluetooth hoparlörü ile kabul edebilirim. a2dp, bağlantı kurduktan kısa bir süre sonra kullanılabilir gibi görünüyor - belki de zamanlama sorunu?


0

Bu benim için bir set-kart profili sorunu çözdü: https://bugs.launchpad.net/ubuntu/+source/pulseaudio/+bug/1181106/comments/15

Alıntı:

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.
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.