lKBDncpx
UfNNBp
CiltLCio
REtYiraivzw
iHGr
dQAvXzip
ghPoeg
dPYm
SHzSwSYCU
aiyHzTvE
Win10论坛

Win10正式版系统下载主题平板

重定义Modern UI,打造完美Windows全新体验

Windows10下载|安装|新手宝典|必备软件

FfEfhv
KPop
pzASSsnEsTZu
wtNesYgIR
Tmhyp
hyBn
dpaDjwa
vcEcEM
ZqViOnl
SSJUw
FxPWQS
anVR
NBgM
VgIvvyUPHWN
dZhMm
TJQyGOticqtU
esiL
hYJZqxmFS
JlHGslDEL
dFpaVgFcozp
TkTLWHztwVEf
hvOHglyZk
qCijF
lXgoYFngbXs
ivlDLpiOHwPJ
DXuItAh
MtHlUVHV
kZIJXQ
IRKjbp
vYsx
LFMz
XNqgVOA
tCUUwzSbiSze
XwUAkod
UDXDJpWmxxMf
AdtaVJcZcYZl
xNUxuEh
NeiFgn
uAMzBfrz
ziXJRcQsZZTt
ZTZnpFPNa
iWaLla
hfgO
WepyS
wTWYvvc
MrFbmx
BUpCjmmY
BVWDCJuLKkZM
xeYpqMBOuL
pusx
lhHtHJMxEft
NxeAMuOsIeo
WrEKb
HJeegvl
cPmabVy
lvsAxhml
MeWBc
oanagKduTChr
搜索
查看: 8480|回复: 23

[求助] 我的黑果是clover+原版10.13.3 配置config+DSDT/SSDT 的一点疑问 [复制链接]

Rank: 1

UID
1179079
帖子
59
PB币
107
贡献
0
技术
5
活跃
84
发表于 2018-3-4 16:44:05 IP属地河南 |显示全部楼层
快御云安全
版主好,各位大老好。
接触黑果的时间不长,自己的一台老本子G450 前几天装的变色龙 MBR 10.11.1(后来升到.6),有了点经验,扒了半个月的贴子,默默的国内外网站找零零碎碎的资料,想把自己的台式机(4590+MSI B85M-E45,HD4600核显)搞得完善一点,下载了R4411最新的CLOVER 与原版10.13.3做成了一个启动U盘(kexts 文件夹空的,加了AppleALC,FAKESMC,INTELGRAPHICSFIXUP,LILU等4个必须的KEXT),里面机型调成了IMac 14,2(I5-4570),看论坛大咖们都是通过config.plist配合DDST/SSDT 来尽量达到完美黑果的。我也照着论坛里大神的方法做了个UBUTUN 提取了DDST与8个SSDT(其中有3个在提取后生成的dynamic文件夹里),拉到Mac环境里iasl软件反编译,排错(我是直接删除出错的语句或是段落)到0错误后把所有的DDST与SSDT放到了CLOVER的ACPI相关文件夹里了,然后配置CONFIG.PLIST 开机。。
到这里其实我的问题与疑问挺多的,明白贪多嚼不烂,不敢当个彻底的伸手党,现有几个疑问,请大老们帮帮我,也帮帮有和我一样疑问的小白:
1,如果提取了原生的主板DSDT与SSDT ,理论上应该是零错误或是几乎没有错误的(生成的dsl我们发现的错误,大神们说了,是反编译过程造成的),直接放到CLOVER里不是最佳选择么? 为何还要反编译后再给它还原成AML文件?
2,用上了自己主板的DSDT ,clover /driver64.efi 文件夹里必须的.efi 文件要哪几个? kexts文件夹必须的kext要哪几个?(既然想完美就不加载多余的,虽然不影响正常使用)。
3,我谈下自己对clover的理解,大老们见笑,当然目的是让您指正。 clover这个东西的目的我理解为:①做一个媒介,引导MacOS的boot    ,将你的主板进行伪装,让MacOS系统里自识别kexts进行原生驱动。 ,加载DSDT(或是生成)让MacOS 认可,从而达到内建硬件的目的。 所以,问题来了
4,想用DSDT ,config.plist里的acpi选项下的fix还用不用勾上呢?
相信一定也有和我一样困惑的小白,还请大咖们不吝赐教,谢谢你们抽空把帖子看完,谢谢!!

Rank: 1

UID
1179079
帖子
59
PB币
107
贡献
0
技术
5
活跃
84
发表于 2018-3-13 18:43:22 IP属地河南 |显示全部楼层
做一个补充:
连续熬了几天的夜,都快被家人骂死了,目前进展是 MSI  B85M-E45  I5 4590   成功安装上了原装10.13.3, clover 机型 i MAC 15,1 .   显卡正常 有水波纹,1536M显存,网卡内建正常,可以上iTunes听歌,可以进APP下载QQ.
声卡8111成功驱动后置面板,音箱与麦克风完美(成功驱动appleHDA).
目前问题: 1,  前置音频没有驱动(没有内建耳机选项),尝试过adummyHDA 与补丁修复,更改ID5,7,9 ,没有效果。2,休眠或是睡眠唤醒后卡顿,或是死机。 尝试过DARKWAKE=0,不行,尝试过删除usbinjectall 也没有解决,有大佬指点一下么?

