Как мне проснуться от сна, используя bluetooth-клавиатуру?

Вопрос или проблема

У меня есть MacBook Pro и док-станция Henge. Док-станция – это всего лишь подставка, позволяющая легко подключать несколько устройств, чтобы вы могли “вставить” свой MBP. У меня также есть беспроводная клавиатура Apple. Клавиатура управляется по Bluetooth.

Клавиатура работает нормально, но проблема в том, что когда я закрываю крышку на своем MBP, ноутбук уходит в спящий режим (это нельзя предотвратить). Я ставлю ноутбук в док-станцию (с закрытой крышкой), и не могу разбудить его (предполагаю, что из-за отсутствия Bluetooth). Если я использую свой игровой контроллер, чтобы разбудить устройство, я получаю запрос на ввод пароля на экране блокировки, однако я не могу ввести ничего, потому что беспроводная клавиатура не подключена.

Так как же я могу разбудить MacBook Pro из спящего режима, используя беспроводную клавиатуру (беспроводная клавиатура Apple), или, если это не получится, заставить ее переподключиться, когда машина возобновит работу, чтобы я мог ввести свой пароль?

Вот детали моего оборудования.

MacBook Pro 6.2 (я знаю, что это обычно не работает, но это закрытая аппаратная платформа)

Bus 001 Device 008: ID 050d:0017 Belkin Components B8T017 Bluetooth+EDR 2.1
Bus 001 Device 007: ID 05ac:8218 Apple, Inc. Bluetooth Host Controller

Версия Linux

Linux macbook 3.5.0-22-generic #34-Ubuntu SMP

Ubuntu 12.10

Что я сделал:

Сопоставил свою беспроводную клавиатуру Apple с Ubuntu.

Что я ожидаю:

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

Что происходит:

Когда я нажимаю клавишу на своей беспроводной клавиатуре Apple; ничего…..

Что я ожидаю от приемлемого ответа:

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

Стоит отметить:

Я обычно ненавижу это видеть и говорить об этом, но …. Это работает в Mac OS X и в Windows, так что я знаю, что аппаратное обеспечение может это делать.

Что я обнаружил

Я собираюсь уделить время, чтобы объяснить несколько вещей, которые я узнал. Это должно помочь людям понять, почему это такой сложный процесс, и что они могут сделать, чтобы улучшить его, по крайней мере для них.

Во-первых, Bluetooth-радио в MBP является устройством “USB”. Это довольно распространено на ноутбуках и даже некоторых настольных компьютерах. Из-за этого Linux рассматривает это как USB-устройство, и вы можете настроить его соответствующим образом.

Во-вторых, Bluetooth-радио имеет два режима: HID-режим, который является очень базовым “профилем” только для клавиатур и мышей. Этот режим позволяет вам использовать клавиатуру до того, как приложение начнет управлять Bluetooth-устройством. Например, когда вы используете свою Bluetooth-клавиатуру в меню GRUB, это HID-режим. Ваш ноутбук и ваша клавиатура все еще должны быть совместимыми, но они могут работать на этом очень низком уровне без проблем или вмешательства (снова, после сопряжения). Однако HID-режим очень ограничен, и определенные функции не будут работать. Например, уровень заряда батареи клавиатуры не будет отображаться. Также в HID-режиме у меня возникли трудности с функциональными клавишами и медиа-клавишами (на этой клавиатуре они одинаковые и могут переключаться программно).

Далее, вам нужно заставить клавиатуру отправить “что-то” на ноутбук. Вам также нужно, чтобы ноутбук принял “что-то”. Затем вы должны связать это все вместе, чтобы ноутбук действительно проснулся.

