Chrome Remote Desktop が遅いときの対処 ─ EDID 不在を疑う

Windows ホストの Chrome Remote Desktop (以下 CRD) で、ping は正常なのに映像がカクついて入力も遅延する場合、ホスト PC に物理ディスプレイが接続されていないことが原因のことがあります。本記事ではその症状の判定手順と、HDMI/DP の EDID ダミーアダプタによる対処を整理します。

対象

次の症状に該当する場合、本記事の手順が有効です。

  • ホストは Windows、GPU は NVIDIA
  • リモート側からホスト IP への ping は数 ms・損失なし
  • CRD の映像がカクつき、かつ入力にも遅延がある
  • ホストに物理モニタが繋がっていない、または電源 OFF・KVM 切替などで EDID が応答しない

接続先 PC を物理モニタなしで常用しているケース、リモート専用に組んだ GPU 計算機などで起きやすい問題です。

原因の概要

物理ディスプレイが認識されないと、Windows と NVIDIA GPU が同時に次の省電力フォールバックに入ります。

  1. GPU パワーステートが最低の P8 に張り付く
  2. 画面描画が Indirect Display Driver (IddCx) 経由のソフトレンダリングに切り替わる
  3. NVENC (ハードウェアエンコーダ) が CRD から使われなくなる
  4. DWM (Desktop Window Manager) の GPU 合成が抑制される

結果として、CRD のフレーム生成・エンコード経路がボトルネックになり、ネットワークではなくホスト側で律速します。

切り分け手順

PowerShell で以下を上から順に確認します。

1. 接続モニタの認識状態

Get-CimInstance -Namespace root\wmi -ClassName WmiMonitorID | ForEach-Object {
  [PSCustomObject]@{
    Manufacturer = -join ($_.ManufacturerName | Where-Object {$_ -ne 0} | ForEach-Object {[char]$_})
    Product      = -join ($_.UserFriendlyName | Where-Object {$_ -ne 0} | ForEach-Object {[char]$_})
    Active       = $_.Active
  }
}

結果が空、または Active=False のみの場合、Windows はアクティブな物理ディスプレイを認識していません。

2. GPU のパワーステート

& "C:\Windows\System32\nvidia-smi.exe" --query-gpu=pstate,clocks.gr,clocks.mem,encoder.stats.sessionCount --format=csv -l 1

CRD 接続中にもかかわらず pstateP8 のまま、かつ encoder.stats.sessionCount が 0 で推移している場合、本問題に該当します。

3. 受信フレームレートと RTT (任意)

接続元 Chrome で CRD セッション中に別タブで chrome://webrtc-internals を開き、アクティブな PeerConnection を選択して以下を確認します。

  • framesPerSecond が 10〜20fps 程度で頭打ち
  • currentRoundTripTime が一桁 ms

両者が組み合わさっていれば、ホスト送信側がボトルネックです。

対処

主対処: EDID ダミーアダプタを挿す

EDID ROM を内蔵した小型のアダプタ (HDMI/DP ヘッドレスアダプタ) を、ホスト PC の使用 GPU のポートに挿します。HPD ピンを High に固定して EDID を返すことで、Windows と GPU ドライバは「アクティブなモニタが接続されている」と認識し、前述の省電力フォールバックが解除されます。

EDID ダミー製品の主な分類は次の通りです。

種類 動作 用途
HDMI/DP ダミープラグ 固定 EDID を ROM から返す 常設リモート機、マイニング機
EDID エミュレータ DIP スイッチや USB で EDID を書き換え可能 解像度の強制、マルチモニタ整合
EDID キャプチャ/コピーユニット 実モニタから EDID を吸い出して保持 元モニタと同じプロファイルで運用

選定上の注意:

  • HDMI 用と DisplayPort 用は互換性がない。ポートに合わせて選ぶ
  • 1080p ダミーが無難。4K ダミーは送出フレームサイズが増えるため、回線が細い環境では逆効果
  • 複数の GPU 出力に同時に挿すと拡張モニタ扱いになる。原則 1 つだけ
  • ノート PC では内蔵パネルが EDID 役を果たすため通常不要

