Динамики Linux Ubuntu выскакивают каждые несколько секунд

Динамики Linux Ubuntu выскакивают каждые несколько секунд

Я новичок в Linux Ubuntu, давний пользователь Windows и рад, что перехожу на него. При настройке моего настольного ПК я слышу раздражающий и повторяющийся щелчок динамика примерно каждые 2 секунды. Этот щелчок происходит независимо от уровня громкости. Он прекращается, если я отключаю аудиоразъем от моих динамиков и просто использую динамик, встроенный в материнскую плату. Если я воспроизводлю звук, щелчок прекращается во время воспроизведения звука и примерно на 5 секунд после этого, а затем возобновляется.

Я использую Linux Ubuntu 18.04.3 LTS. В системной информации указано два аудиоадаптера, HDA-Intel - HDA ATI SB и HDA-Intel - HDA NVidia

В конце концов я нашел решение этой проблемы, но у меня недостаточно очков репутации, чтобы публиковать вопросы и ответы одновременно.

решение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

В качестве дополнения к ответу Глена, по соображениям безопасности лучше использовать 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?

Связанный контент