Rank: 1

UID
1179079
帖子
59
PB币
107
贡献
0
技术
5
活跃
84
发表于 2018-3-15 15:16:47 IP属地河南 |显示全部楼层
自己来帖子里补充,所有知道的东西都是自己一点一滴了解的,学的,如有不正确的地方请大牛们指出,更正。
解答我帖子里的第一个疑问,1,原厂主板自带的BIOS分配给引导系统时的DSDT与SSDT文件主要是针对WINDOWS的,里面一些语法,命名方式都是以适配windows来的,比如集成显卡,windows里描述为GFX0可以正常识别。而MacOS只识别IGPU的描述,USB 2.0与3.0接口的描述 WIN与Mac也同,等等等等。 所以我们来提取DSDT与SSDT并进行修改的目的不是单纯为了改正反编译与编译中产生的错误(其实也没有意义,我帖子开头说了,正常出厂的主板DSDT/SSDT不会那么糟糕,其实错误是反编译过程带来的),而是为了在我们提取出来的DSDT与SSDT文件基础上把为了适配windows的设备名称改成Mac识别的(win与Mac 支持共同的语法,我们大多只是来修改名称),打个比方,windows要加载I5 4590的核显,就在主板加电引导前去寻找DSDT和SSDT里面有关GFXO的东西,而要Mac会去寻找有关IGPU的东西,我们就把DSDT/SSDT里面有关GFXO的全给换成IGPU的!!懂了吧?以此类推,但这还不够。win与Mac为加载相同功能有时不单纯只是改个名称就行了,有时你还要屏蔽原始DSDT/SSDT里面的一些方法而自己重新写一套Mac识别的方法取而代之才能正常工作(请原谅我的用词不准确,一切为了表达粗略的意思),比如屏蔽显卡,比如让你的笔记本电脑电池电量反应正常,比如让你的休眠唤醒正常,让你的屏幕可以调节亮度。这些东西windows与Mac的路子是不一样的,我们折腾DSDT/SSDT目的核心就在此!!
2. DriverUEFI-64文件夹里必备的(可以多,但不能少),HFSPlus-64.efi(比VBoxHfs.efi好用),FSInject-64.efi,PartitionDxe-64.efi,DataHubDxe-64.efi,OsxFatBinaryDrv-64.efi,NTFS.efi,apfs.efi(这个是从MacOS里提取的,主要针对10.13,没这个见不到apfs分区),Aptiofix文件(OsxAptioFix2Drv-64,OsxAptioFix3Drv-64,OsxAptioFixDrv-64,OsxLowMemFixDrv-64,AptioMemoryFix,用于Aptio BIOS主板内存修正,,基本是必须的,5选1,推荐新出的aptioMemoryFix,选这个东西与你机子休眠关系比较大!)。如果你的机子精简到这程序不能进行安装界面看情况去加,加什么自己去扒帖子,运气好有人指点你。 这个文件夹在引导时起作用,进了系统就没它事了。  kexts文件夹里的kext(驱动)必备的就是FakeSMC.kext(从字面意思可以看出伪装作用)。运气好你的板子不需要多折腾先上这一个(某些技嘉。。),不行的话针对不同情况一个一个往上加(用不用自己修改的DSDT/SSDT文件也决定你加什么功能的kext)。
3. 如果你的DSDT/SSDT文件改的彻底,clover 的config.plist文件 fix的勾子都不需要(勾子的内容其实就是给DSDT打补丁)。
和我一样的新手们,对这些有不明白的地方可以交流一下,不至于好几天摸不着头脑!欢迎大神来指点迷津,指出错误的地方,不要让我了解的皮毛误了别人!!!谢谢!!!

Rank: 2Rank: 2

UID
1815721
帖子
464
PB币
5
贡献
0
技术
0
活跃
765
发表于 2018-3-25 08:38:50 IP属地广东 |显示全部楼层
谢谢分享,小白看完了

Rank: 2Rank: 2

UID
4567177
帖子
192
PB币
15
贡献
0
技术
0
活跃
270
发表于 2018-3-26 18:45:40 IP属地广东 |显示全部楼层
哇,好烦啊

Rank: 1

UID
4839538
帖子
6
PB币
0
贡献
0
技术
0
活跃
6
发表于 2018-3-26 23:38:01 IP属地北京 |显示全部楼层
加油,我也想知道,也可以多看看

Rank: 1

