vEFCDLZCk
eEKsNu
sfgv
gmhJ
GdKxPiLXfhS
pXhai
GZowzt
UEvBgCJLSmiK
gCkySVr
jTDWegM
uBscU
odocBD
Win10论坛

Win10正式版系统下载主题平板

重定义Modern UI,打造完美Windows全新体验

Windows10下载|安装|新手宝典|必备软件

cbBkcmEirUHx
RqmXsomDywI
bFUwkdTgQC
jJpeB
YjGWCM
yVxC
obbUcZOdi
ipbUMQL
PllWfOxb
kVSfCPkiq
Tuqq
NPlhPnpi
yISnKAhN
MpXr
vFIdtOFuCCP
RlHdhQJxAfo
kLDYedflBuTN
uExndjZydN
jrSrJ
AKcMFCshU
dAiAgNpa
QkNkQhC
USSUUDmW
Zjxbv
txxJKJAQoA
AzFONKirMiKR
XDmfb
mQjJVkZhGnl
IKSzUphSOCTh
eLPnSNKrJkhu
FUolobdZM
QPgxGrbsUT
hNITXm
cnMUbFTfHg
LprScChACv
uZSLaJqUpbJ
GnvayjOdvvo
zNZVN
RHtx
cZxEKZPX
oVTMgE
uPIZbElMu
gDAaUlk
teOQae
thLxSsclE
CKYomRK
CObrc
tRXMsGV
iVPqp
rHtZp
YRmDWWQwoNNv
WyBEevFXSfky
WlUrGivLv
jxtVLpbVYo
ZQPxDGuOY
eOBFRbzPN
GSVB
VItVmlvk
yiAWMUJXwlp
搜索
查看: 1111|回复: 16

[DSDT] hotpatch解决电池状态显示问题 [复制链接]
跳转到指定楼层
复制 

Rank: 2Rank: 2

UID
3000788
帖子
55
PB币
54
贡献
0
技术
0
活跃
219
楼主
发表于 2019-8-13 21:46:16 IP属地河北 |只看该作者 |倒序浏览
快御云安全
按照r大神的电池状态dsdt修改教程 https://www.tonymacx86.com/threads/guide-how-to-patch-dsdt-for-working-battery-status.116102/
和hotpatch解决电池状态教程 https://www.tonymacx86.com/threads/guide-using-clover-to-hotpatch-acpi.200137/post-1308261,最终生成的SSDT-BATT.dsl文件如下:

DefinitionBlock("", "SSDT", 2, "hack", "batt", 0)
{
    Method (B1B2, 2, NotSerialized)
    {
        Return(Or(Arg0, ShiftLeft(Arg1, 8)))
    }

    Method (B1B4, 4, NotSerialized)
    {
        Store(Arg3, Local0)
        Or(Arg2, ShiftLeft(Local0, 8), Local0)
        Or(Arg1, ShiftLeft(Local0, 8), Local0)
        Or(Arg0, ShiftLeft(Local0, 8), Local0)
        Return(Local0)
    }

    Scope (_SB.PCI0.LPCB)
    {
        Device (H_EC)
        {
            OperationRegion (ECF3, EmbeddedControl, Zero, 0xFF)
            Field (ECF3, ByteAcc, Lock, Preserve)
            {
                Offset (0x10),
                BDNX,56,//BDN0,56,
                Offset (0x1C),
                DAY0,   8,
                HUR0,   8,
                MIN0,   8,
                SEC0,   8,
                BMNX,128,//BMN0,128,
                BCTX,128,//BCT0,128,
                Offset (0x87),
                LB1,    8,
                LB2,    8,
                DC00,8,DC01,8,
                BDC1,   16,
                FC00,8,FC01,8,
                FC10,8,FC11,8,
                Offset (0x93),
                DV00,8,DV01,8,
                DV10,8,DV11,8,
                Offset (0x9B),
                BR00,8,BR01,8,
                BPR1,   16,
                RC00,8,RC01,8,
                BRC1,   16,
                CC00,8,CC01,8,
                BCC1,   16,
                VC10,8,VC11,8,
                CV20,8,CV21,8,
                CV30,8,CV31,8,
                CV40,8,CV41,8,
                CV11,   16,
                CV12,   16,
                CV13,   16,
                CV14,   16,
                HPBA,   16,
                HPBB,   16,
                STS0,   8,
                STS1,   8,
                MD00,8,MD01,8,
                MD10,8,MD11,8,
                PV00,8,PV01,8,
                BPV1,   16,
                SN00,8,SN01,8,
                SN10,8,SN11,8,
                BV00,8,BV01,8,
                BCV1,   16,
                RG00,8,RG01,8,
                CRG1,   16,
                TY00,8,TY01,8,TY02,8,TY03,8,
                Offset (0xEB),
                    ,   2,
                HDSD,   1,
                    ,   1,
                PSON,   1,
                    ,   1,
                    ,   1,
                PSRW,   1,
                BT00,8,BT01,8,

            }

            Method (BTIF, 1, Serialized)
            {
                ShiftLeft (One, Arg0, Local7)
                BTDR (One)
                If (LEqual (BSTA (Local7), 0x0F))
                {
                    Return (0xFF)
                }

                Acquire (BTMX, 0xFFFF)
                Store (NGBF, Local0)
                Release (BTMX)
                If (LEqual (And (Local0, Local7), Zero))
                {
                    Return (Zero)
                }

                Store (NDBS, Index (NBST, Arg0))
                Acquire (BTMX, 0xFFFF)
                Or (NGBT, Local7, NGBT)
                Release (BTMX)
                Acquire (ECMX, 0xFFFF)
                If (ECRG)
                {
                    Store (Arg0, BSEL)
                    Switch (Arg0)
                    {
                        Case (Zero)
                        {
                            Store (B1B2(FC00,FC01), Local0)
                            Store (Local0, Index (DerefOf (Index (NBTI, Arg0)), One))
                            Store (Local0, Index (DerefOf (Index (NBTI, Arg0)), 0x02))
                            Store (B1B2(DV00,DV01), Index (DerefOf (Index (NBTI, Arg0)), 0x04))
                        }
                        Case (One)
                        {
                            Store (B1B2(FC10,FC11), Local0)
                            Store (Local0, Index (DerefOf (Index (NBTI, Arg0)), One))
                            Store (Local0, Index (DerefOf (Index (NBTI, Arg0)), 0x02))
                            Store (B1B2(DV10,DV11), Index (DerefOf (Index (NBTI, Arg0)), 0x04))
                        }

                    }

                    Multiply (Local0, NLB1, Local1)
                    Divide (Add (Local1, 0x63), 0x64, Local3, Local2)
                    Store (Local2, Index (DerefOf (Index (NBTI, Arg0)), 0x05))
                    Store (NLB1, Index (DerefOf (Index (NBTI, Arg0)), 0x05))
                    Store (NLB2, Index (DerefOf (Index (NBTI, Arg0)), 0x06))
                    Switch (Arg0)
                    {
                        Case (Zero)
                        {
                            Store (B1B2(SN00,SN01), Local0)
                            Store (B1B2(MD00,MD01), Local1)
                        }
                        Case (One)
                        {
                            Store (B1B2(SN10,SN11), Local0)
                            Store (B1B2(MD10,MD11), Local1)
                        }

                    }
                }

                Release (ECMX)
                Store (GBSS (Local0, Local1), Local2)
                Store (Local2, Index (DerefOf (Index (NBTI, Arg0)), 0x0A))
                Acquire (BTMX, 0xFFFF)
                And (NGBF, Not (Local7), NGBF)
                Release (BTMX)
                Return (Zero)
            }

            Method (BTST, 2, Serialized)
            {
                Store (B1B2(BR00,BR01), Local0)
                If (And (Local0, 0x8000))
                {
                    If (LEqual (Local0, 0xFFFF))
                    {
                        Store (0xFFFFFFFF, Index (DerefOf (Index (NBST, Arg0)), One))
                    }
                    Else
                    {
                        Not (Local0, Local1)
                        Increment (Local1)
                        And (Local1, 0xFFFF, Local3)
                        If (LAnd (LEqual (^^^^WMID.BRTE, Zero), LEqual (RPWR, Zero)))
                        {
                            Store (0xFFFFFFFF, Local3)
                        }

                        Store (Local3, Index (DerefOf (Index (NBST, Arg0)), One))
                    }
                }
                Else
                {
                    Store (Local0, Index (DerefOf (Index (NBST, Arg0)), One))
                }

                Store (B1B2(RC00,RC01), Index (DerefOf (Index (NBST, Arg0)), 0x02))
                Store (B1B2(PV00,PV01), Index (DerefOf (Index (NBST, Arg0)), 0x03))
                Store (BST0, Local2)
                Store (Local2, Index (DerefOf (Index (NBST, Arg0)), Zero))
                Return (Zero)
            }

            Method (ITLB, 0, NotSerialized)
            {
                Acquire (ECMX, 0xFFFF)
                If (ECRG)
                {
                    Add (B1B2(FC10,FC11), B1B2(FC00,FC01), Local1)
                    Divide (Add (Local1, 0x63), 0x64, Local2, Local3)
                    Multiply (Local3, LB1, NLB1)
                    Multiply (Local3, LB2, NLB2)
                }

                Release (ECMX)
            }

            Method (GBTI, 1, NotSerialized)
            {
                Acquire (ECMX, 0xFFFF)
                If (ECRG)
                {
                    If (And (BTAP, ShiftLeft (One, Arg0)))
                    {
                        Store (Arg0, BSEL)
                        Store (Package (0x03)
                            {
                                Zero,
                                0x80,
                                Buffer (0x80){}
                            }, Local0)
                        Store (B1B2(DC00,DC01), Index (DerefOf (Index (Local0, 0x02)), Zero))
                        Store (ShiftRight (B1B2(DC00,DC01), 0x08), Index (DerefOf (Index (Local0, 0x02)), One))
                        Store (B1B2(FC00,FC01), Index (DerefOf (Index (Local0, 0x02)), 0x02))
                        Store (ShiftRight (B1B2(FC00,FC01), 0x08), Index (DerefOf (Index (Local0, 0x02)), 0x03))
                        Store (B1B2(RC00,RC01), Index (DerefOf (Index (Local0, 0x02)), 0x04))
                        Store (ShiftRight (B1B2(RC00,RC01), 0x08), Index (DerefOf (Index (Local0, 0x02)), 0x05))
                        Store (B1B2(CC00,CC01), Index (DerefOf (Index (Local0, 0x02)), 0x08))
                        Store (ShiftRight (B1B2(CC00,CC01), 0x08), Index (DerefOf (Index (Local0, 0x02)), 0x09))
                        Store (B1B2(BT00,BT01), Local1)
                        Subtract (Local1, 0x0AAC, Local1)
                        Divide (Local1, 0x0A, Local2, Local3)
                        Store (Local3, Index (DerefOf (Index (Local0, 0x02)), 0x0A))
                        Store (ShiftRight (Local3, 0x08), Index (DerefOf (Index (Local0, 0x02)), 0x0B))
                        Store (B1B2(PV00,PV01), Index (DerefOf (Index (Local0, 0x02)), 0x0C))
                        Store (ShiftRight (B1B2(PV00,PV01), 0x08), Index (DerefOf (Index (Local0, 0x02)), 0x0D))
                        Store (B1B2(BR00,BR01), Local1)
                        If (Local1)
                        {
                            If (And (BST0, One))
                            {
                                And (Local1, 0xFFFF, Local1)
                            }
                        }

                        Store (Local1, Index (DerefOf (Index (Local0, 0x02)), 0x0E))
                        Store (ShiftRight (Local1, 0x08), Index (DerefOf (Index (Local0, 0x02)), 0x0F))
                        Store (B1B2(DV00,DV01), Index (DerefOf (Index (Local0, 0x02)), 0x10))
                        Store (ShiftRight (B1B2(DV00,DV01), 0x08), Index (DerefOf (Index (Local0, 0x02)), 0x11))
                        Store (BST0, Index (DerefOf (Index (Local0, 0x02)), 0x12))
                        Store (ShiftRight (BST0, 0x08), Index (DerefOf (Index (Local0, 0x02)), 0x13))
                        Store (B1B2(VC10,VC11), Index (DerefOf (Index (Local0, 0x02)), 0x14))
                        Store (ShiftRight (B1B2(VC10,VC11), 0x08), Index (DerefOf (Index (Local0, 0x02)), 0x15))
                        Store (B1B2(CV20,CV21), Index (DerefOf (Index (Local0, 0x02)), 0x16))
                        Store (ShiftRight (B1B2(CV20,CV21), 0x08), Index (DerefOf (Index (Local0, 0x02)), 0x17))
                        Store (B1B2(CV30,CV31), Index (DerefOf (Index (Local0, 0x02)), 0x18))
                        Store (ShiftRight (B1B2(CV30,CV31), 0x08), Index (DerefOf (Index (Local0, 0x02)), 0x19))
                        Store (B1B2(CV40,CV41), Index (DerefOf (Index (Local0, 0x02)), 0x1A))
                        Store (ShiftRight (B1B2(CV40,CV41), 0x08), Index (DerefOf (Index (Local0, 0x02)), 0x1B))
                        CreateField (DerefOf (Index (Local0, 0x02)), 0xE0, 0x80, BTSN)
                        Store (GBSS (B1B2(SN00,SN01), B1B2(MD00,MD01)), BTSN)
                        Store (RDN0(), Local1)
                        CreateField (DerefOf (Index (Local0, 0x02)), 0x0160, Multiply (SizeOf (Local1), 0x08), BMAN)
                        Store (Local1, BMAN)
                        CreateField (DerefOf (Index (Local0, 0x02)), 0x01F0, 0x80, CTN)
                        Store (RECB(0x30,128), CTN)
                        CreateField (DerefOf (Index (Local0, 0x02)), 0x0278, 0x38, BDN)
                        Store (RECB(0x10,56), BDN)
                        CreateField (DerefOf (Index (Local0, 0x02)), 0x02B0, 0x20, BTY)
                        Store (B1B4(TY00,TY01,TY02,TY03), BTY)
                        CreateField (DerefOf (Index (Local0, 0x02)), 0x02E0, 0x10, BMD)
                        Store (B1B2(MD00,MD01), BMD)
                        CreateField (DerefOf (Index (Local0, 0x02)), 0x02F0, 0x10, CRG)
                        If (And (BST0, One))
                        {
                            Store (Zero, CRG)
                        }
                        Else
                        {
                            Store (B1B2(RG00,RG01), CRG)
                        }

                        CreateField (DerefOf (Index (Local0, 0x02)), 0x0300, 0x10, BCV)
                        Store (B1B2(BV00,BV01), BCV)
                        Store (B1B2(BR00,BR01), Local1)
                        If (Local1)
                        {
                            If (And (BST0, One))
                            {
                                Add (Not (Local1), One, Local1)
                                And (Local1, 0xFFFF, Local1)
                            }
                        }

                        CreateField (DerefOf (Index (Local0, 0x02)), 0x0310, 0x10, CURT)
                        Store (Local1, CURT)
                        CreateField (DerefOf (Index (Local0, 0x02)), 0x0350, 0x08, BNUM)
                        Store (One, BNUM)
                    }
                }
                Else
                {
                    Store (Package (0x02)
                        {
                            0x0D,
                            Zero
                        }, Local0)
                }

                Release (ECMX)
                Return (Local0)
            }

            Method (_Q09, 0, NotSerialized)  // _Qxx: EC Query
            {
                H2OP (0x09)
                PWUP (0x05, One)
                Notify (BAT0, 0x80)
                If (LEqual (B1B2(RC00,RC01), B1B2(FC00,FC01)))
                {
                    Notify (BAT0, 0x81)
                }
            }

            Method (RE1B, 1, NotSerialized)
            {
                OperationRegion(ERAM, EmbeddedControl, Arg0, 1)
                Field(ERAM, ByteAcc, NoLock, Preserve) { BYTE, 8 }
                Return(BYTE)
            }
            Method (RECB, 2, Serialized)
            {
                ShiftRight(Arg1, 3, Arg1)
                Name(TEMP, Buffer(Arg1) { })
                Add(Arg0, Arg1, Arg1)
                Store(0, Local0)
                While (LLess(Arg0, Arg1))
                {
                    Store(RE1B(Arg0), Index(TEMP, Local0))
                    Increment(Arg0)
                    Increment(Local0)
                }
                Return(TEMP)
            }
            Method (RMN0, 0, Serialized) { Return(RECB(0x21,128)) }
        }
    }
}


