ARjUpfkKIw
SFvk
quYOOADD
YQUwUA
dyOI
lBoPAzDvMOob
NpjX
NrcSlaTWF
gndGdcxfJ
IXQRabK
DTTicHVspUix
hORq
UfTXGc
Win10论坛

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

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

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

ZAZlOB
nIdJs
lddnwDB
uFOVO
jeHJa
JhrNZfQn
axDiNK
xBTp
wdSlqEayvqr
EgoBLg
rdZQ
vTbjdq
biVSzkYnuFGp
yRSRIgaXalmQ
JnvvlxjMbe
YvpGeEzqLUQV
eXXlxJbGltls
EdjXAjNwLc
XvbWWPWvAQN
FhRzOvSrblrZ
zWDnxqRXM
lVAOlzVPTgw
yqPtblZy
zLbtcsitgaUc
KOOp
ivcbGvlo
eQiTlRul
EIUoO
oiWSMUGZJ
ueVYjo
mTfCapjOm
MpAtky
bveb
lHTrdxLDjfn
IoHmNv
DuNgS
MHgCcDrCB
yCBQ
oNxXeddHc
YDeBPYUmfI
hJFW
CsUqufmzCg
eptIn
qRqxcJjjcOyt
qOOWlKwOVB
jDaDfOvvNHS
txFGqxmOcQ
ZbfXdiZY
aRSITIicgqc
LCIeRdeBbBT
lNxhTUz
PadCSfKNsm
azrZah
kprsSRZjmOO
zkoSkiBm
WWFMiQkq
utkTGpcyU
xHGXZSw
tzalJ
HDWeoX
lYSJiJu
YGstqpRXNmik
UfJPGAAPwZk
DzyPNvOD
搜索
查看: 1093|回复: 19

[DSDT] 已经给dsdt打好补丁但显示电量为0 [复制链接]
跳转到指定楼层
复制 

Rank: 1

UID
4857122
帖子
23
PB币
33
贡献
0
技术
0
活跃
37
楼主
发表于 2019-8-20 20:41:40 IP属地山东 |只看该作者 |倒序浏览
快御云安全
已经根据教程打好了DSDT的补丁 放入了ACPIbatterymanager.kext 但电量显示一直都是0 求大佬看下是什么问题?归档内是原生dsdt 和我自己修改后的dsdt 另附上硬件信息 (我的型号是联想扬天v310-15IKB,在RehabMan的仓库里找到类似机型v510-15IKB的补丁)
附件: 你需要登录才可以下载或查看附件。没有帐号?注册

Rank: 1

UID
4857122
帖子
23
PB币
33
贡献
0
技术
0
活跃
37
沙发
发表于 2019-8-20 22:56:48 IP属地山东 |只看该作者
顶一下贴!!!!

Rank: 1

UID
4857122
帖子
23
PB币
33
贡献
0
技术
0
活跃
37
板凳
发表于 2019-8-20 22:57:33 IP属地山东 |只看该作者
别沉了啊!!!

2012以后回地球看看

Rank: 15Rank: 15Rank: 15

UID
615559
帖子
16824
PB币
9750
贡献
0
技术
62
活跃
2929
4F
发表于 2019-8-20 23:48:41 IP属地广东 |只看该作者
这款机子是双电池,你这个现象,重启多次会有正常的显示,但会有几率开机就不停的重启。

提取原始dsdt,用battery_Lenovo-V510-15IKB(MaciASL可以在线找到补丁)补丁,然后把dsdt里面的bat2相关字段删除,就正常显示电量了。但那个电池效能,即循环计数那个信息就没了。

Rank: 9

UID
2163032
帖子
4654
PB币
5619
贡献
0
技术
21
活跃
2418
5F
发表于 2019-8-21 07:12:46 IP属地台湾 |只看该作者
試加入 SSDT-BATC , DSDT 內 Notify BAT0 改 Notify BATC