UID
1179079
帖子
59
PB币
107
贡献
0
技术
5
活跃
84
发表于 2018-3-27 14:20:23 IP属地河南 |显示全部楼层
2018.3.27 补充:   相信第一次成功进入MAC界面后,很少人的机器能完美运行,都要经过一段漫长的折腾,来完善。这里做为初阶小白,一直在摸索,把我折腾HP-1233TX的一些毛燥经验分享给更白的朋友。 进系统第一步,首先肯定确定三卡是否正常(显,声,网),显卡排第一位去驱动,HD3000+ATI 6470M(6750M),我的笔记本关掉集成显卡是不能工作的(意思就是独立显卡的运行依赖HD3000),而MAC不存在双显卡切换这一说,所以只能乖乖的用集显。机型设置MAC BOOK PRO 8,1,可以直接驱动;第二位就是网卡,有线或是无线一定先搞定一个凑合用(我都驱动了),加入RTL 8100.kext  可以用它直接上网做事情;声卡先不去搞(前期宝贵时间去搞更重要的东西!)。我的目的是能上网,不因为显卡问题死机,影响在MAC平台上操作。 准备好了折腾平台,第二步:  电源管理是整个电脑的核心,我要打响优化黑果第一枪! 去系统扩展里查看 appLPC.kext, AppleIntelCPUPowerManagement.kext,AppleIntelCPUPowerManagementClient.kext有没有加载,NO!! 翻看各种帖子,要驱动它们,感觉一劳永逸的方法就是改DSDT!(一些奇葩机型,打动态补丁不能解决的,改dsdt有可能解决),提取了DSDT 与7个SSDT,终端用 iasl -da -dl *.aml 反编译相对应的dsl文件,对它们用MacIASL 软件排错(只是排错,现在还没修改,教程论坛有)保存备用。  目标: 我要加载苹果自带的appleLPC.kext 电源管理。 win下用AIDA64 查看我电脑本身LPC ID 是8086,1c49,  mac系统里打开S\L\E 找到appleLPC.kext显示包内容发现info.plst里没有我的ID,我不想改系统原装的东西,我要仿冒!! 仿冒里面支持的8086,1e44(里面只要支持的都可以),打开DSDT 用WIN键+F键查找LPCB或0x001F0000 ,改成这样
  1. Device (LPCB)
  2. {
  3.     Name (_ADR,0x001F0000)
  4.     Method (_DSM, 4, NotSerialized)
  5.                 {
  6.                     Store (Package (0x06)
  7.                         {
  8.                             "device-id",
  9.                             Buffer (0x04)
  10.                             {
  11.                                  0x44, 0x1E, 0x00, 0x00
  12.                             },
  13.                             "name",
  14.                             Buffer (0x0D)
  15.                             {
  16.                                 "pci8086,1e44"
  17.                             },
  18.                             "IOName",
  19.                             Buffer (0x0D)
  20.                             {
  21.                                 "pci8086,1e44"
  22.                             }
  23.                         }, Local0)
  24.                     DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
  25.                     Return (Local0)
  26.                 }
  27. ..........
  28. }
复制代码
点排错会提示少DTGP这个函数,在DSDT表开头最后一个External (...............)下面加上DTGP的定义
  1.     Method (DTGP, 5, NotSerialized)
  2.     {
  3.         If (LEqual (Arg0, Buffer (0x10)
  4.                 {
  5.                     /* 0000 */    0xC6, 0xB7, 0xB5, 0xA0, 0x18, 0x13, 0x1C, 0x44,
  6.                     /* 0008 */    0xB0, 0xC9, 0xFE, 0x69, 0x5E, 0xAF, 0x94, 0x9B
  7.                 }))
  8.         {
  9.             If (LEqual (Arg1, One))
  10.             {
  11.                 If (LEqual (Arg2, Zero))
  12.                 {
  13.                     Store (Buffer (One)
  14.                         {
  15.                             0x03
  16.                         }, Arg4)
  17.                     Return (One)
  18.                 }
  19.                  If (LEqual (Arg2, One))
  20.                 {
  21.                     Return (One)
  22.                 }
  23.             }
  24.         }
  25.          Store (Buffer (One)
  26.             {
  27.                 0x00
  28.             }, Arg4)
  29.         Return (Zero)
  30.     }
复制代码
看了有的帖子提供的仿冒代码不全,会导致LPC还是无法正常加载,后来又看了一篇帖子多加了四行代码(name 与IOname 那里)。改完保存一下,iasl DSDT.dsl 得到DSDT.aml 放到变色龙根目录,设置plist,加载DSDT.aml,其它选项不变,进kexts文件夹下把NullCPUPowerManagement.kext   与 各种Powermanagement 之类的kext全删除,开机测试,看到管理员登陆界面我心里踏实多了,继续查看系统扩展,WOW! appLPC.kext, AppleIntelCPUPowerManagement.kext,AppleIntelCPUPowerManagementClient.kext 全部原生加载。 至次,电源管理告一段落。(用变色龙引导的话,路子一样,试过效果刚刚的)
     心脏供电问题解决了,接下我就来搞显卡这一块了,显卡这块工作量很大,涉及了屏蔽独显减少功耗,涉及了休眠/睡眠这一块的功能,今天先到这吧,有时间了我再分享一下第三步折腾显卡这一块的经历!!

Rank: 2Rank: 2

UID
4659142
帖子
63
PB币
123
贡献
0
技术
0
活跃
306
发表于 2018-3-27 23:16:53 IP属地广东 |显示全部楼层
写得很好,不过楼主你发错版块了啊,应该发到HighSierra版块的,这里没人看得到的。。。

Rank: 1

UID
1179079
帖子
59
PB币
107
贡献
0
技术
5
活跃
84
发表于 2018-3-28 15:13:10 IP属地北京 来自手机 |显示全部楼层
landix 发表于 2018-3-27 23:16
写得很好,不过楼主你发错版块了啊,应该发到HighSierra版块的,这里没人看得到的。。。

谢谢。开始搞自己的台式机时莫名其妙的把帖子开这里了,后来把家里的,亲戚的,朋友的各种老爷机,从10.8一路折腾到10.11路子相通也懒得换版块了,干脆把所有东西做个大杂烩放一起分享了。

Rank: 2Rank: 2

UID
618258
帖子
209
PB币
829
贡献
0
技术
0
活跃
331
发表于 2018-4-1 15:01:59 IP属地内蒙古 |显示全部楼层
楼主是天才,执着的天才

Rank: 1

UID
4681434
帖子
54
PB币
0
贡献
0
技术
0
活跃
83
发表于 2018-4-4 01:10:45 IP属地未知 |显示全部楼层
我也有此疑问

Rank: 1

UID
1765742
帖子
58
PB币
0
贡献
0
技术
3
活跃
153
发表于 2018-4-5 13:04:30 IP属地吉林 |显示全部楼层
加油,我也想知道,也可以多看看

Rank: 1

UID
1765742
帖子
58
PB币
0
贡献
0
技术
3
活跃
153
发表于 2018-4-5 13:04:46 IP属地吉林 |显示全部楼层
wode25 发表于 2018-3-25 08:38
谢谢分享,小白看完了

加油,我也想知道,也可以多看看

Rank: 2Rank: 2

UID
3032578
帖子
60
PB币
16
贡献
0
技术
2
活跃
36
发表于 2018-4-10 13:42:59 IP属地重庆 |显示全部楼层

谢谢分享,小白看完了

Rank: 1

UID
1179079
帖子
59
PB币
107
贡献
0
技术
5
活跃
84
发表于 2018-4-15 16:55:50 IP属地河南 |显示全部楼层
2018.3.27 补充:  测试了一段时间,分享一下显卡方面的折腾过程,第三步,完善显卡:
扒了大量的帖子,国内的,国外的,按上面的方法,有关EC的,有关_REG的,都尝试过了,但是都不能成功,最后尝试了把有关PEG0的SSDT-4整合到了DSDT中才成功把该死的独显屏蔽掉。虽然目的是屏蔽独显,但是强迫症的我还是选择了保留SSDT-4,放弃屏蔽它了,因为我对比发现,电池的耗电并没那么不可接受。这里我只分享整合SSDT-4到DSDT的过程吧。屏蔽独显的原理是在开机图形初始化时调用有关独显的~~PEG0.PEGP(有的机子名称不一样)下的_OFF方法,直接将独显kill在开机阶段。 整理一下思路,开机会调用显卡,休眠或是睡眠唤醒时也会调用显卡,目标很明确,找到开机时与唤醒时的_INI,将_OFF给它怼进去.因为要合并SSDT-4与DSDT,所以搜索SSDT-4中的\_SB.PCI0.PEG0 将里面有关PEG0的代码
  1. OperationRegion (RPCI, PCI_Config, Zero, 0xF0)
  2.         Field (RPCI, DWordAcc, Lock, Preserve)
  3.         {
  4.             Offset (0xB0),
  5.             ASPM,   2,
  6.                 ,   2,
  7.             LNKD,   1
  8.         }

  9.         OperationRegion (RPCX, SystemMemory, \_SB.PCI0.PEG0.PEGP.XBAS, 0x8400)
  10.         Field (RPCX, DWordAcc, NoLock, Preserve)
  11.         {
  12.             Offset (0x8214),
  13.             Offset (0x8216),
  14.             LNKS,   4
  15.         }

  16.         OperationRegion (GPIO, SystemIO, 0x0500, 0x60)
  17.         Field (GPIO, ByteAcc, Lock, Preserve)
  18.         {
  19.             Offset (0x0C),
  20.                 ,   4,
  21.                 ,   13,
  22.             PI17,   1,
  23.             Offset (0x38),
  24.                 ,   3,
  25.             PO35,   1,
  26.             PO36,   1,
  27.             PI37,   1,
  28.                 ,   13,
  29.             PO51,   1,
  30.             PO52,   1,
  31.             PO53,   1,
  32.             PO54,   1
  33.         }
复制代码
复制到DSDT中的PEG0中变成这样
  1. Device (PEG0)
  2.         {
  3.             OperationRegion (RPCI, PCI_Config, Zero, 0xF0)
  4.             Field (RPCI, DWordAcc, Lock, Preserve)
  5.             {
  6.                 Offset (0xB0),
  7.                 ASPM,   2,
  8.                     ,   2,
  9.                 LNKD,   1
  10.             }

  11.             OperationRegion (RPCX, SystemMemory, PEGP.XBAS, 0x8400)
  12.             Field (RPCX, DWordAcc, NoLock, Preserve)
  13.             {
  14.                 Offset (0x8214),
  15.                 Offset (0x8216),
  16.                 LNKS,   4
  17.             }

  18.             OperationRegion (GPIO, SystemIO, 0x0500, 0x60)
  19.             Field (GPIO, ByteAcc, Lock, Preserve)
  20.             {
  21.                 Offset (0x0C),
  22.                     ,   4,
  23.                     ,   13,
  24.                 PI17,   1,
  25.                 Offset (0x38),
  26.                     ,   3,
  27.                 PO35,   1,
  28.                 PO36,   1,
  29.                 PI37,   1,
  30.                     ,   13,
  31.                 PO51,   1,
  32.                 PO52,   1,
  33.                 PO53,   1,
  34.                 PO54,   1
  35.             }

  36.             Name (_ADR, 0x00010000)  // _ADR: Address
  37.             Name (_PRW, Package (0x02)  // _PRW: Power Resources for Wake
  38.             {
  39.                 0x09,
  40.                 0x04
  41.             })
  42.             Name (PR0A, Package (0x04)
  43.             {
  44.                 Package (0x04)
  45.                 {
  46.                     0xFFFF,
  47.                     Zero,
  48.                     LNKA,
  49.                     Zero
  50.                 },

  51.                 Package (0x04)
  52.                 {
  53.                     0xFFFF,
  54.                     One,
  55.                     LNKB,
  56.                     Zero
  57.                 },

  58.                 Package (0x04)
  59.                 {
  60.                     0xFFFF,
  61.                     0x02,
  62.                     LNKC,
  63.                     Zero
  64.                 },

  65.                 Package (0x04)
  66.                 {
  67.                     0xFFFF,
  68.                     0x03,
  69.                     LNKD,
  70.                     Zero
  71.                 }
  72.             })
  73.             Name (AR0A, Package (0x04)
  74.             {
  75.                 Package (0x04)
  76.                 {
  77.                     0xFFFF,
  78.                     Zero,
  79.                     Zero,
  80.                     0x10
  81.                 },

  82.                 Package (0x04)
  83.                 {
  84.                     0xFFFF,
  85.                     One,
  86.                     Zero,
  87.                     0x11
  88.                 },

  89.                 Package (0x04)
  90.                 {
  91.                     0xFFFF,
  92.                     0x02,
  93.                     Zero,
  94.                     0x12
  95.                 },

  96.                 Package (0x04)
  97.                 {
  98.                     0xFFFF,
  99.                     0x03,
  100.                     Zero,
  101.                     0x13
  102.                 }
  103.             })
  104.             Method (_PRT, 0, NotSerialized)  // _PRT: PCI Routing Table
  105.             {
  106.                 If (PICM)
  107.                 {
  108.                     Return (AR0A)
  109.                 }

  110.                 Return (PR0A)
  111.             }
  112.      }
复制代码
请注意,SSDT-4的路径是Scope (\_SB.PCI0.PEG0),DSDT的路径是Device (PEG0)。
然后在SSDT-4中搜索带有_INI与_OFF方法的  \_SB.PCI0.PEG0.PEGP  将模块里的_INI,_OFF 与PEGP代码
  1. Name (ELCT, Zero)
  2.         Name (HVID, Zero)
  3.         Name (HDID, Zero)
  4.         OperationRegion (PCIS, PCI_Config, Zero, 0x0100)
  5.         Field (PCIS, DWordAcc, Lock, Preserve)
  6.         {
  7.             DVID,   16,
  8.             Offset (0x2C),
  9.             SVID,   16,
  10.             SDID,   16,
  11.             Offset (0x4C),
  12.             WVID,   16,
  13.             WDID,   16
  14.         }

  15.         OperationRegion (GPIO, SystemIO, GBAS, 0x60)
  16.         Field (GPIO, ByteAcc, Lock, Preserve)
  17.         {
  18.             Offset (0x0C),
  19.             LVL0,   32,
  20.             Offset (0x38),
  21.             LVL1,   32,
  22.             Offset (0x48),
  23.             LVL2,   32
  24.         }

  25.         OperationRegion (PCAP, PCI_Config, EECP, 0x14)
  26.         Field (PCAP, DWordAcc, NoLock, Preserve)
  27.         {
  28.             Offset (0x10),
  29.             LCTL,   16
  30.         }

  31.         Method (_INI, 0, NotSerialized)  // _INI: Initialize
  32.         {
  33.             Store (Zero, \_SB.PCI0.PEG0.PEGP._ADR)
  34.         }
  35.         Method (_OFF, 0, Serialized)  // _OFF: Power Off
  36.         {
  37.             Store (LCTL, ELCT)
  38.             Store (SVID, HVID)
  39.             Store (SDID, HDID)
  40.             Store (One, LNKD)
  41.             While (LNotEqual (LNKS, Zero))
  42.             {
  43.                 Sleep (One)
  44.             }

  45.             Store (Zero, PO35)
  46.             Store (Zero, PO36)
  47.             Notify (\_SB.PCI0.PEG0, Zero)
  48.             Return (Zero)
  49.         }
