Como fazer o som (PulseAudio) funcionar no WSL2

8 de março de 2021

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.

CMUS Windows Terminal WSL2

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.

Como fazer o som funcionar no WSL2

1. Baixe o PulseAudio para 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).

2. Configure o PulseAudio para Windows

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.

3. Configure o PulseAudio no 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:

Comandos para usar no terminal

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:

Comandos para usar no terminal

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:

Comandos para usar no terminal

source ~/.bashrc

.

4. Instale o PulseAudio como serviço do Windows

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:

Comandos para usar no terminal

C:pulse ssm.exe install PulseAudio

O NSSM GUI será exibido ao executar este comando. Na sua guia Application, use:

Tab de aplicativo NSSM

  • Caminho do aplicativo: C:\pulse\pulseaudio.exe
  • Diretório de inicialização: C:\pulse
  • Argumentos: -F C:\pulse\config.pa --exit-idle-time=-1
  • Nome do serviço (deve ser preenchido automaticamente quando a caixa de diálogo NSSM é aberta): 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:

**NSSM Detalhes Tab

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:

Comandos para usar no terminal

C:pulse ssm.exe remove PulseAudio

5. Inicie o serviço Pulseaudio no Windows

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:

Windows Task Manager Services PulseAudio

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.

Linux Uprising Blog

Confira a versão original desse post em inglês:

How To Get Sound (PulseAudio) To Work On WSL2
Propaganda
Propaganda