Переключение на ALSA, замена pipewire на pulseaudio, HOWTO

Раз уж вы читаете это HOWTO, я предполагаю что у вас что то не работает с pipewire, или не работает сам pipewire, и вы ищете способ как вернуть всё назад. Я прошу вас подумать ещё раз, и дать pipewire шанс. В своё время разработка pulseaudio была затруднена массовой реакцией пользователей Ubuntu, которые первыми получили этот звуковой сервер в составе дистрибутива и предпочитали не сообщать об ошибках ни разработчикам дистрибутива, ни разработчикам pulseaudio, вместо этого они просто удаляли “портившую звук программу”. И в результате первый же найденный в Google совет по поводу неправильной работы звука звучал так: “удалите pulseaudio”. С точки зрения пользователя это конечно решает проблему, но подобное эгоистичное поведение не способствует улучшению качества дистрибутива, так как не даёт никакой обратной связи разработчикам. Они понимают что программа у многих не работает, но без рапортов об ошибках не знают что же конкретно им чинить. Подобный метод решения проблем похож на отрубание больной головы вместо её лечения.

Итак. У вас что то не работает. Прочитайте эту статью на форуме, загляните в PipeWire - ArchWiki, попросите помощи в канале поддержки, для этого вам достаточно запустить заботливо настроенный на этот канал разработчиками дистрибутива чат-клиент или подключиться к этому же каналу в Телеграм. Совсем замечательно если вы отправите багрепорт в https://bugs.gentoo.org и/или самим разработчикам pipewire.

Возможно у вас были какие то хитрые продвинутые ручные настройки pulseaudio и теперь это всё отвалилось? Pipewire умеет почти всё из того что умеет pulseaudio, возможно вам стоит почитать официальную Pipewire wiki и PipeWire - ArchWiki для того чтобы воплотить то же самое в pipewire? Не исключено что это будет работать даже лучше чем в pulseaudio! Раз уж вы сумели победить pulseaudio - продвинутую настройку pipewire вы точно осилите.

И всё таки возможно pipewire не может реализовать то что вы сотворили с pulseaudio. Возможно вы встретились с неким уникальным программным обеспечением, которому нужно только и исключительно настоящее pulseaudio, и никаких компромиссов. А может быть у вас и pulseaudio толком никогда не работал на вашем “железе” и pipewire тоже не сделал жизнь лучше? Может быть вам вообще не нужно ни pipewire, ни pulseaudio, а достаточно ALSA? Просто ALSA тоже неплохо работает. Если вы где то когда то слышали или сталкивались с невозможностью одновременного вывода звука несколькими программами - забудьте. В Calculate уже настроен dmix и подобной проблемы нет. Микрофон так же будет просто работать. Проблемы могут быть только с bluetooth гарнитурами, но и они решаемы.

Вернуться на ALSA без всяких звуковых серверов просто, тем более в Calculate она неплохо настроена по умолчанию и разработчики предусмотрели штатный метод переключения. Всё что вам нужно сделать - скомандовать в терминале от пользователя root:

# cl-config-audio --audio alsa

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

И всё таки вы желаете вернуть назад pulseaudio. Это будет чуточку сложнее чем переключиться на ALSA, так как “удобный” способ через утилиты не предусмотрен (у большинства переход на pipewire произошёл плавно и незаметно, так что разработчики решили не усложнять и не перегружать функциями утилиту).

Сначала нам нужно изменить несколько use флагов у нескольких пакетов. Создадим в /etc/portage/package.use/ файл pulseaudio, для того чтобы прописать в нём нужные нам изменения не загромождая custom. Этими флагами мы изменим способ эмуляции ALSA, отключим её для pipewire и включим для pulseaudio.

# echo "media-sound/pulseaudio alsa-plugin" >> /etc/portage/package.use/pulseaudio
# echo "media-plugins/alsa-plugins pulseaudio" >> /etc/portage/package.use/pulseaudio
# echo "media-video/pipewire -pipewire-alsa"  >> /etc/portage/package.use/pulseaudio

Далее отредактируем конфиг /etc/pulse/client.conf, исправив в нём autospawn = no на autospawn = yes. Дабы утилиты не переписывали нам этот файл и не удаляли изменения создадим шаблон /etc/pulse/client.conf.clt

# touch /etc/pulse/client.conf.clt

со следующим содержанием:

# Calculate format=postfix
autospawn = yes

Теперь нужно отключить автозапуск pipewire. Создаём директорию /etc/pipewire/ и копируем туда нужный конфиг

# mkdir /etc/pipewire
# cp /usr/share/pipewire/pipewire.conf /etc/pipewire/

Открываем его и комментируем (ставим перед ними #) две строки:

{ path = "/usr/bin/pipewire-media-session"  args = "" }

и

{ path = "/usr/bin/pipewire" args = "-c pipewire-pulse.conf" }

Шаблон .clt создавать не нужно, утилиты этот конфиг не трогают.

Переключаем libSDL2 на использование pulseaudio вместо pipewire. Редактируем /etc/env.d/99sdl, исправляем pipewire на pulseaudio

SDL_AUDIODRIVER=pulseaudio

и создаём clt шаблон.

# touch /etc/env.d/99sdl.clt

с таким содержанием

# Calculate format=procmail
SDL_AUDIODRIVER=pulseaudio

Теперь, если вы пользователь KDE, в /etc/xdg/autostart исправим два .desktop файла, чтобы при старте не рушился kmix. В /etc/xdg/autostart/kmix_autostart.desktop исправляем pipewire на pulseaudio, и создаём рядом kmix_autostart.desktop.clt вида:

# Calculate format=kde

[Desktop Entry]
X-KDE-autostart-after=pulseaudio;panel

Аналогично редактируем /etc/xdg/autostart/restore_kmix_volumes.desktop, меняем pipewire на pulseaudio, создаём restore_kmix_volumes.desktop.clt вида:

# Calculate format=kde

[Desktop Entry]
X-KDE-autostart-after=pulseaudio

Всё, теперь осталось скомандовать cl-update и перезайти в графический сеанс.

Спасибо за внимание.

1 Like

Optimus - а почему не на Wiki? А то тут затеряется

Тут тоже ветка подходящая, она же называется “Советы и руководства”. А чтобы в Wiki писать нужно чтобы Lautre одобрил. Если он сочтёт нужным - я перенесу. Или он перенесёт.

Да и форум тут мееедленный. Не затеряется, не успеет.