很多小伙伴问我核显怎么驱动,为什么我驱动了HD4600却只有7m缓存,我开机花屏难受等等。。。

说实话,我很幸运用到的EFI直接就驱动了HD4600,所以一直对核显驱动就没怎么上心,直到某天受到群友蓝幽鞭策,才开始查阅相关资料,终于弄懂了前因后果。

文章虽然看起来长,步骤思路很简单:

清理以前的驱动→获取 IGPU 的设备路径→填入ig-platform-id→填入device-id

不要被本文的长度吓到了,举个例子:驱动完HD4600也就这点东西:

e6e6604ca8be-1

或者可以查看精简版本

务必阅读

缩写解释

缩写 解释
FB Framebuffer(缓冲帧)
WEG Lilu.kext和WhateverGreen.kext

软件界面

出现这种界面,则是使用Xcode打开的Plist文件,若你觉得Xcode太大不想安装,也可以选择PlistEdit Pro

34e1ea05cd38-1

Xcode

下载相关

名称 地址
Clover Configurator 点击下载
PlistEdit Pro 点击下载
WhateverGreen 点击下载
Lilu 点击下载
gfxutil 点击下载

Clover目录

所有的clover目录都是指/EFI/EFI/CLOVER

DATA数据填入

由于Clover的特性,所有的DATA类型数据都必须两两一组倒序填入,例如:0x0A160000转换之后就是0000160A,如下图:

a327e8ce070f-2

为什么要使用Lilu + WhateverGreen

随着macOS Mojave的发行,之前的通过Clover ▸ KextsToPatch 通过修补帧缓冲的方法已经失效了,尤其是 SkyLake 及以后架构。您现在必须使用 Lilu + WhateverGreen+FB Patcher 的方式来驱动您的显卡。

WhateverGreen将取代Lilu的所有其他视频补丁插件,它目前已经合并了WhateverGreen,IntelGraphicsFixup,NvidiaGraphicsFixup,Shiki和CoreDisplayFixup

启用核显的通常步骤

  1. 修正有关设备的 ACPI 名称(核显自身名为 IGPU,英特尔® 管理引擎(英文缩写: IMEI)名为 IMEI)。
  2. 如若必要,将 核显 / IMEI 的 设备 ID 仿冒为合适的型号。
  3. 指定正确的缓冲帧。(英文: Framebuffer, 下文简称 缓冲帧 为 FB)(即 AAPL,ig-platform-id(适用于 Ivy Bridge 或更新微架构)或 AAPL,snb-platform-id(仅适用于 Sandy Bridge 微架构)) 一组正确的 FB 应当正确地包含了可用的输出端口以及该核显的其他属性。
  4. 某些与核显相关的其他设备中已包含相关属性。

其中,第 1 步和第 4 步由 WhateverGreen 自动完成。其可运行在 macOS 10.8 及更高版本,这大大简化了正确启用核显的步骤。

准备工作

  1. 在 BIOS 中设置核显所需的内存量(即 预分配 DVMT,英文: DVMT Pre-Allocated)为 32 MB, 64 MB, 96 MB 等,与使用的 FB 值相关。如要使用最大值(英文: DVMT Total),请设为 MAX。

    882647474052

    BIOS设置

  2. 移除以下驱动(如果曾经使用)
    • AzulPatcher4600
    • AppleBacklightFixup
    • CoreDisplayFixup
    • FakePCIID_Intel_HD_Graphics
    • FakePCIID_Intel_HDMI_Audio
    • FakePCIID.kext(不使用其他基于 FakePCIID 的插件时)
    • IntelGraphicsFixup
    • IntelGraphicsDVMTFixup
    • NvidiaGraphicsFixup
    • Shiki

    这些驱动文件通常位于Clover的kexts/Other文件夹中

  3. 关闭所有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 = 清空

    ea50b1266d09-1

    关闭Graphics显卡注入

    ea50b1266d09-1

    关闭Device中的显卡注入

    如果你还不确定还可以打开plist文件查看是否显示为NO

    34e1ea05cd38-1

    Xcode

  4. 禁用Clover中Apci的以下DSDT补丁
    • AddHDMI
    • FixDisplay
    • FixIntelGfx
    • AddIMEI
    • FixHDA

    43c93992aad1-1

    关闭DSDT补丁

    d62a13169110-1

    关闭DSDT补丁

  5. 关闭Clover中Devices的UseIntelHDMI

    e6e757ad65f0-1

    关闭UseIntelHDMI

  6. 删除引导参数:-disablegfxfirmware

    c162da904024-1

    删除引导参数

  7. 删除以下位置所有的和IGPU、HDMI相关条目(一般来说清空就行了):
    • config.plist ▸ Devices ▸ Arbitrary
    • config.plist ▸ Devices ▸ Properties
    • config.plist ▸ Devices ▸ AddProperties

    42b7d126f073-1

    删除IGPU

  8. 删除或禁用以下 ACPI 重命名补丁: GFX0 to IGPUPEGP to GFX0HECI to IMEIMEI to IMEIHDAS to HDEFB0D3 to HDAU

    93c91b135510-1

    禁用Acpi补丁

若以上都做完了,恭喜你完成了清理工作。

添加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

dd982d9977ee-1

下面分别提供了适用于不同微架构的常用 IGPU 和 IMEI 属性模版。

a5925e65dbb6-1

Xcode

fad2422fdf17-1

clover中的设置

如果某个属性不是必需的,请完全删除掉;如果某个 PciRoot 位置不存在,也请彻底删除!

选择一个适合的 FB。 首先试试推荐值,如果失败,则逐个尝试其他值.在寻找合适的 FB 时,可以临时通过启动参数设置,此时 Properties 部分中的 FB 设置将被忽略。如: igfxframe=0x0166000B

