查看: 35108|回复: 127

[交流] 修复自动降频DSDT的修改方法

[复制链接]
发表于 2011-4-12 15:47 | 显示全部楼层 |阅读模式 |IP属地广东
快御云安全
本帖最后由 道奇兔 于 2011-4-21 18:07 编辑

原本根据修改DSDT自动降频的帖子修改的地址:
https://bbs.pcbeta.com/viewthread-632561-1-1.html
今天看到这个帖子的工具,才发现自己原先修改的自动降频根本无效。
https://bbs.pcbeta.com/viewthread-859522-1-1.html
后来使用变色龙添加自动降频参数后,取得数据,做以下修改:

首先使用变色龙加入自动降频参数进入系统:
在com.apple.Boot.plist里加入以下代码:
        <key>GenerateCStates</key>
        <string>YES</string>
        <key>GeneratePStates</key>
        <string>YES</string>
在终端输入:
ioreg -lw0 | grep PerformanceStateArray


取得以下信息:

  1. <c4090000000000000a0000000a000000204c000001000000><60090000000000000a0000000a0000001f0c000002000000><fc080000000000000a0000000a0000001f4b000003000000><98080000000000000a0000000a0000001f0b000004000000><34080000000000000a0000000a0000001f4a000005000000><d0070000000000000a0000000a0000001e0a000006000000><6c070000000000000a0000000a0000001e49000007000000><08070000000000000a0000000a0000001e09000008000000><a4060000000000000a0000000a0000001e48000009000000><40060000000000000a0000000a0000001d0800000a000000><dc050000000000000a0000000a0000001d4700000b000000><78050000000000000a0000000a0000001d0700000c000000><14050000000000000a0000000a0000001d4600000d000000><b0040000000000000a0000000a0000001c0600000e000000>
复制代码
然后再将每个档位,分成6个数组,每个数组8个数字。
再反序排列下,例如:
第一个档位:c4090000 00000000 0a000000 0a000000 204c0000 01000000
第二个档位:60090000 00000000 0a000000 0a000000 1f0c0000 02000000

第一个档位:
0x000009c4    //0x09C4
0x00000000   //Zero
0x0000000a   //0x0A
0x0000000a   //0x0A
0x00004c20   //0x4C20
0x00000001  //One
第二个档位:
0x00000960   //0x0960
0x00000000   //Zero
0x0000000a   //0x0A
0x0000000a   //0x0A
0x00000c1f   //0x0C1F
0x00000002   //0x02

还是使用原来的自动降频帖子中提到的代码修改DSDT
Scope (_PR.CPU0)
    {
        Method (_PSS, 0, NotSerialized)
        {
            Return (Package (0x0R)
            {
                Package (0x06)
                {
                    Zero,
                    Zero,
                    0x10,
                    0x10,
                    0xSSSS, //PState 0(CPU最高频率挡)的FID、VID值
                    Zero     //  PState序列0
                },
                Package (0x06)
                {
                    Zero,
                    Zero,
                    0x10,
                    0x10,
                    0xSSSS,  //PState 1的FID、VID值
                    One        // PState序列1
                },
                Package (0x06)
                {
                    Zero,
                    Zero,
                    0x10,
                    0x10,
                    0xSSSS, //PState 2的FID、VID值
                    0x02     //PState序列2
                }
            })
        }
        Method (_PSD, 0, NotSerialized)
        {
            Return (Package (0x05)
            {
                0x05,
                Zero,
                Zero,
                0xFC,
                0x04
            })
        }
        Method (_CST, 0, NotSerialized)
        {
            Return (Package (0x02)
            {
                One,
                Package (0x04)
                {
                    ResourceTemplate ()
                    {
                        Register (FFixedHW,
                            0x01,               // Bit Width
                            0x02,               // Bit Offset
                            0x0000000000000000, // Address
                            0x01,               // Access Size
                            )
                    },
                    One,
                    0x9D,
                    0x03E8
                }
            })
        }
    }
    Scope (_PR.CPU1)
    {
        Method (_PSS, 0, NotSerialized)
        {
            Return (^^CPU0._PSS ())
        }
        Method (_PSD, 0, NotSerialized)
        {
            Return (^^CPU0._PSD ())
        }
        Method (_CST, 0, NotSerialized)
        {
            Return (Package (0x04)
            {
                0x03,
                Package (0x04)
                {
                    ResourceTemplate ()
                    {
                        Register (FFixedHW,
                            0x01,               // Bit Width
                            0x02,               // Bit Offset
                            0x0000000000000000, // Address
                            ,)
                    },
                    One,
                    Zero,
                    0x03E8
                },
                Package (0x04)
                {
                    ResourceTemplate ()
                    {
                        Register (FFixedHW,
                            0x08,               // Bit Width
                            0x00,               // Bit Offset
                            0x0000000000000414, // Address
                            ,)
                    },
                    0x02,
                    One,
                    0x01F4
                },
                Package (0x04)
                {
                    ResourceTemplate ()
                    {
                        Register (FFixedHW,
                            0x08,               // Bit Width
                            0x00,               // Bit Offset
                            0x0000000000000415, // Address
                            ,)
                    },
                    0x03,
                    0x55,
                    0xFA
                }
            })
        }
    }
    Scope (_PR.CPU2)
    {
        Method (_PSS, 0, NotSerialized)
        {
            Return (^^CPU0._PSS ())
        }
        Method (_PSD, 0, NotSerialized)
        {
            Return (^^CPU0._PSD ())
        }
        Method (_CST, 0, NotSerialized)
        {
            Return (^^CPU1._CST ())
        }
    }
    Scope (_PR.CPU3)
    {
        Method (_PSS, 0, NotSerialized)
        {
            Return (^^CPU0._PSS ())
        }
        Method (_PSD, 0, NotSerialized)
        {
            Return (^^CPU0._PSD ())
        }
        Method (_CST, 0, NotSerialized)
        {
            Return (^^CPU1._CST ())
        }
    }

