Linux Ubuntu 扬声器每隔几秒就会弹出一次

Gle*_*len 18 audio linux speakers ubuntu-18.04

你好超级用户社区,

我是 Linux Ubuntu 的新手,长期的 Windows 用户,很高兴我正在转换。在设置我的台式 PC 时,我每 2 秒就会听到一次烦人且重复的扬声器“砰”声。无论音量大小,都会发生此爆音。如果我将音频插孔从扬声器上拔下,它会停止,只需使用主板内置的扬声器即可。如果我播放声音,则在播放声音时会停止爆音,并在大约 5 秒后恢复。

我正在运行 Linux Ubuntu 18.04.3 LTS。系统信息报告了两个音频适配器,HDA-Intel - HDA ATI SB 和 HDA-Intel - HDA NVidia

我最终找到了这个问题的解决方案,但我没有足够的声望点来发布问答。

Gle*_*len 28

操作系统的默认行为是通过在 10 秒后关闭音频适配器来节省电量。此节电功能会导致爆音,并且可以禁用。

在终端输入sudo nano /sys/module/snd_hda_intel/parameters/power_save并将值从 1 更改为 0。

然后键入sudo nano /sys/module/snd_hda_intel/parameters/power_save_controller并将值从 Y 更改为 N。

在我的系统上,这立即解决了音频爆裂问题。但是在重新启动时,问题又回来了,我发现这些值已被重置。为了保持这些值的持久性,我不得不/etc/modprobe.d/alsa-base.conf 在文件的最后一行代码之后添加一行代码,options snd-hda-intel power_save=0 power_save_controller=N

保存文件,你就可以开始了!

我的大部分信息都来自这个视频:https : //www.youtube.com/watch?v=Pdmy8dMWitg

我不得不拼凑“重启后的持久性”部分,即使我没有安装 TLP,我的设置也确实重置了。请注意,视频另有说法。

在我弄清楚这一点之前,我对 Ubuntu 感到非常沮丧。我希望这可以帮助很多人解决他们的音频问题!


Ero*_*mic 5

作为@Glen 回答的后续,这是一个执行任务的脚本:

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
}
Run Code Online (Sandbox Code Playgroud)