但是编译为aml文件时候总是出现以下错误,无法继续,哪位大神能帮忙编译一下不,就差电池了



附件: 你需要登录才可以下载或查看附件。没有帐号?注册

Rank: 9

UID
750326
帖子
4537
PB币
3278
贡献
0
技术
102
活跃
2894
沙发
发表于 2019-8-14 05:14:11 IP属地四川 来自手机 |只看该作者
学习一下

Rank: 9

UID
2163032
帖子
4654
PB币
5619
贡献
0
技术
21
活跃
2419
板凳
发表于 2019-8-14 07:58:28 IP属地台湾 |只看该作者
你沒有看清楚後半段,方法的宣告都沒看到,所以一堆錯誤。


附件: 你需要登录才可以下载或查看附件。没有帐号?注册

Rank: 2Rank: 2

UID
3000788
帖子
55
PB币
54
贡献
0
技术
0
活跃
219
4F
发表于 2019-8-14 10:07:04 IP属地河北 |只看该作者
limurphy 发表于 2019-8-14 07:58
你沒有看清楚後半段,方法的宣告都沒看到,所以一堆錯誤。

是的 我知道还要外部引入,但是我只有一条错误,就是显示的那个,所以是哪里出问题了,你用的maciasl是什么版本?

Rank: 5Rank: 5Rank: 5