修改大部分相同,就直接从venicehuang贴中直接复制过来了。
若你的CPU为双核,则删除上述代码144行以后部分(CPU2、CPU3部分),4核无需;
R(上述代码第5行的0x0R)表示你的CPU可使用PState挡数,打开PStateChanger点击PState项,如图所示,此CPU可使用PState挡数为3挡,则R应改为3,若你的CPU为4挡则改为4,依此类推;
SSSS为该PState挡的FID(倍频)、VID(默认电压)值(不是10进制),如图PState0 FID值为08,VID值为20,则SSSS应为0820;
0xSSSS下面的Zero、One、0x02等表示该PState挡的序列,如PState0为Zero,PState1为One,PState2为0x02,PState3为0x03 ......依此类推自行修改;
你的CPU有几挡PState,则有几份如下代码
Package (0x06)
                {
                    Zero,
                    Zero,
                    0x10,
                    0x10,
                    0xSSSS, //PState 0(CPU最高频率挡)的FID、VID值
                    Zero     //  PState序列0
                },
这里不同的修改是6处都需要做修改,也就是上面从终端提取的数据。例如:
Package (0x06)
                {
                    0x09C4,
                    Zero,
                    0x0A,
                    0x0A,
                    0x4C20,
                    One
                },
                Package (0x06)
                {
                    0x0960,
                    Zero,
                    0x0A,
                    0x0A,
                    0x0C1F,
                    0x02
                },
屏幕快照 2011-04-12 下午02.35.16.png
屏幕快照 2011-04-12 下午02.41.40.png
屏幕快照 2011-04-12 下午02.42.42.png
屏幕快照 2011-04-12 下午02.44.12.png
屏幕快照 2011-04-12 下午02.43.19.png

基本和venicehuang贴子是相同的,只是修改一小部分。

另外看到一些朋友说无法加载VoodooPState这个驱动。
可以使用终端手动加载,如VoodooPState放在桌面:
sudo chown -R root:wheel ~/Desktop/VoodooPState.kext
sudo chmod -R 755 ~/Desktop/VoodooPState.kext
sudo kextload ~/Desktop/VoodooPState.kext
即可加载了。



後續..如果發現CSTInfo沒有打開請參考
https://bbs.pcbeta.com/viewthread-862415-1-2.html








评分

8

查看全部评分

发表于 2011-4-12 16:01 | 显示全部楼层 |IP属地广东
留意一下。我用那个帖子的方法也是无效啊……晕。有时间按这个帖子整,多谢楼主了~
回复

使用道具 举报

 楼主| 发表于 2011-4-12 16:06 | 显示全部楼层 |IP属地广东
回复 pengbangbo 的帖子

