Macで強制的にRGBでモニターやテレビを接続する方法

一部のモニターやテレビではHDMIなどでMacと接続すると色空間がYUVになってしまい色相がおかしくなったり、テキストがぼやけたりする場合があるのでモニターを強制的にRGBで接続する方法を紹介。

テストしたモニターはBenQ EW3280U。

強制的にRGBでモニターを接続している状態のディスプレイ設定画面

また、本記事の方法はApple Silicon搭載Macでは後述のスクリプトが正常に実行出来なかったり、処理結果が有効でなかったりするため無効。

ただしIntel Macで後述のスクリプトを実行しApple Silicon Macに移植すればモニターによっては有効(管理人のM1 Mac mini環境では成功)。

なお、管理人はBenQ以外にも下記のモニターを所持しているため、もしテストして欲しいモニターがあった場合はCONTACTフォームからご連絡して頂ければ空いた時間に検証したいと思う(テレビは持っていないためテレビに関しては未検証)。

  • (4K)LG 27UK650-W
  • (4K)Dell 24UD58-B
  • (WQHD)ASUS PB278Q
  • (WQHD)ASUS VX24AH
  • (Full HD)EIZO EV2450

注意点

本題に入る前に注意点として、テストした限り本記事の手順は4Kモニターなどの場合、Macとモニターやテレビが60Hzで接続されていることが条件。

仮に30Hzで接続している(30Hzのみ対応の)モニターやテレビをRGB強制にした場合は本記事で用いるスクリプトにより強制的に60Hz接続になり、帯域不足に伴いディスプレイの解像度が最大1920x1080に制限されてしまう。

30Hz接続の環境でRGBを強制すると60Hzに固定され、帯域不足により解像度が最大2Kになってしまい画面がボケる

本記事の手順で解像度が1920x1080や2560x1440になってしまうという報告が海外で複数あるが、前述の制限が原因ではないかと思う(もしくはテレビとの相性)。

なお、解像度がおかしくなってしまったとしても簡単に元に戻せるためリスクは低い。

モニターやテレビをRGB強制接続する手順

1. SIPを無効にする(Catalinaの場合)

Catalinaの場合(場合によってはBig Surにおいても)、本記事の手順を実行する前にSIPを無効にする必要がある。

なお、管理人の環境ではBig SurにおいてはSIPの無効化は必要なかった。

まずはMacを再起動しAppleロゴが出るまでCommand+Rを押しっぱなしにしてリカバリーモード(復旧アシスタント)を起動する。

自分のアカウントアイコンをクリックして「次へ」を押し管理者パスワードを入力。

上記画面が出たらメニューバーのユーティリティから「ターミナル」を起動して以下のコマンドを入力しエンターキーを押して実行する。

csrutil disable

「disabled System Integrity Protection〜」と出たら今度はMacを通常再起動する。

2. rootボリュームをマウントする(Catalinaの場合)

Macを通常起動したらターミナルで下記コマンドを実行しrootボリュームをマウントする。

sudo mount -uw /

パスワードを求められたら管理者パスワードを入力してエンターキー。

3. ディレクトリを作る

下記コマンドを実行してRGB強制用のEDID(Extended Display Identification Data)を入れるディレクトリを作る。

sudo mkdir -p /Library/Displays/Contents/Resources/Overrides

もしコマンド実行時にエラーが出た場合はこちらの記事を参考にターミナルにフルディスクアクセス権を与える。

また、Big Sur環境でターミナルにフルディスクアクセス権を与えているのにも関わらずエラーが出る場合は前述の手順でSIPを無効にする。

4. モニター(テレビ)を接続した状態でRubyスクリプトをダウンロード

続いてRGBで接続したいモニターやテレビをMacに接続しておく。

モニターやテレビを接続したら下記コマンドを実行してRubyスクリプトをダウンロード。

cd /Library/Displays/Contents/Resources/Overrides
sudo curl -O https://gist.githubusercontent.com/ejdyksen/8302862/raw/patch-edid.rb

スクリプトのダウンロードは一瞬で終わるはず。

なお、このスクリプトに関する情報は下記GitHubページに詳細情報がある。

参考 A script to fix EDID problems on external monitors in macOSGitHub

5. Rubyスクリプトを実行してモニターやテレビを再接続

続いて下記コマンドでRubyスクリプトを実行。

cd /Library/Displays/Contents/Resources/Overrides
sudo ruby patch-edid.rb

上記画面が出て処理が終わったらモニターやテレビを物理的に再接続する。

6. RGB強制モードになっているのを確認して完了

モニターやテレビを繋ぎ直してディスプレイの設定(またはシステムレポート)を開いて「Display with forced RGB mode(EDID override)」(RGB強制モード)と表示されていたら成功。

RGB強制成功画面
macOS Catalina
RGB強制成功画面
macOS Big Sur

これでMacは先ほどのスクリプトでRGBモードを強制的に指定したカスタムEDIDを参照してモニターやテレビと接続されたため、あとは色相の異常や文字のぼやけなどが改善されているのを確認して完了。

なお、擬似解像度などの設定が元に戻ってしまっている場合があるので自分好みに再度設定しておこう。

7. SIPを再度有効にする(Catalinaの場合)

Catalinaの場合、RGB強制が成功したらSIPを再度有効にするため、再びリカバリーモードに入りターミナルで下記コマンドを実行する。

csrutil enable

再起動して完了。

Apple Silicon Macの場合

注意
Apple Silicon Macで前述のスクリプトで作成したカスタムEDIDファイルを適用するのは想定外のため自己責任でお願い致します。

Apple Silicon Macの場合は前述の手順1〜6までをIntel Macで実行した後、Apple Silicon Macのターミナルで下記コマンドを実行してまずはディレクトリを作る。

sudo mkdir -p /Library/Displays/Contents/Resources/Overrides

続いてIntel Macの下記の場所にある「Displays」フォルダをApple Silicon Macの「Overrides」フォルダに入れてApple Silicon Macを再起動する(Macのログイン後、画面がしばらく暗転する場合があるため注意)。

/Library/Displays/Contents/Resources/Overrides

この方法が成功するかはモニターによってまちまちであり、MacRumors Forumsのスレッドでは成功例と失敗例の両方がある。

元に戻す場合

元に戻す場合は下記の場所にある「Displays」フォルダ以下をすべて削除してモニターやテレビを物理的に再接続する(Catalinaの場合SIPの無効化が必要)。

/Library/Displays/Contents/Resources/Overrides
元に戻すにはライブラリに存在する「Displays」フォルダごと削除してモニターやテレビを再接続しよう

まとめ

Macは長年HDMIと相性が悪く、Appleも修正するつもりがないように思えるのでMacとHDMIを接続してYUVになってしまった場合は本記事のような手順が必要になる。

また、Apple Silicon(M1)ではHDMIだけではなくDisplayPort接続においてもYUVになってしまうという制限が存在するため、現在のMacのモニターのサポート状況は混沌とした状態になっていると言える。

本記事が少しでも多くの方の参考になれば幸いだ。