Corrigir distorção de som no Ubuntu 24.04 com ajustes na configuração do ALSA

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

SintomaPrimeiro teste práticoPossível ajuste
Estalos sob carga da CPUConfirme 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 USBIdentifique o nó exato do ALSA/PipeWireAplique 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êncioAumente ou desative o tempo limite de suspensão para esse nó específico.
Problemas em um aplicativo legado que usa apenas ALSATeste o aplicativo com aplayum PCM explícito.Use um por usuário ~/.asoundrccom plug/dmix
Distorção a uma taxa de amostragemTeste com material de 44,1 kHz e 48 kHzDê 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
Terminal do Ubuntu exibindo a saída do comando `aplay -l` com um dispositivo analógico integrado e um dispositivo de reprodução HDMI.

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.

Terminal do Ubuntu exibindo informações do fluxo PCM ALSA, incluindo uma taxa de 48000 Hz, dois canais e formato S16_LE.

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
GNU nano no Ubuntu editando um arquivo .asoundrc do usuário com um PCM de hardware, taxa de 48000 Hz, tamanho do período de 1024 e tamanho do buffer de 4096.

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.

Painel de som das configurações do Ubuntu mostrando os alto-falantes integrados selecionados com um perfil de saída estéreo analógica.

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.

Deixar um comentário

Baixe o FlightGear gratuitamente: Guia de Instalação Oficial

Baixe o FlightGear gratuitamente: Guia de Instalação Oficial

Baixe o FlightGear gratuitamente no site oficial. Compare os pacotes para Windows, macOS e Linux, instale os arquivos de dados e inicie seu primeiro voo.

Aplicativo Google Tasks para desktop: como usá-lo no computador

Aplicativo Google Tasks para desktop: como usá-lo no computador

Abra o Google Tasks em um navegador, adicione um atalho do Chrome ou inicie o aplicativo automaticamente e gerencie suas tarefas agendadas pelo Agenda e pelo Gmail.

OKSampler: Um sampler de música gratuito e simples para batidas de teclado.

OKSampler: Um sampler de música gratuito e simples para batidas de teclado.

O OKSampler mapeia trechos de MP3 para teclas do teclado e pode reproduzir áudio em loop. Saiba o que este software gratuito legado faz, onde terminam suas funcionalidades antigas e o que verificar antes de baixar.

Como instalar o Linux Mint Debian Edition 5 “Elsie” a partir de um pendrive USB

Como instalar o Linux Mint Debian Edition 5 “Elsie” a partir de um pendrive USB

Baixe e verifique a ISO arquivada do LMDE 5, crie um USB inicializável e escolha as configurações de instalação segura. O Elsie chegou ao fim de seu suporte; veja a versão atual do LMDE.

Como instalar o Wireshark no Linux: Ubuntu, Fedora, Arch e outras distribuições

Como instalar o Wireshark no Linux: Ubuntu, Fedora, Arch e outras distribuições

Instale o Wireshark no Ubuntu, Debian, Fedora, Arch ou openSUSE com os comandos de pacote atuais e, em seguida, configure a captura de pacotes em tempo real com segurança.

Como jogar Don't Starve Together no Linux

Como jogar Don't Starve Together no Linux

Instale a versão Linux de Don't Starve Together pelo Steam, crie um mundo ou junte-se a amigos seguindo estes passos de configuração e resolução de problemas.

Como jogar Squad no Linux com o Steam Proton

Como jogar Squad no Linux com o Steam Proton

Configure o Squad no Linux com o Steam Play e o Proton, instale o jogo, escolha uma ferramenta de compatibilidade e resolva problemas com o sistema anti-cheat.

Como criar uma unidade USB inicializável do Windows 11 no Linux

Como criar uma unidade USB inicializável do Windows 11 no Linux

Crie um pendrive de instalação do Windows 11 no Linux com o Ventoy: obtenha a ISO oficial, instale o Ventoy com segurança, copie a imagem e inicialize o computador de destino.

Como jogar DiRT Rally no Linux: Configuração do Steam e correções do Proton

Como jogar DiRT Rally no Linux: Configuração do Steam e correções do Proton

Aprenda a jogar DiRT Rally no Linux se você já o possui no Steam: instale a versão nativa, execute-o e use o Proton apenas como alternativa.

Como instalar o Devuan Linux a partir de um USB inicializável

Como instalar o Devuan Linux a partir de um USB inicializável

Instale o Devuan Excalibur a partir da ISO Live para desktop. Verifique o download, crie um USB inicializável, proteja as partições existentes e finalize a instalação com o Refracta Installer.