Alto-falantes Linux Ubuntu aparecendo a cada poucos segundos

Alto-falantes Linux Ubuntu aparecendo a cada poucos segundos

Sou novo no Linux Ubuntu, usuário antigo do Windows e estou feliz por estar fazendo a mudança. Ao configurar meu PC de mesa, sou submetido a um irritante e repetitivo 'pop' do alto-falante a cada 2 segundos. Este pop ocorre independentemente do nível de volume. Ele para se eu desconectar o conector de áudio dos alto-falantes e apenas usar o alto-falante embutido na placa-mãe. Se eu reproduzir um som, o estalo para enquanto o som está sendo reproduzido e por cerca de 5 segundos depois, e então recomeça.

Estou executando o Linux Ubuntu 18.04.3 LTS. As informações do sistema relatam dois adaptadores de áudio, HDA-Intel - HDA ATI SB e HDA-Intel - HDA NVidia

Acabei encontrando a solução para esse problema, mas não tenho pontos de reputação suficientes para postar perguntas e respostas juntos.

Responder1

O comportamento padrão do sistema operacional é economizar energia desligando o adaptador de áudio após 10 segundos. Este recurso de economia de energia está causando o estalo e pode ser desativado.

Em Terminal digite sudo nano /sys/module/snd_hda_intel/parameters/power_savee altere o valor de 1 para 0.

Em seguida, digite sudo nano /sys/module/snd_hda_intel/parameters/power_save_controllere altere o valor de Y para N.

No meu sistema, isso resolveu o problema de estouro de áudio imediatamente. No entanto, na reinicialização, o problema voltou e descobri que esses valores foram redefinidos. Para manter esses valores persistentes, tive que adicionar uma linha de código. Adicionei /etc/modprobe.d/alsa-base.conf isso após a última linha de código no arquivo,options snd-hda-intel power_save=0 power_save_controller=N

Salve o arquivo e pronto!

Muitas das minhas informações vieram deste vídeo:https://www.youtube.com/watch?v=Pdmy8dMWitg

Tive que juntar as peças da "persistência após reinicialização" e minha configuração foi redefinida, embora eu não tenha o TLP instalado. Observe que o vídeo afirma o contrário.

Fiquei bastante frustrado com o Ubuntu até descobrir isso. Espero que isso ajude muitas pessoas a resolver seus problemas de áudio!

Responder2

Seguindo a resposta de @Glen, aqui está um script que executa a tarefa:

fix_ubuntu_18_04_sound_pop_issue(){
    __heredoc__="""
    Script that fixes a popping sound due to a power saving feature

    References:
        https://superuser.com/questions/1493096/linux-ubuntu-speakers-popping-every-few-seconds
        https://www.youtube.com/watch?v=Pdmy8dMWitg
    """
    sudo echo "obtaining sudo"
    # First, there are two system files that need modification
    # Changing the values here should fix the issue in your current session. 
    cat /sys/module/snd_hda_intel/parameters/power_save
    cat /sys/module/snd_hda_intel/parameters/power_save_controller
    # Flip the 1 to a 0
    sudo sh -c "echo 0 > /sys/module/snd_hda_intel/parameters/power_save"
    # Flip the Y to a N
    sudo sh -c "echo N > /sys/module/snd_hda_intel/parameters/power_save_controller"

    # To make this change persistant we must modify a config file
    if [ -f "/etc/default/tlp" ]; then
        # Some systems (usually laptops) have this controlled via TLP 
        sudo sed -i 's/SOUND_POWER_SAVE_ON_BAT=1/SOUND_POWER_SAVE_ON_BAT=0/' /etc/default/tlp
        # This line contained a typo, addressed on 2020-10-11 11:11 Bcn time
        sudo sed -i 's/SOUND_POWER_SAVE_CONTROLLER=Y/SOUND_POWER_SAVE_CONTROLLER=N/' /etc/default/tlp
    elif [ -f "/etc/modprobe.d/alsa-base.conf" ]; then
        # Append this line to the end of the file
        text="options snd-hda-intel power_save=0 power_save_controller=N"
        fpath="/etc/modprobe.d/alsa-base.conf"
        # Apppend the text only if it doesn't exist
        found="$(grep -F "$text" "$fpath")"
        if [ "$found" == "" ]; then
            sudo sh -c "echo \"$text\" >> $fpath"
        fi
        cat "$fpath"
    else
        echo "Error!, unknown system audio configuration" 1>&2
        exit 1
    fi
}

Responder3

Como adendo à resposta de Glen, por razões de segurança, é melhor usar sudoeditno lugar de sudo nano. Observe que você também precisará definir a EDITORvariável de ambiente.

Então, em vez de:

sudo nano /sys/module/snd_hda_intel/parameters/power_save

usar

EDITOR=nano sudoedit /sys/module/snd_hda_intel/parameters/power_save

e em vez de

sudo nano /sys/module/snd_hda_intel/parameters/power_save_controller

usar

EDITOR=nano sudoedit /sys/module/snd_hda_intel/parameters/power_save_controller

A razão pela qual sudoedité melhor é totalmente explicada nesta pergunta do SuperUser,sudoedit: por que usá-lo em vez do sudo vi?

informação relacionada