使用边角料糊一个Dummy Display

决定把家里的旧的MBA改装成服务器。如此便要合上盖子。

但是合上盖子系统似乎就自动休眠了,改设置也没有什么很好的效果,即使可以使用caffeinate,重启之后还是会有问题。何况就算避免了休眠,在检测不到Display的时候据说显卡也是不工作的(虽然不知道核显是否也是如此)。网传常见的解决方法是“显卡欺骗器”,也就是Dummy Display,通过在显示端口模拟协议让系统检测到一个并不存在的Display,就行了。

但是Dummy Display一个现成的就要10块左右,而且对于MBA这种DP的接口还不是很好找。

于是自己从家里搜刮出了一些边角料糊了一个,效果还不错,成品如下:

使用的元件是一个DP转接头以及若干买Arduino送的电阻。

怎么做到的呢?

根据Wikipedia上的表述,下图VGA端口的1, 2, 3线分别表示RGB的模拟信号,6, 7, 8对应返线。

再根据Wiki上的资料,RGB线路的阻抗为75\mathrm{\Omega}。对于VGA这种老式模拟接口,通常通过线路负载确定是否连接,因此为了欺骗端口,我们只需要在1-6,2-7,3-8分别接上三个75\mathrm{\Omega}的电阻即可。

但是家里面只搜出5个220\mathrm{\Omega}的和5110\mathrm{\Omega}的电阻,于是乎就有了上图的蜜汁接线。具体来说:

  1. 三个220\mathrm{\Omega}并联
  2. 两个220\mathrm{\Omega}并上两个110\mathrm{\Omega}的串联
  3. 一个110\mathrm{\Omega}并上两个110\mathrm{\Omega}的串联

最后每个电路的等效电阻就是220/3\approx 73.33\mathrm{\Omega},再假装有线阻就是75\mathrm{\Omega}的水平,使用下来完全没问题,当然因为其他线没连,分辨率之类的信息是缺失的,我的电脑似乎默认1024\times768处理了。

不得不说还是VGA这种模拟的端口欺骗起来容易,HDMI这种数字端口就要复杂很多。

(后续万用表测试下来110\mathrm{\Omega}的实际电阻是

1\mathrm{k\Omega}
,大概是读色环的时候读反了我依然坚持认为就应该按照我的方向读,然而最后成品依然可以工作,只能认为是冗余比较高,或者是玄学了。)

(似乎装了Linux之后就可以通过设置避免自动休眠了?)