决定把家里的旧的 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}\) 的和 \(5\)\(110\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 之后就可以通过设置避免自动休眠了?)