WSL2/WSLg: PulseAudio: невозможно подключиться: соединение отклонено
У меня как-то сломался звук. Всякий раз, когда я пытаюсь воспроизвести какой-либо звук (например, с помощьюsox
), Я получил:
ALSA lib pulse.c:242:(pulse_connect) PulseAudio: Unable to connect: Connection refused
play FAIL sox: Sorry, there is no default audio device configured
Насколько я понимаю, WSLg должен поддерживать пересылку звука с использованием PulseAudio.
Примечание:
У меня Убунту 22.04.1.
Раньше это работало до перезагрузки (Windows), я не знаю, что изменилось.
Переадресация X11 работает нормально
pulseaudio
возвращает:W: [pulseaudio] main.c: This program is not intended to be run as root (unless --system is specified). E: [pulseaudio] core-util.c: XDG_RUNTIME_DIR (/mnt/wslg/runtime-dir) is not owned by us (uid 0), but by uid 1000! (This could e.g. happen if you try to connect to a non-root PulseAudio as a root user, over the native protocol. Don't do that.)
В связи с тем, что я всегда root; поскольку это было стандартное поведение дистрибутива, который я использую, я предположил, что все в порядке.
alsa-reload
возвращаетUnloading ALSA sound driver modules: (none loaded). Loading ALSA sound driver modules: (none to reload).
Не уверен, что это должно произойти.
2 ответа
Вот один из способов решенияConnection failure: Connection refused
проблема:
- Добавьте ниже в
~/.bashrc
:
export HOST_IP="$(ip route |awk '/^default/{print $3}')"
export PULSE_SERVER="tcp:$HOST_IP"
- Бегать
source ~/.bashrc
. - Редактировать
etc/pulse/default.pa
иetc/pulse/daemon.conf
файлы, как указано здесь . - Из командной строки запустите
pulseaudio.exe
. - Открыть
Windows Defender Firewall
панель управления. - Идти к
Advanced settings
. - Выбирать
Inbound Rules
. - Дважды щелкните по
pulseaudio
приложение. - Нажмите на
Allow the connection
действие. - Нажмите
OK
.
Я не могу утверждать, что понимаю, что происходит, но у меня сложилось впечатление, что эта проблема возникает при изменении настроек звука на стороне Windows после запуска WSL.
В любом случае звук возвращается ко мне, когда я выхожу из WSL, выключите его с помощьюwsl --shutdown
а затем запустите WSL заново.