Кратко: проблема возникает из‑за того, что драйвер Realtek RTL8852AE (модуль rtw89_pci) не восстанавливается автоматически после выхода из режима suspend. Решение - создать небольшой скрипт systemd, который выгружает модуль перед сном и подгружает его после пробуждения.

1. Что происходит и почему "залипает" подключение

Причина Что происходит в системе
Драйвер Realtek После перехода в sleep контроллер Wi‑Fi переходит в энергосберегающий режим, а ядро Linux не инициирует повторную инициализацию модуля.
NetworkManager Видит, что адаптер "отключён", и запросит повторную аутентификацию, но без драйвера соединение не восстанавливается.
Отсутствие официальных пакетов Некоторые ноутбуки (например, Lenovo L15) поставляются с адаптером, для которого в официальных репозиториях Ubuntu 22.04/24.04 нет полностью совместимых драйверов.

2. Как узнать название проблемного драйвера

Откройте терминал и выполните:

lsmod | grep -i rt

Пример вывода (для RTL8852AE):

rtw89_pci              49152  0rtw89_core           1003520  1 rtw89_pcimac80211             1249280  2 rtw89_core,rtw89_pcicfg80211              974848  2 rtw89_core,mac80211

Вывод: модуль называется rtw89_pci. Если у вас другой адаптер, замените rtw89 на соответствующий префикс (например, iwlwifi для Intel).

3. Создаём скрипт, который будет работать при переходе в/из сна

  1. Создайте файл в системной директории system-sleep:
    sudo vim /usr/lib/systemd/system-sleep/suspend_wifi
  2. Вставьте код (не забудьте заменить rtw89_pci на название вашего модуля):
    #!/bin/sh# Скрипт для перезагрузки драйвера Wi‑Fi при suspend/resume
    if [ "${1}" = "pre" ]; then    # Перед переходом в сон выгружаем модуль    modprobe -rv rtw89_pcielif [ "${1}" = "post" ]; then    # После пробуждения снова загружаем модуль    modprobe -v rtw89_pcifi
  3. Сделайте файл исполняемым:
    sudo chmod 755 /usr/lib/systemd/system-sleep/suspend_wifi
  4. Перезагрузите ноутбук (или просто выполните systemctl suspend и проверьте работу).

Важно: скрипт будет запускаться автоматически каждый раз, когда система переходит в режим suspend и выходит из него. После установки не понадобится вручную перезагружать Wi‑Fi.

4. Проверка результата

  1. Подключитесь к сети Wi‑Fi как обычно.
  2. Закройте крышку ноутбука или выполните systemctl suspend.
  3. Через несколько секунд откройте крышку (или выполните systemctl resume).
  4. Если соединение восстановилось без запроса пароля - всё работает.

5. Часто задаваемые вопросы

Q: А что если мой адаптер не Realtek?
A: Алгоритм тот же: найдите имя модуля (lsmod | grep <часть_имени>), замените его в скрипте.

Q: Почему не стоит просто обновлять ядро?
A: В некоторых дистрибутивах новые версии ядра действительно включают исправления, но они появляются не сразу. Скрипт решает проблему мгновенно, без ожидания обновления.

Q: Можно ли отключить скрипт?
A: Да - удалите файл /usr/lib/systemd/system-sleep/suspend_wifi или измените права доступа.

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *