После обновления с High Sierra до Mojave у меня пропал сигнал на разъеме DisplayPort, пришлось подключать монитор по DVI. Проблему решил с помощью патча AppleGraphicsDevicePolicy, о существовании которого узнал сегодня.

Проблема редкая, информации мало. Дело, вероятно, в особенностях материнской платы GIGABYTE GA-H270M-DS3H — в ней куча разъемов (vga, hdmi, display port, dvi) и она не слишком распространена в хакинтошестроении. Плюс монитор у меня без HDMI, но с DisplayPort и DVI, ну и нелюбовь к DVI на уровне идиосинкразии.

Если особо не умничать, то решение нашлось методом тыка — кто-то где-то упоминал, но ему не помогло, проблема была в чем-то другом, но я всё равно решил попробовать.

Что делал безрезультатно

После установки Lilu и WhateverGreen я побаловался с подбором ig-platform-id, настройкой коннекторов, делал и просматривал логи, пытался думать — бестолку. Всё просто, с ig-platform-id = 0x59120000 безо всяких дополнительных настроек работает отлично, но только по DVI. Вернее, только не по DisplayPort, поскольку VGA и  HDMI я не проверял.

Замена SMBIOS с iMac 16.2 на iMac 18.1 ощутимых изменений не принесла. Я вообще разницы не заметил, приминительно к графике точно.

Загрузка с подключенным или отключенным DVI — без разницы. После Clover и яблока имеем черный экран на DisplayPort, затем можно втыкать DVI и/или переключать монитор на вход DVI и наблюдать картинку с логином.

Писал, спрашивал на форумах, искал помощи. Из советов — купить уже видеокарту, успокоиться и жить с DVI, в основном в таком духе. Про AppleGraphicsDevicePolicy никто не упоминал.

Патч AppleGraphicsDevicePolicy

После патча

Я уже раз 6 перезагрузился в различных комбинациях. Если подключены оба кабеля, то работает только DVI. Если загрузиться с DP и пдключить DVI на горячую, монитор извещает о неоптимальном разрешении и ничего не показывает. Короче, должен остаться только один, что меня вполне устраивает.

NB: В известных проблемах/недостатках WhateverGreen для графики Intel значится отсутствие поддержки 2 и более мониторов.

При подключении по DVI монитор цепляется к коннектору с индексом 2 (bus id 0x04), DP это коннектор 3 (0x06) — это на случай склероза.

Intel HD Graphics 630 DisplayPort

Сам патч выглядит так — одна буква, Карл!

<key>Comment</key>
<string>Prevent AGDP from loading</string>
<key>Disabled</key>
<false/>
<key>Find</key>
<data>
ugUAAAA=
</data>
<key>InfoPlistPatch</key>
<false/>
<key>MatchOS</key>
<string>10.11.x,10.12.x,10.13.x,10.14.x</string>
<key>Name</key>
<string>com.apple.driver.AppleGraphicsDevicePolicy</string>
<key>Replace</key>
<data>
ugAAAAA=
</data>

Если через GUI Clover Configurator делать, то надо в KextsToPatch добавить строку Name: «com.apple.driver.AppleGraphicsDevicePolicy» Find: «BA050000 00» Replace: «BA000000 00» Comment: «Prevent AGDP from loading» и MatchOS: «10.11.x,10.12.x,10.13.x,10.14.x», без кавычек, конечно.

Что конкретно он делает — без понятия. Расширение по-прежнему загружается, но что-то в нём изменяется, очевидно. Любопытно, что в High Sierra этого не требовалось, хотя разнообразные проблемы с AGDP у людей давние, в основном касаются дискретной графики.

В логах ничего интересного не нашел, ни до, ни после:

$ grep -r AppleGraphicsDevicePolicy /var/log
/var/log/Lilu_1.2.7_18.0-2.txt:Lilu: patcher @ (DBG) last kext is FFFFFF7F86D52000 and its name is com.apple.driver.AppleGraphicsDevicePolicy
/var/log/install.log:Sep 25 09:05:18 iMac OSInstaller[559]: kextcache: AppleGraphicsDevicePolicy.kext is not demanded by OSBundleRequired conditions.

Вникать и разбираться желания нет, предпочту пожать плечами, смотать DVI кабель и жить дальше.

UPDATE

При наличии WhateverGreen.kext, тот же самый патч можно сделать с помощью аргумента: config.plist / boot / arguments / agdpmod=vit9696