上次只是发了一系列工具,后来发现没有贴上附件,已经在后续附上这次来发一个简易的dsdt教程让不懂得小白也可以自己制作本机DSDT
提取dsdt
基本修改
DTGP方法编译器找不到,我们要添加进去,很多地方修改DSDT都需要引用这个DTGP,所以我们加在开头的位置,搜索DefinitionBlock ("dsdt.aml", "DSDT", 1, "HPQOEM", "SLIC-MPC", 0x00000001)在第一个括号下面加入DTGP,代码如下:
Method (DTGP, 5, NotSerialized)
{
If (LEqual (Arg0, Buffer (0x10)
{
0xC6, 0xB7, 0xB5, 0xA0, 0x18, 0x13, 0x1C, 0x44,
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)
} 此文档如有错误之处,还请高手指出。 一. 解决BIOS重置 查找RTC字段,将里面的 0x04, //Length 改成 0x02, //Length【有两处的要改两处】 ------------------------------------------------------------------------------------------------------------ 分割线 ------------------------------------------------------------------------------------------------------------ 二.LPCB电源管理【有些主板原生支持电池管理(不用Nullintel且没删除SLE下的intelpower….kext也能进系统),如果原生支持电源管理,跳过此处】 最近比较新的主板很少能通过修改dsdt来加载电源管理,如果添加以下代码后还不能加载电源管理,别问为什么,这很正常。那就乖乖对kext打补丁吧 搜索 0x001F0000 加入(2916) Device (PX40) { Name (_ADR, 0x001F0000) Method (_DSM, 4, NotSerialized) { Store (Package (0x02) { "device-id", Buffer (0x04) { 0x16, 0x29, 0x00, 0x00 } }, Local0) DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0)) Return (Local0) } OperationRegion (PREV, PCI_Config, 0x08, One) Scope (¥) { Field (¥_SB.PCI0.PX40.PREV, ByteAcc, NoLock, Preserve) { REV0, 8 } } 或加入(3A18) Device (PX40) { Name (_ADR, 0x001F0000) Method (_DSM, 4, NotSerialized) { Store (Package (0x02) { "device-id", Buffer (0x04) { 0x18, 0x3A, 0x00, 0x00 } }, Local0) DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0)) Return (Local0) } OperationRegion (PREV, PCI_Config, 0x08, One) Scope (¥) { Field (¥_SB.PCI0.PX40.PREV, ByteAcc, NoLock, Preserve) { REV0, 8 } } 如果不能通过修改DSDT来加载原生电源管理,可以使用以下软件对kext打补丁。
------------------------------------------------------------------------------------------------------------ 分割线 ------------------------------------------------------------------------------------------------------------ 三.防止声音变调: A、查找 PNP0000 修改 /* IRQNoFlags () {2} */ 或直接删除这两行 IRQNoFlags () {2} B、查找 PNP0100 修改 /* IRQNoFlags () {0} */ 或直接删除这两行 IRQNoFlags () {0} ------------------------------------------------------------------------------------------------------------ 分割线 ------------------------------------------------------------------------------------------------------------ 接下来内建网卡、添加仿冒声卡和显卡代码需加入到相应的硬件位置,在修改之前先教一下如何找硬件位置。先上我的声卡、显卡和本地网卡位置图
确定硬件位置主要看红色图里的内容,圈里的内容表示 “硬件名称@地址“ 比如我的显卡位置可提取出3个@字段 PCI0@0、PEGP@1、GFX0@0 @0表示硬件地址为Name (_ADR, Zero) @1表示硬件地址为Name (_ADR, 0x00010000) 再比如我的本地网卡 PCI0@0、RP03@1C,5 、enthernet@0 @1C,5表示硬件地址Name (_ADR, 0x001C0005) 而enthernet@0比较特殊,你会发现在DSDT里搜不到这个Device,因为这样导致你的网卡没有内建,无法登陆Appstroe,而内建网上就是为它指定一个名称,苹果指定为GIGE【硬件地址为Name (_ADR, Zero) 】 ,完整代码看下文。 我的声卡位置 Device (PCI0)【硬件地址Name (_ADR, Zero)】—Device (HDEF) 【硬件地址Name (_ADR, 0x001B0000)】 我的显卡位置 Device (PCI0)【硬件地址Name (_ADR, Zero)】—Device (PEGP) 【硬件地址Name (_ADR, 0x00010000)】—Device (GFX0) 【硬件地址Name (_ADR, Zero)】 再上一张没指定硬件名称的声卡位置IO图 我们可以通过图可以提取声卡的两个@字段 PCI0@0,pci8086,1c20@1B 因为在DSDT里没有为声卡指定名称、硬件地址,所以pci8086,1c20这个名称也是系统随机命名的,如果我们要添加声卡代码到DSDT就要为其指定一个名称,并标明它的硬件地址【Name (_ADR, 0x001B0000)】。声卡的硬件名称我们统一命名为HDEF,所以我们在PCI0下添加 Device (HDEF) { Name (_ADR, 0x001B0000) /*在此处添加你的内容*/ } 看到这里应该知道怎么找硬件位置了吧,知道硬件位置就可以进行以下操作了。 ------------------------------------------------------------------------------------------------------------ 分割线 ------------------------------------------------------------------------------------------------------------ 五.内建网卡 没内建网卡的话,登陆AppStore时候会提示 打开IORegistryExplorer,键入io比如上图我的本地网卡位置在RP03@1C,5 、enthernet@0 搜索RP03 在Name (_ADR, 0x001C0005)的下一行添加 Device (GIGE) { Name (_ADR, Zero) } 当然,并不是所有的网卡硬件位置都是在Name (_ADR, Zero),如果是RP03@1C,5 、enthernet@1,那内建代码应该是 Device (GIGE) { Name (_ADR, 0x00010000) } 具体情况按照上面所述给网卡指定硬件位置 ------------------------------------------------------------------------------------------------------------ 分割线 ------------------------------------------------------------------------------------------------------------ 六.添加仿冒声卡信息【只适于Realtek ALC系列,用万能声卡的略过此处,否则会五国!!】 声卡硬件地址一般都是0x001B0000,如果搜不到该地址只能通过使用万能声卡按照上面的方法找到声卡位置。 找到硬件位置后在Name (_ADR, 0xXXXXXXX) 下一行添加 Method (_DSM, 4, NotSerialized) { Store (Package (0x06) { "layout-id", Buffer (0x04) { 0x77, 0x03, 0x00, 0x00//此处值看下面 }, "device-name", Buffer (0x0F) { "Realtek ALC887"//此处名称自定义 }, "PinConfigurations", Buffer (Zero) {} }, Local0) DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0)) Return (Local0) } 首先在win查看硬件ID 我的声卡设备ID是 887 layout-id 为 0x77, 0x03, 0x00, 0x00 十进制:0269 十六进制:010D layout-id: 0x0D, 0x01, 0x00, 0x00 十进制:0662 十六进制:0296 layout-id: 0x96, 0x02, 0x00, 0x00 十进制:0663 十六进制:0297 layout-id: 0x97, 0x02, 0x00, 0x00 十进制:0664 十六进制:0298 layout-id: 0x98, 0x02, 0x00, 0x00 十进制:0887 十六进制:0377 layout-id: 0x77, 0x03, 0x00, 0x00 十进制:0888 十六进制:0378 layout-id: 0x78, 0x03, 0x00, 0x00 十进制:0889 十六进制:0379 layout-id: 0x79, 0x03, 0x00, 0x00 修改警告命令 Else
{
Return (Zero)
} 和 在跟括号加 Return (Zero) 再附上一劳永逸的dsdt方案
一劳永逸dsdt.rar
(1.02 MB, 下载次数: 120)
|