MacでFull HDの外部ディスプレイにWQHDまたは4Kの解像度で表示する設定

Macで1920x1080解像度の外部ディスプレイに、2560x1440や3860x2160といったより高い解像度の設定を行えるようにしてみました。情報が縮小して表示されるので当然フォントやピクセルがにじみますが、どこかで役に立つかもしれません。
2021.06.30

はじめに

清水です。以前、13インチのMacBook Proを通常では設定できないディスプレイ解像度(疑似解像度)1920x1200で使う設定をまとめてみました。13インチのMacBook Proではスペック上のディスプレイ解像度(ピクセル数)は2560x1600ですが、実際には疑似解像度として1024x640、1280x800、1440x900、1680x1050などが通常設定でき、これにより解像度の大きい1920x1200を加える、というものでした。

さて先日、ふと普段使用しているFull HDの外部ディスプレイに、解像度1920x1080を超えたWQHD (2560x1440)の解像度での表示はできないか、と考えました。無理そうかなと思いきや、以前、Full HDではなくHD(解像度1366x768)のTVを外部ディスプレイ代わりにしていたころ、HDにFull HD 1920x1080 (1080p)の解像度を設定していた、ということがあります。当然ながらフォントやピクセルがにじんだりするのですが、個人的にはなんとか使えなくはない、という感触でした。(HDのTVを外部ディスプレイ代わりに使っていたころは、自宅でそれしか外部ディスプレイがなく、使うしかないという状況でもありましたが。)

このHD解像度のTVにFull HDを表示させていたころは、Macの「システム環境設定」 > 「ディスプレイ」から(本来の解像度1366x768のほかに)1080pの解像度が選択でき、それを設定するだけで表示できた、というぐあいだったので設定について何も苦労はなかったのですが、Full HDの外部ディスプレイを接続した場合は、ディスプレイ設定に1080p (1920x1080)以上の解像度は出てきません。しかし、先に挙げたエントリにある内容、設定ファイルを書き換えることでなんとかならないかな、と思ったことが試行錯誤のはじまりでした。

Webの情報をいろいろと調べてみると、11インチのMacBook Airで内蔵ディスプレイの解像度1366x768を超える1920x1080を設定して使用する、というものがありました。これができるのなら、外部ディスプレイ、かつ対象となる解像度の基準ががFull HD (1920x1080)でも同様のことができるのでは、と考えたしだいです。

長々と設定に至った背景などを書き連ねてみましたが、結論としては意図していた設定、Full HD (1920x1080)解像度の外部ディスプレイにそれを超えるWQHD (2560x1440)、さらには4K (3840x2160)の解像度を設定すること成功しました。もちろんフォントやピクセルはにじみます。そして4Kに至っては表示が小さすぎることもあり実用は難しい、しかしWQHDならなんとか使えないことはないかな、という印象です。

以下、本エントリではMacでFull HDの外部ディスプレイにWQHDまたは4Kの解像度で表示する設定をまとめていきます。注意事項として、設定方法はAppleより公式に公開されているものではありません、基本的にWebの情報を参考にしています。設定においてはOSの設定ファイルを書き換える工程が含まれることもあり、設定しようとすることで思わぬ不利益を被る可能性も否めません。それら含めて実際に設定する場合は 必ず自己責任で お願いいたします。

前提など

以下の環境で動作の確認を行いました。後述しますが、外部ディスプレイのベンダ(メーカー)、プロダクト(製品)により設定するファイルは異なります。また下記以外の環境でうまく動作するかはわかりません。

  • Mac
    • MacBook Pro (13-inch, 2019, Four Thunderbolt 3 ports)
  • 外部ディスプレイ
    • iiyama ProLite XB2783HSU-3C
      • 27インチ
      • 解像度 1920x1080 (Full HD)
  • Macと外部ディスプレイとの接続

設定までの流れ

設定は以下の手順で行います。

  • 外部ディスプレイのDisplayVenderIDとDisplayProductIDの確認
  • plistファイルの作成(ダウンロード)
  • plistファイルのシステムフォルダへのコピー(一時的にSIPを無効化)
  • システム環境設定で目的の解像度を指定

外部ディスプレイのDisplayVenderIDとDisplayProductIDの確認

