![После пробуждения карта PCIe USB с подключенным USB-адаптером WiFi выходит из строя, поскольку сеть запускается раньше интерфейса USB](https://rvso.com/image/1665752/%D0%9F%D0%BE%D1%81%D0%BB%D0%B5%20%D0%BF%D1%80%D0%BE%D0%B1%D1%83%D0%B6%D0%B4%D0%B5%D0%BD%D0%B8%D1%8F%20%D0%BA%D0%B0%D1%80%D1%82%D0%B0%20PCIe%20USB%20%D1%81%20%D0%BF%D0%BE%D0%B4%D0%BA%D0%BB%D1%8E%D1%87%D0%B5%D0%BD%D0%BD%D1%8B%D0%BC%20USB-%D0%B0%D0%B4%D0%B0%D0%BF%D1%82%D0%B5%D1%80%D0%BE%D0%BC%20WiFi%20%D0%B2%D1%8B%D1%85%D0%BE%D0%B4%D0%B8%D1%82%20%D0%B8%D0%B7%20%D1%81%D1%82%D1%80%D0%BE%D1%8F%2C%20%D0%BF%D0%BE%D1%81%D0%BA%D0%BE%D0%BB%D1%8C%D0%BA%D1%83%20%D1%81%D0%B5%D1%82%D1%8C%20%D0%B7%D0%B0%D0%BF%D1%83%D1%81%D0%BA%D0%B0%D0%B5%D1%82%D1%81%D1%8F%20%D1%80%D0%B0%D0%BD%D1%8C%D1%88%D0%B5%20%D0%B8%D0%BD%D1%82%D0%B5%D1%80%D1%84%D0%B5%D0%B9%D1%81%D0%B0%20USB.png)
У меня старая материнская плата с картой 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