我也是按照那个帖子修改的,今天看到那个工具,才发现原来的自动降频无效。
回复

使用道具 举报

发表于 2011-4-12 16:07 | 显示全部楼层 |IP属地天津
Atom的cpu能搞么?
回复

使用道具 举报

 楼主| 发表于 2011-4-12 16:09 | 显示全部楼层 |IP属地广东
回复 sblook 的帖子

不行,只是做一小部分修改而已,还是只适用core 2 duo/quad系列
回复

使用道具 举报

发表于 2011-4-12 16:44 | 显示全部楼层 |IP属地河北
不懂啊,咱过
回复

使用道具 举报

发表于 2011-4-12 16:48 | 显示全部楼层 |IP属地美国
本帖最后由 sblook 于 2011-4-12 16:50 编辑

回复 ヤo逸軒oο 的帖子

在U2B上找到一段atom上sl打开apeedstep的视频,引作者 的话:“HP Mini 311 running Snow Leopard 10.6.4 with vanilla AppleIntelCPUPowerManagement.kext + P-states edits in DSDT. Speedstep is not detected by cpu-x but is definitely working as seen via MSR Tools.

Sorry for the lack of creativity for the video. This is just a demonstration/proof.”

貌似和楼主的方法一样啊

PS:HP mini 311是一部atom 1.6的上网本
回复

使用道具 举报

 楼主| 发表于 2011-4-12 16:50 | 显示全部楼层 |IP属地广东
回复 sblook 的帖子

这个倒没试过,我也没得试……
回复

使用道具 举报

发表于 2011-4-12 16:51 | 显示全部楼层 |IP属地美国
回复 ヤo逸軒oο 的帖子

手上有块刚折腾回来的D525,我晚上帮楼主验证一下

评分

1

查看全部评分

回复

使用道具 举报

发表于 2011-4-12 16:51 | 显示全部楼层 |IP属地山东
真的很详细,收藏先!
回复

使用道具 举报

发表于 2011-4-12 17:59 | 显示全部楼层 |IP属地台湾
dsdt添加一切正常沒失效的路過~~~
回复

使用道具 举报

发表于 2011-4-12 18:02 | 显示全部楼层 |IP属地湖北
方法不错,支持一下。
回复

使用道具 举报

发表于 2011-4-12 18:26 | 显示全部楼层 |IP属地广西
先收藏。散热器那个声音真是大得要死。
回复

使用道具 举报

发表于 2011-4-12 20:48 | 显示全部楼层 |IP属地湖北
本帖最后由 lunjen2009 于 2011-4-12 21:25 编辑

回复 ヤo逸軒oο 的帖子

给你顶起来,顺发图片
DSDT加好一直正常的路过

123.jpg


回复

使用道具 举报

发表于 2011-4-13 17:56 | 显示全部楼层 |IP属地台湾
真的很詳細!! 推!
回复

使用道具 举报

发表于 2011-4-13 19:42 | 显示全部楼层 |IP属地湖北
支持一下下~~~~
回复

使用道具 举报

发表于 2011-4-13 21:38 | 显示全部楼层 |IP属地广西
先标记,后续再弄。
回复

使用道具 举报

发表于 2011-4-13 21:44 | 显示全部楼层 |IP属地香港
使用原生內核不需要的吧?

点评

i7系列可以在BIOS中打开。  发表于 2011-4-13 21:51
回复

使用道具 举报

头像被屏蔽
发表于 2011-4-13 21:48 | 显示全部楼层 |IP属地四川
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

发表于 2011-4-13 22:01 | 显示全部楼层 |IP属地辽宁
本帖最后由 wind315 于 2011-4-13 22:01 编辑

我不知道我原来的起作用没,看上去似乎不能升上去(能降不能升)

点评

自动降频会升,也会降的。  发表于 2011-4-13 22:23
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋手机版联系我们

Copyright © 2005-2024 PCBeta. All rights reserved.

Powered by Discuz!  CDN加速及安全服务由「快御」提供

请勿发布违反中华人民共和国法律法规的言论,会员观点不代表远景论坛官方立场。

远景在线 ( 苏ICP备17027154号 )|远景论坛 |Win11论坛 |Win10论坛 |Win8论坛 |Win7论坛 |WP论坛 |Office论坛

GMT+8, 2024-12-22 11:22

快速回复 返回顶部 返回列表