まずは外部ディスプレイのDisplayVenderIDとDisplayProductIDを確認していきます。ターミナルでioreg -lw0 | grep IODisplayPrefsKeyを実行します。

 % ioreg -lw0 | grep IODisplayPrefsKey
    | |   | |         "IODisplayPrefsKey" = "IOService:/AppleACPIPlatformExpert/PCI0@0/AppleACPIPCI/IGPU@2/AppleIntelFramebuffer@0/display0/AppleBacklightDisplay-610-a03e"
    | |   | |         "IODisplayPrefsKey" = "IOService:/AppleACPIPlatformExpert/PCI0@0/AppleACPIPCI/IGPU@2/AppleIntelFramebuffer@1/display0/AppleDisplay-26cd-6648"

IODisplayPrefsKeyとして2つの項目が出力されました。これはMacBook Proに外部ディスプレイを表示したときの状態で、どちらかがMacBook Proの内部ディスプレイ、もう一方が接続している外部ディスプレイということになります。いちど外部ディスプレイを外して、同じコマンドを再度実行してみます。

 % ioreg -lw0 | grep IODisplayPrefsKey
    | |   | |         "IODisplayPrefsKey" = "IOService:/AppleACPIPlatformExpert/PCI0@0/AppleACPIPCI/IGPU@2/AppleIntelFramebuffer@0/display0/AppleBacklightDisplay-610-a03e"

この結果から、外部ディスプレイは"IODisplayPrefsKey" = "IOService:/AppleACPIPlatformExpert/PCI0@0/AppleACPIPCI/IGPU@2/AppleIntelFramebuffer@1/display0/AppleDisplay-26cd-6648"であることがわかりました。

この末尾に注目します。AppleDisplay-26cd-6648のうち、26cdの部分(-を挟んで、下8桁から下5桁目までの4桁)がDisplayVenderID、6648の部分(下4桁)がDisplayProductIDになります。 つまり、外部ディスプレイ iiyama ProLite XB2783HSU-3CはDisplayVenderIDが26cd、DisplayProductIDが6648です。これらはディスプレイのメーカーや製品などによって異なりますが、同様の手順で確認が可能です。

plistファイルの作成

続いてplistと呼ばれるファイルを作成します。(おそらくPropetyListでplistと推測します。)13インチMacBook Proに疑似解像度1920x1200を設定したときに書き換えたファイルもこのplistファイルです。

/System/Library/Displays/Contents/Resources/OverridesディレクトリのDisplayVenderID-XXXX(XXXXは実際のDisplayVenderID)ディレクトリに、DisplayProductID-XXXX(XXXXは実際のDisplayProductID)というファイル名で格納されるそうです。(仕様書などで確認したわけではなく、設定変更手順などからこういうものだという推測ですが。)

13インチMacBook Proに疑似解像度1920x1200を設定した際にはすでに内蔵ディスプレイに対応するplistファイルがあり、このファイル内に解像度情報となる<data>要素を一つ追加したわけですが、今回、外部ディスプレイiiyama ProLite XB2783HSU-3Cに対応するplistファイル、つまりDisplayVenderID-26cd/DisplayProductID-6648というファイルはありませんでした。(DisplayVenderID-26cdディレクトリは存在していたのですが。)

Webの情報をいろいろと調べてみたところ、以下サイトでこのplistファイルが作成できるようでしたので、今回はこれを使用しました。

ページを開き、以下情報を入力していきます。

  • DisplayProductName
    • 「iiyama XB2783HSU-3C」としました。後述しますが、システム環境設定のディスプレイの項目で、ウィンドウのタイトルバーにはこの名称が入るようです
  • DisplayProductID
    • 先ほど確認した「6648」を入力します。これは16進数であり、画面上には10進数に表示された「26184」も表示されます
  • DisplayVenderID
    • 先ほど確認した「26cd」を入力します。こちらも16進数であり、画面上には10進数に表示された「9933」も表示されます
  • Scale Resolutions
    • ここで実際に設定したい解像度を記入します
    • 今回は以下2つを設定しました。HiDPIのチェックボックスは外しています
      • 2560 X 1440
      • 3840 X 2160

情報を入力したら右側xmlを確認しつつ(これが実際のplistファイルの中身となります)、右下のダウンロードボタンでファイルをダウンロードしておきます。DisplayProductID-XXXX.plist (XXXX実際のDisplayProductID)というファイル名でダウンロードができるかと思います。以降、~/Download/DisplayProductID-6648.plistがダウンロードしたファイル、という仮定で進めます。ダウンロードしたファイルの中身は、ページ右側で表示されていたXMLと同じですね。

DisplayProductID-6648.plist

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
  <key>DisplayProductName</key>
  <string>iiyama XB2783HSU-3C</string>
  <key>DisplayProductID</key>
  <integer>26184</integer>
  <key>DisplayVendorID</key>
  <integer>9933</integer>
  <key>scale-resolutions</key>
  <array>
    <data>AAAKAAAABaA=</data>
    <data>AAAPAAAACHA=</data>
  </array>
