Как настроить наушники ubuntu

Обновлено: 07.07.2024

Мечта, наверное, каждого пользователя компьютера - это свобода от проводов. Постепенно мы освобождаемся от них: покупаем ноутбук, покупаем беспроводные мышь и клавиатуру, покупаем bluetooth-наушники или стерео bluetooth-гарнитуру. В погоне за этой свободой мы готовы жертвовать производительностью компьютеров, зависимостью от подзарядки аккумуляторов и прочих появившихся новых проблем.

Чтобы подключить Bluetooth-наушники или стерео Bluetooth-гарнитуру в операционной системе Linux требуется установить ПО, которое позволит подключить Bluetooth-устройства к компьютеру. В Gnome реализована работа Bluetooth "из коробки", но нет поддержки A2DP, поэтому Bluetooth-наушники не будут работать по своему назначению. Добавить поддержку A2DP можно установив замечательную программу - Blueman. Эта программа отлично работает со всеми Bluetooth-устройствами, позволяя работать с A2DP-профилями.

Для корректной работы автоматического перенаправления звукового потока на подключенные Bluetooth-наушники нам понадобится дополнительный звуковой сервер. В качестве такого звукового сервера может выступать Pulseaudio. С помощью Pulseaudio можно добиться автоматического переключения вывода звука на Bluetooth-наушники, при подключении последних. Так же в нем можно настроить уровень громкости для разных приложений в отдельности.

В ОС Ubuntu Pulseaudio установлен в качестве звукового сервера по умолчанию. Если Pulseaudio был удален, как это описывалось в статье "Удаление звукового сервера PulseAudio в Ubuntu", то его следует установить заново, так как без него перенаправление звука, при подключении стерео-гарнитуры, не будет происходить автоматически. Для работы Pulseaudio с Bluetooth-наушниками нам потребуется установить также дополнительный модуль - pulseaudio-module-bluetooth.

Чтобы подключить стерео Bluetooth-гарнитуру для прослушивания музыки в Ubuntu нужно:

  1. Установить звуковой сервер Pulseaudio с дополнительным модулем pulseaudio-module-bluetooth:

Этой командой мы устанавливаем все доступные пакеты, которые относятся к звуковому серверу Pulseaudio, в том числе сам сервер и нужный нам модуль. Если звуковой сервер уже установлен, то все равно выполняем данную команду для установки всех недостающих пакетов.

Привет!
Решил написать небольшую инструкцию, чтобы помочь нуждающимся в настройке bluetooth-наушников под Linux. Описанный способ гарантированно работает в Ubuntu 7.10 и 8.04. В других системах не должно возникнуть особых проблем, если имеются все необходимые компоненты (bluez, alsa, python).

В прошлом году я купил себе bluetooth стерео-наушники (+гарнитура) Plantronics 590A. Отличные наушники — хорошее качество звука и полная свобода от проводов. После перехода с Windows XP на Ubuntu возник вопрос использования наушников, как в качестве обычных наушников для вывода звука, так и полноценной гарнитуры для общения в играх и в Skype.

Хотя стандартный bluetooth-менеджер Ubuntu, вроде как, подразумевает использование Audio Service для соответствующих bt-устройств, но я не смог быстро найти внятную инструкцию, как же организовать вывод звука на наушники.


