Кажется, что 'systemctl suspend' зависает и не выполняет скрипт в спящем режиме

У меня проблемы с приостановкой работы Ubuntu 18.10. Кажется, что 'systemctl suspend' зависает в ожидании сети и не достигает состояния, в котором вызываются исполняемые файлы в '/ lib / systemd / system-sleep'.

Я пытаюсь удалить модуль ath10k_pci перед приостановкой работы ноутбука. Поэтому я добавил сценарий 'ath10k.sh' в '/ lib / systemd / system-sleep':

#!/bin/bash

if [ "${1}" == "pre" ]; then
   touch /tmp/start_rm_ath10k
   modprobe -fr ath10k_pci
   touch /tmp/end_rm_ath10k
fi

Вызов этого сценария на консоли с опцией 'pre' удаляет модуль ath10k_pci и затрагивает оба файла в '/ tmp' / как и ожидалось. Это работает безупречно, и система продолжает нормально работать без сети.

Теперь, если я запускаю 'systemctl suspend', экран сразу же выключается, но 'ath10k.sh' не запускается, и мне кажется, что ноутбук не был приостановлен.

Когда я потом посмотрел на ноутбук, я заметил, что средняя нагрузка постоянно растет. Кроме того, «ps -e v» перечисляет несколько процессов в статусе «D»:

  • [kworker / 3: 1 + events_freezable]
  • [kworker / u8: 2 + events_unbound]
  • / sbin / wpa_supplicant -u -s -O / run / wpa_supplicant
  • / usr / sbin / cups-browsed
  • iw dev wlp2s0 отключил энергосбережение
  • ip route show default

'dmesg' показывает:

ath10k_pci 0000:02:00.0: firmware crashed!
ath10k_pci 0000:02:00.0: failed to delete WMI vdev 1: -108

Если я использую pm-utils вместо этого, 'pm-suspend' работает безупречно, если я помещаю соответствующий скрипт в '/ etc / pm / sleep.d ', чтобы удалить модуль ath10k_pci перед приостановкой.

Я также заметил, что «pm-suspend» сначала выполняет сценарий в «/etc/pm/sleep.d», а затем выключает экран, тогда как «systemctl suspend» немедленно очищает экран, а затем, кажется, зависает - я не уверен, что это подсказка ...

Я предполагаю, что systemcl вызывает другие вещи перед вызовом любых исполняемых файлов в '/ lib / systemd / system-sleep', и при этом микропрограмма ath10k случайно вылетает до того, как модуль ath10k_pci сможет быть удаленным моим сценарием, чтобы обойти этот сбой.

Итак - мне нужна помощь с этим, и мой вопрос: что я могу сделать, чтобы быть уверенным, что модуль ath10k_pci будет удален до того, как другие вещи в цепочке будут запущены с помощью 'systemctl suspend'? Было бы неплохо, если бы 'modprobe -fr ath10k_pci' был одной из первых вещей, которые выполнялись в режиме ожидания или гибернации.

0
задан 12 December 2018 в 15:49

1 ответ

Вот другой ответ, с решением для моего драйвера ath10k_pci, потому что у меня не работает функция сна / возобновления systemd.

В моем случае (Ubuntu 18.04.3, прошивка qca6174 hw2.1) после того, как я рвал волосы в течение 2 дней, я смог решить проблему с помощью более старой версии прошивки qca6174.

Мне не удалось выгрузить модуль ath10k_pci перед автоматической приостановкой, ни через модуль systemd, ни через скрипт в / lib / systemd / system / system-sleep.

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

Установка последней прошивки qca6174 тоже не помогла.

Помогла более старая версия прошивки от 2016 года! Теперь у меня установлен qca6174 hw2.1 версии 141, хотя мой ноутбук работает 18.04.3 с ядром 5.

Я получил этот совет отсюда: https://askubuntu.com/a/978385/1004167 , поэтому я получил прошивку оттуда: https://launchpad.net/ubuntu/xenial/amd64/linux-firmware/1.157 и скопировал файлы ath10k_pci / QCA6174 / hw2.1 (это моя карта использует) в мою папку /lib/firmware/ath10k/QCA6174/hw2.1.

После перезагрузки мне не пришлось выгружать драйвер перед приостановкой (удалены мои скрипты).

Переход в режим сна и возобновление работы сейчас у меня работает, как и до обновления с 16.04. Единственное, что мне нужно сейчас увидеть, это как предотвратить перезапись скопированных файлов при обновлении.

Надеюсь, что это кому-то поможет: -)

0
ответ дан 10 October 2019 в 13:58

Другие вопросы по тегам:

Похожие вопросы: