楼主: daxuexinsheng

[分享] (2014.6.28-更新)实现电量显示的一般方法

  [复制链接]
yqd1234 发表于 2014-2-28 09:41 | 显示全部楼层
快御云安全
楼主,按照您的方法做到了第四步就做不下去了 实在是不知道该如何下手,请楼主帮忙看看我的DSDT,应该如何修改,我的是三星NP510R5E的本本,谢谢! dsdt.zip (14.46 KB, 下载次数: 0)
回复

使用道具 举报

550207595 发表于 2014-3-2 15:17 | 显示全部楼层
本帖最后由 550207595 于 2014-3-2 15:25 编辑

楼主,按照你的模版在我dsdt里找到_BIF。但是里面内容跟你举的例子差别有点大。            
Method (_BIF, 0, NotSerialized)
            {
                If (LNot (^^LPCB.EC0.BATP (Zero)))
                {
                    Return (NBIF)
                }
                If (LEqual (^^LPCB.EC0.GBTT (Zero), 0xFF))
                {
                    Return (NBIF)
                }
                BATO ()
                BATS (Zero)
                Store (^^LPCB.EC0.BIF9 (), Index (PBIF, 0x09))
                Store (ONAM, Index (PBIF, 0x0C))
                Store (^^LPCB.EC0.BIF0 (), Local0)
                Store (^^LPCB.EC0.BIF1 (), Local1)
                Store (^^LPCB.EC0.BIF2 (), Local2)
                Store (^^LPCB.EC0.BIF3 (), Local3)
                Store (^^LPCB.EC0.BIF4 (), Local4)
                If (LNotEqual (Local0, Ones))
                {
                    If (LNotEqual (Local1, Ones))
                    {
                        If (LNotEqual (Local2, Ones))
                        {
                            If (LNotEqual (Local3, Ones))
                            {
                                If (LNotEqual (Local4, Ones))
                                {
                                    FBIF (Local0, Local1, Local2, Local3, Local4)
                                    CBIF ()
                                }
                            }
                        }
                    }
                }
                If (LEqual (PUNT, Zero))
                {
                    Multiply (Local2, 0x0A, Local2)
                }
                Store (Local2, LFCC)
                BATR ()
                Return (PBIF)
            }


是继续看FBIF()和CBIF()还是怎么办?

目前我只在dsdt末尾放了那些辅助的方法(B1B2。。。),其他还未改动。电池电量显示为0%,如图所示。

下面附上我的dsdt。楼主请帮忙改改。


dsdt.zip

31.72 KB, 下载次数: 0, 下载积分: PB币 -1

回复

使用道具 举报

daxuexinsheng  楼主| 发表于 2014-3-2 15:23 | 显示全部楼层
550207595 发表于 2014-3-2 15:17
楼主,按照你的模版在我dsdt里找到_BIF。但是里面内容跟你举的例子差别有点大。            
Method (_BIF ...

找 Method (PBIF),找这个方法的前面,应该会有那些字节。
另外,还是自己试着改吧,我也没有时间改。 :-)
回复

使用道具 举报

550207595 发表于 2014-3-2 16:59 | 显示全部楼层
daxuexinsheng 发表于 2014-3-2 15:23
找 Method (PBIF),找这个方法的前面,应该会有那些字节。
另外,还是自己试着改吧,我也没有时间改。 : ...

我的dsdt里没有method(pbif)
我刚才试了一个方法。现在系统信息里电源的剩余电量显示正常。不插电源是也会正常减少。但是任务栏的电量显示还是0%。我发了个求助贴,能帮我看看吗?[求助] 关于10.9下任务栏电池电量显示始终为0%的问题
回复

使用道具 举报

zhang2233 发表于 2014-3-4 22:55 | 显示全部楼层
谢谢分享,研究一下
回复

使用道具 举报

无懈可击7185 发表于 2014-3-5 07:56 | 显示全部楼层
楼主帮忙看看我的DSDT电池具体该怎么添加DSDT呢,目前没改DSDT用驱动显示出了电池信息是在这里,但是提到的代码都没看见在哪儿,有点蒙,请楼主明示 谢谢 QQ20140305-1.png
回复

使用道具 举报

daxuexinsheng  楼主| 发表于 2014-3-5 09:10 | 显示全部楼层
无懈可击7185 发表于 2014-3-5 07:56
楼主帮忙看看我的DSDT电池具体该怎么添加DSDT呢,目前没改DSDT用驱动显示出了电池信息是在这里,但是提到的 ...

