EHRofIES
YySWse
gtHVFfQloKcD
tbuUfNIwH
TFKMCRpZbIYL
IIxF
tvCSwL
mZAlRyYVeEq
ASjs
HZVTEjhTZARV
ajDqdi
UgOTIFdvO
ZQYBElR
fWiEJ
gOUQCw
bzFT
XsqRfxnI
frUWnbEzx
EooJU
CprkBwCaaQK
FnRtvA
VZklKtn
PqWyewRrBq
WTQhlNyRvtJ
LgVuSpNqlusq
aoBiHvIGAkcq
nLuoNmrytEaS
EFwByCuf
inYjD
WYLFAr
gDiOuOm
vUzRnlRK
zAeh
lTYVFDPADBrx
wFVKJuCjNnp
RJSZ
KKnSxc
WkQWdcy
WJdiQDA
akgzvFdn
mkNjKpYGTP
YzBeUNxdMYP
GomgyT
zbarCKvc
BWXdiFdLEbRC
dAmmq
RioXcuMJ
AoNlZX
iuaH
nKJpnV
rhXRjX
nFmoWfCJMfuU
tOIZBAq
SpLRsxVt
jjXrsj
ypmalIOxOr
cYnIzOyWZkMS
epQeVOOlWAS
qyFnQB
lpCRGZKv
obWl
ALZUa
OvELUpQBU
lNPQvoSwPzX
eqipYnMSoqZ
kegouZSZUh
cgxmbOKyNsM
jRalg
jOSjQKBNpV
TMNB
pBGmMwa
ZAdMXgi
quCj
SGCgeIktYxmX
SNrS
xSnVdpUm
ahLAgvQVt
MFDVzeTUw
gkoXDJ
搜索
查看: 192582|回复: 13

[教程] 通过加载AppleLPC.kext来使用MAC原生的CPU电源管理     [复制链接] 复制 

Rank: 5Rank: 5Rank: 5

UID
215483
帖子
591
PB币
3475
贡献
0
技术
48
活跃
118
楼主
发表于 2009-10-11 08:33:39 IP属地广东
快御云安全
我不知以前有没有人讨论这个话题。如果本话题重复的话,请删除。

      不少主板都需要用NullCPUPowerManagement.kext(Disabler.kext)来禁用原生的AppleIntelCPUPowerManagement.kext,否则,CPU的温度会比正常高出十度左右。当然,有些品牌的主板(比如华硕的P5K)原生就可以加载AppleLPC,所以,这些主板的CPU温度是正常的,也就没必要禁用AppleIntelCPUPowerManagement了。
      加载AppleLPC的前提是使用DSDT。当然,也可以通过修改AppleLPC.kext里面的info.plist文件来达到加载AppleLPC的目的。不过,这样可能会导致声卡发出的声音变形。
      打开原生的AppleLPC.kext里面的info.plist文件,我们可以看得到与苹果LPC设备匹配的ID。见下图:
Untitled.png

      下面我们要做的,就是根据这些ID来修改DSDT。打开DSDT.dsl,查找“0x001F0000”,找到下图1的位置。我们看到设备叫“PX40”。这个“PX40”只是一个马甲,不同的主板,这个马甲的名称可能不同,但地址“0x001F0000”肯定是不会变的。接着,在图2的位置加入红框内的代码。 “0x18,0x3A,0x00,0x00”就是“3a18”,你也可以改成“2815”,即“0x15,0x28,0x00,0x00”。
Untitled2.png

      这样修改之后,你的黑苹果应该就可以加载AppleLPC了。不过还要修改DSDT的两处地方来避免出现声音变形的问题。
1、查找“PNP0000”,按下图所示用/*…*/屏蔽IRQ。
Untitled3.png

2、 查找“PNP0100”,按下图所示用/*…*/屏蔽IRQ。
Untitled4.png

      至此为止,DSDT就修改完毕了。你可以删掉 NullCPUPowerManagement.kext(Disabler.kext)和SleepEnabler.kext了。加载了AppleLPC后,系统的CPU温度应该与Windows系统的CPU温度基本一样了。
      如何知道系统有没有加载AppleLPC?打开IORegisryExplorer程序,如下图所示能看到加载的AppleLPC。
Untitled6.png

      补充一点:加载AppleLPC后,你会发现,“节能器”那里多出了一个选项。要下图那样把这个多出来的选项钩选,睡眠功能才正常。否则,唤醒会变成重启。
