2022年07月06日 更新

ラズパイVNCでChromiumやVSCodeなど特定のアプリが異常に遅い

どうも、クラゲジュニアです。

Raspberry PiをVNC接続で使っていると、ブラウザのChromiumやコードエディタのVSCodeがものすごく遅いです。キーボード入力や反応がイライラするくらい遅いです。解決方法を書きます。

[TOC]

前提条件

クラゲジュニアの環境は以下の通りです。他の環境でも似たようなものだと思いますが、各自で調整してください。

  • Raspberry Pi 本体:Raspberry Pi 4B(4GB)
  • Raspberry Pi OS:2022-04-04(32bit)

VNC設定済みで、解像度は以下でヘッドレス設定しています。

アプリケーションメニュー(ラズパイアイコン) > 設定 > Raspberry Pi の設定 > ディスプレイタブにて、ヘッドレス解像度1920x1080に設定

解決案1:ディスプレイを繋ぐ

最も簡単な解決方法は、ずばり、ラズパイとディスプレイをHDMIで繋ぐことです。繋いだらラズパイを再起動してください。これで解決します。

解決案2:ダミープラグを繋ぐ

解決案1だとVNCを使っている意味が薄れます。そこで、HDMIダミープラグ(HDMIエミュレーター)を購入して繋ぐ案です。これなら小さいのであまり邪魔になりません。ラズパイ4の場合はmicro HDMIですので変換アダプタも必要です。クラゲジュニアは以下の組み合わせでうまくいきました。

HDMI変換アダプタとHDMIダミープラグで相性もあるようなのでご注意ください。

解決案3:設定ファイルを編集する

こちらの案はディスプレイやプラグなど不要で、config.txtの編集を行います。

変更は3ヶ所です。

  1. #hdmi_force_hotplug=1をアンコメント
  2. #hdmi_group=1#hdmi_mode=1をアンコメントし、数値変更
  3. dtoverlay=vc4-kms-v3dmax_framebuffers=2をコメントアウト

例えばnanoで編集する場合は以下のコマンドを打ちます。

sudo nano /boot/config.txt

変更前(一部抜粋)

# uncomment if hdmi display is not detected and composite is being output
#hdmi_force_hotplug=1

# uncomment to force a specific HDMI mode (this will force VGA)
#hdmi_group=1
#hdmi_mode=1

# (中略)

# Enable DRM VC4 V3D driver
dtoverlay=vc4-kms-v3d
max_framebuffers=2

変更後(一部抜粋)

# uncomment if hdmi display is not detected and composite is being output
hdmi_force_hotplug=1

# uncomment to force a specific HDMI mode (this will force VGA)
hdmi_group=2
hdmi_mode=82

# (中略)

# Enable DRM VC4 V3D driver
#dtoverlay=vc4-kms-v3d
#max_framebuffers=2

保存終了(nanoの場合はCtrl + O, Enter, Ctrl + X)して再起動してください。

ChromiumとVSCodeはこれで速くなりました。ただしその他1部のアプリでは改善しない場合もありました。その場合は解決案1か2がお勧めです。

以上です。