</dict>
</plist>

なお、余談ですがDisplayVenderIDとDisplayProductIDを確認したioreg -lw0コマンド、DisplayVenderIDもしくはDisplayProductIDでgrepを行うと、10進数での値が確認できます。(上記サイトのplistファイル作成では16進数を挟む必要がありますが、直接plistファイルの中身を編集する、なんてときには役に立つかもしれません。)

% ioreg -lw0 | grep DisplayProductID
    | |   | |         "DisplayProductID" = 41022
    | |   | |         "DisplayProductID" = 26184
 % ioreg -lw0 | grep DisplayVendorID
    | |   | |         "DisplayVendorID" = 1552
    | |   | |         "DisplayVendorID" = 9933

plistファイルのシステムフォルダへのコピー

以下、OSの設定ファイル(システムファイル)を書き換える作業となります。ディレクトリやファイルの構造などを破壊してしまったり、設定内容を誤ってしまった場合の動作はどうなるかわかりません。自己責任で編集してください。

plistファイルが準備できたら、これをシステムフォルダ/System/Library/Displays/Contents/Resources/Overrides配下にコピーします。先ほども確認した通り、コピー先はこのフォルダ(ディレクトリ)内のDisplayVenderID-XXXX/DisplayProductID-XXXX(XXXXはそれぞれ、実際のDisplayVenderID、DisplayProductID)となります。今回のiiyama ProLite XB2783HSU-3Cであれば、DisplayVenderID-26cd/DisplayProductID-6648となります。もし既にplistファイルがあればバックアップする、もしくは既存のplistファイルに<data>要素のみを追加する、などの方法を検討します。

最近のmacOSではシステムフォルダへの書き込みがSystem Integrity Protection (SIP)というセキュリティ機能で制限されています。ファイルコピーの最中、これを一時的に無効化します。(ファイルコピーなど、設定作業が終わったら忘れずに有効に戻しましょう。)

SIPの無効化はMacをリカバリーモードで起動して設定する必要があります。詳細は以下エントリを参照ください。

本エントリではポイントのみ示してきます。まず、現状のSIPの状態はリカバリモードではなく通常起動状態でターミナルから確認できます。csrutil statusで以下のようにenabledが代えれば有効な状態です。無効であればdisabledが返ります。

% csrutil status
System Integrity Protection status: enabled.

SIPが有効であれば、一時的に無効にする必要があります。Macをリカバリーモードで起動した状態でターミナルからcsrutil disableと入力してSIPを無効にしましょう。その後、再起動してMacを通常モードで起動します。なお、SIPを有効に戻すときには、同様にリカバリーモードで起動してターミナルからcsrutil enableを入力します。

