PulseAudio gagal mengatur profil kartu ke 'a2dp_sink'. Bagaimana saya bisa melihat log dan mencari tahu apa yang salah?

Saat ini saya telah menginstal ubuntu 16.04 dan a2dp digunakan untuk bekerja pada instalasi baru, yang saya lebih suka pergi sebagai opsi terakhir. Ketika pairing dihapus dari pengaturan bluetooth dan dipasangkan lagi kadang-kadang berhasil berada di profil a2dp, tetapi jika headset diputuskan dan kemudian dihubungkan kembali profil a2dp tidak berfungsi lagi (meskipun dikatakan ada di a2dp), itu hanya berfungsi setelah beralih ke HSP / HSF dan kemudian saya tidak dapat mengaturnya di a2dp.

Saya telah mencoba melakukan:

 pacmd set-card-profile <index> a2dp_sink

tetapi kesalahan berikut keluar:

"Failed to set card profile to 'a2dp_sink'"

Saya tidak berpengalaman di Linux jadi saya tidak tahu bagaimana cara mendapatkan log atau apa yang harus dicari di dalamnya, tapi saya mendapatkan ini dari pacmd list-cards:

Ketika berhasil:

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:

Ketika tidak berhasil:

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:

Dan modul yang dimiliki adalah:

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"

Saya sudah mencoba memodifikasi /etc/bluetooth/audio.conf dan menginstal blueman tetapi tidak berhasil. Saya juga mencoba menginstal ulang bluez dan pulseaudio tetapi tidak ada yang berubah.

Apakah ada cara agar saya bisa tahu apa yang salah dan memperbaikinya?

Berdasarkan baris "active profile: " profil suara tidak diaktifkan.

Satu program yang mudah digunakan untuk mengubah profil adalah pavucontrol. Anda dapat menginstalnya dengan sudo apt install pavucontrol -y. Kemudian jalankan pavucontrol dari command line atau Alt+F2 jika Anda menggunakan Kubuntu dan memasukkan pavucontrol.

Pilih tab konfigurasi dan kemudian coba ubah profil untuk headphone Anda dan lihat apakah itu memperbarui untuk Anda. Sepertinya ada bug dengan bluetooth a2dp yang masih ada di linux dan itu mempengaruhi dua instalasi 16.04 saya. Jika sudah mengatakan A2DP ubah ke OFF, lepaskan perangkat di applet bluetooth, lalu sambungkan kembali. Kemudian akhirnya lanjutkan untuk mengubah profil kembali ke A2DP dan seharusnya berfungsi.

Anda juga dapat mencoba yang berikut ini pada baris perintah dan seharusnya tab menyelesaikan sebagian besar untuk Anda. Ganti angka 2 dengan nomor indeks saat ini untuk kedua perintah pacmd di bawah ini.

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

Untuk cara yang lebih rumit tetapi otomatis untuk melakukan hal yang sama untuk mengubah profil ke off dan kemudian kembali ke a2dp tetapi tidak melakukan pemutusan dan penyambungan perangkat 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 

Saya juga membuat skrip yang berfungsi tetapi ceroboh untuk melakukan hal yang sama tetapi juga memutuskan dan menghubungkan kembali headphone bluetooth. Ini mengambil indeks profil karena indeks berubah setiap kali perangkat terputus dan terhubung kembali. Ini adalah hardcoded dengan id perangkat untuk headset yang Anda daftarkan di atas

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

Selama pengujian, saya berakhir dengan 5 detik untuk tidur, bukan 3 detik karena perangkat belum siap untuk mengubah profil audio. Hasil Anda mungkin berbeda beberapa detik +/- 5 detik. Edit mengenai potensi jebakan. Saya menemukan bahwa kadang-kadang diperlukan untuk menjalankan skrip yang lebih besar dua kali sebelum berhasil. Saya tidak yakin apakah meningkatkan waktu tidur akan membantu atau tidak karena saya belum mengujinya. Tetapi saya telah menggunakannya pada dua mesin dengan merek headphone BT yang sama dan itu melakukan apa yang seharusnya untuk mengotomatisasi proses untuk mendapatkan suara yang berfungsi pada headphone.

Akhirnya masalah ini akan ditambal dalam paket bluetooth tetapi tampaknya terus kembali dalam rilis baru Ubuntu serta versi Linux lainnya. Tapi bagaimanapun juga semoga itu membantu Anda

Komentar (5)

Saya mengalami masalah ini di Ubuntu 16.04.1 LTS, dan menerapkan cara kerja GDM yang ditemukan di https://wiki.debian.org/BluetoothUser/a2dp menyelesaikannya.

Secara khusus, buat/edit /var/lib/gdm3/.config/pulse/client.conf untuk dibaca:

autospawn = no
daemon-binary = /bin/true

Kemudian

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

Saya juga menambahkan ke /etc/pulse/default.pa

load-module module-switch-on-connect

Meskipun hal ini mungkin tidak terlalu diperlukan.

Setelah reboot, saya terhubung melalui bluetooth manager dan berhasil mengalihkan profil audio ke a2dp_sink.

Komentar (2)

lagerismi memposting skrip di sini di launchpad berdasarkan jawaban oleh Jamie S.

  • Ubah alamat MAC perangkat dalam variabel di dalam skrip! (bisa ditemukan dengan bluetoothctl --> Device)

  • Buatlah skrip dapat dieksekusi chmod a-x bluetooth_headphone_reactivation.sh

Untuk eksekusi otomatis saat startup (hanya berfungsi jika headset sudah dinyalakan):

  • Tambahkan skrip ke skrip start/shutdown di panel kontrol KDE's

Untuk eksekusi manual yang cepat:

  • Tambahkan entri ke application-starter (Anda juga dapat mengatur shortcut keyboad seperti "CTRL+ALT+H" dan/atau menyematkan starter ini ke window bar)

Skrip:

#!/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
Komentar (1)