我的黑果是clover+原版10.13.3 配置config+DSDT/SSDT 的一点疑问
版主好,各位大老好。接触黑果的时间不长,自己的一台老本子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还用不用勾上呢?
相信一定也有和我一样困惑的小白,还请大咖们不吝赐教,谢谢你们抽空把帖子看完,谢谢!!
做一个补充:
连续熬了几天的夜,都快被家人骂死了,目前进展是 MSIB85M-E45I5 4590 成功安装上了原装10.13.3, clover 机型 i MAC 15,1 . 显卡正常 有水波纹,1536M显存,网卡内建正常,可以上iTunes听歌,可以进APP下载QQ.
声卡8111成功驱动后置面板,音箱与麦克风完美(成功驱动appleHDA).
目前问题: 1,前置音频没有驱动(没有内建耳机选项),尝试过adummyHDA 与补丁修复,更改ID5,7,9 ,没有效果。2,休眠或是睡眠唤醒后卡顿,或是死机。 尝试过DARKWAKE=0,不行,尝试过删除usbinjectall 也没有解决,有大佬指点一下么? 自己来帖子里补充,所有知道的东西都是自己一点一滴了解的,学的,如有不正确的地方请大牛们指出,更正。
解答我帖子里的第一个疑问,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打补丁)。
和我一样的新手们,对这些有不明白的地方可以交流一下,不至于好几天摸不着头脑!欢迎大神来指点迷津,指出错误的地方,不要让我了解的皮毛误了别人!!!谢谢!!!
谢谢分享,小白看完了 哇,好烦啊 加油,我也想知道,也可以多看看 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 ,改成这样Device (LPCB)
{
Name (_ADR,0x001F0000)
Method (_DSM, 4, NotSerialized)
{
Store (Package (0x06)
{
"device-id",
Buffer (0x04)
{
0x44, 0x1E, 0x00, 0x00
},
"name",
Buffer (0x0D)
{
"pci8086,1e44"
},
"IOName",
Buffer (0x0D)
{
"pci8086,1e44"
}
}, Local0)
DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
Return (Local0)
}
..........
}点排错会提示少DTGP这个函数,在DSDT表开头最后一个External (...............)下面加上DTGP的定义 Method (DTGP, 5, NotSerialized)
{
If (LEqual (Arg0, Buffer (0x10)
{
/* 0000 */ 0xC6, 0xB7, 0xB5, 0xA0, 0x18, 0x13, 0x1C, 0x44,
/* 0008 */ 0xB0, 0xC9, 0xFE, 0x69, 0x5E, 0xAF, 0x94, 0x9B
}))
{
If (LEqual (Arg1, One))
{
If (LEqual (Arg2, Zero))
{
Store (Buffer (One)
{
0x03
}, Arg4)
Return (One)
}
If (LEqual (Arg2, One))
{
Return (One)
}
}
}
Store (Buffer (One)
{
0x00
}, Arg4)
Return (Zero)
}看了有的帖子提供的仿冒代码不全,会导致LPC还是无法正常加载,后来又看了一篇帖子多加了四行代码(name 与IOname 那里)。改完保存一下,iasl DSDT.dsl 得到DSDT.aml 放到变色龙根目录,设置plist,加载DSDT.aml,其它选项不变,进kexts文件夹下把NullCPUPowerManagement.kext 与 各种Powermanagement 之类的kext全删除,开机测试,看到管理员登陆界面我心里踏实多了,继续查看系统扩展,WOW! appLPC.kext, AppleIntelCPUPowerManagement.kext,AppleIntelCPUPowerManagementClient.kext 全部原生加载。 至次,电源管理告一段落。(用变色龙引导的话,路子一样,试过效果刚刚的)
心脏供电问题解决了,接下我就来搞显卡这一块了,显卡这块工作量很大,涉及了屏蔽独显减少功耗,涉及了休眠/睡眠这一块的功能,今天先到这吧,有时间了我再分享一下第三步折腾显卡这一块的经历!! 写得很好,不过楼主你发错版块了啊,应该发到HighSierra版块的,这里没人看得到的。。。 landix 发表于 2018-3-27 23:16
写得很好,不过楼主你发错版块了啊,应该发到HighSierra版块的,这里没人看得到的。。。
谢谢。开始搞自己的台式机时莫名其妙的把帖子开这里了,后来把家里的,亲戚的,朋友的各种老爷机,从10.8一路折腾到10.11路子相通也懒得换版块了,干脆把所有东西做个大杂烩放一起分享了。 楼主是天才,执着的天才{:5_591:} 我也有此疑问 加油,我也想知道,也可以多看看 wode25 发表于 2018-3-25 08:38 https://www.pcbeta.com/static/image/common/back.gif
谢谢分享,小白看完了
加油,我也想知道,也可以多看看
谢谢分享,小白看完了 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的代码OperationRegion (RPCI, PCI_Config, Zero, 0xF0)
Field (RPCI, DWordAcc, Lock, Preserve)
{
Offset (0xB0),
ASPM, 2,
, 2,
LNKD, 1
}
OperationRegion (RPCX, SystemMemory, \_SB.PCI0.PEG0.PEGP.XBAS, 0x8400)
Field (RPCX, DWordAcc, NoLock, Preserve)
{
Offset (0x8214),
Offset (0x8216),
LNKS, 4
}
OperationRegion (GPIO, SystemIO, 0x0500, 0x60)
Field (GPIO, ByteAcc, Lock, Preserve)
{
Offset (0x0C),
, 4,
, 13,
PI17, 1,
Offset (0x38),
, 3,
PO35, 1,
PO36, 1,
PI37, 1,
, 13,
PO51, 1,
PO52, 1,
PO53, 1,
PO54, 1
}复制到DSDT中的PEG0中变成这样Device (PEG0)
{
OperationRegion (RPCI, PCI_Config, Zero, 0xF0)
Field (RPCI, DWordAcc, Lock, Preserve)
{
Offset (0xB0),
ASPM, 2,
, 2,
LNKD, 1
}
OperationRegion (RPCX, SystemMemory, PEGP.XBAS, 0x8400)
Field (RPCX, DWordAcc, NoLock, Preserve)
{
Offset (0x8214),
Offset (0x8216),
LNKS, 4
}
OperationRegion (GPIO, SystemIO, 0x0500, 0x60)
Field (GPIO, ByteAcc, Lock, Preserve)
{
Offset (0x0C),
, 4,
, 13,
PI17, 1,
Offset (0x38),
, 3,
PO35, 1,
PO36, 1,
PI37, 1,
, 13,
PO51, 1,
PO52, 1,
PO53, 1,
PO54, 1
}
Name (_ADR, 0x00010000)// _ADR: Address
Name (_PRW, Package (0x02)// _PRW: Power Resources for Wake
{
0x09,
0x04
})
Name (PR0A, Package (0x04)
{
Package (0x04)
{
0xFFFF,
Zero,
LNKA,
Zero
},
Package (0x04)
{
0xFFFF,
One,
LNKB,
Zero
},
Package (0x04)
{
0xFFFF,
0x02,
LNKC,
Zero
},
Package (0x04)
{
0xFFFF,
0x03,
LNKD,
Zero
}
})
Name (AR0A, Package (0x04)
{
Package (0x04)
{
0xFFFF,
Zero,
Zero,
0x10
},
Package (0x04)
{
0xFFFF,
One,
Zero,
0x11
},
Package (0x04)
{
0xFFFF,
0x02,
Zero,
0x12
},
Package (0x04)
{
0xFFFF,
0x03,
Zero,
0x13
}
})
Method (_PRT, 0, NotSerialized)// _PRT: PCI Routing Table
{
If (PICM)
{
Return (AR0A)
}
Return (PR0A)
}
}请注意,SSDT-4的路径是Scope (\_SB.PCI0.PEG0),DSDT的路径是Device (PEG0)。
然后在SSDT-4中搜索带有_INI与_OFF方法的\_SB.PCI0.PEG0.PEGP将模块里的_INI,_OFF 与PEGP代码Name (ELCT, Zero)
Name (HVID, Zero)
Name (HDID, Zero)
OperationRegion (PCIS, PCI_Config, Zero, 0x0100)
Field (PCIS, DWordAcc, Lock, Preserve)
{
DVID, 16,
Offset (0x2C),
SVID, 16,
SDID, 16,
Offset (0x4C),
WVID, 16,
WDID, 16
}
OperationRegion (GPIO, SystemIO, GBAS, 0x60)
Field (GPIO, ByteAcc, Lock, Preserve)
{
Offset (0x0C),
LVL0, 32,
Offset (0x38),
LVL1, 32,
Offset (0x48),
LVL2, 32
}
OperationRegion (PCAP, PCI_Config, EECP, 0x14)
Field (PCAP, DWordAcc, NoLock, Preserve)
{
Offset (0x10),
LCTL, 16
}
Method (_INI, 0, NotSerialized)// _INI: Initialize
{
Store (Zero, \_SB.PCI0.PEG0.PEGP._ADR)
}
Method (_OFF, 0, Serialized)// _OFF: Power Off
{
Store (LCTL, ELCT)
Store (SVID, HVID)
Store (SDID, HDID)
Store (One, LNKD)
While (LNotEqual (LNKS, Zero))
{
Sleep (One)
}
Store (Zero, PO35)
Store (Zero, PO36)
Notify (\_SB.PCI0.PEG0, Zero)
Return (Zero)
}全复制(其它无关的不复制)到DSDT下的Device (PEGP)下,并把SSDT-4里面有关路径的都改成绝对路径,仔细观察代码变化。Device (PEGP)
{
Name (ELCT, Zero)
Name (HVID, Zero)
Name (HDID, Zero)
OperationRegion (SGOP, SystemMemory, 0x9CFBEE18, 0x4B)
Field (SGOP, AnyAcc, Lock, Preserve)
{
EBAS, 32,
CPSP, 32,
EECP, 32,
EVCP, 32,
XBAS, 32,
SGMD, 8,
SGFL, 8,
PWOK, 8,
HLRS, 8,
DSEL, 8,
ESEL, 8,
PSEL, 8,
PWEN, 8,
PRST, 8,
MXD1, 32,
MXD2, 32,
MXD3, 32,
MXD4, 32,
MXD5, 32,
MXD6, 32,
MXD7, 32,
MXD8, 32,
GBAS, 16,
APDT, 32,
AHDT, 32,
IHDT, 32
}
OperationRegion (PCIS, PCI_Config, Zero, 0x0100)
Field (PCIS, DWordAcc, Lock, Preserve)
{
DVID, 16,
Offset (0x2C),
SVID, 16,
SDID, 16,
Offset (0x4C),
WVID, 16,
WDID, 16
}
OperationRegion (GPIO, SystemIO, GBAS, 0x60)
Field (GPIO, ByteAcc, Lock, Preserve)
{
Offset (0x0C),
LVL0, 32,
Offset (0x38),
LVL1, 32,
Offset (0x48),
LVL2, 32
}
OperationRegion (PCAP, PCI_Config, EECP, 0x14)
Field (PCAP, DWordAcc, NoLock, Preserve)
{
Offset (0x10),
LCTL, 16
}
Method (_INI, 0, NotSerialized)// _INI: Initialize
{
Store (Zero, _ADR)
}
Method (_OFF, 0, Serialized)// _OFF: Power Off
{
Store (LCTL, ELCT)
Store (SVID, HVID)
Store (SDID, HDID)
Store (One, LNKD)
While (LNotEqual (LNKS, Zero))
{
Sleep (One)
}
Store (Zero, PO35)
Store (Zero, PO36)
Notify (PEG0, Zero)
Return (Zero)
}
Name (_ADR, Zero)// _ADR: Address
Name (_PRW, Package (0x02)// _PRW: Power Resources for Wake
{
0x09,
0x04
})
}因为SSDT里面 \_SB.PCI0.PEG0.PEGP 可能不止一个,这都是描述PEGP的,都复制到DSDT的 Device (PEG0) 里面。这样SSDT-4与DSDT合并基本差不多了(直到编译不出错为止)。
接下来就是打常规补丁了,在_WAK前面新建个方法POFF这样调用方便多了Method (POFF, 0, NotSerialized)
{
\_SB.PCI0.PEG0.PEGP._OFF ()
}DSDT中搜_WAK,_INI在里面加入POFF代码屏蔽独显。_INI可能不止一个,我在PEGP与和_OSI相关的_INI里面调用了POFF。终极结果如下:Scope (_SB.PCI0)
{
Method (_INI, 0, NotSerialized)// _INI: Initialize
{
POFF ()
Store (0x07D0, OSYS)
If (CondRefOf (\_OSI, Local0))
{
If (_OSI ("Linux"))
{
Store (0x03E8, OSYS)
}
......
}
}
}Device (PEG0)
{
OperationRegion (RPCI, PCI_Config, Zero, 0xF0)
Field (RPCI, DWordAcc, Lock, Preserve)
{
Offset (0xB0),
ASPM, 2,
, 2,
LNKD, 1
}
OperationRegion (RPCX, SystemMemory, PEGP.XBAS, 0x8400)
Field (RPCX, DWordAcc, NoLock, Preserve)
{
Offset (0x8214),
Offset (0x8216),
LNKS, 4
}
OperationRegion (GPIO, SystemIO, 0x0500, 0x60)
Field (GPIO, ByteAcc, Lock, Preserve)
{
Offset (0x0C),
, 4,
, 13,
PI17, 1,
Offset (0x38),
, 3,
PO35, 1,
PO36, 1,
PI37, 1,
, 13,
PO51, 1,
PO52, 1,
PO53, 1,
PO54, 1
}
Name (_ADR, 0x00010000)// _ADR: Address
Name (_PRW, Package (0x02)// _PRW: Power Resources for Wake
{
0x09,
0x04
})
Name (PR0A, Package (0x04)
{
Package (0x04)
{
0xFFFF,
Zero,
LNKA,
Zero
},
Package (0x04)
{
0xFFFF,
One,
LNKB,
Zero
},
Package (0x04)
{
0xFFFF,
0x02,
LNKC,
Zero
},
Package (0x04)
{
0xFFFF,
0x03,
LNKD,
Zero
}
})
Name (AR0A, Package (0x04)
{
Package (0x04)
{
0xFFFF,
Zero,
Zero,
0x10
},
Package (0x04)
{
0xFFFF,
One,
Zero,
0x11
},
Package (0x04)
{
0xFFFF,
0x02,
Zero,
0x12
},
Package (0x04)
{
0xFFFF,
0x03,
Zero,
0x13
}
})
Method (_PRT, 0, NotSerialized)// _PRT: PCI Routing Table
{
If (PICM)
{
Return (AR0A)
}
Return (PR0A)
}
Device (PEGP)
{
Name (ELCT, Zero)
Name (HVID, Zero)
Name (HDID, Zero)
OperationRegion (SGOP, SystemMemory, 0x9CFBEE18, 0x4B)
Field (SGOP, AnyAcc, Lock, Preserve)
{
EBAS, 32,
CPSP, 32,
EECP, 32,
EVCP, 32,
XBAS, 32,
SGMD, 8,
SGFL, 8,
PWOK, 8,
HLRS, 8,
DSEL, 8,
ESEL, 8,
PSEL, 8,
PWEN, 8,
PRST, 8,
MXD1, 32,
MXD2, 32,
MXD3, 32,
MXD4, 32,
MXD5, 32,
MXD6, 32,
MXD7, 32,
MXD8, 32,
GBAS, 16,
APDT, 32,
AHDT, 32,
IHDT, 32
}
OperationRegion (PCIS, PCI_Config, Zero, 0x0100)
Field (PCIS, DWordAcc, Lock, Preserve)
{
DVID, 16,
Offset (0x2C),
SVID, 16,
SDID, 16,
Offset (0x4C),
WVID, 16,
WDID, 16
}
OperationRegion (GPIO, SystemIO, GBAS, 0x60)
Field (GPIO, ByteAcc, Lock, Preserve)
{
Offset (0x0C),
LVL0, 32,
Offset (0x38),
LVL1, 32,
Offset (0x48),
LVL2, 32
}
OperationRegion (PCAP, PCI_Config, EECP, 0x14)
Field (PCAP, DWordAcc, NoLock, Preserve)
{
Offset (0x10),
LCTL, 16
}
Method (_INI, 0, NotSerialized)// _INI: Initialize
{
POFF ()
Store (Zero, _ADR)
}
Method (_OFF, 0, Serialized)// _OFF: Power Off
{
Store (LCTL, ELCT)
Store (SVID, HVID)
Store (SDID, HDID)
Store (One, LNKD)
While (LNotEqual (LNKS, Zero))
{
Sleep (One)
}
Store (Zero, PO35)
Store (Zero, PO36)
Notify (PEG0, Zero)
Return (Zero)
}
Name (_ADR, Zero)// _ADR: Address
Name (_PRW, Package (0x02)// _PRW: Power Resources for Wake
{
0x09,
0x04
})
}
}然后找RM现成的亮度补丁、HD3000补丁打上去...... 还有其它的补丁有用的自己选择。
因为篇幅实在有限,我写得也不是教程,只能大致讲下我的一些思路和历程。黑果完善这块没有捷径,都得经过痛苦的学习......我会把我的原始DSDT,原始SSDT与合并它们两个做好的DSDT一起上传,DSDT打了我认为该有的补丁,不局限于显卡,还包括了USB,IRQ,AUDIO,无线与有线网卡内建等等,有兴趣的朋友可以研究一下,最好把不足的地方补充出来,我也十分很想再进步。当然我现在用得不是这套DSDT,有兴趣的可以留言,我再分享我用的这套没有屏蔽独显的DSDT与SSDT。
注:只适用于HP G4 166E主板的笔记本 1233TX。 帖子审核较慢,忘了贴效果图
谢谢分享!!! 楼主牛人啊,我都看不明白一行行的代码,我也想改我的GMA4500显卡,现在能显示最佳分辨率了,但不能真正的驱动,卡的很。想通过DSDT修改下显卡,看能不能驱动起来。 zaner.j 发表于 2018-4-17 23:25 https://www.pcbeta.com/static/image/common/back.gif
楼主牛人啊,我都看不明白一行行的代码,我也想改我的GMA4500显卡,现在能显示最佳分辨率了,但不能真正的驱 ...
改DSDT的一个目的就是让你的设备ID或是路径被MAC识别用它自带的驱动运行你的硬件。
你这个和DSDT关系已经不是很大了,因为4500的驱动,MacOS里面就没有,需要第三方来加载。找别人做好的吧。 谢谢楼主!谢谢楼主!
页:
[1]
2