Кратко: проблема возникает из‑за того, что драйвер 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. Создаём скрипт, который будет работать при переходе в/из сна
- Создайте файл в системной директории
system-sleep:sudo vim /usr/lib/systemd/system-sleep/suspend_wifi - Вставьте код (не забудьте заменить
rtw89_pciна название вашего модуля):#!/bin/sh# Скрипт для перезагрузки драйвера Wi‑Fi при suspend/resume if [ "${1}" = "pre" ]; then # Перед переходом в сон выгружаем модуль modprobe -rv rtw89_pcielif [ "${1}" = "post" ]; then # После пробуждения снова загружаем модуль modprobe -v rtw89_pcifi - Сделайте файл исполняемым:
sudo chmod 755 /usr/lib/systemd/system-sleep/suspend_wifi - Перезагрузите ноутбук (или просто выполните
systemctl suspendи проверьте работу).
Важно: скрипт будет запускаться автоматически каждый раз, когда система переходит в режим
suspendи выходит из него. После установки не понадобится вручную перезагружать Wi‑Fi.
4. Проверка результата
- Подключитесь к сети Wi‑Fi как обычно.
- Закройте крышку ноутбука или выполните
systemctl suspend. - Через несколько секунд откройте крышку (или выполните
systemctl resume). - Если соединение восстановилось без запроса пароля - всё работает.
5. Часто задаваемые вопросы
Q: А что если мой адаптер не Realtek?
A: Алгоритм тот же: найдите имя модуля (lsmod | grep <часть_имени>), замените его в скрипте.
Q: Почему не стоит просто обновлять ядро?
A: В некоторых дистрибутивах новые версии ядра действительно включают исправления, но они появляются не сразу. Скрипт решает проблему мгновенно, без ожидания обновления.
Q: Можно ли отключить скрипт?
A: Да - удалите файл /usr/lib/systemd/system-sleep/suspend_wifi или измените права доступа.