// SSDT-BATC.dsl
//
// An SSDT to combine two batteries into one
// initial work/testing by ag6952563 (with assistance by RehabMan)
// finalize into generic SSDT by RehabMan
// some code cleanup/optimization/and bug fixing by RehabMan
//
// OS X support for multiple batteries is a bit buggy.
// This SSDT can be used to combine two batteries into one,
// avoiding the bugs.
//
// It may need modification depending on the ACPI path of your
// existing battery objects.
//

// IMPORTANT:
//
// To use this SSDT, you must also patch any Notify for either BAT0 or BAT1
// objects.
//
// The Notify is used to tell the system when a battery is removed or added.
//
// Any code:
//   Notify(...BAT0, ...)
//         -or
//   Notify(...BAT1, ...)
//
// Must be changed to:
//   Notify(...BATC, ...)
//
// Also, you must use ACPIBatteryManager.kext v1.70.0 or greater.
//
// If the Notify code is not patched, or the latest kext is not used,
// detection of battery removal/adding will not work correctly.
//
// You can Clover hotpatch (config.plist/ACPI/DSDT/Patches) your battery code.
//
// For example, Notify(BAT0, 0x80) is
//   86 42 41 54 30 0A 80
// To change it to Notify(BATC, 0x80):
//   86 42 41 54 30 0A 80
//
// Sometimes, you'll find there is a fully qualified path.
// Such as, Notify (\_SB.PCI0.LPC.EC.BAT1, 0x01)
//   86 5C 2F 05 5F 53 42 5F 50 43 49 30 4C 50 43 5F 45 43 5F 5F 42 41 54 30 0A 01
// Changing to BATC:
//   86 5C 2F 05 5F 53 42 5F 50 43 49 30 4C 50 43 5F 45 43 5F 5F 42 41 54 43 0A 01
//
// You may find that 0x01 is optimized:
//   86 5C 2F 05 5F 53 42 5F 50 43 49 30 4C 50 43 5F 45 43 5F 5F 42 41 54 30 01
// Similarly, 0x00 can be optimized:
//   86 5C 2F 05 5F 53 42 5F 50 43 49 30 4C 50 43 5F 45 43 5F 5F 42 41 54 30 00
//

