使用hackintool解决核显HDMI黑屏详细指导
本帖最后由 dayudodo 于 2019-6-26 10:47 编辑hackintool以前叫Intel FB-Patcher,名称上其实就可以看出来,这玩意儿可以解决intel核显一些问题。
这篇指导比较适合新的CPU、主板,显示器。而老的显示器,或者没有DP1.2+、HDMI1.4+的显示器可能会遇到很多问题。
如果你有一块带有HDMI端口的主板,想在单显示器上驱动核显并正常显示,请继续观赏,双屏其实可以,至少本人的asrock z390pro4+i5 9600K是OK的,不过还是建议你使用amd独显来带动双屏。
原理很多的主板ASRock, ASUS, EVGA, Gigabyte, MSI等等,其主板的输出口有各种各样的组合。有的有一个HDMI, DP,有的会有两个HDMI,还有的可能就是DVI,VGA。就10.14和Coffee Lake的CPU来说,VGA也是OK的。(依稀记得有哪个版本不支持VGA)
当MacOS初始化核显驱动的时候(AppleIntelFramebuffer),它并不知道主板上指定的端口,不知道哪个是HDMI,哪个是DVI或其它,对于你选择的 Platform ID,系统会做出预设处理。比如你的platform id为0x3E9B0007,所有的输出端口都会被看作是DisplayPort(VGA也被看成DP),所以如果你连接的是DP,那么一切Ok,但是如果你连接了HDMI,可能就会黑屏。因为在MacOS看来,这些应该是DP接口。
幸运的是可以改变这些端口映射,每一个物理视频端口都会有一个端口号。这些端口号是5,6,7,但在不同的主板上连接到的物理端口号是不一样的。MacOS允许核显最大外部端口数量为3。
在一些主板上端口5可能绑在HDMI上,其它的可能绑定在DP、DVI或者VGA上面。同样的,6,7在不同主板上也会绑定在不同的物理端口上。为了解决HDMI或DVI的黑屏问题,首先要搞清楚HDMI绑定在主板上的哪个端口上(如果有的话),哪个又绑定在DVI,哪个绑定在VGA、DP上面。
确定了主板的端口映射之后,就可以给MacOS提供一个缓冲帧(framebuffer)表。因为MacOS最大支持3个端口号,我们就可以定义3个软接口, 这样任何软接口都可以映射到物理端口号了。
[*]这三个软接口定义为con0, con1, con2
[*]三个物理端口5,6,7可以使用软接口索引1,2,3
[*]软索引1总是指向物理端口5
[*]软索引2总是指向物理端口6
[*]软索引3总是指向物理端口7
[*]HDMI、DVI看作相同,在hacintool里面可以都设置成HDMI
[*]DP、VGA看作相同,可以都设置成DP
比如,
[*]物理端口6是HDMI,就设置索引2为HDMI
[*]如果5是DVI,就设置索引1为HDMI(在MacOS看来,HDMI和DVI是一样的)
[*]如果7是DP,就设置索引3为DP
[*]如果7是VGA,就设置索引3为DP(在MacOS看来,DP与VGA相同)
光有端口类型还不行,还得有一个总线ID(BusID),每一个软接口都必须有唯一总线ID,但只有指定的值才被允许:
[*]DP最有弹性,总线ID 0x02, 0x04, 0x05, 0x06都可以,这些值在所有主板上应该都OK,同样适用于VGA
[*]HDMI最严格,只有BusIDs 0x01, 0x02, 0x04, 0x06被允许使用,一些主板上可能只接受1、2种。象Gigabyte Designare Z390,只接受0x04
[*]DVI同HDMI, 相同的总线ID甚至会有相同的类型被使用。
OK,基本知识您大概了解,吸口气,咱们继续。
首先要确定物理端口号是什么类型。完成之后剩下的就简单了,咱们要解决三个问题:
[*]端口5(索引1)是什么类型?
[*]端口6(索引2)是什么类型?
[*]端口7(索引3)是什么类型?
任务开始1. 下载hackintool, https://www.tonymacx86.com/threads/release-hackintool-v1-7-7.254559/
2. 必须安装Lilu和whateverGreen
3. 计算机要用正确的Device ID和Platform ID启动,会用Clover就简单了,有两种方法,一是使用Clover configuration:
[*]Devices --> Fake ID --> IntelGFX --> 输入正确的 Device ID (比如 0x3E9B8086).
[*]Graphics --> Inject Intel --> 设置为 ON.
[*]Graphics --> ig-platform-id --> 输入正确的 ID (比如 0x3E9B0007).
或者二,在Clover的Devices里面添加如下代码:
<key>Properties</key><dict> <key>PciRoot(0x0)/Pci(0x2,0x0)</key> <dict> <key>AAPL,ig-platform-id</key> <data>BwCbPg==</data> <key>device-id</key> <data>mz4AAA==</data> <key>framebuffer-patch-enable</key> <data>AQAAAA==</data> </dict></dict>4. 对于大多数的Coffee Lake处理器来说,Device ID: 0x3E98以及ig-platform-id: 0x3E9B0007是可以使用的,其它的处理器类型可以参考下面的值:
Gen 2: Sandy Bridge (Intel HD Graphics 2000/3000)
- S/L/E/AppleIntelSNBGraphicsFB.kext
- Support started with OS X 10.7.x and ended with macOS 10.13.6
- Metal support is not available
- device-id: 0x0102 0x0106 0x010A 0x0112 0x0116 0x0122 0x0126
- AAPL,snb-platform-id (desktop): 0x00030010 (default)
- AAPL,snb-platform-id (laptop): 0x00010000 (default)
Gen 3: Ivy Bridge (Intel HD Graphics 2500/4000)
- S/L/E/AppleIntelFramebufferCapri.kext
- Support started with OS X 10.8.x
- device-id: 0x0152 0x0156 0x0162 0x0166
- AAPL,ig-platform-id (desktop): 0x0166000A (default), 0x01620005
- AAPL,ig-platform-id (laptop): 0x01660003 (default), 0x01660009, 0x01660004
Gen 4: Haswell (Intel HD Graphics 4200-5200)
- S/L/E/AppleIntelFramebufferAzul.kext
- Support started with OS X 10.9.x
- device-id: 0x0D26 0x0A26 0x0A2E 0x0D22 0x0412
- AAPL,ig-platform-id (desktop): 0x0D220003 (default)
- AAPL,ig-platform-id (laptop): 0x0A160000 (default), 0x0A260005 (recommended)
Gen 5: Broadwell (Intel HD Graphics 5300-6300)
- S/L/E/AppleIntelBDWGraphicsFramebuffer.kext
- Support started with OS X 10.10.2
- device-id: 0x0BD1 0x0BD2 0x0BD3 0x1606 0x160E 0x1616 0x161E 0x1626 0x1622 0x1612 0x162B
- AAPL,ig-platform-id (desktop): 0x16220007 (default)
- AAPL,ig-platform-id (laptop): 0x16260006 (default)
Gen 6: Skylake (Intel HD Graphics 510-580)
- S/L/E/AppleIntelSKLGraphicsFramebuffer.kext
- Support started with OS X 10.11.4
- device-id: 0x1916 0x191E 0x1926 0x1927 0x1912 0x1932 0x1902 0x1917 0x193B 0x191B
- AAPL,ig-platform-id (desktop): 0x19120000 (default)
- AAPL,ig-platform-id (laptop): 0x19160000 (default)
Gen 7: Kaby Lake (Intel HD Graphics 610-650)
- S/L/E/AppleIntelKBLGraphicsFramebuffer.kext
- Support started with macOS 10.12.6
- device-id: 0x5912 0x5916 0x591B 0x591C 0x591E 0x5926 0x5927 0x5923 0x87C0
- AAPL,ig-platform-id (desktop): 0x59160000 (default)
- AAPL,ig-platform-id (laptop): 0x591B0000 (default)
Gen 8: Coffee Lake (Intel UHD Graphics 630)
- S/L/E/AppleIntelCFLGraphicsFramebuffer.kext
- Support started with macOS 10.13.6 (17G2112) / 10.14 beta 4 (18A336e)
- device-id: 0x3E9B 0x3EA5 0x3EA6 0x3E92 0x3E91 0x3E98
- AAPL,ig-platform-id (desktop): 0x3EA50000 (default), 0x3E9B0007 (recommended)
- AAPL,ig-platform-id (laptop): 0x3EA50009 (default)
这些值可以让核显正确的驱动,注意上面不同的kext, 不同的的CPU用的并非相同。如果核显没有驱动,用的只是缺省的驱动(看着可能是扁的,或者你刚安装时候用的Device ID, platform-id都是0x12345678),那这篇指导就没啥用。而你的hackintool看起来可能就是这样,右边有个图标会显示headless, 并且索引都会为-1。
https://bbs.pcbeta.com/data/attachment/forum/201906/26/090621jd9kwv9uzv4666vd.png
5. 问题在于,正确驱动之后HDMI、DVI是黑屏的,这时候你就要连接其它的能够正常显示的视频端口(比如DP或者DVI,我个人的情况是连接两个显示器,一个接HDMI, 另一个接DVI,单独接哪一个都会黑屏,后来才知道是MacOS在显示的时候把应该输出到DVI的内容给弄到HDMI端口去了,所以有时候两个显示器可以发现问题!),或者使用一个独显,把显示器接到独立显卡的正常输出口。
6. 打开hackintool, 如果能够看到如下信息,说明准备工作已经完成。
https://bbs.pcbeta.com/data/attachment/forum/201906/26/090610ulq1lggsgdlolklm.png
7. 列出你主板的所有视频端口(比如 HDMI, DP, DVI-D, VGA)
8. 在这个过程中你需要测试每一个视频端口,所以你必须要有每一种端口的连接线和显示器,没有其实也行,那你就得猜猜猜。
9. 这时你的计算机已经正常驱动核显,所有上面做的工作其实就是为了让驱动被激活,现在你得清除一些clover.plist中的一些设置,但是不要重启电脑
Devices --> Fake ID --> IntelGFX --> 清空
Graphics --> Inject Intel --> 清除勾选,
Graphics --> ig-platform-id --> 清空
不需要这些项是因为下面我们通过注入设备properties来驱动,并会添加其它补丁。
10. 保存clover configuraiton, 或者如我直接编辑config.plist代码,保存后退出。
来吧,hackintool
1. 勾选缓存帧/MacOS10.14
https://bbs.pcbeta.com/data/attachment/forum/201906/26/090608lmo6w54iw754c5do.png
2. 勾选应用补丁/应用当前补丁
https://bbs.pcbeta.com/data/attachment/forum/201906/26/090557q3jbfji0jhuut8md.png
注:勾选此项并没有马上给系统打补丁,但是当我们完成所有的工作并重启后,这些设置就会取代缺省的缓冲帧(framebuff)设置了,所以如果你没有勾选这项,你所作的一切都不会影响系统。如果你选择了菜单中的其它选项,比如AzulPatcher4600, 会改变应用补丁中的显示(选择应用补丁/接口就能看到变化):
https://bbs.pcbeta.com/data/attachment/forum/201906/26/090603i62rvrvu7yvvuzcv.png
新版本的hackintool还提供了台式机核显补丁集,如果你的主板正好是里面的一种,那么直接选择即可,类似的主板也可以试下,至少我是直接用asrock z390m-iTX的补丁就解决了(我的主板是asrock z390 pro4)黑屏的问题。
https://bbs.pcbeta.com/data/attachment/forum/201906/26/090632t8nvxibui5dmiv9m.png
3. 在应用补丁/接口的平台ID里面选择一个正确的ID号,比如我的是0x3E9B0007,错误的话所有索引都会是-1(上面有错误的索引-1图)
4. 这接口里面显示的就是端口映射表了,我们可以修改索引、总线ID、通道、类型、标识符,但:里面的值大多是错误的!
注:(我叫错误的图)
https://bbs.pcbeta.com/data/attachment/forum/201906/26/090550w3nt3ocidmeo2xdd.png
5. 这时你的接口信息里面就会有一个红色项,如果你象我一样测试了双显示,那么就会有两条红色。
https://bbs.pcbeta.com/data/attachment/forum/201906/26/090606g78b1qjqb8q0q6qb.png
现在我们需要确定其端口号,点击红条,下面的显示信息就会有接口值了,看上面那个错误的图,位置索引2,其接口为0x06, 并且类型为DP!这样咱们就有一个结果了:
[*]端口6(索引2)是DP,总线ID为0x04
继续奋斗
1. 保持你的主显示器在连接状态。
2. 其它的主板视频端口再连一个显示器。,比如你还有一个DVI口,就再找一个支持DVI的显示器,有可能亮了,而HDMI的灭了。注意,不要使用视频端口转换器,要用正常的连接线,比如HDMI-to-HDMI, DP-to-DP, DVI-to-DVI等等。
3. 看看有没有新的红色条出现,如果有,象上面 一样确定其索引、接口值是多少,比如,你得到了
端口5(索引1)是DP,其总线ID为0x05
(其它参考办法:有其它黑苹果,也可以先安装一个远程桌面软件,貌似叫teamviewer吧,连接到黑屏PC上观察下,可能也会有发现。)
4. 因为主板上只有三个视频接口,而且你知道的是HDMI并不工作,那个没有出现的肯定就是HDMI或DVI了,结论:
[*]端口6(索引2)是DP
[*]端口5(索引1)是DP
[*]端口7(索引3)一定是HDMI
5. 所有的三行其类型都是DP,这个例子中索引3才是HDMI
6. 现在把第三项设置为HDMI,其总线ID设置为0x04, 为什么用0x04呢?可能会有其它的值,但是咱们需要一个值去测试,现在索引2处值是0x04,所以需要交换一下,设置成0x06。如图:
https://bbs.pcbeta.com/data/attachment/forum/201906/26/090623c43t21tti93tv1tt.png
7. 终于可以打补丁了,选择通用,如下图中选择应用补丁,勾选(低版本的会没有图形卡选项,貌似并不影响)
https://bbs.pcbeta.com/data/attachment/forum/201906/26/090555rjafgsbzagesejsb.png
点高级,勾选如图,在仿冒图形卡ID中选择一个型号(我自己的是i5 9600K, 所以选择了0x3E9B, 你应该选择适合你的仿冒图形卡ID)
https://bbs.pcbeta.com/data/attachment/forum/201906/26/090552jhq24p21b4135i3p.png
8. hacintool在你勾选的时候可能会重置应用补丁中的接口,所以勾选之后,再回到接口中检查一下,可能你需要重新修改下总线ID,完成后,点击生成补丁,在补丁输出应该会有一些内容出现,注意:如果你没有在通用中勾选图形卡,可能会生成错误的内容,看代码,里面应该有hda-gfx,model这类的文字
https://bbs.pcbeta.com/data/attachment/forum/201906/26/090549i7vrc4tuctarfv6c.png
9. 现在可以把代码注入到clover.plist之中了。
10. 选择文件/导出/引导工具Config.plist
https://bbs.pcbeta.com/data/attachment/forum/201906/26/090551b13ac93crxbqvr85.png
11. 之后会提示你装载EFI分区(已经装载你就选择EFI),然后选择config所在目录,选择覆盖,放心,只是把补丁放进去,不会破坏文件的其它内容!并且hacintool还会自动为config.plist做一个备份,为确保补丁已经注入config.plist,可以用文本软件打开config.plist搜索一下上面生成的某段文字,比如Graphics 630
12. 重启看一下补丁有没有效果。
13.如果HDMI显示器正常了,那么恭喜你,如果没有,兄弟,继续折腾吧。
14. 在HDMI处试下其它的总线ID,再次运行hacintosh, 检查一下缓冲帧中的mac10.14是否选中,应用补丁中的应用当前补丁是否选中。重复5-13,然后看看下图,测试下这些值的组合。但请注意,总线ID是唯一的,不要设置成相同。
https://bbs.pcbeta.com/data/attachment/forum/201906/26/090600qo5xp2uwruoxubo7.jpg
15. 如果你的端口数量少于2,比如第一项索引是-1, 第二项有索引,但是总线ID为0x00, 根据用户的反馈, 你最好先测试第二项。再比如,你有一个单独的HDMI在端口7(索引3),那么你应该试下这样:
索引 3: 总线ID 0x04, 类型 HDMI
索引 1: 总线ID 0x00, 类型 未知
索引 2: 总线ID 0x00, 类型 未知
索引 -1: 总线ID 0x00, 类型 未知
索引 1: 总线ID 0x00, 类型 未知
索引 3: 总线ID 0x04, 类型 HDMI
索引 2: 总线ID 0x00, 类型 未知
索引 -1: 总线ID 0x00, 类型 未知
索引 1: 总线ID 0x00, 类型 未知
索引 2: 总线ID 0x00, 类型 未知
索引 3: 总线ID 0x04, 类型 HDMI
索引 -1: 总线ID 0x00, 类型 未知
(我的理解是三个位置都试一下)
16. 为了降低一些图形故障和启动错误、失败,建议你打开disablegfxfirmware。
https://bbs.pcbeta.com/data/attachment/forum/201906/26/090605ndqid1f25vuk1dr3.png
总结
如上所述其实是比较理想的情况,象我本人就遇到了插入VGA的时候并没有任何显示的情况(本人asrock z390 pro4主板是HDMI、DVI、VGA三个端口)。
咱们来假定你确定了端口5(索引1)是DP的情况下,那你就可以在端口6(索引2)处设置正确的总线ID和类型,打好补丁后重启,如果不成,就在端口7(索引3)处设置正确的总线ID和类型。如果依然失败,你就得在端口6,7处测试不同的组合。
一旦成功点亮HDMI,就可以再次运行hacintool来检测接口值,你会发现其正确的接口值,比如,在上面错误的图中0x04的接口值是0x06, 现在正确的调整为0x07, 这其实是我的DVI接口。而端口6(索引2)处的总线ID为0x02, 这才是真正的HDMI输出口(可能的值范围还是比较宽的,需要不断的测试,我一开始就用了0x05,0x06,最后才看到了类似的asrock z390m中其值为0x02 ),为啥在刚驱动的时候HDMI黑屏呢?因为此处被DVI给覆盖掉了(自己的理解,不一定正确,请高手修正),这种补丁还有个好处就是一旦修补成功,是可以双屏显示的!不过可能得开关下显示器。
https://bbs.pcbeta.com/data/attachment/forum/201906/26/090553ekyww2qsqn2osqjs.png
呼,不容易,就到这儿吧。通道、标识符啥的感觉完全没用么。
本文严重依赖此博客https://www.tonymacx86.com/threads/guide-general-framebuffer-patching-guide-hdmi-black-screen-problem.269149/
加入了一些自己的理解及解决问题时出现的情况,不到之处请多指教。
用这个方法能解决B360m主板HDMI输出黑屏的问题吗? benbule 发表于 2019-6-26 18:13 https://www.pcbeta.com/static/image/common/back.gif
用这个方法能解决B360m主板HDMI输出黑屏的问题吗?
这要看你主板的牌子,不同的主板其视频输出口是不一样的,如果你有hackintool, 可以在应用补丁/台式机核显补丁集中找找看有没有自己主板类型的牌子,一般来说类似的主板其输出口也是类似的。 笔记本可以吗。我现在hdmi热插拔都可以 就是用hackintool 看的时候不显示 hdmi。显示是dp 感谢楼主分享,收藏学习。 这么好的帖子竟然没人回复 虽然我没成功 y04551b 发表于 2019-6-29 18:42 https://www.pcbeta.com/static/image/common/back.gif
笔记本可以吗。我现在hdmi热插拔都可以 就是用hackintool 看的时候不显示 hdmi。显示是dp
多尝试吧,索引2换换位置看看,类型改为hdmi, 看我文章最后的解释 用这个办法可以解决hd3000的hdmi 4k输出吗?我以前都可以4k输出的,自从升级High Serria后就不能4k输出了 保存一下明天测试 楼主你好,求助,i5-8400 核显在10.15.3下 设置deviceId:0x3E9B,platform-id:0x 0x3E9B0007后启动,使用HDMI线无法启动,到一半会无信号,请问如何解决?kext含有WhateverGreen,Lilu 楼主你好,请教一下 i5-8400 设置deviceId:0x3E9B和platform-id: 0x3E9B0007 使用HDMI无法进入系统要怎么操作?0x12345678可以,可显存只显示7MB
华硕B360M-Gaming-plus
10.15.3 先回帖,对我很有用!收藏! 我学习一下,收藏,刚好要用。 有谁能提供下v2.8中文软件吗 albert12336 发表于 2019-12-18 12:54 https://www.pcbeta.com/static/image/common/back.gif
用这个办法可以解决hd3000的hdmi 4k输出吗?我以前都可以4k输出的,自从升级High Serria后就不能4k输出了
这个是用来解决输出端口的问题,分辨率不太清楚,也许可以一并解决,记得有个修改分辨率的软件,你可以搜索试试。 k0943 发表于 2020-2-22 21:31 https://www.pcbeta.com/static/image/common/back.gif
楼主你好,请教一下 i5-8400 设置deviceId:0x3E9B和platform-id: 0x3E9B0007 使用HDMI无法进入系统要怎么操 ...
看帖子,多修改、尝试,这个没有什么特别方便的办法,黑苹果嘛,玩的就是折腾 学习了!谢谢! 看上去很珧划的贴子,为什么回复这么少。
试了下我的台式机,DP跟HDMI都正常输出
但是启动的时候,用DP的话进登录界面前会黑一下,就是白苹果下面滚动条看不到最后一部份,HDMI却能看到,小奇怪。 inigloo 发表于 2020-4-2 16:52 https://www.pcbeta.com/static/image/common/back.gif
看上去很珧划的贴子,为什么回复这么少。
试了下我的台式机,DP跟HDMI都正常输出
但是启动的时候,用DP的 ...
黑苹果有千奇百怪的现象,能正常用就好 有个问题就是,我插入Hdmi时候,整个屏幕都卡死,然后我只能重启解决了