補助対処: 電源・スリープ設定

EDID ダミーと併せて入れておくと安定します。管理者権限の PowerShell で実行します。

powercfg /change monitor-timeout-ac 0
powercfg /change monitor-timeout-dc 0
powercfg /change standby-timeout-ac 0
powercfg /setactive SCHEME_MIN

SCHEME_MIN は「高パフォーマンス」電源プランの GUID エイリアスです。

補助対処: NVIDIA Control Panel の設定

「3D 設定の管理」→「グローバル設定」→「電力管理モード」を「最大パフォーマンス優先」に設定します。

補足: なぜ EDID 不在で CRD が遅くなるか

詳しい背景に興味がある場合の解説です。対処だけ済ませる場合は読み飛ばして問題ありません。

EDID と HPD

Windows はディスプレイの存在を 2 つの信号から判定します。

  • HPD (Hot Plug Detect): HDMI/DP コネクタの「モニタが繋がっている」を伝える電気信号
  • EDID (Extended Display Identification Data): モニタが内蔵する 128〜256 バイトの ROM。解像度・対応リフレッシュレート・色域・メーカー ID が記述されている

両方が揃って初めて「アクティブな出力」と判定されます。多くの省エネモニタはスリープで HPD を落とすため、モニタの電源 OFF・ケーブル抜去・KVM 切替はすべて「ディスプレイ非接続」と等価に扱われます。

NVIDIA GPU のパワーステート

P-state 用途 クロック
P0 3D フルロード 最大
P2 3D アクティブ
P5 アイドル (モニタ ON)
P8 アイドル (出力先なし) 最低

ディスプレイ出力が無いと GPU は P8 に張り付きます。CRD のキャプチャ→エンコード→送信パイプラインは GPU コアクロックとメモリ帯域に依存するため、P8 ではフレーム取得とエンコードが遅延します。

Indirect Display Driver (IddCx)

物理ディスプレイが無い状態で CRD が描画先を確保するために使う、Microsoft の仮想ディスプレイドライバ枠組みです。物理出力経路との違いを以下にまとめます。

項目 物理出力 (EDID あり) IDD 仮想ディスプレイ
キャプチャ API DXGI Desktop Duplication (GPU 直) IDD 経由のフレームバッファ
GPU パワーステート P0〜P5 P8 で固定されがち
NVENC 利用 直接 制限あり、または不可
解像度上限 EDID 通り (例: 4K@60Hz) 既定で低め (1024×768 60Hz など)
DWM GPU 合成 ハードウェアパス 一部フォールバック

NVENC が使われなくなる理由

NVENC は本来ディスプレイ出力とは独立した ASIC ですが、以下が重なって CRD から使われなくなります。

  • GPU 全体が P8 で動いており、NVENC への入力ステージング DMA が低クロック
  • ドライバがディスプレイ非アクティブなセッションと判定し、NVENC を割り当てないケースがある (特に GeForce 系)
  • IDD 経由のフレームは NVENC が直接読めるメモリ配置・ピクセルフォーマットでないことがあり、CPU 経由のコピーが挟まる

結果として CPU エンコードに退化し、フレームレートが頭打ちになります。

DWM の挙動

Windows 10/11 のデスクトップ合成は dwm.exe が GPU で行います。物理ディスプレイが無いと合成頻度を下げ、ウィンドウ描画やカーソル更新が「動かしたときだけ」発生する状態になります。CRD はホストの画面差分を送るので、この更新抑制が直接フレーム供給を細らせます。

EDID ダミーが解決する仕組み

ダミーは EDID ROM のみを持つ小型コネクタで、HPD ピンを High に固定し EDID を返します。Windows と GPU ドライバは「アクティブなモニタ接続」と認識し、上記すべての省電力フォールバックが解除されます。

参考

  • Microsoft Docs: Indirect Display Driver Model (IddCx)
  • NVIDIA Developer: GPU Boost / P-state behavior
  • Microsoft Docs: DXGI Desktop Duplication API
  • VESA: E-EDID Standard