UID
4805948
帖子
516
PB币
135
贡献
0
技术
0
活跃
1171
5F
发表于 2019-8-14 17:26:00 IP属地河南 来自手机 |只看该作者
显示一个错误不对,改成6.0标准,然后会出现很多错误,一个一个改 你的aml开头都不对

Rank: 9

UID
2163032
帖子
4654
PB币
5619
贡献
0
技术
21
活跃
2419
6F
发表于 2019-8-14 18:12:36 IP属地台湾 |只看该作者
mocl1220 发表于 2019-8-14 10:07
是的 我知道还要外部引入,但是我只有一条错误,就是显示的那个,所以是哪里出问题了,你用的maciasl是什 ...


附件: 你需要登录才可以下载或查看附件。没有帐号?注册

Rank: 2Rank: 2

UID
3000788
帖子
55
PB币
54
贡献
0
技术
0
活跃
219
7F
发表于 2019-8-17 08:00:44 IP属地河北 |只看该作者
理想的海洋 发表于 2019-8-14 17:26
显示一个错误不对,改成6.0标准,然后会出现很多错误,一个一个改 你的aml开头都不对

默认就是6.0的标准啊,试了多次还是只有一个错误,而且开头的部分我也对照了很多次,没问题啊,请高手明鉴

Rank: 2Rank: 2

