如何使用蓝牙键盘从睡眠中唤醒

cot*_*eyr 10 hardware suspend bluetooth wakeup

我有一台 Mac book pro 和一个 Henge 扩展坞。扩展坞只不过是一个支架,可让您轻松插入一些设备,以便您可以“对接”您的 MBP。我也有一个苹果无线键盘。键盘是蓝牙的。

键盘“正常”工作正常,但问题是当我关闭 MBP 的盖子时,笔记本电脑进入睡眠状态(这是无法阻止的)我将笔记本电脑放在底座上(盖子关闭),但我无法从睡觉(我假设是因为没有蓝牙)。如果我使用游戏手柄将设备从睡眠中唤醒,我会收到锁屏密码提示,但实际上我无法输入任何内容,因为蓝牙键盘未连接。

那么如何使用蓝牙键盘(苹果无线键盘)将 Mac Book Pro 从睡眠中唤醒,或者如果失败,在机器恢复时强制它重新连接以便我可以输入密码?

这是我的硬件详细信息。

Mac Book Pro 6.2(我知道它通常不起作用,但它是一个封闭的硬件平台)

总线 001 设备 008:ID 050d:0017 Belkin Components B8T017 蓝牙+EDR 2.1
总线 001 设备 007:ID 05ac:8218 Apple, Inc. 蓝牙主机控制器

Linux 版本

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

Ubuntu 12.10

我做了什么:

将我的 Apple 无线键盘与 Ubuntu 配对。

我的期望:

当我在苹果无线键盘上按下一个键时,系统会从睡眠中唤醒。

发生什么了:

当我在我的苹果无线键盘上捣碎一个键时;没有.....

我对可接受的答案的期望:

一种方法是,当我按下苹果无线键盘的一个键时,我的电脑会从睡眠中唤醒,我可以继续我的计算日。

注意事项:

我通常讨厌看到这个和说出来,但是......它在 Mac OS X 和 Windows 中工作,所以我知道硬件能够做到这一点。

cot*_*eyr 9

我发现了什么

我将花时间解释我发现的一些事情。这应该有助于人们理解为什么这是一个如此复杂的过程,以及他们可以做些什么来帮助改善它,至少对他们来说是这样。

首先,MBP 上的蓝牙无线电是一个“USB”设备。这在笔记本电脑甚至某些台式机上很常见。因此,Linux 将其视为 USB 设备,您可以相应地对其进行配置。

其次,蓝牙无线电有两种模式 HID 模式,这是一个非常基本的“配置文件”,仅适用于键盘和鼠标。此模式可让您在有管理蓝牙设备的应用程序之前使用键盘。例如,当您在 GRUB 菜单中使用蓝牙键盘时,即为 HID 模式。您的笔记本电脑和键盘仍然需要配对,但它们可以在非常低的水平下运行而不会出现问题或干预(再次配对后)。但是 HID 模式是非常有限的,有些事情是行不通的。例如,键盘的电池电量将不起作用。同样在 HID 模式下,我很难使用功能键和媒体键(在这个键盘上,它们是相同的键,可以通过软件切换)。

接下来,您需要让键盘向笔记本电脑发送“东西”。您还需要笔记本电脑来接收“东西”。然后,您必须将它们全部捆绑在一起,才能真正唤醒笔记本电脑。

最后,Linux、Ubuntu、Bluez 或其他人似乎认为所有蓝牙控制器都应该在 HCI 模式下运行。鉴于即使此键盘在 HID 模式下也非常有限,并且除了简单的鼠标和键盘(例如手机或耳机)之外的任何东西都需要 HCI 模式,这可能是一个非常明智的默认设置。然而,HCI 模式需要完整的软件堆栈才能运行,并且不会在笔记本电脑暂停/睡眠/关机时运行。因此,默认情况下,当您的笔记本电脑休眠时,它会断开您的键盘连接并停止收听。

使其工作的实际步骤

第 0 步:解决方法