Вскоре мне на глаза попалась замечательная программа BlueMan bluetooth manager (screenshots). Эта программа достойна отдельной статьи, так как у неё очень много возможностей и она очень облегчает жизнь любому, кому потребуется работа с различными устройствами через протокол bluetooth. Программа работает "поверх" стандартного Ubuntu-овского bt-стека bluez и практически не тянет за собой зависимостей (программа написана на python`e).
Перечислять все возможности программы я не стану, ограничусь только тем, что программа поддерживает bt-устройства с профилем A2DP


Всё что необходимо сделать в BlueMan — "спарить" ваши bt-наушники с программой. После "спаринга" я дополнительно активировал в параметрах программы использование службы звука.



В настройках службы звука я активировал использовал служб Headset, Sink, Control для своих наушников. Для обычного вывода звука вполне достаточно службы Headset. Остальные службы присутствуют, я так думаю, для поддержки работы bt-профиля AVRCP. Я не проверял работу профиля ни в одной программе в Ubuntu, так что о его работоспособности сказать ничего не могу.


Для начала более подробно о сути задачи: есть ноутбук Asus N55 с Kubuntu 17.10 на борту. Нужно добиться той же конфигурации, которую можно получить на Windows:

  • Без подключения сабвуфера драйвер работает в режиме 2.0
  • При подключении сабвуфера драйвер переключается в режим 2.1. При этом переключении к каналам применяются частотные фильтры — НЧ для сабвуфера и ВЧ для колонок
  • При подключении наушников, вывод звука переключается на них, вывод на колонки/сабвуфер приостанавливается
  • При необходимости низких задержек можно с помощью выбора другого драйвера перейти в режим, обеспечивающий монопольный захват звуковой карты

Сразу после установки получаем нерабочий сабвуфер и нерабочие наушники.
В результате моих опытов мне удалось добиться следующего состояния системы:

  • Драйвер работает в режиме 2.1
  • При подключении сабвуфера ничего не изменяется
  • При подключении наушников, вывод звука переключается на них, вывод на колонки/сабвуфер приостанавливается, но фильтры продолжают работать и в наушники идут только ВЧ
  • При необходимости низких задержек можно адресоваться к карте через ALSA, но в этом режиме не работает сабвуфер, фильтры. Но работает переключение на наушники

Для знакомства с LMMS(с которой как оказалось нормально работать нельзя, но это отдельная тема) этого в общем-то хватает.
Если вы тоже добрались до этого состояния, то ничего нового этой статьей я вам не расскажу.

Вы когда-нибудь задумывались о том, как устроена звуковая система Linux? Вот и я нет — обычно звук либо был не нужен, либо как-то работал, колонки играли — ни о каких фокусах подключения сабвуфера или наушников речи не было.
Похоже, теперь самое время узнать об этом немного больше. Гугление показало следующую картину:


    — это компонент, обеспечивающий взаимодействие звуковых железок с ядром. Обеспечивает самый прямой доступ к устройству из разумных вариантов, но при этом доступ этот монопольный — включить песню в VLC и открыть видео в браузере, увы, не получится.
  • Для этих целей как раз и нужен PulseAudio — это sound-сервер, занимающийся маршрутизацией звуковых потоков. Именно он будет отвечать за микширование потоков звука из разных приложений при одновременном использовании. Ценой за такое удобство является дополнительная задержка звукового потока.
  • Существует еще JACK — аналог PulseAudio, позиционирующийся как "профессиональный" sound-сервер. Обещает крутые возможности по маршрутизации и минимальную задержку при диспетчеризации потоков.

Мало кто говорит, что PulseAudio де-факто является стандартом для интеграции звука, по крайней мере в Ubuntu. Практически любой софт, который издает звуки, будет с большой долей вероятности пользоваться PulseAudio API. FF, например, для поддержки JACK надо отдельно собирать.
Поэтому удалять PulseAudio не стоит, если вы не уверены, что все чем вы будете пользоваться, умеет работать с JACK. Видимо, поэтому существует еще вариант интеграции Jack-PulseAudio. Но от этого варианта я отказался, т.к. для работы в том софте, где требуются низкие задержки, меня устраивает монопольный доступ через ALSA(под Windows это работает так же — там, где нужна низкая задержка, запрашивается монопольный доступ). Возможно, когда дело дойдет до установки какого-нибудь Ardour, мне придется вернуться к этому варианту.

Так, ну хорошо, JACK не нужен. Выходит, чтобы все заработало, мне надо настроить ALSA-компонент для своей карточки и интеграцию его с PulseAudio

PulseAudio

Тут нам из коробки предлагают вот такую UI консоль


Мне кажется, к такому инструменту пояснения излишни. После применения настроек вы сразу сможете слышать изменения, так что пробуйте.
Еще amarao советует обратить внимание на pactl /pacmd. Если я доберусь — напишу, что там к чему с этими утилитами

Диагностика ALSA

Первым делом понадобятся хоть какие-то инструменты для диагностики — это пакет alsa-utils
sudo apt install alsa-utils
Теперь посмотрим, как видит наше оборудование система
aplay -l


Кроме того, настройки надо проверять. Для этих целей обнаружилась утилита speaker-test


вызов speaker-test --help покажет, что умеет утилита, но мне особенно интересна конфигурация
speaker-test -Dplughw:1,0 -c4

  • -D — id устройства. 1,0 — это индексы устройства и подустройства, их мы видели выше в выводе aplay
    а вот структура текстовой части описана тут
  • -c — количество каналов на которые будет выведен тест
    В моем случае первые 2 канала работают хорошо, а вот дальше интересно — 3й канал LFO не звучит, но зато звучит 4й канал. Такое ощущение, что LFO настроен как… стерео. Мне кажется, это часть моей проблемы.

Настройка ALSA

Тут и тут советуют поизучать dmix — это модуль микшера каналов в ALSA — буду смотреть

alsamixer

alsamixer — псевдографический интерфейс микшера. Половина советов по настройке ограничивается этой утилитой. И действительно, именно эта утилита часто покажет, когда канал неожиданно замьютился или у него сбросился уровень громкости.


Но настройка в микшере результата не дала.

hdajacksensetest

Следующая полезная утилита — hdajacksensetest. Показывает какие разъемы детектируют подключение внешних устройств.


Ок, я вижу, что мой внешний сабвуфер подключен на порт 0x1a.
Давайте попробуем найти как можно объяснить карте, куда выводить LFO.

hdajackretask

Большинство советов по настройке маппинга указывают на утилиту hdajackretask:


Тут вроде бы все понятно — есть порты, есть маппинг. К сожалению, никакие манипуляции с портом 0x1a к успеху не привели.
Может, после настройки надо явно перезагружать сервисы?
sudo alsa force-reload
Нет, смотрим дальше.

HDAAnalyzer

Для настройки маппинга есть еще одна утилита:
скачать ее можно в виде python-скрипта(. ) вот тут.


Выглядит эта штука как прокачанный вариант hdajackretask — она даже умеет строить схему маршрутизации портов графически. Но эксперименты с этой штукой тоже не привели ни к чему, кроме полной потери звука.
Никакого гайда по настройке я не нашел, поэтому пробовал методом проб и ошибок.

Правка конфигов

PulseAudio

/usr/share/pulseaudio
в папке alsa-mixer тут лежат конфиги. Т.к. Pulseaudio более-менее работает тут я ничего трогать не стал.
/etc/pulse/daemon.conf
Как я понял, это настройки службы pulseaudio — один из немногих конфигов, изменения в котором на что-то влияют. именно тут настройками:
enable-lfe-remixing = yes
lfe-crossover-freq = 200
я заставил звучать свой сабвуфер из Pulseaudio так, как он должен. Для lfe-crossover-freq 200 — это очевидно частота среза в герцах.
Но тут же становится очевидно, что настроить нечто более сложное(при подключении наушников прекращать отправлять бас на сабвуфер) в этом конфиге возможности нет.

/usr/share/alsa/*
Тут лежит несколько shell-скриптов, в т.ч. alsa-info.sh, который может быть полезен при подготовке дефекта в трекере и т.д.
а в папке pcm какие-то конфиги, разобраться в которых мне не удалось:

Трогать их я пока не решился.
/etc/modprobe.d/alsa-base.conf — второй доказанно полезный конфиг. Вот эта строчка, дописанная в низ конфига, реально заставила работать наушники под ALSA:
options snd-hda-intel model=auto,auto probe_mask=1
Про настройку этого конфига написано довольно много. Одна из его целей, как я понял — сопоставить устройствам кодеки(model). Кодеки это… какой-то пресет маппингов… Есть табличка (копия есть тут). Думаю, в большинстве случаев для стандартных конфигураций этого действительно достаточно.
Там описаны модели для разных контроллеров. Но если для вас они не срабатывают, то вам рекомендуют добавить свою конфигурацию.
Звучит классно, но тут я должен сделать 2 ремарки:

  • гайда как сделать свою конфигурацию — что конфигурить, куда сохранять, коммитить и т.д. я не нашел.
  • После изменения настроек в alsa-base.conf нужно перезагружать ОС. Без перезагрузки никакие sudo alsa force-reload и даже хардкорный echo 1 | sudo tee /sys/class/sound/hwC1D0/reconfig не заставляют ALSA перечитать кодек устройства.

Кстати, в /sys/class/sound/hwC1D0/ — лежат файлы уже непосредственно устройства, т.е. как я понял hdajackretask работает именно с этими файлами. Тут тоже, наверное, можно сделать что-то полезное, если знать куда что писать.

Общий вывод, который я могу сделать по результатам проделанной работы: в целом видно, что если GUI, например, сообщество более-менее занимается, то звуковая подсистема явно остается за бортом.
На сегодняшний день возможности использования этой подсистемы не выдерживают никакой конкуренции с аналогами в других популярных ОС.
Такие досадные проблемы, как неработающий сабвуфер или наушники, или отсутствие НЧ-фильтра для сабвуфера, заставляют еще раз подумать, прежде чем отказываться от предустановленного софта. Ведь никому не хочется получать от своей железки меньше отдачи из-за кривостей ОС.

Мечта, наверное, каждого пользователя компьютера - это свобода от проводов. Постепенно мы освобождаемся от них: покупаем ноутбук, покупаем беспроводные мышь и клавиатуру, покупаем bluetooth-наушники или стерео bluetooth-гарнитуру. В погоне за этой свободой мы готовы жертвовать производительностью компьютеров, зависимостью от подзарядки аккумуляторов и прочих появившихся новых проблем.

Чтобы подключить Bluetooth-наушники или стерео Bluetooth-гарнитуру в операционной системе Linux требуется установить ПО, которое позволит подключить Bluetooth-устройства к компьютеру. В Gnome реализована работа Bluetooth "из коробки", но нет поддержки A2DP, поэтому Bluetooth-наушники не будут работать по своему назначению. Добавить поддержку A2DP можно установив замечательную программу - Blueman. Эта программа отлично работает со всеми Bluetooth-устройствами, позволяя работать с A2DP-профилями.

Для корректной работы автоматического перенаправления звукового потока на подключенные Bluetooth-наушники нам понадобится дополнительный звуковой сервер. В качестве такого звукового сервера может выступать Pulseaudio. С помощью Pulseaudio можно добиться автоматического переключения вывода звука на Bluetooth-наушники, при подключении последних. Так же в нем можно настроить уровень громкости для разных приложений в отдельности.

В ОС Ubuntu Pulseaudio установлен в качестве звукового сервера по умолчанию. Если Pulseaudio был удален, как это описывалось в статье "Удаление звукового сервера PulseAudio в Ubuntu", то его следует установить заново, так как без него перенаправление звука, при подключении стерео-гарнитуры, не будет происходить автоматически. Для работы Pulseaudio с Bluetooth-наушниками нам потребуется установить также дополнительный модуль - pulseaudio-module-bluetooth.

Чтобы подключить стерео Bluetooth-гарнитуру для прослушивания музыки в Ubuntu нужно:

  1. Установить звуковой сервер Pulseaudio с дополнительным модулем pulseaudio-module-bluetooth:

Этой командой мы устанавливаем все доступные пакеты, которые относятся к звуковому серверу Pulseaudio, в том числе сам сервер и нужный нам модуль. Если звуковой сервер уже установлен, то все равно выполняем данную команду для установки всех недостающих пакетов.

Читайте также: