Нет звука после сна – Ubuntu 20.04

Вопрос или проблема

У меня есть ноутбук Xioami notebook pro на Ubuntu 20.04 (та же проблема и на 18.04).

После того как ноутбук переходит в режим сна/гибернации, звука из динамиков не слышно. Системные настройки (настройки>звуки) определяют, что музыка проигрывается, и наушники работают нормально после сна. Проблема касается только встроенных в ноутбук динамиков. В качестве быстрого решения мне нужно перезагрузить, чтобы динамики снова заработали.

Я попробовал следующие варианты без успеха:

  1. Открыть alsamixer и не вижу никаких “заглушенных динамиков”
  2. Ввести в терминале: sudo alsa force-reload
  3. Настроить скрипт, который перезагружает alsa после сна, как указано на странице помощи Ubuntu
  4. pavucontrol также установлен на моем ноутбуке
  5. Попробовал остановить и перезапустить pulseaudio

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


Ниже вы найдете информацию, указанную о железе.

aplay -l:

**** Список ВЫПОЛНЯЕМЫХ аппаратных устройств ****
карта 0: PCH [HDA Intel PCH], устройство 0: ALC256 Analog [ALC256 Analog]
  Подустройства: 1/1
  Подустройство #0: подустройство #0
карта 0: PCH [HDA Intel PCH], устройство 3: HDMI 0 [HDMI 0]
  Подустройства: 1/1
  Подустройство #0: подустройство #0
карта 0: PCH [HDA Intel PCH], устройство 7: HDMI 1 [HDMI 1]
  Подустройства: 1/1
  Подустройство #0: подустройство #0
карта 0: PCH [HDA Intel PCH], устройство 8: HDMI 2 [HDMI 2]
  Подустройства: 1/1
  Подустройство #0: подустройство #0
карта 0: PCH [HDA Intel PCH], устройство 9: HDMI 3 [HDMI 3]
  Подустройства: 1/1
  Подустройство #0: подустройство #0
карта 0: PCH [HDA Intel PCH], устройство 10: HDMI 4 [HDMI 4]
  Подустройства: 1/1
  Подустройство #0: подустройство #0

cat /proc/asound/cards:

 0 [PCH            ]: HDA-Intel - HDA Intel PCH
                      HDA Intel PCH на 0xb4214000 irq 147

lspci -nnk | grep -A2 Audio:

00:1f.3 устройство аудио [0403]: Intel Corporation Устройство [8086:02c8]
    Подсистема: Устройство Xiaomi [1d72:1905]
    Драйвер ядра в использовании: snd_hda_intel

pacmd list-cards:

1 карта(ы) доступна.
    индекс: 0
    имя: <alsa_card.pci-0000_00_1f.3>
    драйвер: <module-alsa-card.c>
    модуль владельца: 7
    свойства:
        alsa.card = "0"
        alsa.card_name = "HDA Intel PCH"
        alsa.long_card_name = "HDA Intel PCH на 0xb4214000 irq 147"
        alsa.driver_name = "snd_hda_intel"
        device.bus_path = "pci-0000:00:1f.3"
        sysfs.path = "/devices/pci0000:00/0000:00:1f.3/sound/card0"
        device.bus = "pci"
        device.vendor.id = "8086"
        device.vendor.name = "Intel Corporation"
        device.product.id = "02c8"
        device.form_factor = "внутренний"
        device.string = "0"
        device.description = "Встроенный звук"
        module-udev-detect.discovered = "1"
        device.icon_name = "audio-card-pci"

Спасибо.

У меня есть история успеха (спасибо Night Str)!

Та же аппаратная часть. Та же ситуация после режима сна.
Прежде всего получите права суперпользователя:

$ sudo su -

Затем обнаружьте свои устройства:

# lspci -vvv
...
00:1f.3 Устройство аудио: Intel Corporation Устройство 02c8 (prog-if 80)
        Подсистема: Устройство Xiaomi 1963
        Управление: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx+
        Статус: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
        Задержка: 32, Размер строки кэша: 64 байта
        Прерывание: pin A подключен к IRQ 148
        Регион 0: Память на c4214000 (64-бит, не кэшируемая) [размер=16K]
        Регион 4: Память на c4000000 (64-бит, не кэшируемая) [размер=1M]
        Возможности: <доступ запрещен>
        Драйвер ядра в использовании: snd_hda_intel
        Модули ядра: snd_hda_intel, snd_sof_pci
...

Итак, мой идентификатор устройства 00:1f.3. Давайте проверим это:

# ls /sys/bus/pci/devices/ | grep 00:1f.3
0000:00:1f.3

Вот в чем трюк:

# echo 1 > /sys/bus/pci/devices/0000:00:1f.3/remove
# echo 1 > /sys/bus/pci/rescan

Первая команда отключает драйвер от устройства и отсоединяет устройство от дерева. Драйвер (snd_hda_intel) не выгружается, просто отключается.
Вторая команда повторно сканирует pci устройства.

В результате звук появляется снова.

У меня такая же проблема. И я нашел решение, но оно не работает в kde, не знаю почему.

Решение:

echo 1 > /sys/bus/pci/devices/<device_address>/remove
sleep 1
echo 1 > /sys/bus/pci/rescan

Чтобы найти адрес устройства: lspci | grep Audio

Обновление:

Решение для выполнения команд после пробуждения:

Вы можете создать новый файл: /lib/systemd/system-sleep/99_restart_sound
и вставить следующий исходный код:

#!/bin/sh

case "$1" in
    post)
        DEVICE_ID=`lspci -D |grep Audio|awk '{print $1}'`
        echo 1 > /sys/bus/pci/devices/${DEVICE_ID}/remove
        sleep 1
        echo 1 > /sys/bus/pci/rescan
esac

Файл должен быть исполняемым:

sudo chmod +x /lib/systemd/system-sleep/99_restart_sound

введите эту команду:

pulseaudio -k

каждый раз, когда ваш компьютер выходит из сна.

это может быть связано с этой ошибкой:
https://bugs.launchpad.net/ubuntu/+source/pulseaudio/+bug/1888598

Эта команда сработала для меня
amixer -q -D pulse sset Master toggle

Кажется, она заглушает, а затем снова включает устройство звука Master

После того как я выяснил все идентификаторы аудиоустройств из lspci -vvv (пожалуйста, замените идентификатор устройства в ниже указанных командах):

sudo echo 1 |sudo tee /sys/bus/pci/devices/0000:00:03.0/remove
sudo echo 1 |sudo tee /sys/bus/pci/devices/0000:03:00.0/remove
sudo echo 1 |sudo tee /sys/bus/pci/devices/0000:00:1b.0/remove
sleep 10
sudo echo 1 |sudo tee /sys/bus/pci/rescan
sleep 10
pulseaudio --kill; pulseaudio --start

Итак, я вижу, что правильный ответ уже здесь. Но нет должного ответа на то, как автоматизировать этот процесс.

Скрипт в /lib/systemd/system-sleep/restart_sound работает, но система начинает загружаться в 10 раз медленнее.

Для меня правильное решение выглядит так:

  1. Создайте службу, которая будет запускаться при событии возобновления:
touch /etc/systemd/system/restart_sound.service
[Unit]
Description=Перезапустить звуковое устройство после входа в систему при возобновлении
After=suspend.target

[Service]
User=root
Type=oneshot
ExecStart=sudo /local/restart_sound

[Install]
WantedBy=suspend.target
  1. Запустите эту службу
systemctl enable restart_sound.service

Скрипт сам по себе:

# PCI устройство для удаления
PCI_DEVICE="0000:00:1f.3"