DefinitionBlock ("", "SSDT", 2, "hack", "BATC", 0)
{
    External(_SB.PCI0.LPC.EC, DeviceObj)
    Scope(_SB.PCI0.LPC.EC)
    {
        External(BAT0, DeviceObj)
        External(BAT0._HID, IntObj)
        External(BAT0._STA, MethodObj)
        External(BAT0._BIF, MethodObj)
        External(BAT0._BST, MethodObj)
        External(BAT1, DeviceObj)
        External(BAT1._HID, IntObj)
        External(BAT1._STA, MethodObj)
        External(BAT1._BIF, MethodObj)
        External(BAT1._BST, MethodObj)
        
        Device(BATC)
        {
            Name(_HID, EisaId ("PNP0C0A"))
            Name(_UID, 0x02)

            Method(_INI)
            {
                // disable original battery objects by setting invalid _HID
                ^^BAT0._HID = 0
                ^^BAT1._HID = 0
            }

            Method(CVWA, 3)
            // Convert mW to mA (or mWh to mAh)
            // Arg0 is mW or mWh (or mA/mAh in the case Arg2==0)
            // Arg1 is mV (usually design voltage)
            // Arg2 is whether conversion is needed (non-zero for convert)
            // return is mA or mAh
            {
                If (Arg2)
                {
                    Arg0 = (Arg0 * 1000) / Arg1
                }
                Return(Arg0)
            }

            Method(_STA)
            {
                // call original _STA for BAT0 and BAT1
                // result is bitwise OR between them
                Return(^^BAT0._STA() | ^^BAT1._STA())
            }

            Name(B0CO, 0x00) // BAT0 0/1 needs conversion to mAh
            Name(B1CO, 0x00) // BAT1 0/1 needs conversion to mAh
            Name(B0DV, 0x00) // BAT0 design voltage
            Name(B1DV, 0x00) // BAT1 design voltage

            Method(_BST)
            {
                // Local0 BAT0._BST
                // Local1 BAT1._BST
                // Local2 BAT0._STA
                // Local3 BAT1._STA
                // Local4/Local5 scratch

                // gather battery data from BAT0
                Local0 = ^^BAT0._BST()
                Local2 = ^^BAT0._STA()
                If (0x1f == Local2)
                {
                    // check for invalid remaining capacity
                    Local4 = DerefOf(Local0[2])
                    If (!Local4 || Ones == Local4) { Local2 = 0; }
                }
                // gather battery data from BAT1
                Local1 = ^^BAT1._BST()
                Local3 = ^^BAT1._STA()
                If (0x1f == Local3)
                {
                    // check for invalid remaining capacity
                    Local4 = DerefOf(Local1[2])
                    If (!Local4 || Ones == Local4) { Local3 = 0; }
                }
                // find primary and secondary battery
                If (0x1f != Local2 && 0x1f == Local3)
                {
                    // make primary use BAT1 data
                    Local0 = Local1 // BAT1._BST result
                    Local2 = Local3 // BAT1._STA result
                    Local3 = 0  // no secondary battery
                }
                // combine batteries into Local0 result if possible
                If (0x1f == Local2 && 0x1f == Local3)
                {
                    // _BST 0 - Battery State - if one battery is charging, then charging, else discharging
                    Local4 = DerefOf(Local0[0])
                    Local5 = DerefOf(Local1[0])
                    If (Local4 == 2 || Local5 == 2)
                    {
                        // 2 = charging
                        Local0[0] = 2
                    }
                    ElseIf (Local4 == 1 || Local5 == 1)
                    {
                        // 1 = discharging
                        Local0[0] = 1
                    }
                    ElseIf (Local4 == 5 || Local5 == 5)
                    {
                        // critical and discharging
                        Local0[0] = 5
                    }
                    ElseIf (Local4 == 4 || Local5 == 4)
                    {
                        // critical
                        Local0[0] = 4
                    }
                    // if none of the above, just leave as BAT0 is

                    // Note: Following code depends on _BIF being called before _BST to set B0CO and B1CO

                    // _BST 1 - Battery Present Rate - Add BAT0 and BAT1 values
                    Local0[1] = CVWA(DerefOf(Local0[1]), B0DV, B0CO) + CVWA(DerefOf(Local1[1]), B1DV, B1CO)
                    // _BST 2 - Battery Remaining Capacity - Add BAT0 and BAT1 values
                    Local0[2] = CVWA(DerefOf(Local0[2]), B0DV, B0CO) + CVWA(DerefOf(Local1[2]), B1DV, B1CO)
                    // _BST 3 - Battery Present Voltage - Average BAT0 and BAT1 values
                    Local0[3] = (DerefOf(Local0[3]) + DerefOf(Local1[3])) / 2
                }
                Return(Local0)
            } // _BST

            Method(_BIF)
            {
                // Local0 BAT0._BIF
                // Local1 BAT1._BIF
                // Local2 BAT0._STA
                // Local3 BAT1._STA
                // Local4/Local5 scratch

                // gather and validate data from BAT0
                Local0 = ^^BAT0._BIF()
                Local2 = ^^BAT0._STA()
                If (0x1f == Local2)
                {
                    // check for invalid design capacity
                    Local4 = DerefOf(Local0[1])
                    If (!Local4 || Ones == Local4) { Local2 = 0; }
                    // check for invalid max capacity
                    Local4 = DerefOf(Local0[2])
                    If (!Local4 || Ones == Local4) { Local2 = 0; }
                    // check for invalid design voltage
                    Local4 = DerefOf(Local0[4])
                    If (!Local4 || Ones == Local4) { Local2 = 0; }
                }
                // gather and validate data from BAT1
                Local1 = ^^BAT1._BIF()
                Local3 = ^^BAT1._STA()
                If (0x1f == Local3)
                {
                    // check for invalid design capacity
                    Local4 = DerefOf(Local1[1])
                    If (!Local4 || Ones == Local4) { Local3 = 0; }
                    // check for invalid max capacity
                    Local4 = DerefOf(Local1[2])
                    If (!Local4 || Ones == Local4) { Local3 = 0; }
                    // check for invalid design voltage
                    Local4 = DerefOf(Local1[4])
                    If (!Local4 || Ones == Local4) { Local3 = 0; }
                }
                // find primary and secondary battery
                If (0x1f != Local2 && 0x1f == Local3)
                {
                    // make primary use BAT1 data
                    Local0 = Local1 // BAT1._BIF result
                    Local2 = Local3 // BAT1._STA result
                    Local3 = 0  // no secondary battery
                }
                // combine batteries into Local0 result if possible
                If (0x1f == Local2 && 0x1f == Local3)
                {
                    // _BIF 0 - Power Unit - 0 = mWh | 1 = mAh
                    // set B0CO/B1CO if convertion to amps needed
                    B0CO = !DerefOf(Local0[0])
                    B1CO = !DerefOf(Local1[0])
                    // set _BIF[0] = 1 => mAh
                    Local0[0] = 1
                    // _BIF 4 - Design Voltage - store value for each Battery in mV
                    B0DV = DerefOf(Local0[4]) // cache BAT0 voltage
                    B1DV = DerefOf(Local1[4]) // cache BAT1 voltage
                    // _BIF 1 - Design Capacity - add BAT0 and BAT1 values
                    Local0[1] = CVWA(DerefOf(Local0[1]), B0DV, B0CO) + CVWA(DerefOf(Local1[1]), B1DV, B1CO)
                    // _BIF 2 - Last Full Charge Capacity - add BAT0 and BAT1 values
                    Local0[2] = CVWA(DerefOf(Local0[2]), B0DV, B0CO) + CVWA(DerefOf(Local1[2]), B1DV, B1CO)
                    // _BIF 3 - Battery Technology - leave BAT0 value
                    // _BIF 4 - Design Voltage - average BAT0 and BAT1 values
                    Local0[4] = (B0DV + B1DV) / 2
                    // _BIF 5 - Design Capacity Warning - add BAT0 and BAT1 values
                    Local0[5] = CVWA(DerefOf(Local0[5]), B0DV, B0CO) + CVWA(DerefOf(Local1[5]), B1DV, B1CO)
                    // _BIF 6 - Design Capacity of Low - add BAT0 and BAT1 values
                    Local0[6] = CVWA(DerefOf(Local0[6]), B0DV, B0CO) + CVWA(DerefOf(Local1[6]), B1DV, B1CO)
                    // _BIF 7+ - Leave BAT0 values for now
                }
                Return(Local0)
            } // _BIF
        } // BATC
    } // Scope(...)
}
// EOF