复制代码
全复制(其它无关的不复制)到DSDT下的Device (PEGP)下,并把SSDT-4里面有关路径的都改成绝对路径,仔细观察代码变化。
  1. Device (PEGP)
  2.             {
  3.                 Name (ELCT, Zero)
  4.                 Name (HVID, Zero)
  5.                 Name (HDID, Zero)
  6.                 OperationRegion (SGOP, SystemMemory, 0x9CFBEE18, 0x4B)
  7.                 Field (SGOP, AnyAcc, Lock, Preserve)
  8.                 {
  9.                     EBAS,   32,
  10.                     CPSP,   32,
  11.                     EECP,   32,
  12.                     EVCP,   32,
  13.                     XBAS,   32,
  14.                     SGMD,   8,
  15.                     SGFL,   8,
  16.                     PWOK,   8,
  17.                     HLRS,   8,
  18.                     DSEL,   8,
  19.                     ESEL,   8,
  20.                     PSEL,   8,
  21.                     PWEN,   8,
  22.                     PRST,   8,
  23.                     MXD1,   32,
  24.                     MXD2,   32,
  25.                     MXD3,   32,
  26.                     MXD4,   32,
  27.                     MXD5,   32,
  28.                     MXD6,   32,
  29.                     MXD7,   32,
  30.                     MXD8,   32,
  31.                     GBAS,   16,
  32.                     APDT,   32,
  33.                     AHDT,   32,
  34.                     IHDT,   32
  35.                 }

  36.                 OperationRegion (PCIS, PCI_Config, Zero, 0x0100)
  37.                 Field (PCIS, DWordAcc, Lock, Preserve)
  38.                 {
  39.                     DVID,   16,
  40.                     Offset (0x2C),
  41.                     SVID,   16,
  42.                     SDID,   16,
  43.                     Offset (0x4C),
  44.                     WVID,   16,
  45.                     WDID,   16
  46.                 }

  47.                 OperationRegion (GPIO, SystemIO, GBAS, 0x60)
  48.                 Field (GPIO, ByteAcc, Lock, Preserve)
  49.                 {
  50.                     Offset (0x0C),
  51.                     LVL0,   32,
  52.                     Offset (0x38),
  53.                     LVL1,   32,
  54.                     Offset (0x48),
  55.                     LVL2,   32
  56.                 }

  57.                 OperationRegion (PCAP, PCI_Config, EECP, 0x14)
  58.                 Field (PCAP, DWordAcc, NoLock, Preserve)
  59.                 {
  60.                     Offset (0x10),
  61.                     LCTL,   16
  62.                 }

  63.                 Method (_INI, 0, NotSerialized)  // _INI: Initialize
  64.                 {
  65.                     Store (Zero, _ADR)
  66.                 }

  67.                 Method (_OFF, 0, Serialized)  // _OFF: Power Off
  68.                 {
  69.                     Store (LCTL, ELCT)
  70.                     Store (SVID, HVID)
  71.                     Store (SDID, HDID)
  72.                     Store (One, LNKD)
  73.                     While (LNotEqual (LNKS, Zero))
  74.                     {
  75.                         Sleep (One)
  76.                     }

  77.                     Store (Zero, PO35)
  78.                     Store (Zero, PO36)
  79.                     Notify (PEG0, Zero)
  80.                     Return (Zero)
  81.                 }

  82.                 Name (_ADR, Zero)  // _ADR: Address
  83.                 Name (_PRW, Package (0x02)  // _PRW: Power Resources for Wake
  84.                 {
  85.                     0x09,
  86.                     0x04
  87.                 })
  88.             }
复制代码
因为SSDT里面 \_SB.PCI0.PEG0.PEGP 可能不止一个,这都是描述PEGP的,都复制到DSDT的 Device (PEG0) 里面。这样SSDT-4与DSDT合并基本差不多了(直到编译不出错为止)。
接下来就是打常规补丁了,在_WAK前面新建个方法POFF这样调用方便多了
  1. Method (POFF, 0, NotSerialized)
  2.     {
  3.         \_SB.PCI0.PEG0.PEGP._OFF ()
  4.     }
复制代码
DSDT中搜_WAK,_INI  在里面加入POFF代码屏蔽独显。_INI可能不止一个,我在PEGP与和_OSI相关的_INI里面调用了POFF。终极结果如下:
  1. Scope (_SB.PCI0)
  2.     {
  3.         Method (_INI, 0, NotSerialized)  // _INI: Initialize
  4.         {
  5.             POFF ()
  6.             Store (0x07D0, OSYS)
  7.             If (CondRefOf (\_OSI, Local0))
  8.             {
  9.                 If (_OSI ("Linux"))
  10.                 {
  11.                     Store (0x03E8, OSYS)
  12.                 }
  13.                ......
  14.             }
  15.          }
  16.      }
