本帖最后由 codemoon 于 2016-9-23 21:00 编辑
接着搞....
E. 接下来就厉害了,我们要对所有SSDT开头的文件打两个补丁(按顺序),操作方法相信你已学会,分别是: [syn] Rename _DSM methods to XDSM [igpu] Rename GFX0 to IGPU 有些SSDT文件可能没有需要修改的地方,补丁的Apply按钮就按不了,正常的,略过即可。
每个SSDT打完这两个补丁之后,Compile,如果是0 Errors就保存,下面我不再提这个Compile步骤了,冗余。 到SSDT-1打完补丁Compile的时候我发现有Errors,看了一下,是一些参数悬着,我的修正方案是直接注释掉: 第100行附近: - Sleep (PGCD)
- \_SB.GGOV (0x02010016)
- OLDV
复制代码 改成: - Sleep (PGCD)
- \_SB.GGOV (0x02010016)
- //OLDV
复制代码
第121行附近: - Store (\_SB.GGOV (0x02010014), OLDV)
- \_SB.GGOV (0x02010014)
- DFUE
复制代码 改成 - Store (\_SB.GGOV (0x02010014), OLDV)
- \_SB.GGOV (0x02010014)
- //DFUE
复制代码
第126行附近: - Sleep (DFUD)
- \_SB.GGOV (0x02010014)
- OLDV
复制代码 改成 - Sleep (DFUD)
- \_SB.GGOV (0x02010014)
- //OLDV
复制代码
SSDT-18打完两个补丁后Compile也有Errors,出现在1265行附近,提示Object does not exist(\_SB.PCI0.iGPU.XDSM),在文件38行附近,有一行External (_SB_.PCI0.IGPU._DSM, MethodObj),直接整行复制粘贴到下一行,把_DSM改成XDSM,再Compile就没有错误了。
F. USB3电源补丁 搜索DSDT里的Scope (_SB.PCI0.XHC),有两个结果,我们找下面有_PRW的那个,看看下面几个Return里面是什么,我这里Return的是0x6D,0x03;0x6D,Zero;0x6D,one;都是0x6D开头的,那就打[usb] USB3 _PRW 0x6D Skylake(instant wake) 这个补丁,这就把睡眠秒唤醒的问题解决了.
也可参考:https://github.com/RehabMan/OS-X-USB-Inject-All 还有个SSDT-ALC298.aml,配合CodecCommander.kext使用的,修复睡眠/唤醒后,声音的状态,也是放patched里面,但在我这里两者都不用也可以唤醒有声,所以推荐你有需要才用。 想要自己编译的话,下载地址:https://github.com/RehabMan/EAPD-Codec-Commander 这里的是dsl,自己编译成aml。 G. AppleLPC Skylake的CPU默认不会加载AppleLPC.kext,给DSDT打补丁[sys] Skylake LPC,再Compile。 H. 背光控制补丁 给DSDT打上 [igpu] Brightness fix 补丁,用来配合后面提到的SLE里面的IntelBacklight.kext使用。 I. 系统补丁 给DSDT打上 [sys] OS Check Fix (Windows 8) 补丁。 J. 假以太网卡内建 为了配合后面安装的NullEthernet.kext(在SLE里), 还需要打个补丁, 把下面的内容粘贴到Patch窗口的右上方, 按Apply, Close, Compile没有Errors,保存,关闭MaciASL. - into method label _DSM parent_label NIC parent_label RP06 remove_entry;
- into device label NIC parent_label RP06 insert
- begin
- Method (_DSM, 4, NotSerialized)\n
- {\n
- If (LEqual (Arg2, Zero)) { Return (Buffer() { 0x03 } ) }\n
- Return (Package()\n
- {\n
- "RM,MAC-address", Buffer() { 0x11, 0x22, 0x33, 0x66, 0x55, 0x44 },\n
- "built-in", Buffer() { 0x00 },\n
- "device_type", Buffer() { "ethernet" },\n
- })\n
- }\n
- end;
复制代码这一步的目的是构建一个假的内建网卡, 让你可以在AppStore下载应用. 6. 编译DSDT/SSDT 现在origin里新建一个文件夹叫Ver1,把所有dsl文件复制一份进去留作备份。 然后我们打开DSDT.dsl,点击屏幕左上角的File - Save as...,在弹出的对话框中,File Format选择ACPI MachineLanguage Binary,在文件名后面加上.aml,点击Save保存。 对origin里其他.dsl文件进行上述的保存操作,生成所有.aml文件。 然后把这些aml文件全部复制到系统EFI分区的Clover\ACPI\patched里面(还记得怎样挂载EFI分区吗?用Clover Configurator.app,看看本节的第1小点) 7.让DSDT/SSDT生效 打开Clover\config.plist,现在系统应该默认是用Clover Configurator.app打开它的。 点击左边Acpi项,右下边找到SSDT的框里面的Drop OEM勾上。 点击左边Devices项,把IntelGFX框的内容0x12345678清空。 然后点击屏幕左上角的File,Save,关闭Clover Configurator.app,如果还有提示框出现,点击OK。
六、更多Kext驱动 1. 现在把EFI\Clover\kexts\Other里面的GenericUSBXHCI.kext删除。 如果你前面做了五.5.B步骤的话,把VoodooPS2Controller.kext,ApplePS2Controller.kext,AppleACPIPS2Nub.kext也删除。 2. 把我提供的MoreKexts.zip解压,里面的所有kext驱动放进去EFI\Clover\kexts\Other里。 3. 把我提供的Kext_Utility.app.v2.6.6.zip解压,得到KextUtility.app,双击运行输入密码,出现一个白窗口,等待窗口下面的小菊花转到消失。 把我提供的SLE.zip解压得到SLE文件夹,选中里面所有文件,(如果你不需要ApplePS2SmartTouchPad,就不要选它),拖进KextUtility的白窗口,等待小菊花消失。 4. 删除网络配置(为了配合NullEthernet.kext) 系统偏好设置– 网络, 把左边所有的有线无线网络接口都删除(点下面的减号), 然后去删除/Library/Preferences/SystemConfiguration/NetworkInterfaces.plist,如何打开呢? 在终端输入open /Library/Preferences/SystemConfiguration,就出现了, 然后找到NetworkInterfaces.plist删除掉. 重启后发现声音有了,电量显示了,显卡驱动起来了,如果触摸板不正常,再重启多两次就正常了。 5.现在把网络设置里面的网卡添加回来,要先添加以太网卡, 再添加无线网卡, 然后应用. 6.小问题 如果你用的是VoodooPS2Controller的话,按FN+S或FN+B是亮度调节;如果用的是ApplePS2SmartTouchPad,亮度和音量调节的按键都是原按键(F11、F12),但格数都不准,很苦恼,后来用了syscl的那个4.5版本就好了。 还有就是ApplePS2SmartTouchPad的双指滚动有点问题,需要在系统设置-触摸板里面随便调整一下滚动速度才可以生效。 七. 附加补丁 Corenel的github上提供了他自己的配置,其中有个ssdt-uiac.aml,这个和USBInjectAll.kext(在我的MoreKexts里)配合使用的,用来修复USB3的一些问题,你放ACPI\patched里面好了。想研究的也可以看看: https://github.com/RehabMan/OS-X-USB-Inject-All 还有个SSDT-ALC298.aml,配合CodecCommander.kext使用的,修复睡眠/唤醒后,声音的状态,也是放patched里面,但在我这里两者都不用也可以唤醒有声,所以推荐你有需要才用。
想要自己编译的话,下载地址:https://github.com/RehabMan/EAPD-Codec-Commander 这里的是dsl,自己编译成aml。
八. CPU变频
终端执行: - curl -o ~/ssdtPRGen.sh https://raw.githubusercontent.com/Piker-Alpha/ssdtPRGen.sh/Beta/ssdtPRGen.sh
复制代码
然后:
最后:
如果提示:Compilation complete. 0 Errors, 0 Warnings, 0Remarks, 0 Optimizations 就是生成变频SSDT成功。 接下来还有提示: - Do you want to copy /Users/XXX/Library/ssdtPRGen/ssdt.aml to /Extra/ssdt.aml? (y/n)?
复制代码输入n回车
- Do you want to open ssdt.dsl (y/n)?
复制代码输入n回车
然后输入:open ~/Library/ssdtPRGen/ ,弹出窗口,找到ssdt.aml 和 ssdt.dsl,复制到origin,把ssdt.aml复制到EFI分区的patched里面,重启。
再次强调,因为我上面采用的config.plist已经在SSDT-OEM列表包含了ssdt.aml,所以这里只需要复制过去patched就好,没有额外工作。
重启发现,系统启动速度更快了!
楼下还有一点点, 不看也没关系...
补充内容 (2016-9-24 22:03):
J.假以太网卡内建 的代码有误,请从这里复制 https://github.com/RehabMan/OS-X-Null-Ethernet/blob/master/patch.txt |