# Функция для перезапуска звукового устройства
restart_sound_device() {
  # Удалить PCI устройство
  # Спать, чтобы не мешать другим процессам
  sleep 3
  if [[ -e "/sys/bus/pci/devices/$PCI_DEVICE" ]]; then
    echo "$(date)Удаление PCI устройства $PCI_DEVICE..." >> /local/resume.log
    echo 1 | tee "/sys/bus/pci/devices/$PCI_DEVICE/remove" > /dev/null
    sleep 1
  else
      echo "$(date)PCI устройство $PCI_DEVICE не существует. Пропускаем удаление." >> /local/resume.log
  fi

  # Повторное сканирование шины PCI
  echo "$(date)Повторное сканирование шины PCI..." >> /local/resume.log
  echo 1 | tee /sys/bus/pci/rescan > /dev/null
}

# Запуск от имени root
if [[ $EUID -ne 0 ]]; then
    echo "$(date)Этот скрипт должен выполняться от имени root. Используйте sudo." >> /local/resume.log
  exit 1
fi

restart_sound_device

Готово!

Ответ или решение

Проблема отсутствия звука после сна на Ubuntu 20.04: Решение для ноутбука Xiaomi

На некоторых ноутбуках, таких как Xiaomi Notebook Pro, работающих под управлением Ubuntu 20.04 (и даже 18.04), существует распространенная проблема: после перехода в режим сна или гибернации не работает звук через встроенные динамики. Несмотря на то, что система распознает воспроизведение звука и наушники функционируют корректно, динамики отказываются работать до перезагрузки системы. Ниже приведены шаги по решению данной проблемы.

Шаг 1: Проверка оборудования

Для начала необходимо убедиться, что ваше оборудование правильно определено системой. Воспользуйтесь командой:

aplay -l

Убедитесь, что карта звука (например, HDA Intel PCH) правильно отображается без ошибок. Также проверьте настройки через команду:

lspci -nnk | grep -A2 Audio

Это позволит понять, какой драйвер используется (обычно это snd_hda_intel).

Шаг 2: Исправление конфигурации звука

Предлагаю несколько решений, которые помогут восстановить звук после выхода из режима сна:

  1. Перезагрузка компонентов звука: Используйте вновь созданный скрипт, который будет выполняться каждый раз после выхода из режима сна. Создайте файл в каталоге /lib/systemd/system-sleep/:

    sudo nano /lib/systemd/system-sleep/99_restart_sound

    Вставьте следующий код:

    #!/bin/bash
    
    case "$1" in
        post)
            DEVICE_ID=$(lspci | grep -i audio | awk '{print $1}')
            echo 1 > /sys/bus/pci/devices/$DEVICE_ID/remove
            sleep 1
            echo 1 > /sys/bus/pci/rescan
    esac

    Не забудьте сделать файл исполняемым:

    sudo chmod +x /lib/systemd/system-sleep/99_restart_sound
  2. Перезагрузка PulseAudio: В режиме пост-сна вы можете попробовать убить и заново загрузить PulseAudio:

    pulseaudio -k
  3. Использование amixer для переключения состояния: Выполните команду в терминале, чтобы переключить состояние основного аудиоустройства:

    amixer -q -D pulse sset Master toggle

Шаг 3: Создание службы для автоматизации

Если предложенные выше решения не устраивают вас, можно создать системную службу для автоматизации процесса восстановления звука:

sudo nano /etc/systemd/system/restart_sound.service

Добавьте в файл следующее содержимое:

[Unit]
Description=Restart Sound Device After Login On Resume
After=suspend.target

[Service]
User=root
Type=oneshot
ExecStart=/usr/local/restart_sound

[Install]
WantedBy=suspend.target

Затем активируйте службу:

sudo systemctl enable restart_sound.service

Заключение

Рекомендации выше помогут вам справиться с проблемой отсутствия звука после сна на Ubuntu 20.04. Все описанные решения являются проверенными и основаны на опыте пользователей. Надеюсь, они окажутся полезными и помогут вам быстро восстановить работу звука на вашем ноутбуке. Если проблема сохраняется, стоит проверить наличие обновлений системы или обратиться к сообществу Ubuntu для дополнительной помощи.

Оцените материал
Добавить комментарий

Капча загружается...