さらに、macOS Catalinaでは/がread-onlyでmountされているため、SIPを無効化したあとmountコマンドで書き込み権限を付与する必要があります。(参考:Catalinaでシステムファイルを書き換える方法 | Thinking every day, every night

% mount
/dev/disk1s1 on / (apfs, local, read-only, journaled)
devfs on /dev (devfs, local, nobrowse)
/dev/disk1s2 on /System/Volumes/Data (apfs, local, journaled, nobrowse)
/dev/disk1s5 on /private/var/vm (apfs, local, journaled, nobrowse)
map auto_home on /System/Volumes/Data/home (autofs, automounted, nobrowse)

% sudo mount -uw /

% mount
/dev/disk1s1 on / (apfs, local, journaled)
devfs on /dev (devfs, local, nobrowse)
/dev/disk1s2 on /System/Volumes/Data (apfs, local, journaled, nobrowse)
/dev/disk1s5 on /private/var/vm (apfs, local, journaled, nobrowse)
map auto_home on /System/Volumes/Data/home (autofs, automounted, nobrowse)

以上でシステムフォルダへの書き込み準備ができました。実際に先ほどダウンロードしたplistファイルをコピーします。以下の想定です。

  • コピーもとファイル
    • ~/Download/DisplayProductID-6648.plist
  • コピー先
    • /System/Library/Displays/Contents/Resources/Overrides/DisplayVendorID-26cd/DisplayProductID-6648
    • 拡張子.plistは不要なのでコピーの際にリネームします

今回、/System/Library/Displays/Contents/Resources/Overridesディレクトリ直下のDisplayVendorID-26cdディレクトリ自体は存在していました。DisplayProductID-6648ファイルは存在していない、という状況です。

% ls -l /System/Library/Displays/Contents/Resources/Overrides | grep 26cd
drwxr-xr-x    3 root  wheel     96 12 14  2019 DisplayVendorID-26cd/

% ls -la /System/Library/Displays/Contents/Resources/Overrides/DisplayVendorID-26cd
total 8
drwxr-xr-x   3 root  wheel    96 12 14  2019 ./
drwxr-xr-x  33 root  wheel  1056 11  4  2020 ../
-rw-r--r--   1 root  wheel   256 12 14  2019 DisplayProductID-6641

ここに、DisplayProductID-6648.plistファイルをコピーします。

% sudo cp ~/Download/DisplayProductID-6648.plist /System/Library/Displays/Contents/Resources/Overrides/DisplayVendorID-26cd/

% ls -la /System/Library/Displays/Contents/Resources/Overrides/DisplayVendorID-26cd
total 16
drwxr-xr-x   4 root  wheel   128  6 24 13:06 ./
drwxr-xr-x  33 root  wheel  1056 11  4  2020 ../
-rw-r--r--   1 root  wheel   256 12 14  2019 DisplayProductID-6641
-rw-r--r--@  1 root  wheel   482  6 24 13:06 DisplayProductID-6648

コピーができたら、設定反映のため一度OSを再起動します。

目的の解像度の指定

plistファイルをコピーし再起動が完了したら、システム環境設定の「ディスプレイ」から解像度を変更してみます。参考までに、以下はplistファイルコピー前の状態です。ウィンドウのタイトルバー部分が「PLX2783H」となっています。(末尾の(1)は複数の外部ディスプレイを接続しているため。)解像度を変更しようとしても、1080p (1920x1080)が最大です。

plistファイルをコピーした後、システム環境設定の「ディスプレイ」を開いた状態が下記です。ウィンドウのタイトルバー部分が先ほど設定した「iiyama XB2783HSU-3C」になっていますね。

解像度をディスプレイのデフォルトから「変更」にしてみます。これまで最大だった1080p (1920x1080)より高い解像度の3840 x 2160 (4K)が選択可能になっています。

ですが、当初の目的だったWQHD (2560x1440)は選択できません。WQHDを選択するには、解像度を「変更」する(ラジオボタンを変える)際にキーボードのoptionキーを押しながらクリックする必要があります。optionキーを押しながらクリックすることで以下のように2560 x 1440 (WQHD)が選択可能になりました。

これで選択することで、Full HDの外部ディスプレイ上にWQHD解像度での表示が行われます。(繰り返しになりますが、当然、高解像度の情報が低解像度に縮小されて表示されるわけですので、フォントがつぶれるなどきちんと表示されるわけではありません。)

なお、回転設定により1440x2560という縦表示も可能でした。設定が完了したら、忘れずにSIPを有効化しておきましょう。(/を書き込み可能にするmountについては、再起動すればリセットされるはずです。)

まとめ

MacでFull HDの外部ディスプレイに、より高い解像度WQHD (2550x1440)ないし4K (3840x2160)を設定する方法をまとめてみました。外部ディスプレイのメーカーや製品ごと(VenderIDやProductIDごと)に設定が必要で、その設定もOSシステム領域を編集するリスクのあるものです。(繰り返しになりますが、もし実際に設定する場合は 必ず自己責任で 行ってください。)WQHDや4Kの情報を縮小してFull HDに表示しているわけなので、フォントやピクセルがにじんだり正しい表示にならない場合もあります。お勧めできる設定ではないのですが、WQHDや4Kのディスプレイがなく、Full HDディスプレイにこれらの情報を(これらの解像度で)表示したい、なんて場合に役に立つかもしれません。個人的な使用感としては、27インチのFull HDディスプレイにWQHDでの表示なら、フォントやピクセルのにじみなどはあるけれどなんとか使えるかな、という感触です。ここら辺は以前、HDなTVにFull HD表示させていたことが役に立っているのかもしれません(冒頭参照)。さすがに4Kだと表示が小さくなりすぎて実用度は低いと思います。それでも高い解像度のスクリーンショットが撮りたい、なんて場合に役に立つのかなぁ、と思っているしだいです。なお最新のmacOS Big Surではまたしてもシステムファイルまわりの扱いが変わっているなんて噂も聞きました(これまでの設定変更、SIP無効化やmount変更では書き込みができないとか)。今回plistファイルを作成するのに活躍した「Scaled Resolutions for your MacBooks external monitor」のサイトでも、Big Surでは動作しない可能性がある旨記載があります。さーどうなることやら。