После пробуждения карта PCIe USB с подключенным USB-адаптером WiFi выходит из строя, поскольку сеть запускается раньше интерфейса USB

После пробуждения карта PCIe USB с подключенным USB-адаптером WiFi выходит из строя, поскольку сеть запускается раньше интерфейса USB

У меня старая материнская плата с картой PCIe USB 3.0. К ней подключен адаптер WiFi, который обеспечивает сетевое подключение. Все работает нормально, пока машина не переведена в спящий режим/режим ожидания. После пробуждения сеть не включается, потому что, как мне кажется, машина пытается включить сеть до того, как снова включается карта USB. После этого я могу просто перезапустить сеть, что работает, так как интерфейс USB к тому времени уже включен, но было бы неплохо, чтобы ОС ждала, пока интерфейс USB включится первым, прежде чем пытаться включить сетевое подключение. Можно ли что-то сделать, чтобы приоритизировать включение USB или иным образом заставить это работать так, как задумано?

Редактировать: Драйвер WiFi — это драйвер MediaTek, так как адаптер WiFi использует хорошо поддерживаемый чип MT7612U. У меня нет этой проблемы при использовании встроенных портов USB 2.0 на материнской плате. Кроме того, чип USB 3.0 на карте — это Renesas/NEC, но я не могу вспомнить фактическую модель на данный момент. Дело в том, что это все очень хорошо поддерживаемое оборудование в Linux, поэтому я не уверен, почему это происходит.

решение1

Если я правильно понял, команда sudo systemctl restart network-manager.service решает проблему.

Решением тогда будет добавить его в качестве сценария пробуждения.

От Запуск скриптов до и после приостановки с помощью systemd:

Просто поместите исполняемый скрипт с любым именем в /usr/lib/systemd/system-sleep/, который проверяет, является ли первый аргумент pre (до перехода системы в спящий режим) или post (после выхода системы из спящего режима).

Если это pre, то сделайте то, что вы хотите сделать перед приостановкой, если это , postто сделайте то, что вы хотите сделать после возобновления. Просто!

Вот бесполезный пример:

#!/bin/sh
if [ "${1}" == "pre" ]; then
  # Do the thing you want before suspend here, e.g.:
  echo "we are suspending at $(date)..." > /tmp/systemd_suspend_test
elif [ "${1}" == "post" ]; then
  # Do the thing you want after resume here, e.g.:
  echo "...and we are back from $(date)" >> /tmp/systemd_suspend_test
fi

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