我之前写过一篇《Mac 合盖不休眠:用 pmset 彻底禁止系统睡眠》,当时的办法很直接:终端里执行两行 pmset,让 MacBook 不管开盖还是合盖,都别睡。

这个办法确实能用。我也用了挺长一段时间。

但 macOS 这种东西,平时看着没事,真到你需要它一直醒着的时候,总会给你来一点小惊喜。偶尔设置失效,偶尔合盖之后还是睡了,偶尔系统更新或某个进程抽风,又得重新排查一遍。

折腾到最后,我苦思冥想,想到了一个有点邪门但很符合逻辑的办法:给 MacBook 插一个 HDMI 欺骗器。

我买的是绿联的,十来块钱。不是采集卡,也不是转接器,就是一个看起来像 HDMI 接头的小东西。(我的MacBook终于也用上了这个接口了,平常都是闲置)

产品使用图

HDMI 欺骗器到底是什么

HDMI 欺骗器也叫 HDMI dummy plug、虚拟显示器或 EDID 欺骗器。它本身不会真的输出画面,里面主要是一块很简单的识别电路,用来向电脑报告:“这里接了一台显示器。”

HDMI 设备插上之后,电脑通常会先通过 HPD,也就是 Hot Plug Detect,判断接口上有没有显示设备;接着通过 DDC 读取显示器的 EDID 信息。EDID 里会告诉电脑这台显示器支持什么分辨率、刷新率和颜色格式。

真正的显示器会提供这些信息。欺骗器也提供,只不过它提供的是预先写好的固定信息。对 macOS 来说,接口另一头确实有个外接显示器,至于这个显示器实际上有没有屏幕,它一般不关心。

这也是它能工作的原因。它不是用软件不断调用“不要睡眠”,而是改变了 MacBook 对当前硬件连接状态的判断。

为什么能让 MacBook 一直醒着

MacBook 合盖后是否继续工作,和外接显示器有关。正常的合盖模式本来就是给外接显示器、键盘和鼠标准备的。苹果的说明里也提到,合盖使用 MacBook 时需要连接电源,以及外接键盘和鼠标或触控板。

插入 HDMI 欺骗器后,系统会认为 MacBook 接上了外部显示器。再配合电源和键鼠,合盖之后它就更容易进入类似“闭合显示器模式”的工作状态,MacBook 本体继续运行,屏幕则没有画面可显示。

这里说的是“更容易”和“我的使用效果”,不是说一个十几块钱的小配件能绕过 macOS 的所有睡眠条件。不同型号、系统版本、接口转接方式可能有差异。尤其是 USB-C 转 HDMI 的链路,中间多一层转接,识别结果就可能和 MacBook 自带 HDMI 接口不一样。

我的使用体验

插上之后,在“系统设置 → 显示器”里能看到一个外接显示器。它没有真实画面,但 macOS 会给它分配一个桌面空间。

我把 MacBook 合上之后,机器继续跑,远程连接、下载和后台任务也能保持着。相比之前单纯依赖 pmset,这个方法至少少了一层软件设置,不需要记着某个 App 有没有正常运行。

当然,欺骗器也不是完全没有副作用。它最烦人的地方,就是系统真的会多出一个显示器。

记得调整显示器排列

打开“系统设置 → 显示器”,点击排列,就能看到 MacBook 屏幕和 HDMI 欺骗器对应的虚拟屏幕。

系统可能会把虚拟显示器放在主屏幕的右边、左边,甚至上面。鼠标移动到边缘时,就会滑到那个不存在的屏幕里。你会感觉鼠标突然消失,实际它只是跑到虚拟桌面去了。

解决方法很简单:把虚拟显示器拖到一个平时鼠标滑不到的位置。

比如把它拖到主屏幕的左上角,或者拖到屏幕上方,并把两个屏幕只保留一个很小的接触边。这样日常移动鼠标时不容易误触,想找它的时候再把鼠标往那个方向推过去就行。

如果你完全不想看到这个虚拟屏幕,也可以在显示器设置里选择镜像显示。不过镜像之后系统的显示逻辑会变化,具体效果取决于你的 MacBook、转接器和当前设置。我个人更建议保留扩展模式,把它扔到鼠标够不到的角落。

显示器排列

订单价格和实物

我买的这款是绿联 HDMI 欺骗器,价格十来块钱。它的体积很小,插上之后基本不会额外占桌面空间,也不需要安装驱动或运行软件。

欺骗器订单

这个方法适合谁

如果你只是想让 MacBook 开盖时晚一点休眠,系统设置、caffeinate 或 Amphetamine 就够了。

如果你需要合盖后继续跑任务,比如远程访问、下载、长时间脚本或家里的服务,这种 HDMI 欺骗器更适合拿来做一个固定的硬件方案。插上它,系统就一直有个外接显示器挂在那里。

但要注意三件事:合盖使用时最好接电;欺骗器只负责显示器识别,不负责键盘鼠标;不插真实显示器时,显示器排列里会多出一个虚拟屏幕。

我现在的做法就是把欺骗器插着,需要让 MacBook 合盖干活时直接合盖。十几块钱,解决了我之前偶尔要重新排查休眠设置的问题。

参考资料

Apple:Use dual monitors with your MacBook Air and MacBook Pro with M3 chip

https://support.apple.com/en-us/117373

DataPro:Hot Plug Detection, DDC, and EDID

https://www.datapro.net/techinfo/hot_plug_detection.html

Extron:Understanding EDID

https://www.extron.com/article/uedid