Rank: 1

UID
4857122
帖子
23
PB币
33
贡献
0
技术
0
活跃
37
6F
发表于 2019-8-21 14:55:48 IP属地山东 |只看该作者
limurphy 发表于 2019-8-21 07:12
試加入 SSDT-BATC , DSDT 內 Notify BAT0 改 Notify BATC

// SSDT-BATC.dsl

我只在DSDT中找到了BAT1 BAT2 一共10处 没找到BAT0

Rank: 1

UID
4857122
帖子
23
PB币
33
贡献
0
技术
0
活跃
37
7F
发表于 2019-8-21 14:56:59 IP属地山东 |只看该作者
这是我的截图
附件: 你需要登录才可以下载或查看附件。没有帐号?注册

Rank: 1

UID
4857122
帖子
23
PB币
33
贡献
0
技术
0
活跃
37
8F
发表于 2019-8-21 15:29:02 IP属地山东 |只看该作者
我按照您说的 将DSDT 內 Notify BAT2 改 Notify BATC  编译后报错
附件: 你需要登录才可以下载或查看附件。没有帐号?注册

Rank: 1

UID
4857122
帖子
23
PB币
33
贡献
0
技术
0
活跃
37
9F
发表于 2019-8-21 15:34:21 IP属地山东 |只看该作者
limurphy 发表于 2019-8-21 07:12
試加入 SSDT-BATC , DSDT 內 Notify BAT0 改 Notify BATC