你需要找Device (BAT0)最后的一个 Return (名字)。
再找那个 Method (名字),在它的前面,应该会有那些要拆分的字节。
回复

使用道具 举报

无懈可击7185 发表于 2014-3-6 09:30 | 显示全部楼层
daxuexinsheng 发表于 2014-3-5 09:10
你需要找Device (BAT0)最后的一个 Return (名字)。
再找那个 Method (名字),在它的前面,应该会有那些要 ...

你好啊 打扰你了,这是我的DSDT电池那段的代码,我看了不知道要拆分哪段的,请指教,谢谢这是我发的求助帖:https://bbs.pcbeta.com/viewthread-1484928-1-1.html
Scope (_SB.PCI0)
    {
        Device (BAT0)
        {
            Name (_HID, EisaId("PNP0C0A"))
            Name (_UID, Zero)
            Name (_PCL,Package (0x01)
            {
                PCI0
            })
            Method (_STA, 0,NotSerialized)
            {
                If(^^SBRG.EC0.BATP (Zero))
                {
                    Return(0x1F)
                }
                Else
                {
                    Return(0x0F)
                }
            }
            Name (LOW2,0x012C)
            Name (DVOT, 0x0E)
            Name (PUNT, One)
            Name (LFCC,0x1770)
            Name (NBIF,Package (0x0D)
            {
                Zero,
                Ones,
                Ones,
                One,
                Ones,
                Ones,
                Ones,
                Ones,
                Ones,
                "",
                "",
                "",
                ""
            })
            Name (PBIF,Package (0x0D)
            {
                One,
                0x1770,
                0x1770,
                One,
                0x39D0,
                0x0258,
                0x012C,
                0x3C,
                0x3C,
               "M3N",
                " ",
               "LIon",
               "ASUSTek"
            })
            Name (PBST,Package (0x04)
            {
                Zero,
                Ones,
                Ones,
                Ones
            })
            Method (FBIF, 5,NotSerialized)
            {
                Store (Arg0,PUNT)
                Store (Arg1,Local1)
                Store (Arg2,Local2)
                If (LEqual(PUNT, Zero))
                {
                    Multiply(Local1, 0x0A, Local1)
                    Multiply(Local2, 0x0A, Local2)
                }
                Store (Arg0,Index (PBIF, Zero))
                Store (Local1,Index (PBIF, One))
                Store (Local2,Index (PBIF, 0x02))
                Store (Local2,LFCC)
                Store (Arg3,Index (PBIF, 0x03))
                Store (Arg4,Index (PBIF, 0x04))
                Divide(Local1, 0x0A, Local3, Local5)
                Store (Local5,Index (PBIF, 0x05))
                Divide(Local1, 0x64, Local3, Local6)
                Store (Local6,Index (PBIF, 0x06))
                Store (Local6,LOW2)
                Divide(Local1, 0x64, Local3, Local7)
                Store (Local7,Index (PBIF, 0x07))
                Store (Local7,Index (PBIF, 0x08))
            }
            Method (CBIF, 0,NotSerialized)
            {
                If (PUNT)
                {
                    Store(DerefOf (Index (PBIF, 0x04)), Local0)
                    Add(Local0, 0x01F4, Local0)
                    Divide(Local0, 0x03E8, Local1, DVOT)
                    Store(Zero, Index (PBIF, Zero))
                    Multiply(DerefOf (Index (PBIF, One)), DVOT, Index (PBIF, One
                        ))
                    Multiply(DerefOf (Index (PBIF, 0x02)), DVOT, Index (PBIF, 0x02
                        ))
                    Multiply(DerefOf (Index (PBIF, 0x05)), DVOT, Index (PBIF, 0x05
                        ))
                    Multiply(DerefOf (Index (PBIF, 0x06)), DVOT, Index (PBIF, 0x06
                        ))
                    Multiply(DerefOf (Index (PBIF, 0x07)), DVOT, Index (PBIF, 0x07
                        ))
                    Multiply(DerefOf (Index (PBIF, 0x08)), DVOT, Index (PBIF, 0x08
                        ))
                }
            }
            Method (_BIF, 0,NotSerialized)
            {
                If (LNot(^^SBRG.EC0.BATP (Zero)))
                {
                    Return(NBIF)
                }
                If (LEqual(^^SBRG.EC0.GBTT (Zero), 0xFF))
                {
                    Return(NBIF)
                }
                BATO ()
                BATS (Zero)
                Store(^^SBRG.EC0.BIF9 (), Index (PBIF, 0x09))
                Store (ONAM,Index (PBIF, 0x0C))
                Store(^^SBRG.EC0.BIF0 (), Local0)
                Store(^^SBRG.EC0.BIF1 (), Local1)
                Store(^^SBRG.EC0.BIF2 (), Local2)
                Store(^^SBRG.EC0.BIF3 (), Local3)
                Store(^^SBRG.EC0.BIF4 (), Local4)
                If (LNotEqual(Local0, Ones))
                {
                    If(LNotEqual (Local1, Ones))
                    {
                        If(LNotEqual (Local2, Ones))
                        {
                            If(LNotEqual (Local3, Ones))
                            {
                               If (LNotEqual (Local4, Ones))
                               {
                                   FBIF (Local0, Local1, Local2, Local3, Local4)
                                   CBIF ()
                                }
                            }
                        }
                    }
                }
                If (LEqual(PUNT, Zero))
                {
                    Multiply(Local2, 0x0A, Local2)
                }
                Store (Local2, LFCC)
                BATR ()
                Return (PBIF)
            }
回复

使用道具 举报

wu383804688 发表于 2014-3-7 19:10 来自手机 | 显示全部楼层
哎,试试吧,也不知道行不行啊,一直不显示电量。
回复

使用道具 举报

ruanhuina 发表于 2014-3-10 19:26 | 显示全部楼层
收藏待用~~~
回复

使用道具 举报

tao32 发表于 2014-3-14 11:39 | 显示全部楼层
我的DSDT里的Device(BAT1)   里面只找到连Return (PBIF)    貌似不是个函数啊……   明显没参数嘛    搜索了下PBIF  没有methord    现在我该怎样做  ?才能显示🔋。如果这样不行的话我是不是得删了B1B2(电量显示辅助代码)?
回复

使用道具 举报

daxuexinsheng  楼主| 发表于 2014-3-14 11:54 | 显示全部楼层
tao32 发表于 2014-3-14 11:39
我的DSDT里的Device(BAT1)   里面只找到连Return (PBIF)    貌似不是个函数啊……   明显没参数嘛    搜索了 ...

你的可能不适合修改DSDT,试试10.9.2的破解 AppleACPIPlatform吧。
https://bbs.pcbeta.com/viewthread-1483286-1-1.html
回复

使用道具 举报

tao32 发表于 2014-3-14 20:27 | 显示全部楼层
daxuexinsheng 发表于 2014-3-14 11:54
你的可能不适合修改DSDT,试试10.9.2的破解 AppleACPIPlatform吧。
https://bbs.pcbeta.com/viewthread-1 ...

貌似也不行啊……
回复

使用道具 举报

daxuexinsheng  楼主| 发表于 2014-3-14 20:39 | 显示全部楼层
tao32 发表于 2014-3-14 20:27
貌似也不行啊……

需要  破解的AppleACPIPlatform+电池驱动。
回复

使用道具 举报

tao32 发表于 2014-3-19 23:58 | 显示全部楼层
换了新的FakeMAC后电池电量显示就不管用啦……
回复

使用道具 举报

头像被屏蔽
renyicai 发表于 2014-3-26 18:30 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

liankaohk 发表于 2014-3-29 22:52 | 显示全部楼层
楼主的都是精华帖呢。
回复

使用道具 举报

zhang2233 发表于 2014-3-30 23:15 | 显示全部楼层
谢谢分享
回复

使用道具 举报

qfq307eq 发表于 2014-3-31 13:02 | 显示全部楼层
感谢楼主分享
如果按照不修改DSDT的方法
网盘里面两个kext都要安装吗?
回复

使用道具 举报

wowfans 发表于 2014-3-31 13:14 | 显示全部楼层
多谢楼主,我懒得折腾电量显示了,其他都完美了的,仿冒声卡驱动,亮度调节,FN快捷键开关都已ok,那天有时间再改电量,不影响休眠啥的
回复

使用道具 举报

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

本版积分规则

小黑屋手机版联系我们

Copyright © 2005-2025 PCBeta. All rights reserved.

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

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

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

GMT+8, 2025-1-22 21:34

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