黑苹果 | 黑苹果进阶驱动定制

前言

进阶修改,不像之前打个驱动补丁就行,一般都需要涉及 DSDT 修改,相对来说比较麻烦繁琐,有耐心且想完美的小伙伴往下看吧

内容概览:

  • DSDT 提取及编译改错
  • AppleLPC 电源管理(原生电源管理)
  • CPU 变频及 X86PlatformPlugin
  • 2048M 显存修正
  • USB3.0 驱动

所需工具

软件名称 下载地址
Clover Configurator 点击下载
IORegistryExplorer 点击下载
MaciASL 点击下载
Hex Fiend 点击下载 密码:zifc
百度云合集 点击下载 密码:5xbd

DSDT 提取及编译改错

打开MaciASL编译原始 DSDT,会返回出现 3 个错误,分别定位到各个错误,

看到这个Arg0单独占一行,一看和周围的小伙伴就不一样,只需要删掉这个Arg0即可,这样第二个和第三个错误就解决了

还剩下一个ZERO错误,定位到出错那行,直接把那群ZERO删除就可以了

至此,DSDT 排错就完成了,保存。

由于我改正的时候忘记截图了,大家明白意思就行

AppleLPC 电源管理(原生电源管理)

据说新架构的 U 以及不需要这个了,我目前只有 4 代 U,所以无法测试

首先查看自己的把 LPC 的硬件 ID,打开IORegistryExplorer,搜索LPC

LPCID

然后在,DSDT 里搜索0x001F0000,在 xx 前(具体位置见图,只要在指定的大括号内就行)加入如下代码(记得把硬件 id 改成自己的):

LPC

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Method (_DSM, 4, NotSerialized)  // _DSM: Device-Specific Method
{
If (LEqual (Arg2, Zero))
{
Return (Buffer (One)
{
0x03
})
}

Return (Package (0x02)
{
"compatible",
"pci8086,8c4b"
})
}

上述方式不用掉 DTGP 函数

或者用传统方式修改:

注意硬件 ID 的格式,如8c4b0x4b, 0x8C, 0x00, 0x00

1
2
3
4
5
6
7
8
9
10
11
12
13
Method (_DSM, 4, NotSerialized)
{
Store (Package (0x02)
{
"device-id",
Buffer (0x04)
{
0x4b, 0x8C, 0x00, 0x00
}
}, Local0)
DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
Return (Local0)
}

编译 DSDT 然后保存。重启后 AppleLPC 应该会正常加载。

CPU 变频及 X86PlatformPlugin

LPC 电源管理加载完毕后,我们需要为自己的 CPU 生成一份合适的 SSDT 用于加载X86PlatformPlugin 以及让变频正常工作,同时让 cpu 温度正常。

(适用于 4 代 U,其他自测)

打开终端,输入如下命令:

1
2
3
4
cd Desktop
curl -o ~/ssdtPRGen.sh https://raw.githubusercontent.com/Piker-Alpha/ssdtPRGen.sh/master/ssdtPRGen.sh
chmod +x ssdtPRGen.sh
./ssdtPRGen.sh

运行后脚本会自动生成 SSDT.aml,可以在/Users/当前用户/Library/ssdtPRGen/下找到生成好的 SSDT.aml
复制出来,放入 /EFI/Clover/ACPI/Patched/ 下。

之后Clover configurator里的Acpi栏填写如下字段

Acpi

重启,如果节能栏里出现启用电能小憩,软件的扩展功能里X86PlatformPlugin显示已加载就证明成功啦

CPU

x86

2048M 显存修正

通过查找修改 Framebuffer 来实现 2048M 显存修正

查看 Framebuffer

首先需要知道我们加载了哪个 Framebuffer,打开终端,输入以下命令

1
kextstat | grep -y AppleIntel

Framebuffer

如图,我电脑使用的就是AppleIntelFramebufferAzul.kext

查看 ig-platform-id

接下来需要知道ig-platform-id,在终端输入如下命令

1
ioreg -l | grep ig-platform-id

ig-platform-id

这里横线上的0700260d就是我们需要的 ig-platform-id 了

提取 FB

/System/Library/Extensions下找到同名的 kext 文件,将其拷贝到桌面。这里是AppleIntelFramebufferAzul.kext

寻找FB

右键显示包内容,在/Contents/MacOS里找到同名文件,移动至桌面

移动FB

修改 FB

