A2DP на PulseAudio - жахливий звук / пропуск аудіо


13

Я з'єднав гарнітуру Bluetooth зі своїм ноутбуком Ubuntu 12.04 з мікросхемою Bluetooth всередині:

lsusb | grep Bluetooth

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

Пристрій було парним, і за допомогою bluemanя підключив його до PulseAudio як раковину. Аудіо все-таки трапляється в режимі A2DP, але він дуже жахливий і пропускає до кращого, ніж нічого.

Я прочитав навколо і побачив, що виправлена ​​помилка регулювання niceпріоритету сервера PulseAudio. Оскільки PulseAudio за замовчуванням працює на основі кожного користувача, я додав у своє /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

Потім я додав себе до audioгрупи, щоб мати можливість намітити пріоритет pulseaudioпроцесу. Здається, pulseaudioзараз працює з пріоритетом -11:

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

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

Це повинно означати, що PulseAudio працює з пріоритетом -11, що добре.

Однак навіть після перезавантаження я все одно отримую страхітливий звук.

Як слід діяти? Я намагаюся зробити цю гарнітуру Bluetooth, яку я придбав корисною.

Примітка. Я спробував поєднати цей пристрій із планшетом Android поруч із ноутбуком, і він працює чудово, тому це не є затори бездротового зв’язку, схоже, якимось чином пов’язаний із Linux.

Відповіді:


20

Відредагуйте файл конфігурації ALSA

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

Додайте рядок

options snd-hda-intel model=generic

до кінця файлу та перезавантажте.


1
Це чудово спрацювало на моїх динаміках тихого комфорту BOSE 35 II (ubuntu 18.04)
Victor Parmar

Цей простий виправлення також працював для мене після багатьох пошуків. Ubuntu 18.10, навушники Bluetooth (promate trueBlue).
Франческо Наполітано

Створив обліковий запис, щоб зазначити, що це вирішило і мої проблеми (QC35II). Пояснення було б корисним; але в будь-якому випадку, ви є рятувальником життя
Сем

Я бачу приблизно 95% менше задоволеності цим виправленням з QC35II на тестуванні Debian 9, ядро ​​4.18.20-2.
Андрій

3
наприкінці після редагування цього файлу вам не потрібно перезавантажувати, просто запустітьsudo service bluetooth restart
Dinuka Salwathura

12

Оскільки жодна з інших відповідей не працювала в моїй системі (Ubuntu 18.04 LTS на MacBook Air 2012), я знайшов своє рішення на німецькій вікі-програмі ubuntuusers . Англійська резюме німецьких інструкцій:

Шопкий вихід може бути викликаний реалізацією A2DP та способом буферизації звуку перед кодуванням. Для мене зміна розміру цього буфера вирішила проблему звукового звуку. Вам потрібно виконати три етапи:

  1. Знайдіть необхідну інформацію про пристрій Bluetooth (поки він підключений!)

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

    Вихід повинен бути чимось на кшталт

    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
    

    Ми бачимо, що в даний час буфери мають 0 затримок. На наступному кроці вам знадобиться NAMEі PORTваш вихід. У цьому прикладі це bluez_card.28_11_A5_84_B6_F9і speaker-output, відповідно.

  2. Встановіть розмір буфера (затримку) вашої картки на відповідне значення за допомогою цього шаблону команд:

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

    Одиниця затримки наступної команди - це мікросекунди, тому я тут використовую буфер 50 мілісекунд для своєї команди:

    pactl set-port-latency-offset bluez_card.28_11_A5_84_B6_F9 speaker-output 50000 
    
  3. Перезапустіть службу Bluetooth, щоб застосувати зміни

    sudo service bluetooth restart
    

Оскільки зазвичай про це немає документації, можливо, доведеться експериментувати з більш високими або нижчими значеннями буфера.


1
Ви заслуговуєте на більше грошей! Хочу зазначити, що 45000 працює добре для Macbook Air (на початку 2014 року) та Bose QC35
Оле Олдрік

Це правильно, дякую
jhtong

Все ще заїкається на мене :( (Манджаро)
Лукас Бустаманте

Які затримки ви спробували?
Chris_128

3

Виправлення працювало для мене, хоча я виявив, що мені потрібно було повернути лінію перед цим. Дивись нижче:

# 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

3

Відповідь Chris_128 працював на мене, але для новачків я додам трохи деталей.

Для NAME та PORT для команди нижче:

pactl set-port-latency-offset NAME PORT 50000 

Ви отримаєте його після отримання тексту:

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 буде "bluez_card.5C_FB_7C_0D_0F_EE", а PORT - "гарнітура-вихід"

Тож для мого випадку моя команда

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

Перезапустіть службу Bluetooth

sudo service bluetooth restart

1

Була така ж проблема з Ubuntu 18.04, що працює як подвійне завантаження в MacBook Mini. Спробував змінити конфігурацію ALSA, як згадує @ConfirmAndCreateThisAccount.

Але це не спрацювало.

Тому я встановив Blueman за допомогою команди нижче

sudo apt-get install blueman

Тоді я відключив Bluetooth-пристрій від налаштувань bluetooth системи і повторно спарився за допомогою Blueman. Зараз все добре. Навіть елементи керування Play / Pause працюють.


0

Ви можете відкрити панель пошуку (CTRL-D в єдності, Windows-ключ у Gnome), ввести "Pulse" або "Volume". Відкрийте інструмент графічного інтерфейсу "Pulseaudio Volume Control", його значок виглядає як ручка або датчик.

Там ви можете вибрати свій динамік Bluetooth. Клацніть на Додатково, встановіть значення затримки так, як запропоновано в інших відповідях. 45 мс або 50 мс, здається, працює для них, але я не знайшов хорошого значення, яке працює для мене.

Скріншот додається. Мій спікер Bluetooth називається SRS-BTX300. Вам не потрібно перезапускати Bluetooth після зміни значення затримки.

введіть тут опис зображення

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.