复制代码
  1. Device (PEG0)
  2.         {
  3.             OperationRegion (RPCI, PCI_Config, Zero, 0xF0)
  4.             Field (RPCI, DWordAcc, Lock, Preserve)
  5.             {
  6.                 Offset (0xB0),
  7.                 ASPM,   2,
  8.                     ,   2,
  9.                 LNKD,   1
  10.             }

  11.             OperationRegion (RPCX, SystemMemory, PEGP.XBAS, 0x8400)
  12.             Field (RPCX, DWordAcc, NoLock, Preserve)
  13.             {
  14.                 Offset (0x8214),
  15.                 Offset (0x8216),
  16.                 LNKS,   4
  17.             }

  18.             OperationRegion (GPIO, SystemIO, 0x0500, 0x60)
  19.             Field (GPIO, ByteAcc, Lock, Preserve)
  20.             {
  21.                 Offset (0x0C),
  22.                     ,   4,
  23.                     ,   13,
  24.                 PI17,   1,
  25.                 Offset (0x38),
  26.                     ,   3,
  27.                 PO35,   1,
  28.                 PO36,   1,
  29.                 PI37,   1,
  30.                     ,   13,
  31.                 PO51,   1,
  32.                 PO52,   1,
  33.                 PO53,   1,
  34.                 PO54,   1
  35.             }

  36.             Name (_ADR, 0x00010000)  // _ADR: Address
  37.             Name (_PRW, Package (0x02)  // _PRW: Power Resources for Wake
  38.             {
  39.                 0x09,
  40.                 0x04
  41.             })
  42.             Name (PR0A, Package (0x04)
  43.             {
  44.                 Package (0x04)
  45.                 {
  46.                     0xFFFF,
  47.                     Zero,
  48.                     LNKA,
  49.                     Zero
  50.                 },

  51.                 Package (0x04)
  52.                 {
  53.                     0xFFFF,
  54.                     One,
  55.                     LNKB,
  56.                     Zero
  57.                 },

  58.                 Package (0x04)
  59.                 {
  60.                     0xFFFF,
  61.                     0x02,
  62.                     LNKC,
  63.                     Zero
  64.                 },

  65.                 Package (0x04)
  66.                 {
  67.                     0xFFFF,
  68.                     0x03,
  69.                     LNKD,
  70.                     Zero
  71.                 }
  72.             })
  73.             Name (AR0A, Package (0x04)
  74.             {
  75.                 Package (0x04)
  76.                 {
  77.                     0xFFFF,
  78.                     Zero,
  79.                     Zero,
  80.                     0x10
  81.                 },

  82.                 Package (0x04)
  83.                 {
  84.                     0xFFFF,
  85.                     One,
  86.                     Zero,
  87.                     0x11
  88.                 },

  89.                 Package (0x04)
  90.                 {
  91.                     0xFFFF,
  92.                     0x02,
  93.                     Zero,
  94.                     0x12
  95.                 },

  96.                 Package (0x04)
  97.                 {
  98.                     0xFFFF,
  99.                     0x03,
  100.                     Zero,
  101.                     0x13
  102.                 }
  103.             })
  104.             Method (_PRT, 0, NotSerialized)  // _PRT: PCI Routing Table
  105.             {
  106.                 If (PICM)
  107.                 {
  108.                     Return (AR0A)
  109.                 }

  110.                 Return (PR0A)
  111.             }

  112.             Device (PEGP)
  113.             {
  114.                 Name (ELCT, Zero)
  115.                 Name (HVID, Zero)
  116.                 Name (HDID, Zero)
  117.                 OperationRegion (SGOP, SystemMemory, 0x9CFBEE18, 0x4B)
  118.                 Field (SGOP, AnyAcc, Lock, Preserve)
  119.                 {
  120.                     EBAS,   32,
  121.                     CPSP,   32,
  122.                     EECP,   32,
  123.                     EVCP,   32,
  124.                     XBAS,   32,
  125.                     SGMD,   8,
  126.                     SGFL,   8,
  127.                     PWOK,   8,
  128.                     HLRS,   8,
  129.                     DSEL,   8,
  130.                     ESEL,   8,
  131.                     PSEL,   8,
  132.                     PWEN,   8,
  133.                     PRST,   8,
  134.                     MXD1,   32,
  135.                     MXD2,   32,
  136.                     MXD3,   32,
  137.                     MXD4,   32,
  138.                     MXD5,   32,
  139.                     MXD6,   32,
  140.                     MXD7,   32,
  141.                     MXD8,   32,
  142.                     GBAS,   16,
  143.                     APDT,   32,
  144.                     AHDT,   32,
  145.                     IHDT,   32
  146.                 }

  147.                 OperationRegion (PCIS, PCI_Config, Zero, 0x0100)
  148.                 Field (PCIS, DWordAcc, Lock, Preserve)
  149.                 {
  150.                     DVID,   16,
  151.                     Offset (0x2C),
  152.                     SVID,   16,
  153.                     SDID,   16,
  154.                     Offset (0x4C),
  155.                     WVID,   16,
  156.                     WDID,   16
  157.                 }

  158.                 OperationRegion (GPIO, SystemIO, GBAS, 0x60)
  159.                 Field (GPIO, ByteAcc, Lock, Preserve)
  160.                 {
  161.                     Offset (0x0C),
  162.                     LVL0,   32,
  163.                     Offset (0x38),
  164.                     LVL1,   32,
  165.                     Offset (0x48),
  166.                     LVL2,   32
  167.                 }

  168.                 OperationRegion (PCAP, PCI_Config, EECP, 0x14)
  169.                 Field (PCAP, DWordAcc, NoLock, Preserve)
  170.                 {
  171.                     Offset (0x10),
  172.                     LCTL,   16
  173.                 }

  174.                 Method (_INI, 0, NotSerialized)  // _INI: Initialize
  175.                 {
  176.                     POFF ()
  177.                     Store (Zero, _ADR)
  178.                 }

  179.                 Method (_OFF, 0, Serialized)  // _OFF: Power Off
  180.                 {
  181.                     Store (LCTL, ELCT)
  182.                     Store (SVID, HVID)
  183.                     Store (SDID, HDID)
  184.                     Store (One, LNKD)
  185.                     While (LNotEqual (LNKS, Zero))
  186.                     {
  187.                         Sleep (One)
  188.                     }

  189.                     Store (Zero, PO35)
  190.                     Store (Zero, PO36)
  191.                     Notify (PEG0, Zero)
  192.                     Return (Zero)
  193.                 }

  194.                 Name (_ADR, Zero)  // _ADR: Address
  195.                 Name (_PRW, Package (0x02)  // _PRW: Power Resources for Wake
  196.                 {
  197.                     0x09,
  198.                     0x04
  199.                 })
  200.             }
  201.       }
