A2DP di PulseAudio - audio berombak / melompati yang mengerikan

12

Saya telah memasangkan headset Bluetooth saya dengan laptop Ubuntu 12.04 saya dengan chip Bluetooth di dalamnya:

lsusb | grep Bluetooth

Bus 003 Device 003: ID 045e:0745 Microsoft Corp. Nano Transceiver v1.0 for Bluetooth

Perangkat telah dipasangkan, dan dengan bantuan blueman, saya menghubungkannya ke PulseAudio sebagai wastafel. Audio memang tampil dalam mode A2DP, tetapi sangat berombak dan melompat ke titik yang tidak jauh lebih baik daripada tidak sama sekali.

Saya membaca sekitar dan melihat bahwa ada perbaikan yang melibatkan menyesuaikan niceprioritas server PulseAudio. Karena secara default, PulseAudio berjalan pada basis per pengguna, saya menambahkan yang berikut ini ke /etc/security/limits.conf:

*       hard    rtpio   0
*       soft    rtpio   0
@audio  hard    rtpio   20
@audio  soft    rtpio   20
pulse   hard    rtpio   20
pulse   soft    rtpio   20

Saya kemudian menambahkan diri saya ke audiogrup untuk dapat menjadwalkan prioritas untuk pulseaudioproses. Tampaknya pulseaudiosekarang berjalan dengan prioritas -11:

ps -eo pri, ni, cmd | grep [p] ulse

30 -11 /usr/bin/pulseaudio --start --log-target=syslog

Ini harus berarti bahwa PulseAudio berjalan dengan prioritas -11, yang bagus.

Namun, bahkan setelah restart, saya masih mendapatkan audio berombak yang mengerikan.

bagaimana saya harus melanjutkan? Saya mencoba membuat headset Bluetooth yang saya beli ini dapat digunakan.

Catatan: Saya sudah mencoba memasangkan perangkat ini dengan tablet Android tepat di sebelah laptop saya dan berfungsi dengan baik, jadi ini bukan kemacetan nirkabel, tampaknya entah bagaimana berkorelasi langsung dengan Linux.

Naftuli Kay
sumber

Jawaban:

20

Edit file konfigurasi ALSA

sudo gedit /etc/modprobe.d/alsa-base.conf

Tambahkan baris

options snd-hda-intel model=generic

ke akhir file, dan reboot.

Konfirmasikan dan Buat Akun Ini
sumber
1
Ini bekerja dengan luar biasa untuk BOSE tenang saya 35 speaker II (ubuntu 18.04)
Victor Parmar
Perbaikan sederhana ini juga berfungsi untuk saya setelah banyak pencarian. Ubuntu 18.10, earphone bluetooth (promate trueBlue).
Francesco Napolitano
Membuat akun untuk menyebutkan bahwa ini memecahkan masalah saya juga (QC35II). Penjelasan akan sangat membantu; tetapi bagaimanapun, Anda adalah penyelamat
Sam
Saya melihat sekitar choppiness 95% lebih sedikit dengan perbaikan ini dengan QC35II pada pengujian Debian 9, kernel 4.18.20-2.
Andrey Portnoy
3
pada akhirnya setelah mengedit file ini Anda tidak perlu me-restart, jalankan sajasudo service bluetooth restart
Dinuka Salwathura
12

Karena tidak ada jawaban lain yang bekerja pada sistem saya (Ubuntu 18.04 LTS pada MacBook Air 2012), saya menemukan solusi saya di wiki pengguna ubuntuuser Jerman . Ringkasan bahasa Inggris dari instruksi Jerman:

Output berombak mungkin disebabkan oleh implementasi A2DP, dan bagaimana buffer terdengar sebelum menyandikannya. Bagi saya, mengubah ukuran buffer ini memecahkan masalah suara berombak. Anda perlu melakukan tiga langkah:

  1. Temukan info yang diperlukan tentang perangkat bluetooth (saat terhubung!)

    pactl list | grep -Pzo '.*bluez_card(.*\n)*'
    

    Outputnya harus seperti

    Name: bluez_card.28_11_A5_84_B6_F9
    Driver: module-bluez5-device.c
    ...
    Ports:
    speaker-output: Speaker (priority: 0, latency offset: 0 usec, available)
        Part of profile(s): a2dp_sink, headset_head_unit
    speaker-input: Bluetooth Input (priority: 0, latency offset: 0 usec, not available)
        Part of profile(s): headset_head_unit
    

    Kami melihat bahwa buffer saat ini memiliki 0 latensi. Pada langkah selanjutnya, Anda akan membutuhkan NAMEdan PORTdari output Anda. Dalam contoh ini , masing-masing adalah bluez_card.28_11_A5_84_B6_F9dan speaker-output.

  2. Setel ukuran buffer (latensi) kartu Anda ke nilai yang sesuai dengan pola perintah ini:

    pactl set-port-latency-offset <NAME> <PORT> <BUFFER_SIZE_MICROSECONDS> 
    

    Unit latensi dari perintah berikut adalah mikrodetik, jadi saya menggunakan buffer 50 milidetik untuk perintah saya di sini:

    pactl set-port-latency-offset bluez_card.28_11_A5_84_B6_F9 speaker-output 50000 
    
  3. Mulai ulang layanan bluetooth Anda untuk menerapkan perubahan Anda

    sudo service bluetooth restart
    

