Подробный гайд по исправлению: USB отключаются после сна в Astra Linux 1.7

Решение проблемы отключения USB после выхода из сна в Astra Linux 1.7. Настройка GRUB, udev, отключение autosuspend и диагностика через dmesg.

2026.04.28                  


Подробный гайд по исправлению: USB отключаются после сна в Astra Linux 1.7Подробный гайд по исправлению: USB отключаются после сна в Astra Linux 1.7 Проблема с отключением или неработоспособностью USB-устройств после выхода из режима сна (suspend-to-RAM) или гибернации в Linux встречается регулярно. В большинстве случаев она связана с подсистемой управления питанием USB (autosuspend), драйверами контроллеров или настройками systemd. Ниже приведён структурированный гайд по диагностике и устранению проблемы в Astra Linux 1.7 (базируется на Debian 10/11, ядра 5.10/5.15).


1. Диагностика

Перед применением решений убедитесь, что проблема именно в управлении питанием, а не в аппаратной или драйверной неисправности.

# Проверка версии ядра
uname -r

# Логи ядра, связанные с USB и сном
journalctl -k | grep -iE "usb|xhci|ehci|suspend|resume"
dmesg | tail -50

# Проверка состояния USB-контроллеров
lsusb -t
lspci -k | grep -iA3 usb

Обратите внимание на сообщения вроде:

  • usb usbX: USB disconnect
  • xhci_hcd: host not ready after resume
  • PM: Device usbX not responding

Если после пробуждения устройство исчезает из lsusb, но появляется в dmesg с ошибками инициализации → проблема в runtime PM или драйвере контроллера.


2. Быстрая проверка (временное отключение autosuspend)

Этот шаг подтвердит, что причина именно в управлении питанием.

# Отключить autosuspend для всех USB-устройств
echo -1 | sudo tee /sys/module/usbcore/parameters/autosuspend

# Проверить текущее значение
cat /sys/module/usbcore/parameters/autosuspend

-1 = отключено, 2 = по умолчанию (2 секунды простоя).

После установки значения:

  1. Переведите систему в сон: systemctl suspend
  2. Разбудите, проверьте работоспособность USB.
  3. Если проблема ушла → переходите к постоянному решению.

Внимание:

  • значение сбросится после перезагрузки. Для сохранения перейдите к шагу 3.

3. Постоянное решение

3.1. Параметр ядра через GRUB

Самый надёжный способ отключить USB autosuspend на уровне ядра.

sudo nano /etc/default/grub

Найдите строку GRUB_CMDLINE_LINUX_DEFAULT и добавьте параметр:

GRUB_CMDLINE_LINUX_DEFAULT="... usbcore.autosuspend=-1"

Пример полной строки:

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash usbcore.autosuspend=-1"

Примените изменения:

sudo update-grub

Перезагрузитесь.

3.2. Udev-правило (альтернатива или дополнение)

Если отключение на уровне ядра не помогает или нужно управлять отдельными устройствами, создайте правило udev:

sudo nano /etc/udev/rules.d/50-usb-power.rules

Вставьте:

# Отключить runtime PM для всех USB
ACTION=="add", SUBSYSTEM=="usb", ATTR{power/control}="on"

# Разрешить пробуждение от всех USB-устройств
ACTION=="add", SUBSYSTEM=="usb", ATTR{power/wakeup}="enabled"

Перезагрузите правила:

sudo udevadm control --reload-rules && sudo udevadm trigger

4. Управление питанием (TLP, powertop, systemd)

Если в системе установлен tlp или powertop, они могут переопределять параметры ядра.

Для TLP:

sudo nano /etc/tlp.conf

Найдите и раскомментируйте/измените:

USB_AUTOSUSPEND=0
USB_DENYLIST="..."  # можно добавить VID:PID проблемного устройства

Примените:

sudo tlp start

Для powertop (если используется):

sudo powertop --auto-tune  # может включать autosuspend

Если проблема появилась после этого, отключите автонастройку или добавьте powertop в исключения.


5. BIOS/UEFI и аппаратные нюансы

Некоторые настройки прошивки конфликтуют с Linux PM:

Настройка в BIOS/UEFI Рекомендуемое значение
USB Legacy Support Enabled или Auto
XHCI Hand-off Enabled
ERP Ready / ErP Disabled
Deep Sleep / S4/S5 Disabled или S3 only
USB Wake Support Enabled

Дополнительно:

  • Обновите BIOS/UEFI до последней версии.
  • Протестируйте устройство в портах USB 2.0 и USB 3.0 (разные контроллеры ehci vs xhci).
  • Отключите в BIOS Fast Boot и Secure Boot на время диагностики.

6. Верификация и мониторинг

  1. Примените настройки, перезагрузитесь.
2. Проверьте параметры ядра:
   cat /sys/module/usbcore/parameters/autosuspend
   # Должно быть -1
3. Выполните тестовый переход в сон:
   systemctl suspend
4. После пробуждения проверьте:
   lsusb
   dmesg | grep -iE "usb|resume|reset" | tail -20
5. Для постоянного мониторинга в фоне:
   journalctl -f -k | grep -iE "usb|xhci|ehci|suspend|resume"

Примечания для Astra Linux 1.7

Аспект Комментарий
Ядро В 1.7 используется 5.10.x или 5.15.x (в зависимости от обновления). Параметр usbcore.autosuspend=-1 полностью поддерживается.
Система безопасности В редакции Смоленск (SE) могут применяться мандатные политики Parsec. Они не блокируют USB PM, но проверяйте auditd и journalctl -t parsec, если устройства не определяются после пробуждения.
Обновления Рекомендуется установить последний kernel из репозитория astra: sudo apt update && sudo apt install linux-image-astra (или linux-image-amd64 в Common Edition).
Токены/СКЗИ Если проблема возникает с крипто-токенами (Рутокен, JaCarta, eToken), проверьте совместимость драйверов pcscd и отключите autosuspend только для конкретного VID:PID через udev.

Если проблема сохраняется

  1. Соберите полный лог: sudo journalctl -b > ~/journal.log
  2. Проверьте, не загружаются ли конфликтующие модули: lsmod | grep -iE "usb|xhci|ehci"
  3. Попробуйте ядро из бэкпортов или более новую версию из astra-updates.
  4. Если устройство работает на Windows после сна, но не в Linux → это известная особенность драйверов/прошивки устройства. Ищите quirk для ядра или отключайте PM только для него через udev.