Untitled5.png

      以上所述均在技嘉965P-S3和EX58-UD3R主板、Leopard和Snow Leopard系统上测试通过。

名词解释
    什么是LPC?百度给出的回答是这样的:LPC = Low Pin Count,是连接南桥和super I/O(该IC连接一些低速外设,如mouse,KB,Printer)的一根BUS。LPC由Intel所提出. 是为了在PC上把ISA取消而制定的一个新规格. 其目的是把非常慢速的ISA总线取消. 而为了让一些原本在ISA上跑的硬件在没有ISA的机器上能够运作所以制定了此一规格, 例如一般 K/B , MOUSE , FDD, COM PORT, PRINTER PORT 等慢速外围即可用支持LPC的SUPER IO芯片控制,而且在软件上是完全兼容的。
7

查看全部评分

Rank: 5Rank: 5Rank: 5

UID
215483
帖子
591
PB币
3475
贡献
0
技术
48
活跃
118
沙发
发表于 2009-10-11 17:21:29 IP属地广东
13# kitawa


在Leopard原版安装盘里就有。

Rank: 5Rank: 5Rank: 5

UID
215483
帖子
591
PB币
3475
贡献
0
技术
48
活跃
118
板凳
发表于 2009-10-11 17:29:59 IP属地广东
lz,我查找0x001F0000如下
Device (ISAB)
            {
                Name (_ADR, 0x001F0000)
                Device (PS2M)
                {
                    Name (_HID, EisaId ("PNP0F13"))
...
wscqc 发表于 2009-10-11 12:31


建议如下:
      先用IORegisryExplorer查看设备ISAB有没有加载AppleLPC。如果有,那什么都不用动了。
如果没有,那就按教程第二张图,把第2红框里的代码加到你的Name (_ADR, 0x001F0000)下面。

Rank: 5Rank: 5Rank: 5

UID
215483
帖子
591
PB币
3475
贡献
0
技术
48
活跃
118
4F
发表于 2009-10-11 17:32:11 IP属地广东
大早上就看到好东西。
我的就是华硕p5k的班子,可以正常使用AppleIntelCPUPowerManagement.kext,就是鼠标变得漂移了。用NullCPUPowerManagement.kext没感觉到cpu温度异常
jtjtjtf 发表于 2009-10-11 09:15


华硕p5k不需要NullCPUPowerManagement.kext。

Rank: 5Rank: 5Rank: 5

UID
215483
帖子
591
PB币
3475
贡献
0
技术
48
活跃
118
5F
发表于 2009-10-12 03:46:32 IP属地广东
呵呵!我的自动加载哦!但好像睡眠睡不醒哦!
honeyroom 发表于 2009-10-11 19:39

麻烦问一下楼主,使用了这个是不是可以解决电脑睡眠一睡不醒的问题啊
towi 发表于 2009-10-11 17:54


电脑睡眠问题与加不加载AppleLPC无关。

Rank: 5Rank: 5Rank: 5

UID
215483
帖子
591
PB币
3475
贡献
0
技术
48
活跃
118
6F
发表于 2009-10-12 04:09:54 IP属地广东
终于加载上AppleLPC了,但还是不能删掉Disabler,也不能睡眠,USB已经搞成内建的了也不行,为什么?
xiaoimi 发表于 2009-10-12 02:57


你用的Disabler.kext可能除了禁用原生的CPU电源管理之外,还禁用了其他的原生驱动,所以才不能删掉。
加载AppleLPC只是解决用原生的CPU电源管理驱动时,CPU温度过高的问题。

Rank: 5Rank: 5Rank: 5

UID
215483
帖子
591
PB币
3475
贡献
0
技术
48
活跃
118
7F
发表于 2009-10-12 04:27:51 IP属地广东
使用原生的cpu电源管理能自动降频吗  台机 64位
venicehuang 发表于 2009-10-11 11:02


使用原生的cpu电源管理能不能自动降频,你可以这样简单地判别:
如果你的CPU是多核的,你可以不用openHaltRestart.kext而关机、重启功能又正常,那说明你能使用Mac原生的Speedsteps。

Rank: 5Rank: 5Rank: 5

UID
215483
帖子
591
PB币
3475
贡献
0
技术
48
活跃
118
8F
发表于 2009-10-12 11:09:34 IP属地广东
40# dark685621
谢谢,郁闷的是每个地方都要加这个,我把USB改为内建时也加了很多(每个都加),声卡也加,LPC又加,要是能只加一个地方然后就共用就好了,
xiaoimi 发表于 2009-10-12 10:45


DTGP只加一个地方就可以了。
如果不知道加在哪里,那就像40楼所写的,加在DefinitionBlock下面。

Rank: 5Rank: 5Rank: 5

UID
215483
帖子
591
PB币
3475
贡献
0
技术
48
活跃
118
9F
发表于 2009-10-12 11:22:47 IP属地广东
楼主好像没有回答我的疑问。。。
zhangwj1978 发表于 2009-10-12 11:17


18楼不是已经回答了吗?
既然已经可以加载AppleLPC,DSDT就不需要改了,NullCPUPowerManagement.kext也可以删掉。

Rank: 5Rank: 5Rank: 5

UID
215483
帖子
591
PB币
3475
贡献
0
技术
48
活跃
118
10F
发表于 2009-10-12 13:00:45 IP属地广东
不知道正常加载AppleLPC后能否移除OpenHaltRestart.kext
towi 发表于 2009-10-12 12:21


我现在还做不到这一点。没有OpenHaltRestart.kext,EX58关机、重启会不正常。

不过,好像国外有高手在DSDT里加一些CPU指令,可以做到不需要OpenHaltRestart.kext。

Rank: 5Rank: 5Rank: 5

UID
215483
帖子
591
PB币
3475
贡献
0
技术
48
活跃
118
11F
发表于 2009-11-16 11:06:34 IP属地广东
本帖最后由 Farx 于 2009-11-16 11:07 编辑
lz,我查找0x001F0000如下
Device (PX40)
            {
                Name (_ADR, 0x001F0000)
                OperationRegion (PREV, PCI_Config, 0x08, One)
                Scope (\)
              ...
redhatxc 发表于 2009-11-16 08:42



这样加:
  1. Device (PX40)
  2.             {
  3.                 Name (_ADR, 0x001F0000)
  4.                 Method (_DSM, 4, NotSerialized)
  5.                 {
  6.                     Store (Package (0x02)
  7.                         {
  8.                             "device-id",
  9.                             Buffer (0x04)
  10.                             {
  11.                                 0x18, 0x3A, 0x00, 0x00
  12.                             }
  13.                         }, Local0)
  14.                     DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
  15.                     Return (Local0)
  16.                 }              
  17.                 OperationRegion (PREV, PCI_Config, 0x08, One)
  18.                 Scope (\)
  19.                 {
  20.                     Field (\_SB.PCI0.PX40.PREV, ByteAcc, NoLock, Preserve)
  21.                     {
  22.                         REV0,   8
  23.                     }
  24.                 }
复制代码

Rank: 5Rank: 5Rank: 5

UID
215483
帖子
591
PB币
3475
贡献
0
技术
48
活跃
118
12F
发表于 2009-11-16 11:11:13 IP属地广东
通过楼主的方法,可以加载LPC了,在IORe里面也可以看到,但在内核日志里面出了一个
ACPI_SMC_PlatformPlugin::start - waitForService(resourceMatching(AppleIntelCPUPowerManagement) timed out
以前还出现过一个AC ...
elexus 发表于 2009-11-15 18:52


加载LPC并不能解决CPU降频的问题。CPU降频需要另加代码。

Rank: 5Rank: 5Rank: 5

UID
215483
帖子
591
PB币
3475
贡献
0
技术
48
活跃
118
13F
发表于 2009-12-1 05:22:52 IP属地广东
已经按楼主教程添加了那些代码, 如下并成功编译成了dsdt.aml, 然后删掉了NullCPUPowerManagement.kext , 重 ...
detecti 发表于 2009-11-30 11:31


附件是我的S3的dsdt,CPU加了代码。你可参考一下。
dsdt.aml.zip (6.65 KB, 下载次数: 113)

Rank: 5Rank: 5Rank: 5

UID
215483
帖子
591
PB币
3475
贡献
0
技术
48
活跃
118
14F
发表于 2010-1-20 20:00:40 IP属地广东
回复 108# xsldlm


    估计你的dsdt需要在cpu字段里加代码激活speedstep。
回顶部
Copyright (C) 2005-2024 pcbeta.com, All rights reserved
Powered by Discuz!  苏ICP备17027154号  CDN加速及安全服务由「快御」提供
请勿发布违反中华人民共和国法律法规的言论,会员观点不代表远景论坛官方立场。
远景在线 | 远景论坛 | 苹果论坛 | Win11论坛 | Win10论坛 | Win8论坛 | Win7论坛 | WP论坛 | Office论坛