当我这样做时,我感到非常沮丧,因为我无法做任何事情来解决问题。当笔记本电脑处于睡眠状态时,您无法做任何事情,至少对于 Mac Book Pro,您无法在它们不睡觉的情况下合上盖子。因此,您可能会遇到以下情况:视频无法正常工作(因为它会连接到未插入的外部显示器,但在断开连接时您可以看到所有内容但没有键盘(因为它无法工作/配对/无论如何,以及内部是不可访问的)。为了解决这个问题,你应该遇到它。在 LDM 的登录屏幕上使用可视键盘。如果您唤醒密码提示,您应该可以单击切换用户,然后使用可视键盘登录。只要您以同一用户身份登录,您的会话就不会丢失。也就是说,我不会

第 1 步:预先配对您的键盘。

在我测试时,我注意到这一步是必需的。但是,我不完全明白为什么。苹果做了一些奇怪的事情,所以我要放手了。

  1. 重置您的 PRAM/NVRAM/随便什么。这将清除您当前的 OS X 设置,可能不需要,但最好开始清理。Apple 支持网站上有说明。您不需要重置 PMU。
  2. 启动或重新启动进入 OS X 并正常配对键盘。我建议关闭所有其他蓝牙设备并专注于键盘。据我所知,这将在 NVRAM 和所有键盘中存储一些信息,以便与断电的笔记本电脑进行通信。
  3. 单击高级(在 OS X 中,一旦配对)并选中“允许蓝牙设备唤醒计算机”。苹果支持网站再次有说明
  4. 重新启动计算机进入 Linux。在 ReFIT/GRUB/启动键盘时,应该可以正常工作。

第 2 步:让 Linux 使用键盘

出于某种原因,键盘会在您登录时松开配对。可能是因为蓝牙控制器切换到 HCI 模式。要解决此问题,您需要在 Linux 中配对。这将破坏您在步骤 1 中所做的配对,但不会在笔记本电脑断电或启动时破坏 HID 模式。也就是说,当您重新启动时,您的键盘将无法工作,直到您的蓝牙堆栈在 HCI 模式下再次完全运行。这是因为键盘试图在 HCI 模式下通话,但没有人在听。如果您关机并等待连接超时,键盘将再次在 HID 模式下工作。

  1. 通过运行安装 bluez-compatsudo apt-get install bluez-compat这将使您轻松配对。如果没有蓝牙管理器,我就崩溃了。
  2. 将您的键盘与 Linux 正常配对。Bluetooth从 Unity Dash运行并单击加号。将键盘置于配对模式(按住 Apple 无线键盘上的电源按钮)并按照说明进行操作。它应该很顺利地配对。此时,您的键盘在 Linux 中应该可以正常工作,甚至可以在笔记本电脑处于睡眠状态时向 HID 控制器发送信号。

第 3 步:告诉 Linux 它需要唤醒

现在我们需要告诉 Linux 如果蓝牙设备得到“一些东西”就唤醒。多亏了这个站点上的脚本,做到这一点非常容易。基本说明如下,但如果有任何不清楚的地方,您应该阅读该网站。几乎所有这些都来自链接的网站。

  1. 安装一些依赖 sudo apt-get install notify-send zenity
  2. 下载udev resume 脚本并复制到 /usr/local/sbin/enable-wakeup。
  3. 下载设备选择脚本并复制到 /usr/local/sbin/select-resume-devices
  4. 使脚本可执行:chmod a+x /usr/local/sbin/select-resume-deviceschmod a+x /usr/local/sbin/enable-wakeup
  5. 以 root 权限运行设备选择脚本。 sudo /usr/local/sbin/select-resume-devices
  6. 至少选择“Apple, Inc. 蓝牙主机控制器”、“Belkin Components B8T017 Bluetooth+EDR 2.1”、“Apple Inc. 内部键盘/触控板 (ANSI)”以及您要用于恢复计算机的任何其他设备.
  7. 单击确定。
  8. 查看文件 /etc/udev/rules.d/90-hid-wakeup-enable.rules 并确保它有意义。
  9. 重新启动计算机。

第 4 步:测试和捕获

现在您重新启动计算机后一切正常。重新登录后,以某种方式将计算机置于睡眠模式。敲击键盘上的一个键,笔记本电脑应该会恢复。然而,有几个问题。

  1. 当计算机处于睡眠模式时,它正在寻找 HID 设备。所以键盘以 HID 模式启动。当您完成从睡眠模式恢复时,Linux 正在寻找 HCI 设备。键盘(不是笔记本电脑)需要重置连接。这会在大约 45 秒后自然发生。您可以通过取出电池来强制它,但这可能会破坏配对。如果您不使用键盘从睡眠中恢复,这不是问题。
  2. 重新启动时,键盘仍会尝试在 HCI 模式下进行通信,但笔记本电脑只会寻找 HID 设备。再次超时后,键盘将得到它,并再次正常工作。

  • 在那里有机会重新上传脚本。Dropbox 链接似乎已失效。 (2认同)