Решение проблем PulseAudio и PipeWire: различия между версиями
Дым (обсуждение | вклад) |
Toxblh (обсуждение | вклад) мНет описания правки |
||
(не показаны 52 промежуточные версии 3 участников) | |||
Строка 1: | Строка 1: | ||
{{stub}} | {{stub}} | ||
{{Внимание|Статья еще не окончена!}} | {{Внимание|Статья еще не окончена!}} | ||
=PulseAudio= | =PulseAudio= | ||
==Настройка громкости== | |||
Откройте ALSAmixer: | |||
$ alsamixer | |||
Клавишей {{button|F6}} выберите стрелками нужную звуковую карту и нажмите {{button|Enter}}), | |||
Клавишами {{button|↑}} / {{button|↓}} выставьте громкость ALSA в колонке '''Master''' в 100%, | |||
Для выхода нажмите {{button|Esc}}, | |||
Для сохранения параметров ALSA после перезагрузки выполните: | |||
{{cmd|$ su -}} | |||
{{cmd|# alsactl store}} | |||
=PipeWire= | =PipeWire= | ||
{{Note|Для работы с утилитами Pipewire необходимо установить пакет {{pkg|pipewire-utils}}}} | {{Note|Для работы с утилитами Pipewire необходимо установить пакет {{pkg|pipewire-utils}}}} | ||
==PipeWire не видит микрофон== | ==PipeWire не видит микрофон== | ||
Попробуйте выключить в конфигурационном файле параметр '''api.alsa.use-acp''' и/или '''api.alsa.use-ucm'''. | Попробуйте выключить в конфигурационном файле параметр '''api.alsa.use-acp''' и/или '''api.alsa.use-ucm'''. | ||
Строка 21: | Строка 35: | ||
... | ... | ||
Для проверки доступных устройств ввода скомандуйте: {{cmd|$ pw-link -iol | grep input}} | Для проверки доступных устройств ввода скомандуйте: {{cmd|$ pw-link -iol | grep input}} | ||
===Если используется '''wireplumber'''=== | ===Если используется '''wireplumber'''=== | ||
{{note|для проверки, установлен ли Wireplumber, скомандуте {{cmd|$ rpm -q wireplumber}} }} | {{note|для проверки, установлен ли Wireplumber, скомандуте {{cmd|$ rpm -q wireplumber}} }} | ||
Строка 38: | Строка 51: | ||
'''["api.alsa.use-ucm"] = true''', | '''["api.alsa.use-ucm"] = true''', | ||
... | ... | ||
Перезапустите PipeWire: {{cmd|$ systemctl --user --now | Перезапустите PipeWire: {{cmd|$ systemctl --user enable --now pipewire-media-session}} | ||
И проверьте список доступных устройств: {{cmd|$ wpctl status}} | И проверьте список доступных устройств: {{cmd|$ wpctl status}} | ||
{{Note|для установки pactl и wpctl скомандуйте {{cmd|# apt-get install /usr/bin/{pa,wp}ctl}} }} | {{Note|для установки pactl и wpctl скомандуйте {{cmd|# apt-get install /usr/bin/{pa,wp}ctl}} }} | ||
==При подключении нового устройства звук на него автоматически не переключается== | |||
== | |||
Чтобы автоматически переключаться на вновь подключенные устройства, добавьте в {{path|~/.config/pipewire/pipewire.conf}} или раскомментируйте в {{path|/usr/share/pipewire/pipewire-pulse.conf}} следующую строку (выделена жирным): | Чтобы автоматически переключаться на вновь подключенные устройства, добавьте в {{path|~/.config/pipewire/pipewire.conf}} или раскомментируйте в {{path|/usr/share/pipewire/pipewire-pulse.conf}} следующую строку (выделена жирным): | ||
... | ... | ||
Строка 53: | Строка 65: | ||
... | ... | ||
Для применения изменений перезапустите пользовательские службы: {{cmd|$ systemctl --user restart pipewire{,-pulse} }} | Для применения изменений перезапустите пользовательские службы: {{cmd|$ systemctl --user restart pipewire{,-pulse} }} | ||
==Звук | ===Звук на наушники Bluetooth автоматически не переключается=== | ||
Скомандуйте {{cmd|$ pactl load-module module-switch-on-connect}} и настройте среду рабочего стола на автоматический запуск этой команды при входе в систему. | Скомандуйте {{cmd|$ pactl load-module module-switch-on-connect}} и настройте среду рабочего стола на автоматический запуск этой команды при входе в систему. | ||
Строка 103: | Строка 115: | ||
</pre> | </pre> | ||
|} | |} | ||
===Нет звука после подключения устройства Bluetooth=== | |||
==Нет звука после подключения устройства Bluetooth== | По состоянию на 2020-12-07, если после подключения устройства Bluetooth нет звука, скорее всего потребуется переключить стандартный аудиопоток или перенаправить его к требуемому. | ||
По состоянию на 2020-12-07, если | |||
Для просмотра доступных потоков скомандуйте: | Для просмотра доступных потоков скомандуйте: | ||
Строка 208: | Строка 219: | ||
{{Note|Хотя на Github указано, что он уже не нужен после v0.3.21 или GIT. В P10 на 22.09.23 - 0.3.71}} | {{Note|Хотя на Github указано, что он уже не нужен после v0.3.21 или GIT. В P10 на 22.09.23 - 0.3.71}} | ||
Обсуждение данной проблемы можно посмотреть [https://www.reddit.com/r/archlinux/comments/jydd02/pipewirepulse_03164_in_testing_now_replaces/gd3m7fu/?context=3 здесь]. По словам автора скрипта, профиль гарнитуры (HSP) все еще может иметь проблемы. | Обсуждение данной проблемы можно посмотреть [https://www.reddit.com/r/archlinux/comments/jydd02/pipewirepulse_03164_in_testing_now_replaces/gd3m7fu/?context=3 здесь]. По словам автора скрипта, профиль гарнитуры (HSP) все еще может иметь проблемы. | ||
==Низкая громкость== | ==Низкая громкость== | ||
После [[С PulseAudio на PipeWire|замены PulseAudio на Pipewire]] громкость звука может оставаться прежней, но после перезагрузки становится существенно ниже. Для исправления данной проблемы откройте: | После [[С PulseAudio на PipeWire|замены PulseAudio на Pipewire]] громкость звука может оставаться прежней, но после перезагрузки становится существенно ниже. Для исправления данной проблемы откройте: | ||
*в консоли — {{cmd| | *в консоли — {{cmd|alsamixer}}, | ||
*:по {{button|F6}} выберите стрелками нужную звуковую карту и нажмите {{button|Enter}}), | *:по {{button|F6}} выберите стрелками нужную звуковую карту и нажмите {{button|Enter}}), | ||
*:клавишами | *:клавишами {{button|↑}} / {{button|↓}} выставьте громкость ALSA в колонке '''Master''' в 100%, | ||
*:для выхода нажмите {{button|Esc}} | *:для выхода нажмите {{button|Esc}}, | ||
*:для сохранения параметров ALSA после перезагрузки выполните {{cmd|alsactl store}}; | |||
*в KDE — настройку звуковых устройств из системного лотка, | *в KDE — настройку звуковых устройств из системного лотка, | ||
*:дальше — мышкой. | *:дальше — мышкой. | ||
==Изменение частоты дискретизации | ==Изменение частоты дискретизации== | ||
По умолчанию PipeWire устанавливает фиксированную глобальную частоту дискретизации 48 кГц. Если | По умолчанию PipeWire устанавливает фиксированную глобальную частоту дискретизации в 48 кГц. Если требуется иное (например, у вас есть ЦАП, поддерживающий более высокое значение), можно изменить умолчальное значение в системном ({{path|/usr/share/}}) или в пользовательском ({{path|~/.config/}}) файле {{path|pipewire/pipewire.conf}}, раскомментировав строчку '''default.clock.rate''' и заменив '''48000''' на свое значение: | ||
... | |||
context.properties = { | |||
... | |||
## Properties for the DSP configuration. | |||
'''default.clock.rate = 96000''' | |||
... | |||
==Изменение разрешённых частот дискретизации== | ==Изменение разрешённых частот дискретизации== | ||
PipeWire также может динамически изменять выходную частоту дискретизации, | PipeWire также может динамически изменять поддерживаемую вашим ЦАП выходную частоту дискретизации, соответствующую таковой у воспроизводимого аудиопотока. | ||
/ | Требуемые значения задаются в системном ({{path|/usr/share/}}) или в пользовательском ({{path|~/.config/}}) файле {{path|pipewire/pipewire.conf}}: | ||
... | ... | ||
context.properties = { | context.properties = { | ||
Строка 242: | Строка 247: | ||
'''default.clock.allowed-rates = [ частота_1 частота_2 частота_3 ... ]''' | '''default.clock.allowed-rates = [ частота_1 частота_2 частота_3 ... ]''' | ||
... | ... | ||
Например, | Например, {{cmd|[ 44100 48000 88200 96000 ]}}. Поддерживаемые значения должны быть описаны в инструкции к вашему ЦАП. | ||
По [https://gitlab.freedesktop.org/pipewire/pipewire/-/issues/1523 словам разработчиков], PipeWire допускает до 16 различных частот дискретизации и переключается по возможности. Это означает, что с приведёнными выше настройками передискретизация не производится, если используемая в аудиопотоке частота поддерживается устройством. | По [https://gitlab.freedesktop.org/pipewire/pipewire/-/issues/1523 словам разработчиков], PipeWire допускает до 16 различных частот дискретизации и переключается по возможности. Это означает, что с приведёнными выше настройками передискретизация не производится, если используемая в аудиопотоке частота поддерживается устройством. | ||
==Нет звука или pactl info | |||
==Нет звука или <code>pactl info</code> выдаёт «Ошибка подключения: Соединение отвергнуто»== | |||
Данная ошибка говорит о том, что приложение не может присоединиться к службе PipeWire-Pulse. | Данная ошибка говорит о том, что приложение не может присоединиться к службе PipeWire-Pulse. | ||
Строка 255: | Строка 261: | ||
{{cmd|# apt-get install --reinstall pipewire}} | {{cmd|# apt-get install --reinstall pipewire}} | ||
==Заметная задержка звука при воспроизведении== | ==Заметная задержка звука при воспроизведении== | ||
Обычно данная проблема возникает после отключения узла в период неактивности. | Обычно данная проблема возникает после отключения узла в период неактивности. | ||
===При использовании pipewire-media-session=== | ===При использовании ''pipewire-media-session''=== | ||
Отключить задержку можно путём редактирования одного из файлов {{path|/usr/share/pipewire/media-session.d/*-monitor.conf}} в зависимости от того, где происходит задержка. | Отключить задержку можно путём редактирования одного из файлов {{path|/usr/share/pipewire/media-session.d/*-monitor.conf}} в зависимости от того, где происходит задержка. | ||
Строка 267: | Строка 272: | ||
Либо закомментируйте в файле {{path|/usr/share/pipewire/media-session.d/media-session.conf}} строку '''suspend-node'''. | Либо закомментируйте в файле {{path|/usr/share/pipewire/media-session.d/media-session.conf}} строку '''suspend-node'''. | ||
Для применения | Для применения перезагрузитесь или перезапустите пользовательские службы: {{cmd|$ systemctl restart --user pipewire{,-pulse} }} | ||
===При использовании ''wireplumber''=== | |||
{{cmd|$ systemctl restart --user pipewire{,-pulse} }} | Для переопределения умолчальных настроек создайте системный ({{path|/usr/share/}}) или пользовательский ({{path|~/.config/}}) файл {{path|wireplumber/main.lua.d/51-disable-suspension.lua}} со следующим содержимым: | ||
===При использовании wireplumber=== | |||
{{ | |||
или | |||
{{ | |||
table.insert (alsa_monitor.rules, { | table.insert (alsa_monitor.rules, { | ||
matches = { | |||
{ | |||
-- Соответствует всем источникам. | |||
{ "node.name", "matches", "alsa_input.*" }, | |||
}, | |||
{ | |||
-- Соответствует всем выводам. | |||
{ "node.name", "matches", "alsa_output.*" }, | |||
}, | |||
}, | }, | ||
{ | apply_properties = { | ||
["session.suspend-timeout-seconds"] = 0, -- 0 выключает приостановку | |||
}, | }, | ||
}) | }) | ||
Вместо полного отключения | Вместо полного отключения можно задать желаемое число секунд задержки перед приостановкой. | ||
==Пропадание звука при проигрывании других потоков== | ==Пропадание звука при проигрывании других потоков== | ||
В журнале пользовательской службы {{cmd|$ journalctl --user -u pipewire-pulse}} могут обнаружиться такие строки: | |||
{{cmd|$ journalctl --user -u pipewire-pulse}} | |||
pipewire-pulse[21740]: pulse-server 0x56009b9d5de0: [Nightly] UNDERFLOW channel:0 offset:370676 underrun:940 | pipewire-pulse[21740]: pulse-server 0x56009b9d5de0: [Nightly] UNDERFLOW channel:0 offset:370676 underrun:940 | ||
Согласно [https://gitlab.freedesktop.org/pipewire/pipewire/-/wikis/Troubleshooting#underrununderflow-and-broken-pipe-errors официальному гайду PipeWire], для решения данной проблемы | ===При использовании ''pipewire-media-session''=== | ||
Согласно [https://gitlab.freedesktop.org/pipewire/pipewire/-/wikis/Troubleshooting#underrununderflow-and-broken-pipe-errors официальному гайду PipeWire], для решения данной проблемы нужно раскомментировать/изменить значение параметра '''api.alsa.headroom = 1024''' в системном ({{path|/usr/share/}}) или в пользовательском ({{path|~/.config/}}) файле | |||
{{ | {{path|pipewire/media-session.d/alsa-monitor.conf}}. | ||
===При использовании ''wireplumber''=== | |||
Внести этот параметр в системный ({{path|/usr/share/}}) или в пользовательский ({{path|~/.config/}}) файл | |||
{{path|wireplumber/main.lua.d/50-alsa-config.lua}}: | |||
{{ | |||
apply_properties = { | apply_properties = { | ||
["api.alsa.headroom"] = 1024, | ["api.alsa.headroom"] = 1024, | ||
}, | }, | ||
==Искажённый звук== | ==Искажённый звук== | ||
*Найдите проблемную | *Найдите проблемную для микрофонов звуковую карту в alsamixer и уменьшите уровень "Mic Boost" или "Internal Mic Boost". | ||
*Попробуйте уменьшить частоту дискретизации до 44100 (44.1 кГц), как описано в разделе [[#Изменение частоты дискретизации по умолчанию]]. | *Попробуйте уменьшить частоту дискретизации до 44100 (44.1 кГц), как описано в разделе [[#Изменение частоты дискретизации по умолчанию]]. | ||
==Различные проблемы после простоя== | ==Различные проблемы после простоя== | ||
Если звук пропал или исказился | Если после пробуждения системы звук пропал или исказился, может потребоваться переинициализация ALSA: {{cmd|# alsactl init}} | ||
==Источники== | ==Источники== | ||
*[https://wiki.archlinux.org/title/PulseAudio_(Русский)/Troubleshooting_(Русский) Arch - PulseAudio, Решение проблем] | *[https://wiki.archlinux.org/title/PulseAudio_(Русский)/Troubleshooting_(Русский) Arch - PulseAudio, Решение проблем] | ||
*[https://wiki.archlinux.org/title/PipeWire_(Русский)#Решение_проблем Arch - PipeWire, Решение проблем] | *[https://wiki.archlinux.org/title/PipeWire_(Русский)#Решение_проблем Arch - PipeWire, Решение проблем] | ||
*[https://wiki.archlinux.org/title/PipeWire#Troubleshooting Arch - PipeWire, Troubleshooting] | *[https://wiki.archlinux.org/title/PipeWire#Troubleshooting Arch - PipeWire, Troubleshooting] | ||
'''проверка ''вложенности'' ''' |
Текущая версия от 13:48, 12 сентября 2024
PulseAudio
Настройка громкости
Откройте ALSAmixer: $ alsamixer
Клавишей F6 выберите стрелками нужную звуковую карту и нажмите Enter),
Клавишами ↑ / ↓ выставьте громкость ALSA в колонке Master в 100%,
Для выхода нажмите Esc,
Для сохранения параметров ALSA после перезагрузки выполните:
$ su -
# alsactl store
PipeWire
PipeWire не видит микрофон
Попробуйте выключить в конфигурационном файле параметр api.alsa.use-acp и/или api.alsa.use-ucm.
Если используется pipewire-media-session
Приведите текстовым редактором от рута в файле /usr/share/pipewire/media-session.d/alsa-monitor.conf выделенные параметры к указанным значениям:
... rules = [ { ... actions = { update-props = { ... api.alsa.use-acp = false ...
Для проверки доступных устройств ввода скомандуйте: $ pw-link -iol
Если используется wireplumber
Приведите текстовым редактором от рута в файле /usr/share/wireplumber/main.lua.d/50-alsa-config.lua выделенные параметры к указанным значениям:
... alsa_monitor.rules = { { ... apply_properties = { -- Использование устройств ALSA-Card-Profile. Они используют UCM или -- конфигурацию профиля для настройки параметров устройства и микшера. -- ["api.alsa.use-acp"] = true, -- Использование UCM вместо profile по возможности. Можно отключить, -- чтобы не пытаться использовать профиль UCM. ["api.alsa.use-ucm"] = true, ...
Перезапустите PipeWire: $ systemctl --user enable --now pipewire-media-session
И проверьте список доступных устройств: $ wpctl status
При подключении нового устройства звук на него автоматически не переключается
Чтобы автоматически переключаться на вновь подключенные устройства, добавьте в ~/.config/pipewire/pipewire.conf или раскомментируйте в /usr/share/pipewire/pipewire-pulse.conf следующую строку (выделена жирным):
... context.exec = [ { path = "pactl" args = "load-module module-always-sink" } { path = "pactl" args = "load-module module-switch-on-connect" } # { path = "/usr/bin/sh" args = "~/.config/pipewire/default.pw" } ] ...
Для применения изменений перезапустите пользовательские службы: $ systemctl --user restart pipewire{,-pulse}
Звук на наушники Bluetooth автоматически не переключается
Скомандуйте $ pactl load-module module-switch-on-connect и настройте среду рабочего стола на автоматический запуск этой команды при входе в систему.
Возможно, ещё потребуется выполнить: $ wpctl set-default <id>. Найти <id> можно следующим способом:
$ wpctl status |
---|
PipeWire 'pipewire-0' [0.3.71, petr@atk, cookie:1976916996] └─ Clients: 32. pipewire-media-session [0.3.71, petr@atk, pid:10780] 33. pipewire-media-session [0.3.71, petr@atk, pid:10780] 39. pipewire [0.3.71, petr@atk, pid:10781] 49. wpctl [0.3.71, petr@atk, pid:11459] 50. pipewire [0.3.71, petr@atk, pid:10781] Audio ├─ Devices: │ 41. Built-in Audio [alsa] │ ├─ Sinks: │ * 42. Built-in Audio Analog Stereo [vol: 0.74] <-- Здесь <id> = 42 │ ├─ Sink endpoints: │ ├─ Sources: │ * 43. Built-in Audio Analog Stereo [vol: 0.74] <-- Здесь <id> = 43 │ ├─ Source endpoints: │ └─ Streams: Video ├─ Devices: │ ├─ Sinks: │ ├─ Sink endpoints: │ ├─ Sources: │ ├─ Source endpoints: │ └─ Streams: Settings └─ Default Configured Node Names: 0. Audio/Sink alsa_output.pci-0000_00_05.0.analog-stereo |
Нет звука после подключения устройства Bluetooth
По состоянию на 2020-12-07, если после подключения устройства Bluetooth нет звука, скорее всего потребуется переключить стандартный аудиопоток или перенаправить его к требуемому.
Для просмотра доступных потоков скомандуйте:
$ pactl list sinks |
---|
Аудиоприёмник №42 Состояние: SUSPENDED Имя: alsa_output.pci-0000_00_05.0.analog-stereo Описание: Built-in Audio Analog Stereo Драйвер: PipeWire Спецификация отсчётов: s16le 2-канальный 4800 Схема каналов: front-left,front-right Модуль-владелец: 4294967295 Звук выключен: нет Громкость: front-left: 48287 / 74% / -7,96 dB, front-right: 48287 / 74% / -7,96 dB баланс 0,00 Базовая громкость: 65536 / 100% / 0,00 dB Мониторный источник: alsa_output.pci-0000_00_05.0.analog-stereo.monitor Задержка: 0 мкс, настроено на 0 мкс Флаги: HARDWARE HW_MUTE_CTRL HW_VOLUME_CTRL DECIBEL_VOLUME LATENCY Свойства: object.path = "alsa:pcm:0:front:0:playback" api.alsa.path = "front:0" api.alsa.pcm.card = "0" api.alsa.pcm.stream = "playback" audio.channels = "2" audio.position = "FL,FR" device.routes = "2" alsa.resolution_bits = "16" device.api = "alsa" device.class = "sound" alsa.class = "generic" alsa.subclass = "generic-mix" alsa.name = "Intel 82801AA-ICH" alsa.id = "Intel ICH" alsa.subdevice = "0" alsa.subdevice_name = "subdevice #0" alsa.device = "0" alsa.card = "0" alsa.card_name = "Intel 82801AA-ICH" alsa.long_card_name = "Intel 82801AA-ICH with AD1980 at irq 21" alsa.driver_name = "snd_intel8x0" device.profile.name = "analog-stereo" device.profile.description = "Analog Stereo" card.profile.device = "4" device.id = "41" factory.name = "api.alsa.pcm.sink" priority.driver = "1009" priority.session = "1009" media.class = "Audio/Sink" node.nick = "Intel 82801AA-ICH" node.name = "alsa_output.pci-0000_00_05.0.analog-stereo" device.description = "Built-in Audio" device.icon_name = "audio-card-analog" device.bus = "pci" device.bus_path = "pci-0000:00:05.0" device.form_factor = "internal" node.pause-on-idle = "false" factory.id = "18" clock.quantum-limit = "8192" client.id = "33" node.driver = "true" factory.mode = "merge" audio.adapt.follower = "" library.name = "audioconvert/libspa-audioconvert" object.id = "42" object.serial = "42" device.enum.api = "udev" api.alsa.card = "0" api.alsa.card.name = "Intel 82801AA-ICH" api.alsa.card.longname = "Intel 82801AA-ICH with AD1980 at irq 21" device.plugged.usec = "5422646" sysfs.path = "/devices/pci0000:00/0000:00:05.0/sound/card0" device.subsystem = "sound" device.vendor.id = "0x8086" device.vendor.name = "Intel Corporation" device.product.id = "0x2415" device.product.name = "82801AA AC'97 Audio Controller" device.name = "alsa_card.pci-0000_00_05.0" device.nick = "Intel 82801AA-ICH" api.alsa.use-acp = "true" api.acp.auto-profile = "false" api.acp.auto-port = "false" api.dbus.ReserveDevice1 = "Audio0" device.string = "0" Порты: analog-output;output-amplifier-on: Analog Output / Amplifier (тип: Аналоговый, приоритет: 9910, доступность неясна) analog-output;output-amplifier-off: Analog Output / No Amplifier (тип: Аналоговый, приоритет: 9900, доступность неясна) Активный порт: analog-output;output-amplifier-on Форматы: pcm |
и $ pactl set-default-sink для смены стандартного потока на bluetooth устройство.
Пример использования: $ pactl set-default-sink 42
Можно автоматизировать через udev, используя данный скрипт как пример.
Обсуждение данной проблемы можно посмотреть здесь. По словам автора скрипта, профиль гарнитуры (HSP) все еще может иметь проблемы.
Низкая громкость
После замены PulseAudio на Pipewire громкость звука может оставаться прежней, но после перезагрузки становится существенно ниже. Для исправления данной проблемы откройте:
- в консоли — alsamixer,
- по F6 выберите стрелками нужную звуковую карту и нажмите Enter),
- клавишами ↑ / ↓ выставьте громкость ALSA в колонке Master в 100%,
- для выхода нажмите Esc,
- для сохранения параметров ALSA после перезагрузки выполните alsactl store;
- в KDE — настройку звуковых устройств из системного лотка,
- дальше — мышкой.
Изменение частоты дискретизации
По умолчанию PipeWire устанавливает фиксированную глобальную частоту дискретизации в 48 кГц. Если требуется иное (например, у вас есть ЦАП, поддерживающий более высокое значение), можно изменить умолчальное значение в системном (/usr/share/) или в пользовательском (~/.config/) файле pipewire/pipewire.conf, раскомментировав строчку default.clock.rate и заменив 48000 на свое значение:
... context.properties = { ... ## Properties for the DSP configuration. default.clock.rate = 96000 ...
Изменение разрешённых частот дискретизации
PipeWire также может динамически изменять поддерживаемую вашим ЦАП выходную частоту дискретизации, соответствующую таковой у воспроизводимого аудиопотока.
Требуемые значения задаются в системном (/usr/share/) или в пользовательском (~/.config/) файле pipewire/pipewire.conf:
... context.properties = { ... default.clock.allowed-rates = [ частота_1 частота_2 частота_3 ... ] ...
Например, [ 44100 48000 88200 96000 ]. Поддерживаемые значения должны быть описаны в инструкции к вашему ЦАП.
По словам разработчиков, PipeWire допускает до 16 различных частот дискретизации и переключается по возможности. Это означает, что с приведёнными выше настройками передискретизация не производится, если используемая в аудиопотоке частота поддерживается устройством.
Нет звука или pactl info
выдаёт «Ошибка подключения: Соединение отвергнуто»
Данная ошибка говорит о том, что приложение не может присоединиться к службе PipeWire-Pulse.
Убедитесь, что файл /usr/share/pipewire/pipewire-pulse.conf существует и не пуст, и перезапустите пользовательскую службу:
$ systemctl restart --user pipewire-pulse
Если файла нет, попробуйте переустановить пакет pipewire и перезагрузиться (перезапуск pipewire и pipewire-pulse помог мне лишь частично):
# apt-get install --reinstall pipewire
Заметная задержка звука при воспроизведении
Обычно данная проблема возникает после отключения узла в период неактивности.
При использовании pipewire-media-session
Отключить задержку можно путём редактирования одного из файлов /usr/share/pipewire/media-session.d/*-monitor.conf в зависимости от того, где происходит задержка.
Например: # mcedit /usr/share/pipewire/media-session.d/alsa-monitor.conf
Для отключения нужно заменить значение session.suspend-timeout-seconds на 0 или поэкспериментировать с другими значениями.
Либо закомментируйте в файле /usr/share/pipewire/media-session.d/media-session.conf строку suspend-node.
Для применения перезагрузитесь или перезапустите пользовательские службы: $ systemctl restart --user pipewire{,-pulse}
При использовании wireplumber
Для переопределения умолчальных настроек создайте системный (/usr/share/) или пользовательский (~/.config/) файл wireplumber/main.lua.d/51-disable-suspension.lua со следующим содержимым:
table.insert (alsa_monitor.rules, { matches = { { -- Соответствует всем источникам. { "node.name", "matches", "alsa_input.*" }, }, { -- Соответствует всем выводам. { "node.name", "matches", "alsa_output.*" }, }, }, apply_properties = { ["session.suspend-timeout-seconds"] = 0, -- 0 выключает приостановку }, })
Вместо полного отключения можно задать желаемое число секунд задержки перед приостановкой.
Пропадание звука при проигрывании других потоков
В журнале пользовательской службы $ journalctl --user -u pipewire-pulse могут обнаружиться такие строки:
pipewire-pulse[21740]: pulse-server 0x56009b9d5de0: [Nightly] UNDERFLOW channel:0 offset:370676 underrun:940
При использовании pipewire-media-session
Согласно официальному гайду PipeWire, для решения данной проблемы нужно раскомментировать/изменить значение параметра api.alsa.headroom = 1024 в системном (/usr/share/) или в пользовательском (~/.config/) файле
pipewire/media-session.d/alsa-monitor.conf.
При использовании wireplumber
Внести этот параметр в системный (/usr/share/) или в пользовательский (~/.config/) файл
wireplumber/main.lua.d/50-alsa-config.lua:
apply_properties = { ["api.alsa.headroom"] = 1024, },
Искажённый звук
- Найдите проблемную для микрофонов звуковую карту в alsamixer и уменьшите уровень "Mic Boost" или "Internal Mic Boost".
- Попробуйте уменьшить частоту дискретизации до 44100 (44.1 кГц), как описано в разделе #Изменение частоты дискретизации по умолчанию.
Различные проблемы после простоя
Если после пробуждения системы звук пропал или исказился, может потребоваться переинициализация ALSA: # alsactl init
Источники
- Arch - PulseAudio, Решение проблем
- Arch - PipeWire, Решение проблем
- Arch - PipeWire, Troubleshooting
проверка вложенности