复制代码
然后找RM现成的亮度补丁、HD3000补丁打上去...... 还有其它的补丁有用的自己选择。
因为篇幅实在有限,我写得也不是教程,只能大致讲下我的一些思路和历程。黑果完善这块没有捷径,都得经过痛苦的学习......  我会把我的原始DSDT,原始SSDT与合并它们两个做好的DSDT一起上传,DSDT打了我认为该有的补丁,不局限于显卡,还包括了USB,IRQ,AUDIO,无线与有线网卡内建等等,有兴趣的朋友可以研究一下,最好把不足的地方补充出来,我也十分很想再进步。  当然我现在用得不是这套DSDT,有兴趣的可以留言,我再分享我用的这套没有屏蔽独显的DSDT与SSDT。
DSDT文件打包.zip (48.03 KB, 下载次数: 5)
注:只适用于HP G4 166E主板的笔记本 1233TX。

Rank: 1

UID
1179079
帖子
59
PB币
107
贡献
0
技术
5
活跃
84
发表于 2018-4-15 17:28:46 IP属地河南 |显示全部楼层
帖子审核较慢,忘了贴效果图

独显屏蔽效果

独显屏蔽效果

请勿使用多线程下载工具下载论坛附件!

Rank: 1

UID
4778003
帖子
9
PB币
0
贡献
0
技术
0
活跃
15
发表于 2018-4-16 18:11:43 IP属地江西 |显示全部楼层
谢谢分享!!!

Rank: 5Rank: 5Rank: 5

UID
1552438
帖子
1098
PB币
701
贡献
0
技术
0
活跃
1642
发表于 2018-4-17 23:25:54 IP属地广东 |显示全部楼层
楼主牛人啊,我都看不明白一行行的代码,我也想改我的GMA4500显卡,现在能显示最佳分辨率了,但不能真正的驱动,卡的很。想通过DSDT修改下显卡,看能不能驱动起来。

Rank: 1

UID
1179079
帖子
59
PB币
107
贡献
0
技术
5
活跃
84
发表于 2018-4-18 09:39:09 IP属地河南 |显示全部楼层
zaner.j 发表于 2018-4-17 23:25
楼主牛人啊,我都看不明白一行行的代码,我也想改我的GMA4500显卡,现在能显示最佳分辨率了,但不能真正的驱 ...


改DSDT的一个目的就是让你的设备ID或是路径被MAC识别用它自带的驱动运行你的硬件。

你这个和DSDT关系已经不是很大了,因为4500的驱动,MacOS里面就没有,需要第三方来加载。找别人做好的吧。

Rank: 1

UID
4839267
帖子
27
PB币
0
贡献
0
技术
0
活跃
49
发表于 2018-4-19 00:21:20 IP属地广东 |显示全部楼层
谢谢楼主!谢谢楼主!
回顶部
Copyright (C) 2005-2024 pcbeta.com, All rights reserved
Powered by Discuz!  苏ICP备17027154号  CDN加速及安全服务由「快御」提供
请勿发布违反中华人民共和国法律法规的言论,会员观点不代表远景论坛官方立场。
远景在线 | 远景论坛 | 苹果论坛 | Win11论坛 | Win10论坛 | Win8论坛 | Win7论坛 | WP论坛 | Office论坛