Este artigo explica como fazer o som (pulseaudio) funcionar em WSL2 no Microsoft Windows.
Seguindo estas instruções, você terá o som funcionando ao usar Pulseaudio no Windows/WSL2 para aplicativos do console e da GUI (embora o artigo não cubra a execução de aplicativos gráficos no WSL2). Usando isso, o microfone não funciona, ou pelo menos não funcionou para mim (e eu não precisava de qualquer maneira).
Microsoft planeja adicionar suporte integrado para executar aplicativos gráficos e som para WSL2. Mas até lá, você pode usar essas instruções para fazer o som funcionar no WSL2.
Caso você ainda esteja usando o WSL1, veja como atualizar para o WSL2 aqui. Você pode verificar se você já está usando o WSL2 executando wsl -l -v
no Windows PowerShell. Cada máquina usando o WSL2 deve ser listada aqui, com 2 como sua VERSION
; Se você não vir um número de versão, ou se vir uma mensagem de erro, você terá WSL1.
Abaixo está uma captura de tela que mostra o terminal do Windows executando o Ubuntu/WSL2 onde estou usando CMUS (Console Music Player) para tocar música. Você não pode ouvir a música para verificar se está realmente funcionando, então esta captura de tela é meio inútil, mas eu precisava de uma captura de tela para ser usada como miniatura do artigo.
Como uma nota totalmente não relacionada, caso deseje usar o CMUs no WSL2, edite seu arquivo ~/.config/cmus/rc
(crie se não existir ) e adicione set output_plugin=pulse para fazer sua saída de som funcionar na sua área de trabalho do Windows.
No Windows:
A mais nova versão do PulseAudio para Windows 10 que eu poderia encontrar é a versão 7 daqui, compilado para x2Go. Você pode visitar esse link e clicar no snapshot para baixar o PulseAudio para Windows, ou clique aqui para baixá-lo.
Isso faz o download de um arquivo .tar.gz
. Extraia este arquivo e renomeie a pasta que contém pulseaudio.exe
, e os outros executáveis e arquivos de outros pulseaudio, para pulse
, e copie esta nova pasta pulse
para C:\
(para que você tenha e. C:\pulse\pulseaudio.exe
).
No Windows:
Crie um arquivo chamado config.pa
em C:\pulse\
. Para ser capaz de renomear a extensão do arquivo no Windows, você precisará ativar a exibição das extensões de arquivo do Explorer.
Neste arquivo C:\pulse\config.pa
, adicione o seguinte e salve o arquivo quando terminar:
load-module module-native-protocol-tcp auth-ip-acl=127.0.0.1;172.16.0.0/12
load-module module-esound-protocol-tcp auth-ip-acl=127.0.0.1;172.16.0.0/12
load-module module-waveout sink_name=output source_name=input record=0
Aqui, permitimos conexões de 127.0.0.1
, que é o endereço IP local e 172.16.0.0/12
, que é o espaço padrão (172.16.0.0 - 172.31.255.255) para WSL2.
No WSL2 (Ubuntu / o que for que você esteja usando):
Vamos certificar-se de ter libpulse0
instalado, ou então isso não funciona. Seu nome e comando para instalar dependem da distribuição do Linux que você está usando, então você precisará pesquisá-lo e instalá-lo. No Ubuntu/Debian, você pode instalá-lo usando:
sudo apt install libpulse0
Ainda no WSL2, você também precisará editar o arquivo ~/.bashrc
com um editor de texto - usando o comando abaixo você vai editá-lo usando o Nano Console Editor:
nano ~/.bashrc
Role para baixo neste arquivo para seu fim, e lá cole o seguinte:
export HOST_IP="$(ip route |awk '/^default/{print $3}')"
export PULSE_SERVER="tcp:$HOST_IP"
#export DISPLAY="$HOST_IP:0.0"
Aqui você pode descomentar a linha de export DISPLAY
para também exportar a variável de ambiente DISPLAY
(comentei por padrão porque nem todo mundo precisará). Isso é necessário se você quiser usar algo como VcxSrv para iniciar aplicativos gráficos da WSL2 (usando a configuração neste artigo, os aplicativos gráficos em execução no WSL2 terão suporte de som).
Quando terminar, salve o arquivo e saia do Nano (Ctrl + o
, Enter
então x
salva o arquivo e existe nano). Em seguida, execute o arquivo ~/.bashrc
para usar as novas variáveis de ambiente:
source ~/.bashrc
No Windows:
Para lançar o PulseAudio como serviço do Windows, usaremos o NSSM. Baixe o NSSM daqui, extraia o arquivo baixado e copie o executável Win64 nssm.exe
para C:\pulse\
. Você pode encontrar isso na pasta win64
no arquivo zip NSSM baixado.
Em seguida, procure pelo PowerShell no menu Iniciar do Windows, clique com o botão direito do mouse na entrada PowerShell e escolha Run as Administrator
.
No PowerShell, digite ou cole:
C:pulse ssm.exe install PulseAudio
O NSSM GUI será exibido ao executar este comando. Na sua guia Application
, use:
C:\pulse\pulseaudio.exe
C:\pulse
-F C:\pulse\config.pa --exit-idle-time=-1
PulseAudio
No campo Argumentos, estamos usando -F
, que informa a PulseAudio para executar o script especificado na inicialização, enquanto o --exit-idle-time=-1
desativa a opção para encerrar o daemon após vários segundos de inatividade.
Na guia Details
, digite PulseAudio
no campo Display name
:
**
Quando terminar tudo isso, clique no botão Install service
.
No caso de você depois desejar remover este serviço do Windows, execute o PowerShell como administrador novamente, e desta vez execute o seguinte comando para remover o serviço:
C:pulse ssm.exe remove PulseAudio
Inicie o Gerenciador de Tarefas do Windows, clique na guia Services
e vá para o PulseAudio. Quando você encontrar o serviço Pulseaudio, clique com o botão direito e selecione Start
:
E estamos prontos. PulseAudio está agora funcionando. Você deve ser capaz de usar aplicativos com áudio dentro do WSL2 e ouvir sua saída de áudio na área de trabalho do Windows 10.
Como instalamos o Pulseseaudio como um serviço no Windows 10, uma vez iniciado, ele será iniciado automaticamente quando você efetuar login na sua área de trabalho do Windows, portanto, não há necessidade de iniciá-lo manualmente de novo.
Referências: discourse do ubuntu, este, este e o x2go wiki.
Esse post foi traduzido do site LinuxUprising.com pela rtland.team.
Confira a versão original desse post em inglês:
How To Get Sound (PulseAudio) To Work On WSL2