UID
3000788
帖子
55
PB币
54
贡献
0
技术
0
活跃
219
8F
发表于 2019-8-17 08:01:31 IP属地河北 |只看该作者
limurphy 发表于 2019-8-14 18:12

默认就是6.0,改成4就程序异常退出

Rank: 5Rank: 5Rank: 5

UID
4805948
帖子
516
PB币
135
贡献
0
技术
0
活跃
1171
9F
发表于 2019-8-17 08:38:06 IP属地河南 |只看该作者
mocl1220 发表于 2019-8-17 08:01
默认就是6.0,改成4就程序异常退出

用这个里面的Maciasl https://bitbucket.org/RehabMan/os-x-maciasl-patchmatic/downloads/ 选择里面的最新版本

Rank: 9

UID
2163032
帖子
4654
PB币
5619
贡献
0
技术
21
活跃
2419
10F
发表于 2019-8-17 09:19:32 IP属地台湾 |只看该作者
mocl1220 发表于 2019-8-17 08:01
默认就是6.0,改成4就程序异常退出

最新:
https://github.com/acidanthera/MaciASL/releases

Rank: 2Rank: 2

UID
3000788
帖子
55
PB币
54
贡献
0
技术
0
活跃
219
11F
发表于 2019-8-17 23:06:20 IP属地河北 |只看该作者
limurphy 发表于 2019-8-17 09:19
最新:
https://github.com/acidanthera/MaciASL/releases

