サイトアイコン Boot macOS

9900Kのsleep問題〜原因はiGPUのデバイスID

更新:ここで紹介した対策は10.14.4で不要になりました。以下は10.14.3以前の情報です。不要になった理由は、9900K CPUがmacOSでサポートされるようになったからだと思われます。10.14.4以降では、以下で説明しているデバイスIDも9900Kの本来の値で問題ありません。本来の値はWhateverGreen.kextが自動で設定してくれますので、config.plistにデバイスIDを書く必要がありません。


ASUSのZ390マザーボードで作ったHackintoshのその後の報告です。sleep/shutdownが全て完璧に動くようになりました。最初の記事はこちらです。(今回の対策を追記してあります)

 久々に最新パーツで組んでみたところ、macOSがすんなり動きました。インテルの第9世代CoreプロセッサCoffee Lake-S Refresh搭載のZ390チップセットマザーボードです。スロット数で選んだマザーボード最新パーツでHackintoshを作る上で、マザーボードは選択肢が豊富なパーツです。市販の300シリーズチップセット搭載マザーボードのほとんどでHackintosh可能です。拡張スロット構成、SATA/USB/m.2コネクタ構成、追加機能、色とデザインなど考慮して、各人の目的や好みに合わせて自由に選んで良いです。だいたいどれでもちゃんと動...
9900K搭載Z390マザーボードでHackintoshを作る - Boot macOS

その後、シャットダウンが不完全な問題を解決すべく試行錯誤したところで、EmuVariableUefi-64.efiを使うことで解決しました。

ASUSのZ390マザーボードで作ったHackintoshのその後の報告です。シャットダウンが不完全な問題を解決すべく試行錯誤したところで、EmuVariableUefi-64.efiを使うことで解決しました。あまりにも呆気ない結末なのですが、EmuVariableUefi-64.efiがshutdownに関係するのは知りませんでしたし、もしかして困っている人がいるかもしれないので紹介します。シャットダウンの症状症状が出たマザーボードは、Z390チップセット搭載マザーボードのASUS ROG MAXIMUS XI HERO です。macOSのメニューバーから「システム終了...」を選んでシャットダ...
ASUS Z390マザーボードのshutdown/sleep対応 - Boot macOS

sleepがまだ不完全

一時はこれで解決したかに見えたのですが、sleepからの復帰がおかしいです。iGPUを使うと、sleepで画面が消えた後、キーボード押下で画面が復帰します。ただし、画面が消えるだけで、CPUファンは回転し続けています。一方、グラフィックスカード(dGPU)を使うと、sleepで画面が消えた後、しばらくはキーボード押下で画面復帰するのですが、15秒くらい経つと画面が復帰しなくなります。さらに放置するとCPUファンの回転も中止しますが、やはり復帰しません。また、この状態ですとJPEGファイルのクイックルックも効かないようです。

という状態で、しばらく頓挫していたのですが、ようやく解決したので報告します。たまたま hackintosher.comで紹介されていたconfig.plistを使ってみたらsleepが機能するようになったので、それと、問題を引き起こしているconfig.plistとの比較からの結論です。

UHD Graphics 630のデバイスID

Intel UHD グラフィックス630は、MacBook Pro 2018やMac mini 2018で使用されています。なのでmacOSの標準ドライバーでサポートされています。でも、UHD 630のデバイスIDはCPUごとに微妙に違います。例えばMacBook Pro 2018で使用される8050HのUHD 630のデバイスIDは0x3E9Bです。Mac mini 2018で使用される8700BのUHD 630デバイスIDも同じく0x3E9Bです。ところが今回使用している9900KのUHD 630のデバイスIDは微妙に違っていて0x3E98なのです。このデバイスIDの不一致が、sleep問題の原因のようでした。

i3-8100でも対応必要

Intel UHDグラフィックス630のデバイスIDの違いは、他のCPUでも問題を引き起こすようです。こちらの記事

Corpnewtさんのhackintoshデスクトップのためのバニラガイドから、今回は「Coffee Lakeマシンのためのconfig.plistの作り方」のページをご紹介します。ちなみにこのガイドでは、 Haswell Skylake Kaby Lake Coffee Lakeのconfig.plistの作り方が解説してあります。他のCPUを使う場合はそれを見てください。Config.plistの基礎編もご覧ください。世代の近いCPUではそれぞれかなりの部分が共通です。Coffee Lakeは実際のMacでの搭載実績がないため、iGPUを使う部分が少し複雑になっています。iGPUを使わなければほぼKaby Lake以前と...
corpnewtさんのバニラガイド~Coffee Lake用config.plist - Boot macOS

で紹介しましたが、Core i3-8100のUHD 630もデバイスIDが異なっていて(0x3E92および0x3E91)、対応が必要だそうです。結果として今回も同じ問題のようです。

9900KのデバイスID対応

上記の記事では、8700K搭載UHD 630のデバイスIDの指定方法が書いてあります。この方法に従うと、デバイスIDを逆順に(little endian方式に)並べた数値に、0x0000を付け加えた値をconfig.plistで指定すれば良いようです。

ただ、上記のサイトでは、「実際のデバイスIDをconfig.plistに書く」とありますが、今回の解決策は、「Macで使われているデバイスIDをconfig.plistに書く」という方法でした。逆のようです。9900KのデバイスIDは先に述べたように0x3E98ですが、これをconfig.plistに書くのではなく、Macで使われているiGPUのデバイスIDである0x3E9Bをconfig.plsitで指定するようです。そこで、まずは0x3E9Bの順番を入れ替え、ゼロを追加します。つまり、0x9B3E0000を指定すれば良いことになります。config.plistではBase64で記述するので、変換します。ターミナルコマンドbase64で0x9B3E0000をBase64変換するには以下のようにタイプします。

echo -ne "\x9B\x3e\x00\x00" | base64

この結果

mz4AAA==

が得られます。この値を、<key>Devices</key>の中の<key>Properties</key>にdevice-idキーとして追加します。

<key>Properties</key>
        <dict>
            <key>PciRoot(0x0)/Pci(0x2,0x0)</key>
            <dict>
                <key>AAPL,ig-platform-id</key>
                <data>
                    AwCSPg==
                </data>
                <key>device-id</key>
                <data>
                    mz4AAA==
                </data>
                <key>framebuffer-patch-enable</key>
                <data>
                    AQAAAA==
                </data>
            </dict>
        </dict>

この結果、sleepが完璧に動くようになりました。つまり、sleepになるよう設定した時間になると、画面が消え、数秒してCPUファンが停止します。その後、キーボード押下などにより、元どおりの画面に復帰します。

今回のconfig.plistの全体を以下に置いておきます。シリアル番号などは伏せ字になっています。

Pastebin.com is the number one paste tool since 2002. Pastebin is a website where you can store text online for a set period of time.
config.plist for 9900K w/o iGPU display - Pastebin.com - Pastebin

モバイルバージョンを終了