很多小伙伴问我核显怎么驱动,为什么我驱动了HD4600却只有7m缓存,我开机花屏难受等等。。。
说实话,我很幸运用到的EFI直接就驱动了HD4600,所以一直对核显驱动就没怎么上心,直到某天受到群友蓝幽鞭策,才开始查阅相关资料,终于弄懂了前因后果。
文章虽然看起来长,步骤思路很简单:
清理以前的驱动→获取 IGPU 的设备路径→填入ig-platform-id→填入device-id
不要被本文的长度吓到了,举个例子:驱动完HD4600也就这点东西:
或者可以查看精简版本
务必阅读
缩写解释
缩写 | 解释 |
---|---|
FB | Framebuffer(缓冲帧) |
WEG | Lilu.kext和WhateverGreen.kext |
软件界面
出现这种界面,则是使用Xcode打开的Plist文件,若你觉得Xcode太大不想安装,也可以选择PlistEdit Pro
下载相关
名称 | 地址 |
---|---|
Clover Configurator | 点击下载 |
PlistEdit Pro | 点击下载 |
WhateverGreen | 点击下载 |
Lilu | 点击下载 |
gfxutil | 点击下载 |
Clover目录
所有的clover目录都是指/EFI/EFI/CLOVER
DATA数据填入
由于Clover的特性,所有的DATA类型数据都必须两两一组倒序填入,例如:0x0A160000
转换之后就是0000160A
,如下图:
为什么要使用Lilu + WhateverGreen
随着macOS Mojave
的发行,之前的通过Clover
▸ KextsToPatch
通过修补帧缓冲的方法已经失效了,尤其是 SkyLake
及以后架构。您现在必须使用 Lilu
+ WhateverGreen
+FB Patcher
的方式来驱动您的显卡。
WhateverGreen将取代Lilu的所有其他视频补丁插件,它目前已经合并了WhateverGreen,IntelGraphicsFixup,NvidiaGraphicsFixup,Shiki和CoreDisplayFixup
启用核显的通常步骤
- 修正有关设备的 ACPI 名称(核显自身名为 IGPU,英特尔® 管理引擎(英文缩写: IMEI)名为 IMEI)。
- 如若必要,将 核显 / IMEI 的 设备 ID 仿冒为合适的型号。
- 指定正确的缓冲帧。(英文: Framebuffer, 下文简称 缓冲帧 为 FB)(即 AAPL,ig-platform-id(适用于 Ivy Bridge 或更新微架构)或 AAPL,snb-platform-id(仅适用于 Sandy Bridge 微架构)) 一组正确的 FB 应当正确地包含了可用的输出端口以及该核显的其他属性。
- 某些与核显相关的其他设备中已包含相关属性。
其中,第 1 步和第 4 步由 WhateverGreen 自动完成。其可运行在 macOS 10.8 及更高版本,这大大简化了正确启用核显的步骤。
准备工作
- 在 BIOS 中设置核显所需的内存量(即 预分配 DVMT,英文: DVMT Pre-Allocated)为 32 MB, 64 MB, 96 MB 等,与使用的 FB 值相关。如要使用最大值(英文: DVMT Total),请设为 MAX。
- 移除以下驱动(如果曾经使用)
- AzulPatcher4600
- AppleBacklightFixup
- CoreDisplayFixup
- FakePCIID_Intel_HD_Graphics
- FakePCIID_Intel_HDMI_Audio
- FakePCIID.kext(不使用其他基于 FakePCIID 的插件时)
- IntelGraphicsFixup
- IntelGraphicsDVMTFixup
- NvidiaGraphicsFixup
- Shiki
这些驱动文件通常位于Clover的
kexts/Other
文件夹中 - 关闭所有Clover中的显卡注入
- config.plist ▸ Graphics ▸ Inject ▸ ATI = NO
- config.plist ▸ Graphics ▸ Inject ▸ Intel = NO
- config.plist ▸ Graphics ▸ Inject ▸ NVidia = NO
- config.plist ▸ Graphics ▸ ig-platform-id =
清空
- config.plist ▸ Devices ▸ FakeID ▸ IntelGFX =
清空
如果你还不确定还可以打开plist文件查看是否显示为NO
- 禁用Clover中Apci的以下DSDT补丁
- AddHDMI
- FixDisplay
- FixIntelGfx
- AddIMEI
- FixHDA
- 关闭Clover中Devices的
UseIntelHDMI
- 删除引导参数:
-disablegfxfirmware
- 删除以下位置所有的和IGPU、HDMI相关条目(一般来说清空就行了):
- config.plist ▸ Devices ▸ Arbitrary
- config.plist ▸ Devices ▸ Properties
- config.plist ▸ Devices ▸ AddProperties
- 删除或禁用以下 ACPI 重命名补丁:
GFX0 to IGPU
,PEGP to GFX0
,HECI to IMEI
,MEI to IMEI
,HDAS to HDEF
,B0D3 to HDAU
若以上都做完了,恭喜你完成了清理工作。
添加Lilu + WhateverGreen驱动
下载Lilu 和 WhateverGreen驱动,选择release版本,解压并将.kext文件置于Clover的kexts/Other
文件夹中
若你想要查看调试输出信息,请选择两者的的debug版本
获取IGPU的设备路径
下载并使用gfxutil工具,将gfxutil文件解压至桌面,打开终端输入如下代码:
1 2 3 |
$ cd Desktop $ ./gfxutil -f IGPU DevicePath = PciRoot(0x0)/Pci(0x2,0x0) |
其中DevicePath后面显示的PciRoot(0x0)/Pci(0x2,0x0)
就是IGPU的设备路径
ig-platform-id(核心步骤)
我们需要制定正确的Framebuffer,一组正确的正确的 FB 应当正确地包含了可用的输出端口以及该核显的其他属性,所以我们需要注入属性。
打开config.plist,并在Device中的Properties
添加以下内容:
AAPL,ig-platform-id
或AAPL,snb-platform-id(仅适用于 Sandy Bridge 微架构)
- 设备
IGPU
的device-id
(需要仿冒时) - 设备
IMEI
的device-id
(需要仿冒时) - 部分补丁设定(必要时)
注意逗号区分中英文!!!
上述属性应使用十六进制代码表示,并且需要 两两一组 倒序 输入。如 0x0A260006
应该用 0600260A
表示
很多人问倒序怎么倒的,这里画个图解释一下
0x
指16进制,在这咱可以不管,提取出后面的0A260006
,两两一组0A 26 00 06
过程如下图所示,最终得到0600260A
下面分别提供了适用于不同微架构的常用 IGPU
和 IMEI
属性模版。
如果某个属性不是必需的,请完全删除掉;如果某个
PciRoot
位置不存在,也请彻底删除!
选择一个适合的 FB。 首先试试推荐值,如果失败,则逐个尝试其他值.在寻找合适的 FB 时,可以临时通过启动参数设置,此时 Properties
部分中的 FB 设置将被忽略。如: igfxframe=0x0166000B
注意! 此处格式与 Properties
部分的格式不同,这里应正序 输入并保留 0x
前缀,如上例所示。
- 如未指定 FB,将会使用默认值;
- 如未设定 FB 并且存在独立显卡,将使用一组空 FB。
HD 2000/3000(Sandy Bridge 微架构,下文简称 SNB)
支持 macOS 10.7 至 10.13.6,本文适用于 10.8 到 10.13.6。在旧版本系统上请使用传统驱动方式。从 macOS 10.14 起,HD 2000/3000 已经不再支持。
此方法无法开启 Metal。
SNB 微架构可用的 FB 列表:(点击此处以展开)
- 0x00010000 (移动版,4 端口,无 FBMEM)
- 0x00020000 (移动版,1 端口,无 FBMEM)
- 0x00030010 (桌面版,3 端口,无 FBMEM)
- 0x00030020 (桌面版,3 端口,无 FBMEM)
- 0x00030030 (桌面版,无端口,无 FBMEM)
- 0x00040000 (移动版,3 端口,无 FBMEM)
- 0x00050000 (桌面版,无端口,无 FBMEM)
推荐的 FB 配置:
- 0x00030010(桌面版,缺省值)
- 0x00010000(移动版,缺省值)
通常 SNB 平台无需指定 FB,与 board-id
相对应的一组 FB 将会被自动使用。不过,在使用不基于 SNB 平台的 SMBios 时,则需指定 FB。(如使用 HD 3000
+ 基于 Ivy Bridge
平台的 MacBookPro9,1
时,则需指定 FB)
注意!为 SNB 平台指定 FB 时,属性名应为
AAPL,snb-platform-id
,这与其他平台不同。
对于桌面版,需设定(仿冒)device-id
为 26010000
。
在基于 7 系列芯片组 的主板上使用基于 SNB
微架构的处理器时(如在 Z77
芯片组上使用基于 SNB
微架构的 i7-2600
时),需设定(仿冒)IMEI
的 device-ID
为 3A1C0000
。
HD 2500/4000(Ivy Bridge 微架构,下文简称 Ivy)
支持 macOS 10.8 或更新版本。
Capri (Ivy) 可用的 FB 列表:(点击此处以展开)
推荐的 FB 设置:
- 0x0166000A(桌面版,缺省值)
- 0x01620005(桌面版)
- 0x01660003(移动版,缺省值)
- 0x01660009(移动版)
- 0x01660004(移动版)
在基于 6 系列芯片组 的主板上使用基于 Ivy
微架构的处理器时(如在 Z68
芯片组上使用基于 Ivy
微架构的 i7-3770
时),需设定(仿冒)IMEI
的 device-ID
为 3A1E0000
。(如下所示)
Intel HD Graphics 4200-5200(Haswell 微架构)
支持 macOS 10.9 或更新版本。
Azul (Haswell) 可用的 FB 列表:(点击此处以展开)
推荐的 FB 设置:
- 0x0D220003(桌面版,缺省值)
- 0x0A160000(移动版,缺省值)
- 0x0A260005(移动版,推荐)
- 0x0A260006(移动版,推荐)
对于 桌面版 HD 4400 以及所有移动版核显,需设定(仿冒)IGPU
的 device-id
为 12040000
。
HD 5300-6300(Broadwell 微架构,下文简称 BDW)
支持 macOS 10.10.2 或更新版本。
BDW 平台可用的 FB 列表:(点击此处以展开)
推荐的 FB 设置:
- 0x16220007(桌面版,缺省值)
- 0x16260006(移动版,缺省值)。
HD 510-580(Skylake 微架构,下文简称 SKL)
支持 macOS 10.11.4 或更新版本。
SKL 平台可用的 FB 列表:(点击此处以展开)
推荐的 FB 设置:
- 0x19120000(桌面版,缺省值)
- 0x19160000(移动版,缺省值)
HD 610-650(Kaby Lake 微架构,下文简称 KBL)
支持 macOS 10.12.6 或更新版本。
KBL 平台可用的 FB 列表:(点击此处以展开)
推荐的 FB 设置:
- 0x59160000(桌面版,缺省值)
- 0x59120000(桌面版,推荐)
- 0x591B0000(移动版,缺省值)
对于 UHD 620 (Kaby Lake Refresh需设定(仿冒)IGPU
的 device-id
为 16590000
UHD 630(Coffee Lake 微架构,下文简称 CFL)
支持 macOS 10.14 或更新版本。
CFL 平台可用的 FB 列表:(点击此处以展开)
推荐的 FB 设置:
- 0x3EA50000(桌面版,缺省值)
- 0x3E9B0007(桌面版,推荐)
- 0x3EA50009(移动版,缺省值)
注意:使用第九代 Coffee Lake R 处理器时,需设定(仿冒)IGPU
的 device-id
为 923E0000
。(如下所示)
从 macOS Mojave 10.14.4 起,无需再设定此参数!
使用 WEG 自定义 FB 和 端口 补丁
一般来说WhateverGreen会自动完成大部分工作,不需要任何额外的Framebuffer补丁。
当出现以下情况可能需要使用额外的Framebuffer补丁:
- 在BIOS中无法设置超过32M的DVMT(framebuffer-stolenmem / framebuffer-fbmem)
- 为4K屏设定更大的VRAM(-unifiedmem)
- 禁用独显(disable-external-gpu)
- 启用支持4k的像素时钟补丁(enable-hdmi20)
- 禁用连接器以启用睡眠(framebuffer-pipecount / framebuffer-portcount / framebuffer-conX-type = -1)
- 更改连接器类型以匹配您的系统端口(framebuffer-conX-type)
- 等等
WEG 支持的自定义补丁列表
语义补丁:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
framebuffer-patch-enable (启用语义补丁的总开关) framebuffer-framebufferid (要修改的 FB,一般保持默认即可) framebuffer-mobile framebuffer-pipecount framebuffer-portcount framebuffer-memorycount framebuffer-stolenmem(给BIOS中DVMT增加内存大小): framebuffer-fbmem framebuffer-unifiedmem (核显显存大小,调大一点可能能解决花屏) framebuffer-cursormem (Haswell 专用补丁) framebuffer-flags framebuffer-camellia (集成显示控制器,仅与白苹果相关) framebuffer-conX-enable (启用端口为 X 的修改) framebuffer-conX-index framebuffer-conX-busid framebuffer-conX-pipe framebuffer-conX-type framebuffer-conX-flags framebuffer-conX-alldata (完全替换端口信息) framebuffer-conX-YYYYYYYY-alldata (在当前 FB 与 YYYYYY 匹配时完全替换端口信息) X 是端口索引。 |
二进制补丁:
1 2 3 4 5 6 |
framebuffer-patchN-enable (启用第 N 项补丁) framebuffer-patchN-framebufferid (要修改的 FB,一般保持默认即可) framebuffer-patchN-find framebuffer-patchN-replace framebuffer-patchN-count (要搜索的补丁号迭代数,默认为 1) N 为补丁索引号: 0, 1, 2, ... 9 |
部分补丁解释:
再次重申,所有DATA数据类型需要将数据两两一组倒过来填入,例如:0x16260006
转换之后就是这样06002616
填入,如下图:
当设置内存大小时,你可能想知道DATA是怎么计算出来的。用framebuffer-fbmem参数举例,当需要设置为48M之后它应填入的值是:00000003
,这个也是转换后的值,所以原来的值应当是03000000
,这是一个16进制的数字,转换成10进制是50331648
。我们知道1M=1024KB,1KB = 1024B,所以,我们把转换成十进制之后的数字50331648
除以1024然后再除以1024,得出的结果就是48了,所以这串数字代表的就是48M。
点击这里前往进制转换网页
AAPL,ig-platform-id
(设备平台id,直接影响显卡是否能成功驱动): 举例一些常用笔记本
的核显id(均为DATA数据类型)- HD4600~HD5200:
0x0A260000
或0x0A2E0008
- HD5300~HD6000:
0x16260006
- HD630:
0x3E9B0000
- HD4600~HD5200:
device-id
(设备id,可能是能让黑苹果正确显示设备信息,直接使用无需倒序):- HD4600~HD5200:
12040000
- HD5300~HD6000:
16160000
- HD630:
3e9b0000
具体的
AAPL,ig-platform-id
和device-id
的使用设置查看前文
- HD4600~HD5200:
framebuffer-patch-enable
(是否启用framebuffer补丁,当然启用啊,不启用的话这篇文章还有什么用处):- DATA数据:
01000000
-> 1(启用)00000000
-> 0(不启用) - NUMBER数据:
0
(不启用)1
(启用)
- DATA数据:
framebuffer-stolenmem
(给BIOS中DVMT添加一点内存大小,会影响高分屏,这个值必须大于32M,也不应该过高):- 一般1080P屏幕的话,设置为48M就够用了:
00003001
- 当你的笔记本电脑屏幕是2k,你可以设置为64M:
00000004
- 4K屏的话,要设置为128M:
00000008
如果你的BIOS中可以设置DVMT的话并且你设置成为128M之后,可以不需要设置这个属性,或者这个属性设置小一点:
00003001
保险起见,高分屏直接设置成128M比较稳,并且保证在BIOS能设置DVMT的情况下设置在64M或以下 (PS:这一部分可能有误,但是最后一句保险起见,高分屏直接设置成128M比较稳是试验过的)
- 一般1080P屏幕的话,设置为48M就够用了:
framebuffer-unifiedmem
(核显显存大小,调大一点可能能解决花屏):- 2048M:
00000080
- 3072M:
000000C0
- 2048M:
- framebuffer-cursormem(翻译成中文就是光标内存,会影响高分屏,比如高分屏花屏可能就是这个值不够大):
- 一般屏幕设置成9M大小就好:
00009000
- 高分屏的话最好直接设置成48M:
00000003
- 一般屏幕设置成9M大小就好:
framebuffer-fbmem
(framebuffer内存大小,会影响高分屏):- 一般屏幕设置成9M大小就好:00009000
- 高分屏的话最好直接设置成48M:00000003
framebuffer-conN-enable
(N为数字,显卡第N个输出接口是否启用,1为启用,0为不启用):- DATA数据:
01000000
-> 1(启用)00000000
-> 0(不启用) - NUMBER数据:
0
(不启用)1
(启用)
- DATA数据:
framebuffer-conN-type
(N为数字,显卡第N个输出接口的类型):- HDMI输出:
00080000
- DP输出:
0004000
- HDMI输出:
framebuffer-conN-index
(个人理解,显卡第N个输出接口的优先级,或者说是设置第N个输出口的位置): 这个按个人需要设置,如果需要屏蔽这个输出口,可以设置成FFFFFFFF,也就是最大的数字,让它足够靠后,这样就达到了屏蔽效果!
HDMI 高分屏 60 fps 方案
为核显添加 enable-hdmi20
属性,或使用 -cdfon
启动参数代替,否则将会黑屏。
注明:所有文件均归属于原作者,本网站只提供下载。如果您不希望你的文件被本网站收录,请发送邮件到shaengli@163.com,我将移除文件
评论(0)