web-dev-qa-db-ja.com

Linux Ubuntuスピーカーが数秒ごとにポップ

SuperUserコミュニティ

私はLinuxUbuntuに不慣れで、長年のWindowsユーザーであり、切り替えを行ってよかったです。デスクトップPCをセットアップするとき、約2秒おきに迷惑で繰り返しスピーカーの「ポップ」が発生します。このポップは、音量レベルに関係なく発生します。オーディオジャックをスピーカーに接続せず、マザーボードに組み込まれているスピーカーを使用すると停止します。サウンドを再生すると、サウンドの再生中、約5秒間ポッピングが停止してから再開します。

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

最終的にこの問題の解決策を見つけましたが、Q&Aを一緒に投稿するのに十分な評判ポイントがありません。

2
Glen

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

5
Glen

@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
        Sudo sed -i 's/SOUND_POER_SAVE_CONTROLLER=Y/SOUND_POER_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
}
0
Erotemic