Linux Ubuntu スピーカーが数秒ごとにポップ音を発する

Linux Ubuntu スピーカーが数秒ごとにポップ音を発する

私は Linux Ubuntu は初めてで、長年 Windows を使っていますが、切り替えることができてうれしいです。デスクトップ PC をセットアップしているときに、約 2 秒ごとにスピーカーから繰り返しうるさい「ポップ」音が聞こえます。このポップ音は音量レベルに関係なく発生します。スピーカーのオーディオ ジャックを外し、マザーボードに内蔵されているスピーカーだけを使用すると、この音は止まります。音を再生すると、音の再生中と再生後約 5 秒間はポップ音が止まりますが、その後再び鳴り始めます。

Linux Ubuntu 18.04.3 LTS を実行しています。システム情報には、2 つのオーディオ アダプター、HDA-Intel - HDA ATI SB と HDA-Intel - HDA NVidia が報告されています。

最終的にこの問題の解決策を見つけましたが、Q&A をまとめて投稿するには評判ポイントが足りません。

答え1

オペレーティング システムのデフォルトの動作では、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 にかなりイライラしていました。これが多くの人々のオーディオ問題の解決に役立つことを願っています。

答え2

@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
}

答え3

Glen の回答への補足として、セキュリティ上の理由から、sudoeditの代わりにを使用することをお勧めしますsudo nano。環境変数も設定する必要があることに注意してくださいEDITOR

したがって、代わりに:

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

使用

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

そして代わりに

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

使用

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

なぜsudoeditそれが優れているのかは、このスーパーユーザーの質問で詳しく説明されています。sudoedit: sudo vi ではなくこれを使用する理由は何ですか?

関連情報