Наконец, кажется, что Linux, Ubuntu, Bluez или кто-то еще думает, что все Bluetooth-контроллеры должны работать в HCI-режиме. Это, вероятно, очень разумный стандарт, учитывая, что даже эта клавиатура очень ограничена в HID-режиме и что любое устройство, выходящее за рамки простой мыши и клавиатуры (например, мобильный телефон или гарнитура), требует HCI-режима. Однако HCI-режим требует полной программной стек, чтобы работать, и не будет работать, пока ноутбук находятся в режиме ожидания/спящего режима/выключен. Поэтому по умолчанию, когда ваш ноутбук спит, он разъединяет вашу клавиатуру и прекращает прослушивание.

Фактические шаги для его настройки

Шаг 0: Обходное решение

Когда я занимался этим, я очень расстраивался от того, что не мог сделать ничего для устранения этой проблемы. Вы ничего не можете сделать, когда ноутбук спит, и, по крайней мере с MacBook Pro, вы не можете закрыть крышку, не отправив их в режим сна. Поэтому вы остаетесь в ситуации, когда видео может не работать (потому что оно идет на внешний монитор, который не подключен, когда не стоит в док-станции) или вы можете видеть все, но не имеете клавиатуры (потому что она не работает/не сопряжена/что угодно, и внутренняя клавиатура недоступна). Чтобы избежать этого, если вы столкнетесь с этой проблемой. Используйте визуальную клавиатуру на экране входа LDM. Если вы просыпаетесь к запросу пароля, вы сможете нажать “сменить пользователя”, а затем использовать визуальную клавиатуру для входа. Пока вы входите как тот же пользователь, ваша сессия не должна потеряться. Тем не менее, я не стал бы оставлять никакую работу несохраненной, когда прохожу через эти шаги.

Шаг 1: Предварительное сопряжение вашей клавиатуры.

Во время тестирования я заметил, что этот шаг необходим. Однако я не полностью понимаю, почему. Apple делает странные вещи, так что я просто оставлю это.

  1. Сбросьте ваш PRAM/NVRAM/что угодно. Это очистит ваши текущие настройки OS X и может не быть необходимым, но лучше начать с чистого листа. На сайте поддержки Apple есть инструкции. Вам не нужно сбрасывать PMU.
  2. Запустите или перезапустите OS X и обычным образом сопрягите вашу клавиатуру. Я рекомендую оставить все ваши другие Bluetooth-устройства выключенными и сосредоточиться на клавиатуре. Судя по тому, что я вижу, это сохранит некоторую информацию в NVRAM и позволит клавиатуре взаимодействовать с выключенным ноутбуком.
  3. Нажмите на “Дополнительно” (в OS X, после сопряжения) и установите галочку “Разрешить Bluetooth-устройствам будить компьютер”. Сайт поддержки Apple снова предлагает инструкции
  4. Перезагрузите компьютер в Linux. На ReFIT/GRUB/во время загрузки клавиатура должна работать нормально.

Шаг 2: Настройка Linux для работы с клавиатурой

По какой-то причине клавиатура теряет свое сопряжение, когда вы входите. Вероятно, потому что Bluetooth-контроллер переключается в HCI-режим. Чтобы исправить это, нужно сопоставить в Linux. Это сломает сопряжение, которое вы сделали в шаге 1, но не сломает HID-режим, когда ноутбук выключен или загружается. Тем не менее, когда вы перезагрузите, ваша клавиатура не будет работать, пока ваш Bluetooth-стек полностью не запустится снова в HCI-режиме. Это потому, что клавиатура пытается общаться в HCI-режиме, но никто не слушает. Если вы выключите и дождетесь, пока соединение не истечет, клавиатура снова будет работать в HID-режиме.

  1. Установите bluez-compat, выполнив sudo apt-get install bluez-compat. Это позволит вам легко сопрягаться. Без менеджера Bluetooth у меня просто зависал.
  2. Сопрягите вашу клавиатуру обычным образом с Linux. Запустите Bluetooth из Unity Dash и нажмите плюс. Переведите вашу клавиатуру в режим сопряжения (удерживайте кнопку питания на беспроводной клавиатуре Apple) и следуйте инструкциям. Это должно пройти довольно гладко. На этом этапе ваша клавиатура должна нормально работать в Linux и даже отправлять сигналы на HID-контроллер, когда ноутбук спит.

