A distorção de som no Ubuntu 24.04 pode ter diversas origens: o aplicativo, o PipeWire, o WirePlumber, o ALSA, o driver do kernel ou o próprio hardware de áudio. A abordagem prática consiste em identificar primeiro o dispositivo afetado e, em seguida, alterar uma configuração de buffer ou dispositivo por vez. Em um desktop Ubuntu 24.04 padrão, o PipeWire fica acima do ALSA e o WirePlumber gerencia os dispositivos ALSA; portanto, a maioria dos usuários deve ajustar as propriedades do ALSA expostas pelo WirePlumber antes de substituir a configuração padrão do ALSA do sistema.
O Ubuntu 24.04 originalmente incluía o PipeWire 1.0.4, e os pacotes Noble atuais do Ubuntu continuam a usar o WirePlumber 0.4.17 em vez do formato de configuração mais recente da versão 0.5. Esse detalhe de versão é importante porque o WirePlumber 0.4 usa fragmentos Lua em ` ~/.config/wireplumber/main.lua.d/. A wireplumber.conf.dsintaxe mais recente que você pode encontrar na documentação atual do projeto se aplica ao WirePlumber 0.5 e versões posteriores. Verifique a versão instalada antes de copiar qualquer configuração.
Referências oficiais: notas de lançamento do Ubuntu 24.04 LTS , pacote WirePlumber do Ubuntu para atualizações do Noble , referência de configuração ALSA do WirePlumber 0.4 e referência do plugin ALSA PCM .
Guia rápido: o que tentar primeiro
| Sintoma | Primeiro teste prático | Possível ajuste |
| Estalos sob carga da CPU | Confirme a pia correta e fique atento a quedas de água. | Teste um tamanho de período ALSA maior, como 1024 ou 2048 quadros. |
| Distorção apenas em um DAC USB | Identifique o nó exato do ALSA/PipeWire | Aplique a regra somente a esse nó; evite uma regra global. |
| Ruído quando um dispositivo é ativado após um período de inatividade. | Reproduzir após alguns segundos de silêncio | Aumente ou desative o tempo limite de suspensão para esse nó específico. |
| Problemas em um aplicativo legado que usa apenas ALSA | Teste o aplicativo com aplayum PCM explícito. | Use um por usuário ~/.asoundrccom plug/dmix |
| Distorção a uma taxa de amostragem | Teste com material de 44,1 kHz e 48 kHz | Dê preferência a uma taxa de hardware compatível e permita que o PipeWire faça novas amostragens quando necessário. |
1. Identifique o hardware ALSA e a pilha de áudio.
Comece listando os dispositivos de reprodução e verificando qual servidor de áudio está ativo. Não presuma que hw:0,0sejam seus alto-falantes; dispositivos HDMI, fones de ouvido USB, webcams e estações de acoplamento podem alterar a numeração das placas entre inicializações.
aplay -l
wpctl status
pactl info
wireplumber --version
pipewire --version
Legenda: A aplay -llistagem separa o dispositivo de reprodução analógica integrado do HDMI, o que ajuda a evitar a aplicação de um ajuste ALSA na placa errada.
Se pactl infoaparecer "PulseAudio (no PipeWire)", isso é normal no Ubuntu 24.04. A interface compatível com PulseAudio está sendo fornecida pelo PipeWire. Para o Ubuntu 24.04/Noble padrão, wireplumber --versionnormalmente deve aparecer a série 0.4.x, a menos que você tenha instalado uma versão diferente.
2. Confirme a distorção antes de alterar a configuração.
Use um teste repetível em vez de avaliar as mudanças com base em vídeos aleatórios da internet. Um arquivo WAV curto speaker-testou uma faixa de música conhecida tornam as comparações de antes e depois mais significativas. Verifique também se o problema ocorre igualmente nas saídas analógica, HDMI, Bluetooth e USB. Se apenas uma delas for afetada, concentre-se na correção dessa saída.
speaker-test -c 2 -t wav
aplay /usr/share/sounds/alsa/Front_Center.wav
Para dispositivos USB, o kernel expõe informações de fluxo em /proc/asound/. O caminho exato varia de acordo com o cartão, portanto, verifique /proc/asound/cardsprimeiro em vez de copiar o número do cartão sem antes consultar.
Legenda: As informações do fluxo ALSA podem revelar a taxa de amostragem ativa, a contagem de canais e o formato da amostra para um fluxo de reprodução; o número da placa depende do hardware.
3. Faça backup da configuração atual do usuário.
Antes de editar qualquer coisa, preserve quaisquer configurações adicionais do ALSA ou WirePlumber existentes. Alterações feitas pelo usuário são mais seguras do que editar arquivos em diretórios específicos /usr/share, pois atualizações de pacotes podem substituir arquivos do sistema.
cp -a ~/.asoundrc ~/.asoundrc.backup 2>/dev/null || true
mkdir -p ~/.config/wireplumber/main.lua.d
cp -a ~/.config/wireplumber/main.lua.d ~/.config/wireplumber/main.lua.d.backup 2>/dev/null || true
Se você copiou anteriormente uma configuração de um guia escrito para o WirePlumber 0.5, remova-a ou mova-a para outro local antes de testar no Ubuntu 24.04 padrão. O WirePlumber 0.4 e o 0.5 usam formatos de configuração diferentes.
4. Ajuste o comportamento do buffer ALSA através do WirePlumber 0.4
No Ubuntu 24.04, este geralmente é o ajuste mais relevante no nível do ALSA, pois o WirePlumber cria e configura os nós PipeWire com suporte do ALSA. A documentação do WirePlumber descreve api.alsa.period-sizeo tamanho do período em amostras e api.alsa.headroomcomo um buffer extra entre os ponteiros de hardware e software. A maioria dos dispositivos USB são tratados como dispositivos em lote, e o tamanho do período afeta tanto a frequência de interrupções quanto o comportamento do buffer.
Criar uma regra de usuário:
nano ~/.config/wireplumber/main.lua.d/51-alsa-tuning.lua
Utilize uma regra que tenha como alvo apenas o nó de saída problemático. Primeiro, obtenha o nome do nó com `getNodeName` wpctl statusou `getNodeName` pw-cli list-objects Node. Em seguida, adapte este exemplo:
local rule = {
matches = {
{
{ "node.name", "matches", "alsa_output.*" },
},
},
apply_properties = {
["api.alsa.period-size"] = 1024,
["api.alsa.headroom"] = 0,
},
}
table.insert(alsa_monitor.rules, rule)
Não considere 1024 como um valor mágico universal. É um ponto de teste conservador. Se a distorção persistir, compare 512, 1024 e 2048 um de cada vez. Períodos maiores podem melhorar a tolerância a atrasos de agendamento em alguns sistemas, mas aumentam a latência; períodos menores podem reduzir a latência, mas aumentam a frequência de interrupções e podem expor subfluxos em uma máquina sobrecarregada. Mantenha o menor valor que permaneça estável para sua carga de trabalho.
Se o dispositivo apresentar problemas de E/S mapeada em memória (mmap), o WirePlumber também expõe essa funcionalidade api.alsa.disable-mmap. A documentação original descreve isso explicitamente como uma alternativa de compatibilidade e observa que o acesso de leitura/gravação é mais lento; portanto, não a habilite a menos que a distorção esteja claramente correlacionada com o comportamento do mmap.
["api.alsa.disable-mmap"] = true,
Outra opção específica do dispositivo é session.suspend-timeout-seconds... Se um DAC apresentar estalos ou distorções sempre que é ativado, testar um tempo limite maior — ou 0desativar a suspensão para esse nó — pode ajudar a isolar a causa. Desativar a suspensão mantém o dispositivo ALSA ocupado, portanto, é uma questão de equilíbrio, e não uma recomendação padrão.
5. Use o arquivo .asoundrc somente quando o aplicativo realmente usar o ALSA diretamente.
Um arquivo PCM por usuário ~/.asoundrcpode ser útil para aplicações mais antigas que ignoram o PipeWire e abrem arquivos PCM ALSA diretamente. Também pode ser útil para testar taxas de amostragem fixas ou comportamento de mixagem por software. No entanto, sobrescrever o padrão ALSA globalmente pode interferir com o plugin ALSA do PipeWire, portanto, use um arquivo PCM nomeado sempre que possível, em vez de substituir o padrão pcm.!default.
Por exemplo, dmixo plugin do ALSA suporta valores explícitos de `<nome_do_projeto>` rate, period_size`<nome_do_projeto>` e `<nome_do_projeto> buffer_size`. Um PCM de teste nomeado pode ter a seguinte aparência:
pcm.stable_test {
type plug
slave.pcm "stable_dmix"
}
pcm.stable_dmix {
type dmix
ipc_key 2048
ipc_key_add_uid true
slave {
pcm "hw:0,0"
rate 48000
period_time 0
period_size 1024
buffer_size 4096
}
}
Substitua hw:0,0pelo cartão e dispositivo reais de aplay -l. Em seguida, teste sem alterar as configurações padrão do sistema:
aplay -D stable_test /usr/share/sounds/alsa/Front_Center.wav
Legenda: Cada usuário .asoundrcpode definir parâmetros ALSA fixos para testes controlados; um hwalvo direto deve ser usado com cautela, pois ignora a conversão automática de formato.
O projeto ALSA observa que dmixpossui uma configuração base fixa, a menos que você especifique valores em sua definição de escravo, enquanto o plugplugin pode realizar conversão de formato e taxa. É por isso que combinar um plugPCM nomeado com um dmixPCM ajustado separadamente é mais seguro para experimentos do que forçar cada programa a abrir o hardware bruto diretamente.
6. Reinicie os serviços de áudio do usuário e teste novamente.
Após alterar a regra do WirePlumber, reinicie a pilha de áudio do usuário. Feche primeiro os aplicativos que estiverem usando áudio ativamente.
systemctl --user restart wireplumber pipewire pipewire-pulse
Em seguida, repita o mesmo material de teste usado antes da alteração. Abra Configurações > Som e verifique se o dispositivo de saída e o perfil esperados ainda estão selecionados.
Legenda: Após reiniciar os serviços de áudio, verifique se o Ubuntu ainda seleciona o dispositivo de saída e o perfil desejados antes de avaliar se a distorção foi corrigida.
Como avaliar se o ajuste funcionou
- O mesmo arquivo de teste é reproduzido repetidamente sem estalos, zumbidos, cortes ou pequenas interrupções.
- A distorção não retorna após o dispositivo entrar em modo ocioso e ser ativado novamente.
- Aplicativos de desktop comuns, navegadores e chamadas de vídeo ainda usam o dispositivo de saída esperado.
- A latência continua aceitável para o seu caso de uso; a reprodução de música tolera mais buffering do que o monitoramento ao vivo ou jogos.
- A correção permanece estável mesmo após sair e entrar novamente na sessão ou reiniciar o computador.
Quando os ajustes no ALSA não resolvem o problema.
Não continue aumentando os buffers se o sintoma for claramente distorção por hardware, um cabo solto, uma entrada analógica sobrecarregada, um hub USB com defeito ou uma caixa de som ruim. Verifique também os níveis do mixer alsamixer; a distorção que ocorre apenas perto de 100% do volume pode estar relacionada ao ganho, e não a um problema de sincronização.
Se o problema começou após uma atualização do kernel ou do firmware, teste outro kernel compatível no menu GRUB antes de criar regras de áudio cada vez mais complexas. Se apenas o Bluetooth estiver afetado, concentre-se no codec/perfil do Bluetooth em vez das configurações de período do ALSA. Se apenas o HDMI estiver afetado, verifique primeiro o perfil HDMI e o receptor/monitor.
Lista de verificação de reversão
- Remover ou renomear
~/.config/wireplumber/main.lua.d/51-alsa-tuning.lua.
- Restaure
~/.asoundrca partir do backup ou remova o arquivo somente de teste.
- Reiniciar
wireplumber, pipewiree pipewire-pulse.
- Execute o comando novamente
wpctl statuspara speaker-testconfirmar se o comportamento padrão foi restaurado.
Resumindo
Para o Ubuntu 24.04, comece com regras ALSA específicas do WirePlumber 0.4 em vez de uma substituição abrangente em todo o sistema .asoundrc. Identifique o nó de saída exato, altere uma propriedade por vez e compare o mesmo áudio de teste após cada alteração. Um tamanho de período como 1024 é um ponto de partida razoável para diagnóstico, mas o valor correto depende do dispositivo e da carga de trabalho. Reserve disable-mmapas alterações de suspensão e dmixos PCMs personalizados para casos em que seus testes apontem especificamente para esses comportamentos.