Вопрос или проблема
С недавних пор у меня проблема: при запуске приложения, которому нужен доступ к моему микрофону, мой аудиопрофиль, настроенный в pavucontrol, меняется с “Pro Audio” на что-то другое.
Это конкретно происходит при использовании Discord, например. Каждый раз, когда я присоединяюсь к каналу, мне нужно заходить в pavucontrol, возвращать профиль обратно на “Pro Audio”, а затем мне нужно явно настроить ввод/вывод в Discord на это устройство. Установка ввода/вывода на “По умолчанию” в Discord, похоже, полностью сбивает аудиосервер.
Я относительно новичок в мире аудио Linux, но насколько я могу судить, Discord использует PulseAudio, который у меня доступен с pipewire-pulse (смотри конфигурацию ниже). Но он не должен менять профиль устройства, которое я использую, верно?
Когда я проверяю pw-cli e <device-id> Profile
, я вижу, что профиль на самом деле доступен, выбран и также установлен для сохранения.
Любая помощь в отладке/фиксировании этой проблемы будет высоко оценена.
Я использую NixOS, и мое аудиоустройство – Focusrite Scarlett Solo 4th Gen.
Это моя конфигурация Nix относительно аудио:
configuration.nix
:
{ config, pkgs, ... }:
{
hardware.pulseaudio.enable = false;
security.rtkit.enable = true;
services.pipewire = {
enable = true;
alsa = {
enable = true;
support32Bit = true;
};
pulse.enable = true;
wireplumber.enable = true;
jack.enable = true;
extraConfig = {
pipewire."92-low-latency" = {
context.properties = {
default.clock.rate = 192000;
default.clock.allowed-rates = [ 44100 48000 88200 96000 176400 192000 ];
default.clock.quantum = 512;
default.clock.min-quantum = 32;
default.clock.max-quantum = 1024;
};
};
};
};
environment.systemPackages = with pkgs; [
pavucontrol
helvum
alsa-utils
];
}
easyeffects.nix
:
{ pkgs, config, ... }: {
services.easyeffects = {
enable = true;
preset = "default";
};
home.file = {
".config/easyeffects/output/default.json" = {
source = config.lib.file.mkOutOfStoreSymlink ../loose-configs/easyeffects/output/default.json;
};
};
}
У меня та же проблема после обновления Wireplumber до 0.5.6, но после того, как я понизил версию до 0.5.5, проблема исчезла.
С помощью pacman -Ud
я понизил эти два пакета для себя, и мне пришлось пройти через Arch Linux Archive, потому что у меня не было старых кэшированных пакетов.
libwireplumber (0.5.6-1 => 0.5.5-1)
https://archive.archlinux.org/packages/l/libwireplumber/
wireplumber (0.5.6-1 => 0.5.5-1)
https://archive.archlinux.org/packages/w/wireplumber/
Я воспользовался вики 👉 https://wiki.archlinux.org/title/Downgrading_packages
Ответ или решение
Проблема, с которой вы столкнулись, касается взаимодействия PulseAudio и WirePlumber в вашем аудио-настроении на Linux, и, скорее всего, связана с изменением профиля устройства, когда определенные приложения, такие как Discord, получают доступ к вашему микрофону. Это явление может быть достаточно распространенным, особенно среди пользователей, которые используют системные конфигурации, такие как NixOS, с PipeWire вместо традиционного PulseAudio.
1. Причины изменения профиля устройства
Когда приложение, требующее доступ к аудиоустройству, запускается, оно может вызывать изменение профиля оборудования. В вашем случае это происходит, когда вы присоединяетесь к каналу в Discord. При этом WirePlumber, который выполняет роль менеджера сессий для PipeWire, может автоматически переключать профиль устройства на тот, который соответствует настройкам приложения.
2. Ваша конфигурация
Ваш файл конфигурации configuration.nix
показывает, что вы используете PipeWire с поддержкой PulseAudio. Это предполагает, что PulseAudio фактически не работает в вашем окружении. Ваша конфигурация также содержит параметры для низкой задержки, однако важно отметить, что некоторые приложения могут игнорировать заданные вами профили и использовать свои собственные настройки.
3. Проблема с WirePlumber
Когда вы обновили WirePlumber до версии 0.5.6, вы начали наблюдать проблему изменения профиля устройства. После отката на 0.5.5 проблема исчезла. Это может указывать на ошибку или несовместимость в новой версии WirePlumber с вашей конфигурацией или конкретными приложениями, которые вы используете (например, Discord).
WirePlumber, как менеджер сессий для PipeWire, управляет установкой профилей в зависимости от требований приложений. Если приложение неявно запрашивает определенные профили, WirePlumber может менять конфигурацию в соответствии с этими запросами. Более того, это может также включать необратимые изменения, которые требуют ручного вмешательства с вашей стороны.
4. Рекомендации по устранению неполадок
Чтобы минимизировать влияние изменения профиля:
-
Настройте WirePlumber: Рассмотрите возможность редактирования конфигурации WirePlumber, чтобы предотвратить изменение профилей. Попробуйте отключить автоматическое управление профилями для дискорда или других приложений, которые вызывают эту проблему.
-
Оптимизация настроек Discord: Проверьте настройки приложений, таких как Discord. Убедитесь, что в Discord выбран правильный профиль устройства. Вы можете попробовать установить конкретные устройства ввода и вывода вместо выбора "По умолчанию".
-
Использование альтернатив: Если проблема остается неразрешенной, вы можете попробовать альтернативные менеджеры или версии WirePlumber, которые могут быть более совместимыми с вашими устройствами и приложениями.
-
Обратитесь к сообществу: Не забывайте проверять сообщества пользователей NixOS, WirePlumber и PipeWire. Возможно, другие пользователи уже сталкивались с аналогичными проблемами и могут предложить рабочие решения или патчи.
5. Заключение
Проблемы с изменением профилей устройств в современных системах аудио могут быть сложными и зависеть от множества факторов, включая версию управления сессиями и специфику приложений. Конфигурация PipeWire с WirePlumber предоставляет большую гибкость, но и требует внимательности к настройкам, чтобы избежать подобных проблем. Откат к более стабильной версии, как вы сделали с WirePlumber, может быть временным решением до выхода новых исправлений или обновлений.