Шаг 3: Настройка Linux на пробуждение

Теперь нам нужно сказать Linux пробуждаться, если Bluetooth-устройство получает “что-то”. Сделать это довольно просто благодаря скриптам на этом сайте. Основные инструкции ниже, но вы должны прочитать сайт, если что-то неясно. Почти все это взято с данного сайта.

  1. Установите некоторые зависимости sudo apt-get install notify-send zenity
  2. Скачайте скрипт пробуждения udev и скопируйте его в /usr/local/sbin/enable-wakeup.
  3. Скачайте скрипт выбора устройств и скопируйте его в /usr/local/sbin/select-resume-devices
  4. Сделайте скрипты исполняемыми: chmod a+x /usr/local/sbin/select-resume-devices и chmod a+x /usr/local/sbin/enable-wakeup.
  5. Запустите с правами суперпользователя скрипт выбора устройств. sudo /usr/local/sbin/select-resume-devices
  6. Выберите, как минимум, “Apple, Inc. Bluetooth Host Controller”, “Belkin Components B8T017 Bluetooth+EDR 2.1”, “Apple Inc. Internal Keyboard/Trackpad (ANSI)” и любые другие устройства, которые вы хотите использовать для пробуждения компьютера.
  7. Нажмите ОК.
  8. Просмотрите файл /etc/udev/rules.d/90-hid-wakeup-enable.rules и убедитесь, что он имеет смысл.
  9. Перезагрузите компьютер.

Шаг 4: Тестирование и ловушки

Сейчас все должно работать нормально после перезагрузки компьютера. Как только вы снова войдете, каким-то образом переведите компьютер в спящий режим. Нажмите клавишу на клавиатуре, и ноутбук должен проснуться. Однако есть пара подводных камней.

  1. Когда компьютер находится в спящем режиме, он ищет HID-устройства. Поэтому клавиатура начинает работать в режиме HID. Когда вы закончите пробуждение из спящего режима, Linux ищет HCI-устройство. Клавиатура (не ноутбук) должна сбросить соединение. Это происходит естественно примерно через 45 секунд. Вы можете заставить это, вынув батареи, но это может испортить сопряжение. Если вы не используете клавиатуру, чтобы пробудить из сна, это не проблема.
  2. При перезагрузке клавиатура все еще будет пытаться общаться в HCI-режиме, но ноутбук будет искать только HID-устройства. Снова после истечения тайм-аута клавиатура это поймет и снова будет работать правильно.

Этот вопрос был задан почти 12 лет назад, но это один из первых ответов в поисковой системе Google по этой теме. Есть простое решение, которое работает для Ubuntu (kubuntu) 24.04.1 LTS на stack exchange:

  • https://unix.stackexchange.com/questions/609438/how-can-i-use-a-usb-keyboard-or-mouse-to-wake-from-suspend
  • в частности, ответ с использованием /etc/udev/rules.d/usb-wake.rules от mnk
    • Трюк заключался в использовании vendorid и productid bluetooth-адаптера.
  • После добавления usb-wake.rules и перезагрузки я смог проснуться с помощью беспроводной клавиатуры.
    • ПРИМЕЧАНИЕ: это с использованием старой Bluetooth-клавиатуры Mac.
$   lsusb
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 003: ID 8087:0aaa Intel Corp. Bluetooth 9460/9560 Jefferson Peak (JfP)
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub

$ more /etc/udev/rules.d/usb-wake.rules
ACTION=="add", ATTR{idProduct}=="0aaa", ATTR{idVendor}=="8087", \
    RUN="/bin/bash -c 'echo enabled > /sys%E{DEVPATH}/power/wakeup'"
  • Аппаратное обеспечение: Intel NUC8i7BEH с клавиатурой Apple A1644 Magic

