やりたいこと
VNCでリモート接続できるWindowsサーバを構築しましたが、RealVNCで接続すると接続エラーは発生しないものの、画面が真っ黒のまま表示されません。モニタを接続している場合は画面が表示されますが、HDMIケーブルを抜いてヘッドレス環境にすると画面がブラックスクリーンになります。
RealVNCは実際にモニタが接続されていることを前提としているようで、これが仕様だと言われています。この問題の解決法として、以下の3つがあります:
- モニタを接続したまま運用する
- HDMI EDIDエミュレーターをHDMIポートに接続し、モニタが接続されているように見せかける
- 仮想ディスプレイドライバを導入し、モニタが接続されているように見せかける
基本的に遠隔ログイン専用のサーバにしたいことと、HDMI EDIDエミュレーターをわざわざ購入したくないため、3番目の「仮想ディスプレイドライバの導入」で問題を解決することにしました。
環境
| ソフト | バージョン |
|---|---|
| Windows 11 | 23H2 |
| RealVNC Server | 7.12.1(r21) |
| RealVNC Viewer | 7.12.0(r14) |
| usbmmidd_v2 | v2 |
手順
RealVNCの設定については割愛します。
サーバー用PC(RealVNC Serverが起動しているPC)に仮想ディスプレイドライバを導入します。
Activating a Secondary Display on Windows 10 when no Monitor is Connected
上記サイトから、usbmmidd_v2.zipをダウンロードします。
ZIPファイルを解凍し、任意の場所に配置します。
私の場合は C:Toolusbmmidd_v2 に配置しました。
管理者権限でコマンドプロンプトを起動し、以下の2つのコマンドを実行します。
# C:Toolusbmmidd_v2 配下で以下の2つのコマンドを実行。
deviceinstaller64 install usbmmidd.inf usbmmidd
deviceinstaller64 enableidd 1
上記コマンドの実行が成功していると「ディスプレイ2」が増えています。

「表示画面を複製する」に設定し、解像度も「1920 x 1080」程度に変更しましょう。
これで、HDMIケーブルを抜いてヘッドレス状態のサーバPCにRealVNCで接続しても、画面が正しく表示されるようになりました。
以上で環境構築は完了です。
調べた事のメモ
RealVNC Serverの設定を変更する

上記サイト元に設定を変更してみます。
「Use DirectX tracking to capture screen」のチェックを外すことでブラックスクリーンは解消できましたが、解像度が低い、反応が遅い、等実用に耐えませんでした。

