Если вы запускаете аудиоприложения (вроде Plexamp или speaker-test) на Ubuntu Server 24.04.2 под root или как сервис, но получаете ошибку «Playback open error: -112, Host is down» – это не единичный случай. Проблема часто возникает после обновлений или случайных изменений в конфигурации. Давайте разберёмся, почему звуковая система «капризничает» именно при работе с повышенными правами.
Когда ALSA, PulseAudio и Pipewire конфликтуют
Первое, что стоит проверить – не «перетягивают ли одеяло» разные аудиодвижки. В Ubuntu Server по умолчанию используется PulseAudio, но иногда (особенно после экспериментов с пакетами) может незаметно установиться Pipewire. В этом случае Pipewire перехватит управление звуком, но не корректно будет работать с правами root.
Чтобы выявить «виновника», выполните:
systemctl --user status pipewire pulseaudio
Если Pipewire активен, а PulseAudio – нет, это явный признак конфликта.
Кстати, Pipewire – современная альтернатива PulseAudio, но в серверных сценариях его настройка часто требует дополнительных танцев с бубном.
Шаги для восстановления PulseAudio
1. Удалите Pipewire (если он не нужен):
sudo apt remove pipewire pipewire-audio-client-libraries
После этого apt автоматически переключится на PulseAudio.
2. Перезагрузите сервисы:
sudo systemctl restart alsa-restore
systemctl --user restart pulseaudio
3. Проверьте аудиоустройства:
speaker-test -D default -c 2 -t wav
Если слышите тестовый звук – проблема решена.
Настройка индексов звуковых карт
Если в конфиге /etc/modprobe.d/default.conf у вас указано options snd_hda_intel index=1. Это заставляет систему использовать вторую карту (индексы начинаются с 0). Но если карта с индексом 1 недоступна для root (например, из-за прав), возникает ошибка.
Попробуйте:
1. Сменить индекс на 0:
echo "options snd_hda_intel index=0" | sudo tee /etc/modprobe.d/snd-hda-intel.conf
2. Обновите initramfs:
sudo update-initramfs -u
После перезагрузки проверьте вывод cat /proc/asound/cards – первая карта должна быть активной.
Почему root и пользователь ведут себя по-разному?
Обычно это связано с переменными окружения и настройками уровня системы:
- PulseAudio по умолчанию запускается в пользовательской сессии, а root его не видит.
- Pipewire мог быть настроен с ограничениями SELinux или AppArmor (да, в Ubuntu они тоже есть, хоть и минимальные).
Совет: Если хотите запускать аудиосервисы от root, добавьте явное указание использовать PulseAudio:
export PULSE_SERVER=unix:/run/user/$(id -u)/pulse/native
(замените $(id -u) на ID вашего пользователя).
Если ничего не помогло
1. Убедитесь, что пользователь и root в группе audio:
groups root
groups your_username
Если нет – добавьте:
sudo usermod -aG audio root
(перелогиньтесь или перезапустите сервисы).
2. Проверьте права на /dev/snd/*:
ls -l /dev/snd
Должны быть crw- права для группы audio.
Иногда проблема уходит после полного сброса аудионастроек:
sudo apt purge alsa-base pulseaudio
sudo apt install alsa-base pulseaudio
sudo alsa force-reload
И помните: Ubuntu Server всё же не предназначен для сложных аудиозадач. Если нужно стабильное воспроизведение, рассмотрите вариант с Docker-контейнером, где аудио пробрасывается через –device /dev/snd. Но это уже тема для отдельного разговора.