Ответ или решение

Чтобы разбудить ваш MacBook Pro из режима сна с помощью клавиатуры Apple Wireless с поддержкой Bluetooth, вам потребуется выполнить несколько шагов для настройки и устранения возможных проблем. Обратите внимание, что действия могут варьироваться в зависимости от вашей системы, поэтому следуйте этому руководству, чтобы добиться успеха.

Пошаговая инструкция по пробуждению MacBook Pro с использованием Bluetooth-клавиатуры

Шаг 1: Подготовка к паре клавиатуры

Прежде чем перейти к настройкам в Linux, убедитесь, что ваша клавиатура предварительно спарена с macOS:

  1. Сбросьте PRAM/NVRAM: Перезагрузите компьютер и сразу же удерживайте клавиши Command + Option + P + R, пока компьютер не перезагрузится дважды. Это очистит настройки, которые могут мешать правильной работе.

  2. Парирование в macOS:

    • Подключите свою клавиатуру к MacBook Pro и убедитесь, что она работает.
    • Перейдите в меню Системные настройкиBluetooth и убедитесь, что ваша клавиатура отображается как подключённое устройство.
    • Найдите опцию "Разрешить Bluetooth-устройствам пробуждать компьютер" и активируйте её.

Шаг 2: Установка необходимых пакетов в Ubuntu

Теперь вам необходимо убедиться, что ваша клавиатура корректно работает в Linux:

  1. Установите bluez-compat, чтобы улучшить взаимодействие с Bluetooth:

    sudo apt-get install bluez-compat
  2. Перейдите в настройки Bluetooth и выполните процедуру парирования вашей клавиатуры, как только вы перезапустите систему в Linux.

Шаг 3: Конфигурация для пробуждения системы

Чтобы заставить Linux реагировать на команды пробуждения от Bluetooth-клавиатуры, выполните следующие шаги:

  1. Установите необходимые зависимости:

    sudo apt-get install notify-send zenity
  2. Загрузите скрипты, необходимые для настройки пробуждения:

    • enable-wakeup: Этот скрипт позволяет системе прослушивать команды пробуждения.
    • select-resume-devices.sh: Позволяет выбрать устройства, которые могут пробуждать ваш компьютер.
  3. Скопируйте скрипты в системные каталоги:

    sudo cp enable-wakeup /usr/local/sbin/
    sudo cp select-resume-devices.sh /usr/local/sbin/
  4. Сделайте скрипты исполняемыми:

    sudo chmod a+x /usr/local/sbin/select-resume-devices.sh
    sudo chmod a+x /usr/local/sbin/enable-wakeup
  5. Запустите select-resume-devices с правами суперпользователя и выберите ваше Bluetooth-устройство для пробуждения:

    sudo /usr/local/sbin/select-resume-devices.sh
  6. Убедитесь, что файл /etc/udev/rules.d/90-hid-wakeup-enable.rules настроен правильно, и перезапустите систему.

Шаг 4: Тестирование настройки

После выполнения всех вышеупомянутых шагов вы можете протестировать вашу клавиатуру:

  1. Войдите в систему и отправьте MacBook Pro в режим сна.
  2. Нажмите любую клавишу на Bluetooth-клавиатуре и убедитесь, что система просыпается и требует ввести пароль.

Заключение

Следуя этой инструкции, вы сможете настроить свою Bluetooth-клавиатуру для пробуждения MacBook Pro из режима сна на Linux. Помните, что Bluetooth-устройства могут иногда вести себя нестабильно при пробуждении, поэтому убедитесь, что ваше оборудование и драйверы обновлены. Если возникнут дополнительные проблемы, проверьте настройки BIOS, а также обратитесь к сообществу Ubuntu и документации Bluetooth.

Оцените материал
Добавить комментарий

Капча загружается...