用了这个最新的maciasl,  依然是之前的那个错误提示,好像是什么语法错误,但是根本没有语法错误啊,不知道问题在哪里,大神能不能帮我编译一下,谢谢

Rank: 9

UID
2163032
帖子
4654
PB币
5619
贡献
0
技术
21
活跃
2419
12F
发表于 2019-8-18 07:26:40 IP属地台湾 |只看该作者
mocl1220 发表于 2019-8-17 23:06
用了这个最新的maciasl,  依然是之前的那个错误提示,好像是什么语法错误,但是根本没有语法错误啊,不知 ...

貼上功能已正常使用 dsdt + ssdt-bat.dsl

Rank: 7Rank: 7Rank: 7

UID
3521264
帖子
1695
PB币
447
贡献
0
技术
1
活跃
2387
13F
发表于 2019-8-18 10:45:37 IP属地四川 |只看该作者
limurphy 发表于 2019-8-18 07:26
貼上功能已正常使用 dsdt + ssdt-bat.dsl

我的偶尔开机出现电池充电显示,其实根本没有充电,插拔一下电源就正常了

Rank: 9

UID
2163032
帖子
4654
PB币
5619
贡献
0
技术
21
活跃
2419
14F
发表于 2019-8-18 10:59:24 IP属地台湾 |只看该作者
天涯阳光123 发表于 2019-8-18 10:45
我的偶尔开机出现电池充电显示,其实根本没有充电,插拔一下电源就正常了

沒遇到此狀况、無法幫忙。

Rank: 7Rank: 7Rank: 7

UID
3521264
帖子
1695
PB币
447
贡献
0
技术
1
活跃
2387
15F
发表于 2019-8-18 13:27:50 IP属地四川 来自手机 |只看该作者
limurphy 发表于 2019-8-18 10:59
沒遇到此狀况、無法幫忙。

没事,还是要谢谢你,你也曾经帮我做过电池dsdt,看了你帮我做的以后,现在我的电池我也会做了,谢谢你

Rank: 9

UID
2163032
帖子
4654
PB币
5619
贡献
0
技术
21
活跃
2419
16F
发表于 2019-8-18 15:31:16 IP属地台湾 |只看该作者
天涯阳光123 发表于 2019-8-18 13:27
没事,还是要谢谢你,你也曾经帮我做过电池dsdt,看了你帮我做的以后,现在我的电池我也会做了,谢谢你

Rank: 2Rank: 2

UID
4034407
帖子
143
PB币
183
贡献
0
技术
0
活跃
290
17F
发表于 2019-8-21 20:24:56 IP属地浙江 |只看该作者
limurphy 发表于 2019-8-18 15:31

哥帮我看看电池问题可以吗https://bbs.pcbeta.com/forum.php? ... 331%26typeid%3D1331
回顶部
Copyright (C) 2005-2024 pcbeta.com, All rights reserved
Powered by Discuz!  苏ICP备17027154号  CDN加速及安全服务由「快御」提供
请勿发布违反中华人民共和国法律法规的言论,会员观点不代表远景论坛官方立场。
远景在线 | 远景论坛 | 苹果论坛 | Win11论坛 | Win10论坛 | Win8论坛 | Win7论坛 | WP论坛 | Office论坛