Acer VN7-591G-50LW抛弃传统静态dsdt使用hotpatch方式配置
本帖最后由 deadbull 于 2017-8-16 23:49 编辑VN7-591G-50LW抛弃传统静态dsdt使用hotpatch方式配置
几句废话:
其实之前就看过hotpatch的帖子,知道这个东西不错。但是看起来略复杂,而且想着之前的dsdt一直工作正常,懒癌发作就一直没弄。
直到前天,10.13dp4升级dp5失败,猜测跟dsdt有点关系,而且其他方式都试过未果的情况下,本着死马当作活马医的心态,就把它给折腾了。
也不知道是狗屎运,还是真的跟这个有关系,dp5的安装居然可以引导了。而且经测试各项功能都正常(显卡、亮度、屏蔽独显、USB、声卡等)。
个人觉得:这个方式感觉比折腾传统dsdt简单很多,大家可以放心开搞。
还有就是,我这个折腾可能也还存在问题,欢迎大家指出,共同学习。
好了,废话就说到这里,下面进入正题:
一、几篇教程:为了表示对大神的敬意,把这部分放到前面来。1、Rehabman的官方教程https://www.tonymacx86.com/threads/guide-using-clover-to-hotpatch-acpi.200137/https://bbs.pcbeta.com/viewthread-1745275-1-1.html2、论坛里的几篇教程:https://bbs.pcbeta.com/viewthread-1733965-1-1.htmlhttps://bbs.pcbeta.com/viewthread-1742550-1-1.html
https://bbs.pcbeta.com/viewthread-1741377-1-1.html这里有一篇翻译为中文的:二、简单说说对hotpatch的理解和总结
简单说点自己的理解,也算是自己梳理一下吧。如果不想看这里可以直接跳过看第三部分使用方法。
传统dsdt方式,是提取机器的dsdt,反编译后进行改错、编辑、打补丁,然后再次编译,最后把编译好的dsdt拿来用。原理上来说没啥毛病,但是这个反编译和编译却是问题所在,否则为什么要排错啊。然后,大神就提出这种方法,可以不提取dsdt,免去了反编译带来的问题。这种方法是其实可以理解为外挂。基于clover的dsdt二进制patch也就是二进制字符替换,再配合ssdt来实现的,
我们知道,对dsdt修改,总结来说就是改名、删除、修改代码有些dsdt简单修改,在clover里可以直接通过勾选相应FIX功能实现。另外对于其他的改名和删除,还可以利用clover的patch功能,实现一些字符替换,直接实现对dsdt重命名和删除的修改。但是还有一些是要修改对象和方法里的代码。这个怎么办。没关系,在上面的基础上,然后把要需改的代码放到单独的ssdt里,二进制字符替换和ssdt配合使用即可实现修改代码的操作。更改调用时的方法名或者对象名,指向新ssdt里用新名字定义的对象或者方法,这叫重定向和替换。直接把dsdt里的对象或方法的名字改掉,然后在ssdt里重写该对象或方法的定义,这就是重命名和替换。
上面几点对应到Rehabman的教程里,就是hotpatch的四种修改类型:1、重命名ACPI对象(Renaming ACPI objects)2、删除方法(Removingmethods)3、重定向和替换(Redirectand Replace)4、重命名和替换Rename andReplace)
(具体细节的在大神的教程里说的很清楚,我就不展开赘述了。)
这种方式免去了dsdt提取、反编译和编译的过程,从而减少了这几个过程出现的错误。而且从方式上来说,hotpatch这种方式也比较“科学”。
三、hotpatch使用说明上面一部分是原理,这部分说说hotpatch使用说明。首先直接去Rehabman的官方地址下载:https://github.com/RehabMan/OS-X-Clover-Laptop-Config其中hotpatch文件夹里就是我们需要用到的。这里有下载好的:下面说说这些的文件1、config.plist这个就是hotpatch方式下clover配置文件模板,里面有rehabman做好的补丁,在clover config助手里,需要哪个就启用哪个。如果如要配合ssdt,就把相应的ssdt编译成aml文件放到clover的patched文件夹里,并在clover配置里添加该aml的引用2、SSDT-Config.dsl这相当于就是hotpatch的ssdt全局变量配置,根据自己的机器架构更改里面的参数,这些全局变量定义在注释里写的很清楚。3、其他SSDT-*.dsl其他的SSDT-*.dsl就对应了一些dsdt补丁,一般来说,就是配合config.plist里面的补丁。
四、传统静态dsdt迁移到hotpatch配置步骤:新方式只变动两个地方:patched文件夹和config.plist文件。其他的和之前一样。这里为了照顾所有的人都能看懂,只讲简单操作。迁移配置步骤:1、把原有的clover配置,添加(注意是添加)到下载的hotpatch里自带的这个config上,最好是对比着一点点添加过来。但是有几个地方需要修改:ACPI里的Drop Tables里不要添加之前添加的dsdt和ssdt,SSDT里也不要要勾选drop OEM。还有就是SortedOrder里的内容也删掉。2、删除patched文件夹里所有之前的dsdt和ssdt。如果你有用ssdtPRGen生成的ssdt,那么只留下这一个(SortedOrder里也需要留下对应的引用)。3、在下载的hotpatch文件夹里,找到SSDT-Config.dsl,根据自己的情况打开并编辑里面的全局变量。然后编译并保存到patched文件夹4、对于之前对dsdt的补丁,如果clover的fix功能里有,就直接用这个代替。如果之前打的补丁没有相应fix选项。就用hotpatch来代替。代替的方法是在新的config里,dsdtpatches里启用你需要的补丁,如果该补丁需要ssdt配合,就把下载的hotpatch文件夹里的相应ssdt编译成aml并放到clover的patched文件夹里。补充1:有些补丁有两个参数的版本,怎么确定自己用哪个?首先需要你有一个最早提取的dsdt,没有修改过的。然后用iasl -l DSDT.dsl命令,生成dsdt.lst。用记事本打开这个文件,搜索看看有没有补丁里的字符串。搜索的时候字符见要用空格隔开。例如,补丁里是“5f505453 09”,那么在记事本里搜索就是“5f 50 54 53 09”如果搜索不到,那么这个补丁不适合于你的dsdt。补充2:有一个SSDT-PluginType1.aml,这个是配合变频用的,没有使用的时候cpu利用率偏高。如果没有ssdtPRGen的ssdt,haswell架构的要用上,其他架构变频要是有问题可以试试看。 。补充3:有几个补丁,之前不太认识,查了一下是usb睡眠相关的,之前dsdt补丁没有(或者是不一样)change Method(_PTS,1,N) to ZPTS, pair withSSDT-PTSWAK.amlchange Method(_WAK,1,S) to ZWAK, pair withSSDT-PTSWAK.amlchange Method(XWAK,0,S) to ZWAK, pair withSSDT-XWAK.amlchange Method(XSEL,0,S) to XSEZ, pair withSSDT-XSEL.amlchange Method(ESEL,0,S) to ESEZ, pair withSSDT-ESEL.amlchange Method(GPRW,2,N) to XPRW, pair withSSDT-GPRW.amlchange LANC Method(_PRW,0,S) to Method(XPRW,0,..),pair with SSDT-LANC_PRW.aml酌情试试看。反正我这个睡眠后usb失败,就打上这几个补丁才ok。
5、补丁工作完成以后,把所有的aml的文件名都加入到config.plist里的SortedOrder里,添加所有aml的引用。6最后,当然就是重启看效果啦
四、我自己的配置我这个机器是宏碁的VN7-591G-50LW。是haswell架构的,看样子好像和hotpatch配合良好。
启用的hotpatch补丁(其他补丁不做讨论):
change _OSI to XOSI, pair withSSDT-XOSI.amlchange EHC1 to EH01, optionally pair withSSDT-EH01.amlchange EHC2 to EH02, optionally pair withSSDT-EH02.amlchange EUSB to EH01, optionally pair withSSDT-EH01.amlchange USBE to EH02, optionally pair withSSDT-EH02.amlchange GFX0 to IGPU, optionally pair withSSDT-IGPU.amlchange B0D3 to HDAU, optionally pair withSSDT-HDAU.amlchange HDAS to HDEF, optionally pair withSSDT-HDEF.amlchange AZAL to HDEF, optionally pair with SSDT-HDEF.amlchange HECI to IMEI, optionally pair withSSDT-IMEI.amlchange MEI to IMEI, optionally pair withSSDT-IMEI.amlchange Method(_PTS,1,N) to ZPTS, pair withSSDT-PTSWAK.amlchange Method(_WAK,1,S) to ZWAK, pair withSSDT-PTSWAK.amlchange Method(XWAK,0,S) to ZWAK, pair withSSDT-XWAK.amlchange Method(XSEL,0,S) to XSEZ, pair withSSDT-XSEL.amlchange Method(ESEL,0,S) to ESEZ, pair withSSDT-ESEL.amlchange Method(GPRW,2,N) to XPRW, pair withSSDT-GPRW.amlchange LANC Method(_PRW,0,S) to Method(XPRW,0,..),pair with SSDT-LANC_PRW.aml
patched文件夹下文件:SSDT-ssdtPGen.amlSSDT-Config.amlSSDT-Disable_DGPU.amlSSDT-EH01.amlSSDT-EH02.amlSSDT-ESEL.amlSSDT-GPRW.amlSSDT-HDAU.amlSSDT-HDEF.amlSSDT-IGPU.amlSSDT-IMEI.amlSSDT-LANC_PRW.amlSSDT-LPC.amlSSDT-PNLF.amlSSDT-PTSWAK.amlSSDT-SMBUS.amlSSDT-UPRW.amlSSDT-XHC.amlSSDT-XOSI.amlSSDT-XSEL.amlSSDT-XWAK.aml
Ssdt-config的参数配置:Name (TYPE, One)Name (HIGH, One)Name (IGPI, 0x0A260006)Name (DPTS, Zero)Name (SHUT, Zero)Name (XPEE, Zero)Name (AUDL, 0x03)Name (BKLT, Zero)Name (LMAX, Ones)
Name (FBTP, Zero) 本帖最后由 deadbull 于 2017-8-17 00:11 编辑
对论坛编辑已醉直接发doc上来吧
一直想学习 这个 动态热补丁,前来下载资料去学习学习,谢谢楼主 不错不错,很详细,6666 今天整理的不错
大佬有没有时间帮忙做一分hotpatch啊,教程看不懂 还在完善hotpatch中,对我这种小白来说真的是太难了 同机型,求楼主的efi文件,谢谢179202850@qq.com 很详细简单易懂 楼主应该把clover上传上来做个参照的 感谢大家的支持 聪聪哥 发表于 2017-8-13 23:31 https://www.pcbeta.com/static/image/common/back.gif
同机型,求楼主的efi文件,谢谢179202850@qq.com
邮件已发送。请查收 myd2898129 发表于 2017-8-14 16:44 https://www.pcbeta.com/static/image/common/back.gif
楼主应该把clover上传上来做个参照的
主要是型号不同,发上来可能也没啥可参考性 没事说说梦话 发表于 2017-8-13 23:05 https://www.pcbeta.com/static/image/common/back.gif
还在完善hotpatch中,对我这种小白来说真的是太难了
我也是刚开始折腾这个,大家共同学习 15176580671 发表于 2017-8-13 20:21 https://www.pcbeta.com/static/image/common/back.gif
感谢分享!!!
谢谢支持! zhongbuxiao 发表于 2017-8-13 20:41 https://www.pcbeta.com/static/image/common/back.gif
一直想学习 这个 动态热补丁,前来下载资料去学习学习,谢谢楼主
大家共同学习共同提高 别乱说话 发表于 2017-8-13 21:53 https://www.pcbeta.com/static/image/common/back.gif
不错不错,很详细,6666
谢谢夸奖,感谢 gonghe368 发表于 2017-8-13 22:42 https://www.pcbeta.com/static/image/common/back.gif
今天整理的不错
感谢一直关注我的帖子 dp5卡windowserver service only ran 0的问题应该就是dsdt的问题,我也把dsdt换成了hotpatch,dp5安装盘直接就进去了,估计还是dsdt或者ssdt被drop掉了一些有用的东西导致