A2DP на PulseAudio - ужасный прерывистый / пропускаемый звук

Я подключил свою 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.

9
задан 3 June 2014 в 04:21

6 ответов

Отредактируйте конфигурационный файл ALSA

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

, Добавляет строка

options snd-hda-intel model=generic

в конец файла и перезагрузки.

19
ответ дан 3 June 2014 в 04:21

Имел ту же проблему с Ubuntu 18.04, работающей как двойная загрузка в Мини-MacBook. Испытанное изменение конфигурации ALSA, как упомянуто @ConfirmAndCreateThisAccount.

, Но это не работало.

, Таким образом, я установил Blueman, использующего ниже команды

sudo apt-get install blueman

Затем, я разъединил bluetooth-устройство от системных настроек Bluetooth & восстановленное использование Blueman. Теперь все прекрасно. Даже Игра/Пауза управляет работой.

0
ответ дан 7 October 2019 в 17:45

Фиксация работала на меня, хотя я действительно находил, что у меня была R.E.M строка перед нею. Посмотрите ниже:

# 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
0
ответ дан 7 October 2019 в 17:45

Поскольку ни один из других ответов не работал в моей системе (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. На следующем шаге вам потребуются ИМЯ и ПОРТ вашего вывода. В этом примере это bluez_card.28_11_A5_84_B6_F9 и выход динамика соответственно.

  1. Установите подходящий размер буфера (задержку) вашей карты с помощью этого шаблона команды:

     pactl set-port-latency-offset   
    

Единица задержки следующей команды - микросекунды, поэтому я использую 50-миллисекундный буфер для моей команды здесь:

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

     sudo service bluetooth restart
    

Поскольку обычно об этом нет документации, возможно, вам придется поэкспериментировать с более высокими или более низкими значениями буфера. Многие люди писали о своих рабочих задержках в комментариях к этому ответу. Ознакомьтесь с ними, чтобы узнать о значении задержки.

72
ответ дан 2 February 2020 в 21:59

Ответ Chris_128 сработал для меня, но для новичков я добавлю немного деталей.

ИМЯ и ПОРТ для команды ниже:

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

ИМЯ будет «bluez_card.5C_FB_7C_0D_0F_EE», а ПОРТ будет «выходом для гарнитуры»

Итак, в моем случае моя команда

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

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

sudo service bluetooth restart
8
ответ дан 19 February 2020 в 10:14

Вы можете открыть панель поиска (CTRL-D в Unity, Windows-Key в Gnome) и ввести «Pulse» или «Volume». Откройте инструмент графического интерфейса «Pulseaudio Volume Control», его значок выглядит как ручка или датчик.

Там вы можете выбрать динамик Bluetooth. Нажмите «Дополнительно», установите значение «Задержка», как было предложено в других ответах. 45 мс или 50 мс, кажется, работают для них, но я не нашел хорошего значения, которое работает для меня.

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

enter image description here

7
ответ дан 25 April 2020 в 20:25

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

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