Выход из режима ожидания с USB-клавиатуры перестает работать после отключения / повторного подключения клавиатуры

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

Я использую Linux, в частности NixOS (хотя думаю, что этот вопрос будет актуален для любого дистрибутива).

Пробуждение из режима ожидания работает нормально, если я не отключаю USB-клавиатуру во время режима ожидания.

/sys/bus/usb/devices/1-7.1 это клавиатура под вопросом. /sys/bus/usb/devices/1-7.1/power/wakeup установлен в enabled, как до, так и после приостановки.

Мой ноутбук - Lemur 8 от System76. Нет никаких параметров BIOS, связанных с пробуждением USB от приостановки.

Я приостановил работу ноутбука, запустив sudo systemctl suspend из терминала.


изменить: я хотел уточнить точные шаги, которые я выполняю:

  1. Компьютер включен, проснулся и USB-клавиатура подключена.
  2. Я приостановил ноутбук с помощью sudo systemctl suspend из терминала.
  3. При подвешенном ноутбуке я отключаю USB-клавиатуру.
  4. Пока ноутбук подвешен, я снова подключаю USB-клавиатуру.
  5. Я нажал клавишу на клавиатуре USB, ожидая, что она разбудит ноутбук. Ничего не произошло. Ноутбук не просыпается.

Если я не выполню шаги 3 и 4 (то есть, если я не отключу и снова не подключу клавиатуру USB), я смогу разбудить ноутбук, нажав клавишу на клавиатуре USB.

1 ответ

Когда USB-порт с подключенной клавиатурой LS находится в режиме SUSPEND, шина находится в состоянии ожидания LS, D- высокий, активность отсутствует. Для пробуждения система ожидает последовательности сигналов пробуждения - "K-состояние" должно генерироваться с клавиатуры (в режиме LS состояние K имеет D+ = высокий уровень, противоположный состояниям шины FS/HS).

Когда вы отключите клавиатуру в состоянии ожидания, аппаратная логика порта будет ощущать "USB отключение" (состояние SE0), и порт перейдет в состояние "отключено". Это отменит режим пробуждения.

Чтобы компьютер проснулся в такой ситуации, вам нужно включить что-то вроде "пробуждение при горячей замене". Я не уверен, доступна ли эта функция.

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