6cfb9cb1b1b9-2

启动参数设置igfxframe

注意! 此处格式与 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)

5eefb0bef305-1

注意!为 SNB 平台指定 FB 时,属性名应为 AAPL,snb-platform-id,这与其他平台不同。

对于桌面版,需设定(仿冒)device-id 为 26010000

37ed88d49455-1

在基于 7 系列芯片组 的主板上使用基于 SNB 微架构的处理器时(如在 Z77 芯片组上使用基于 SNB 微架构的 i7-2600 时),需设定(仿冒)IMEI 的 device-ID 为 3A1C0000

43ce972ba4a3-1

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。(如下所示)

cb03d2505350-1

Intel HD Graphics 4200-5200(Haswell 微架构)

支持 macOS 10.9 或更新版本。

Azul (Haswell) 可用的 FB 列表:(点击此处以展开)

推荐的 FB 设置

  • 0x0D220003(桌面版,缺省值)
  • 0x0A160000(移动版,缺省值)
  • 0x0A260005(移动版,推荐)
  • 0x0A260006(移动版,推荐)

对于 桌面版 HD 4400 以及所有移动版核显,需设定(仿冒)IGPU 的 device-id 为 12040000

0d8708ad10f8-1

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

f5a57c965e40-1

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 起,无需再设定此参数!

a9b71effc39f-1

使用 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填入,如下图:

a327e8ce070f-2

当设置内存大小时,你可能想知道DATA是怎么计算出来的。用framebuffer-fbmem参数举例,当需要设置为48M之后它应填入的值是:00000003,这个也是转换后的值,所以原来的值应当是03000000,这是一个16进制的数字,转换成10进制是50331648。我们知道1M=1024KB,1KB = 1024B,所以,我们把转换成十进制之后的数字50331648除以1024然后再除以1024,得出的结果就是48了,所以这串数字代表的就是48M。

点击这里前往进制转换网页

  1. AAPL,ig-platform-id(设备平台id,直接影响显卡是否能成功驱动): 举例一些常用笔记本的核显id(均为DATA数据类型)
    • HD4600~HD5200:0x0A2600000x0A2E0008
    • HD5300~HD6000:0x16260006
    • HD630:0x3E9B0000
  2. device-id(设备id,可能是能让黑苹果正确显示设备信息,直接使用无需倒序):
    • HD4600~HD5200:12040000
    • HD5300~HD6000:16160000
    • HD630:3e9b0000

      具体的AAPL,ig-platform-iddevice-id的使用设置查看前文

  3. framebuffer-patch-enable(是否启用framebuffer补丁,当然启用啊,不启用的话这篇文章还有什么用处):
    • DATA数据:01000000 -> 1(启用) 00000000 -> 0(不启用)
    • NUMBER数据:0(不启用) 1(启用)
  4. framebuffer-stolenmem(给BIOS中DVMT添加一点内存大小,会影响高分屏,这个值必须大于32M,也不应该过高):
    • 一般1080P屏幕的话,设置为48M就够用了:00003001
    • 当你的笔记本电脑屏幕是2k,你可以设置为64M:00000004
    • 4K屏的话,要设置为128M:00000008

      如果你的BIOS中可以设置DVMT的话并且你设置成为128M之后,可以不需要设置这个属性,或者这个属性设置小一点:00003001 保险起见,高分屏直接设置成128M比较稳,并且保证在BIOS能设置DVMT的情况下设置在64M或以下 (PS:这一部分可能有误,但是最后一句保险起见,高分屏直接设置成128M比较稳是试验过的)

  5. framebuffer-unifiedmem(核显显存大小,调大一点可能能解决花屏):
    • 2048M:00000080
    • 3072M:000000C0
  6. framebuffer-cursormem(翻译成中文就是光标内存,会影响高分屏,比如高分屏花屏可能就是这个值不够大):
    • 一般屏幕设置成9M大小就好:00009000
    • 高分屏的话最好直接设置成48M:00000003
  7. framebuffer-fbmem(framebuffer内存大小,会影响高分屏):
    • 一般屏幕设置成9M大小就好:00009000
    • 高分屏的话最好直接设置成48M:00000003
  8. framebuffer-conN-enable(N为数字,显卡第N个输出接口是否启用,1为启用,0为不启用):
    • DATA数据:01000000 -> 1(启用) 00000000 -> 0(不启用)
    • NUMBER数据:0(不启用) 1(启用)
  9. framebuffer-conN-type(N为数字,显卡第N个输出接口的类型):
    • HDMI输出:00080000
    • DP输出:0004000
  10. framebuffer-conN-index(个人理解,显卡第N个输出接口的优先级,或者说是设置第N个输出口的位置): 这个按个人需要设置,如果需要屏蔽这个输出口,可以设置成FFFFFFFF,也就是最大的数字,让它足够靠后,这样就达到了屏蔽效果!

HDMI 高分屏 60 fps 方案

为核显添加 enable-hdmi20 属性,或使用 -cdfon 启动参数代替,否则将会黑屏

41ddfe22d2cc-1

声明:本站部分资源来自网络,目的在于给想体验黑苹果的人一个方向,节约大家的时间,本站所有收费及捐赠仅用于网站运营以及维护资金,如无特殊说明或标注,仅限学习交流,不能用于商业用途,软件类目如用于商业用途,请到官方购买正版,追究法律责任与“A7MAC”无关!
注明:所有文件均归属于原作者,本网站只提供下载。如果您不希望你的文件被本网站收录,请发送邮件到shaengli@163.com,我将移除文件