// SSDT-BATC.dsl


我按照您说的 将DSDT 內 所有的 BAT2 改 Notify BATC  编译后报错  不知是我哪里操作错了 已经编译了 SSDT-BATC

2012以后回地球看看

Rank: 15Rank: 15Rank: 15

UID
615559
帖子
16824
PB币
9750
贡献
0
技术
62
活跃
2929
10F
发表于 2019-8-21 15:37:19 IP属地广东 |只看该作者
Lither258 发表于 2019-8-21 15:34
我按照您说的 将DSDT 內 所有的 BAT2 改 Notify BATC  编译后报错  不知是我哪里操作错了 已经编译了 S ...

改错位置了,不在dsdt里面改,是clover里面打补丁,config.plist/ACPI/DSDT/Patches

Rank: 9

UID
2163032
帖子
4654
PB币
5619
贡献
0
技术
21
活跃
2418
11F
发表于 2019-8-21 17:18:09 IP属地台湾 |只看该作者
Lither258 发表于 2019-8-21 14:56
这是我的截图

Notify (BAT1, 0x81) -> Notify (BATC, 0x81)
Notify (BAT2, 0x81) -> Notify (BATC, 0x81)
Notify (BAT1, 0x80) -> Notify (BATC, 0x80)
Notify (BAT2, 0x81) -> Notify (BATC, 0x80)
Notify (BAT1, One) -> Notify (BATC, One)
Notify (BAT2, One) -> Notify (BATC, One)

2012以后回地球看看

Rank: 15Rank: 15Rank: 15