使用Hexo Fiend,打开提取的文件,使用Command+F搜索前面的 ig-platform-id(0700260d)

搜索ID

把后面的 5 组数据复制出来,一般都是以00000060结尾的,如我这里找到的01030403 00000004 00002002 00005001 00000060(上图中蓝色的选中部分)

复制出来的可能是 2 个一组的形式,自己修改一下

将最后的00000060改为00000080,如图

修改FB

安装补丁

打开Clover configurator,在Kernel and Kext Patches里新建一个选项,按如下输入即可

记得将 Find 和 replace 替换为自己的

1
2
3
4
Name:           AppleIntelFramebufferAzul
Find: 01030403 00000004 00002002 00005001 00000060
Replace: 01030403 00000004 00002002 00005001 00000080
Comment: 1536MB -> 2048MB for HD4200_4400_4600 Mobile

FB补丁

注意

不要乱用别人整理出来的 ID,毕竟每个人的设备都不一样,我是 HD4600 的核显,使用通用的没有效果,自己查询改出来的就行。

升级系统后,可能会失效,重新修改下就好。

USB3.0 驱动

成功效果

驱动成功后,USB 插入 3.0 设备会正确读取,并且速率显示为 5Gb/秒

USB

步骤地址

USB3.0 驱动,除了需要打 kext 文件外,还需要修改 SSDT.aml,具体过程参见下面,我就不重复造轮子了

修改 SSDT 参考链接: 黑苹果解决 USB3.0 驱动问题

大概步骤

  1. 下载USBInjectAll.kext驱动
  2. 定制SSDT-UIAC.aml补丁
  3. USBInjectAll.kext驱动置于EFI\EFI\CLOVER\kexts\Other文件夹
  4. SSDT-UIAC.aml补丁置于/EFI/Clover/ACPI/Patched/文件夹,打开Clover configuratorAcpi栏的SortedOrder填写SSDT-UIAC.aml

UIAC

驱动名称 下载地址
USBInjectAll.kext 点击下载

我自己的在 10.14.4 上发现失效了,使用下面打补丁的方法可解决

USB 解除端口限制补丁

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
Comment: USB port limit patch #1 10.14.x modify by DalianSky(credit ydeng)
Name: com.apple.iokit.IOUSBHostFamily
Find: 83FB0F0F
Replace: 83FB3F0F
MatchOS: 10.14.x

Comment: USB port limit patch #2 10.14.x modify by DalianSky(credit PMHeart)
Name: com.apple.iokit.IOUSBHostFamily
Find: 83E30FD3
Replace: 83E33FD3
MatchOS: 10.14.x

Comment: USB Port limit patch #3 10.14.x modify by DalianSky(credits PMheart)
Name: com.apple.driver.usb.AppleUSBXHCI
Find: 83FB0F0F
Replace: 83FB3F0F
MatchOS: 10.14,10.14.1,10.14.2,10.14.3

Comment: USB Port limit patch #4 10.14.x modify by DalianSky(credits PMheart)
Name: com.apple.driver.usb.AppleUSBXHCI
Find: 83FF0F0F
Replace: 83FF3F0F
MatchOS: 10.14.x

或者

1
2
3
4
5
6
7
8
9
10
11
Comment: USB Port limit patch 10.14 (credits FredWst)
Name: com.apple.driver.usb.AppleUSBXHCI
Find: 83FB0F0F 83030500 00
Replace: 83FB0F90 90909090 90
MatchOS: 10.14

Comment: USB Port limit patch 10.14.1 10.14.2 Beta (credits DalianSky)
Name: com.apple.driver.usb.AppleUSBXHCI
Find: 83FB0F0F 838F0400 00
Replace: 83FB0F90 90909090 90
MatchOS: 10.14.1,10.14.2

参考设置

usb3

查看成功方法:

  1. 插入 3.0 设备,通过系统报告里的 USB,来看速率是否为 5G/s

  2. 使用IOregistryExplorer,搜索xhc查看(推荐使用这个,这样可以看所有端口是否都已正常工作)

    IOService


有问题最好是直接在博文留言,方便我收集整理问题,我会不定期总结出博文,这样可以更好的帮助其他小伙伴

参考链接:

  1. Native Power Management for Laptops
  2. 简单修改 FB 实现显存增加至 2048MB 修复某些花屏
  3. 黑苹果解决 USB3.0 驱动问题