Karena biasanya tidak ada dokumentasi tentang ini, Anda mungkin harus bereksperimen dengan nilai buffer yang lebih tinggi atau lebih rendah.

Chris_128
sumber
1
Anda layak mendapatkan lebih banyak suara! Saya ingin menyebutkan bahwa 45000 bekerja dengan baik untuk Macbook Air (awal 2014) dan Bose QC35
Ole Aldric
Ini benar, terima kasih
jhtong
3

Perbaikan berhasil bagi saya, meskipun saya menemukan bahwa saya harus MEMUTUSKAN baris sebelumnya. Lihat di bawah:

# Keep snd-usb-audio from beeing loaded as first soundcard  
# options snd-usb-audio index=-2  <-REM this line if it doesn't work at first  
options snd-hda-intel model=generic
randomthingsido
sumber
2

Jawaban Chris_128 bekerja untuk saya tetapi untuk pemula saya akan menambahkan sedikit detail.

Untuk NAME dan PORT untuk perintah di bawah ini:

pactl set-port-latency-offset NAME PORT 50000 

Anda akan mendapatkannya setelah hasil mengetik:

pactl list | grep -Pzo '.*bluez_card(.*\n)*'


Name: bluez_card.5C_FB_7C_0D_0F_EE
Driver: module-bluez5-device.c
Owner Module: 28
Properties:
    ...
Profiles:
    headset_head_unit: Headset Head Unit (HSP/HFP) (sinks: 1, sources: 1, priority: 30, available: yes)
    a2dp_sink: High Fidelity Playback (A2DP Sink) (sinks: 1, sources: 0, priority: 40, available: yes)
    off: Off (sinks: 0, sources: 0, priority: 0, available: yes)
Active Profile: a2dp_sink
Ports:
    headset-output: Headset (priority: 0, latency offset: 0 usec, available)
        Part of profile(s): headset_head_unit, a2dp_sink
    headset-input: Headset (priority: 0, latency offset: 0 usec)
        Part of profile(s): headset_head_unit

NAME akan menjadi "bluez_card.5C_FB_7C_0D_0F_EE" dan PORT akan menjadi "output headset"

Jadi untuk kasus saya, perintah saya adalah

"pactl set-port-latency-offset bluez_card.5C_FB_7C_0D_0F_EE headset-output 50000"

Mulai ulang layanan bluetooth Anda

sudo service bluetooth restart
okto
sumber
1

Punya masalah yang sama dengan Ubuntu 18.04 berjalan sebagai dual boot di MacBook Mini. Sudah mencoba mengubah konfigurasi ALSA seperti yang disebutkan oleh @ConfirmAndCreateThisAccount.

Tapi itu tidak berhasil.

Jadi saya menginstal Blueman menggunakan perintah di bawah ini

sudo apt-get install blueman

Kemudian saya memutus perangkat bluetooth dari pengaturan sistem bluetooth & dipasangkan kembali menggunakan Blueman. Sekarang semuanya baik-baik saja. Bahkan kontrol Play / Pause bekerja.

iamnagaky
sumber
0

Anda dapat membuka bilah pencarian (CTRL-D dalam kesatuan, Windows-Key in Gnome) ketik "Pulse" atau "Volume". Buka alat GUI "Pulseaudio Volume Control", ikonnya terlihat seperti tombol atau pengukur.

Di sana Anda dapat memilih speaker Bluetooth Anda. Klik Advanced, atur nilai Latency seperti yang diusulkan dalam jawaban lain. 45 ms atau 50 ms tampaknya bekerja untuk mereka, tetapi saya belum menemukan nilai bagus yang berfungsi untuk saya.

Tangkapan layar terlampir. Speaker Bluetooth saya disebut SRS-BTX300. Anda tidak perlu me-restart bluetooth setelah mengubah nilai latensi.

masukkan deskripsi gambar di sini

knb
sumber