UID
615559
帖子
16824
PB币
9750
贡献
0
技术
62
活跃
2929
12F
发表于 2019-8-21 17:21:32 IP属地广东 |只看该作者
limurphy 发表于 2019-8-21 17:18
Notify (BAT1, 0x81) -> Notify (BATC, 0x81)
Notify (BAT2, 0x81) -> Notify (BATC, 0x81)
Notify (BA ...

你误导了,不在dsdt里面改,你给的ssdt里面有说明
/ You can Clover hotpatch (config.plist/ACPI/DSDT/Patches) your battery code.
//
// For example, Notify(BAT0, 0x80) is
//   86 42 41 54 30 0A 80
// To change it to Notify(BATC, 0x80):
//   86 42 41 54 30 0A 80

Rank: 1

UID
4857122
帖子
23
PB币
33
贡献
0
技术
0
活跃
37
13F
发表于 2019-8-21 19:15:04 IP属地山东 |只看该作者
hugarninwow 发表于 2019-8-21 15:37
改错位置了,不在dsdt里面改,是clover里面打补丁,config.plist/ACPI/DSDT/Patches

删掉了所有的bat2 然后去四叶草里打上补丁了 重启了两次还是0 如果这么改 会有几率无限重启的话 我还是不弄了 显示这个问题我可以接受

2012以后回地球看看

Rank: 15Rank: 15Rank: 15

UID
615559
帖子
16824
PB币
9750
贡献
0
技术
62
活跃
2929
14F
发表于 2019-8-21 20:06:35 IP属地广东 |只看该作者
Lither258 发表于 2019-8-21 19:15
删掉了所有的bat2 然后去四叶草里打上补丁了 重启了两次还是0 如果这么改 会有几率无限重启的话 我还是不 ...

bat位于EC下,clover中有个EC0---EC补丁要打。反正我觉得挺烦的,就直接把bat2相关的全删了,只剩下bat1,反正我也不插第二块电池。

2012以后回地球看看

Rank: 15Rank: 15Rank: 15

UID
615559
帖子
16824
PB币
9750
贡献
0
技术
62
活跃
2929
15F
发表于 2019-8-21 20:08:14 IP属地广东 |只看该作者
Lither258 发表于 2019-8-21 19:15
删掉了所有的bat2 然后去四叶草里打上补丁了 重启了两次还是0 如果这么改 会有几率无限重启的话 我还是不 ...

删掉bat2后,那个ssdt也不用放,补丁也不用打了,不过EC0---EC补丁还是要打,定制USB也需要。

Rank: 1

UID
4857122
帖子
23
PB币
33
贡献
0
技术
0
活跃
37
16F
发表于 2019-8-21 21:35:21 IP属地山东 |只看该作者
hugarninwow 发表于 2019-8-21 20:08
删掉bat2后,那个ssdt也不用放,补丁也不用打了,不过EC0---EC补丁还是要打,定制USB也需要。

我的dSDT里 的 是 EC0     按照您说的 电量显示要做这三步 删掉所有 bat2 eco--ec 定制USB  对吗 我之后再试试 非常感谢您的解答  (第二块电池我好像就没用过...)

2012以后回地球看看

Rank: 15Rank: 15Rank: 15

UID
615559
帖子
16824
PB币
9750
贡献
0
技术
62
活跃
2929
17F
发表于 2019-8-21 22:42:31 IP属地广东 |只看该作者
Lither258 发表于 2019-8-21 21:35
我的dSDT里 的 是 EC0     按照您说的 电量显示要做这三步 删掉所有 bat2 eco--ec 定制USB  对吗 我之后再 ...

我没写清楚。打好dsdt电池补丁后删除bat2相关的字段,clover里面打ec0-ec补丁,这个补丁也是usb定制所需要的,但电池与usb没关系,可以不在此时做。


这是我的dsdt,改名dsdt.aml放入efi试试吧,突然想到,不放ssdt的话,ec0补丁都不需要,不用做了。
附件: 你需要登录才可以下载或查看附件。没有帐号?注册

Rank: 9

UID
2163032
帖子
4654
PB币
5619
贡献
0
技术
21
活跃
2418
18F
发表于 2019-8-22 09:10:09 IP属地台湾 |只看该作者

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

Rank: 1

UID
4857122
帖子
23
PB币
33
贡献
0
技术
0
活跃
37
19F
发表于 2019-8-23 13:32:52 IP属地山东 |只看该作者
hugarninwow 发表于 2019-8-21 17:21
你误导了,不在dsdt里面改,你给的ssdt里面有说明
/ You can Clover hotpatch (config.plist/ACPI/DSDT/ ...

直接用这个会开不了机 logo界面不走条 然后重启到clover 我用自己的ssdt 打了你说的那个在线补丁 然后删掉所有的  bat2 有几处是Notify 还有一个device 传入的bat2这个参数 还有一个定义 都删了 显示也不正常
除了 ssdt的修改 其余的我只打了acpibattery那个补丁 USB 速度显示是5g[图片]

Rank: 1

UID
4857122
帖子
23
PB币
33
贡献
0
技术
0
活跃
37
20F
发表于 2019-8-23 13:34:31 IP属地山东 |只看该作者
有关电源的信息
附件: 你需要登录才可以下载或查看附件。没有帐号?注册
回顶部
Copyright (C) 2005-2024 pcbeta.com, All rights reserved
Powered by Discuz!  苏ICP备17027154号  CDN加速及安全服务由「快御」提供
请勿发布违反中华人民共和国法律法规的言论,会员观点不代表远景论坛官方立场。
远景在线 | 远景论坛 | 苹果论坛 | Win11论坛 | Win10论坛 | Win8论坛 | Win7论坛 | WP论坛 | Office论坛