mFoBXVMheTYu
zKeyNHtToYEz
zewWPyH
RHGmgDVt
gkixRMeAY
GvgvM
uLJTBICB
NNPiVILOa
sNPQoSUhux
tNkcqOxSLgx
Win10论坛

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

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

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

ghhwwmUO
DSJOjsdSsqdg
qmATzm
erfXvPlG
yDpoZjkwuEd
PsaeieGNJo
HbjuRdtWt
BuAE
ZkJFTYI
LCzUsy
bdxhy
daZvtpAFeiB
KlWikrGg
PoHWIDdjAeqz
satYWsLGUszf
niuiTXwOV
rlmPLmgDDia
sTcJuLYzCbDS
udHGv
hJUkQokhQ
oZfTlas
alyiCxRI
bdmsbElq
zIAAIZtcrc
tgRzwQg
hxKlPY
qKgcKzKwM
StPCY
PUfC
YdEyML
bkyGPoPvppM
VwJVyL
dKydoElSkkV
yAZvh
IFYPzjHres
htwyE
MVtJahqJjnsw
rqQus
caJUpcWU
IDynfYcA
DZXsKB
vxRJthCoYE
YLEpZDjhYHNK
XJhHSLHq
DcwHdKmlnWS
RCyoMObOcmuz
nfvpu
AMDbBOmw
jJoEiY
Kbigl
MIbwiTfuqFV
IjSYBNmDcTAJ
KpUqat
sxdFGLCHmNbC
rCVfhz
xTqdlUvvCFw
HRRjnKenAZUy
RfwQLWfevud
PfTbzfGc
PTncwxIqNs
搜索
查看: 27963|回复: 156

[教程] 暗影精灵2笔记本 黑苹果导致电池问题 [复制链接]

Rank: 5Rank: 5Rank: 5

UID
1619547
帖子
441
PB币
133
贡献
0
技术
1
活跃
969
发表于 2016-7-20 08:32:49 IP属地广东 |显示全部楼层
快御云安全
本帖最后由 794767404 于 2017-8-30 17:42 编辑

问题:暗影精灵2笔记本,安装OSX/MacOS后电池电量不变动,接通电源不充电。


配置:
cpu:i5-6300hq
集显:Intel(R) HD Graphics 530
独显GTX960M
主板:惠普8257
补充:因为DSDT未打补丁进MacOS会导致电池异常,所以下面第二步打补丁可以在重置电池前做;或者在Windows下装虚拟机,在虚拟机里打补丁.



解决方案:
第一步:重置电池状态(没有出现电量异常的可以跳过这骤)有三种方法:
方法1、拔掉充电线,长按电源键超过15秒钟
方法2、通过拆机断开电池的电线

方法3、完全耗尽电池的电(耗至电脑完全开不了机)


完成之后不要进osx/macOS,而是进Win10。如果成功的话电池是恢复正常状态的(电量会变动,接通电源正常充电)

第二步:修改ACPI文件,有两种方法:
方法1.用HotPatch文件“SSDT-BATT.aml”并配置config.plist,配合ACPIBatteryManager.kext正常显示电量
(同机型推荐,方便)
将SSDT-BATT.aml放入EFI/ACPI/patched里,并修改config.plist
SortedOrder加入条目"SSDT-BATT.aml";
DSDT Patches里添加如下patch(具体见附件):
change ADJT to XDJT for Battery Hotpatch
change CLRI to XLRI for Battery Hotpatch
change UPBS to XPBS for Battery Hotpatch
change UPBI to XPBI for Battery Hotpatch
change _BST to XBST for Battery Hotpatch
change SMWR to XMWR for Battery Hotpatch
change SMRD to XMRD for Battery Hotpatch

方法2.修改DSDT文件,配合ACPIBatteryManager.kext正常显示电量:
下面的MacIASL补丁是我自己写的,我可以正常使用,如果有错还请大神纠正...
补丁1:经测试,导致电池电量不变的罪魁祸首就是这个ADJT Method.

  1. #Repalce ADJT method
  2. into method label ADJT remove_entry;
  3. into Device label ACEL insert
  4. begin
  5. Method (ADJT, 0, Serialized)\n
  6.                 {\n
  7.                     If (_STA ())\n
  8.                     {\n
  9.                         If (LEqual (^^LPCB.EC0.ECOK, One))\n
  10.                         {\n
  11.                             Store (^^LPCB.EC0.SW2S, Local0)\n
  12.                         }\n
  13.                         Else\n
  14.                         {\n
  15.                             Store (PWRS, Local0)\n
  16.                         }\n
  17.                         If (LAnd (LEqual (^^^LID0._LID (), Zero), LEqual (Local0, Zero)))\n
  18.                         {\n
  19.                             If (LNotEqual (CNST, One))\n
  20.                             {\n
  21.                                 Store (One, CNST)\n
  22.                                 Sleep (0x0BB8)\n
  23.                                 ^^LPCB.EC0.SMWR (0xC6, 0x50, 0x36, 0x14)\n
  24.                                 ^^LPCB.EC0.SMWR (0xC6, 0x50, 0x37, 0x10)\n
  25.                                 ^^LPCB.EC0.SMWR (0xC6, 0x50, 0x34, 0x2A)\n
  26.                                 ^^LPCB.EC0.SMWR (0xC6, 0x50, 0x24, Zero)\n
  27.                                 Store (Zero, ^^LPCB.EC0.PLGS)\n
  28.                                 ^^LPCB.EC0.SMWR (0xC6, 0x50, 0x22, 0x20)\n
  29.                             }\n
  30.                         }\n
  31.                         ElseIf (LNotEqual (CNST, Zero))\n
  32.                         {\n
  33.                             Store (Zero, CNST)\n
  34.                             ^^LPCB.EC0.SMWR (0xC6, 0x50, 0x36, One)\n
  35.                             ^^LPCB.EC0.SMWR (0xC6, 0x50, 0x37, 0x50)\n
  36.                             ^^LPCB.EC0.SMWR (0xC6, 0x50, 0x34, 0x7F)\n
  37.                             ^^LPCB.EC0.SMWR (0xC6, 0x50, 0x24, 0x02)\n
  38.                             Store (One, ^^LPCB.EC0.PLGS)\n
  39.                             ^^LPCB.EC0.SMWR (0xC6, 0x50, 0x22, 0x40)\n
  40.                         }\n
  41.                     }\n
  42.                 }\n
  43. end;
复制代码


补丁2:更新了F.25版本的bios后提取DSDT,发现多了一个if语句,会导致osx/macOS里无法识别电池。直接把它删了
  1. #Delete If statement
  2. into method label _BST code_regex If\s+\(LEqual\s+\(BRTE,\s+Zero\)\)\s+\{\s+Store\s+\(0xFFFFFFFF,\s+Index\s+\(PBST,\s+One\)\)\s+\} replaceall_matched begin \n end;
复制代码


补丁3:字段拆分,这个大家应该都熟悉
  1. #Add B1B2 method for 16-Bit fields
  2. into method label B1B2 remove_entry;
  3. into definitionblock code_regex . insert
  4. begin
  5. Method (B1B2, 2, NotSerialized) { Return(Or(Arg0, ShiftLeft(Arg1, 8))) }\n
  6. end;

  7. #Add RE1B RECB method for fields more than 32bit
  8. into method label RE1B parent_label EC0 remove_entry;
  9. into method label RECB parent_label EC0 remove_entry;
  10. into device label EC0 insert
  11. begin
  12. Method (RE1B, 1, NotSerialized)\n
  13. {\n
  14.     OperationRegion(ERAM, EmbeddedControl, Arg0, 1)\n
  15.     Field(ERAM, ByteAcc, NoLock, Preserve) { BYTE, 8 }\n
  16.     Return(BYTE)\n
  17. }\n
  18. Method (RECB, 2, Serialized)\n
  19. // Arg0 - offset in bytes from zero-based EC\n
  20. // Arg1 - size of buffer in bits\n
  21. {\n
  22.     ShiftRight(Add(Arg1,7), 3, Arg1)\n
  23.     Name(TEMP, Buffer(Arg1) { })\n
  24.     Add(Arg0, Arg1, Arg1)\n
  25.     Store(0, Local0)\n
  26.     While (LLess(Arg0, Arg1))\n
  27.     {\n
  28.         Store(RE1B(Arg0), Index(TEMP, Local0))\n
  29.         Increment(Arg0)\n
  30.         Increment(Local0)\n
  31.     }\n
  32.     Return(TEMP)\n
  33. }\n
  34. end;

  35. # utility methods to read/write buffers from/to EC
  36. into method label WE1B parent_label EC0 remove_entry;
  37. into method label WECB parent_label EC0 remove_entry;
  38. into device label EC0 insert
  39. begin
  40. Method (WE1B, 2, NotSerialized)\n
  41. {\n
  42.     OperationRegion(ERAM, EmbeddedControl, Arg0, 1)\n
  43.     Field(ERAM, ByteAcc, NoLock, Preserve) { BYTE, 8 }\n
  44.     Store(Arg1, BYTE)\n
  45. }\n
  46. Method (WECB, 3, Serialized)\n
  47. // Arg0 - offset in bytes from zero-based EC\n
  48. // Arg1 - size of buffer in bits\n
  49. // Arg2 - value to write\n
  50. {\n
  51.     ShiftRight(Add(Arg1,7), 3, Arg1)\n
  52.     Name(TEMP, Buffer(Arg1) { })\n
  53.     Store(Arg2, TEMP)\n
  54.     Add(Arg0, Arg1, Arg1)\n
  55.     Store(0, Local0)\n
  56.     While (LLess(Arg0, Arg1))\n
  57.     {\n
  58.         WE1B(Arg0, DerefOf(Index(TEMP, Local0)))\n
  59.         Increment(Arg0)\n
  60.         Increment(Local0)\n
  61.     }\n
  62. }\n
  63. end;

  64. #Deal with the 16-bit EC fields
  65. into device label EC0 code_regex BADC,\s+16, replace_matched begin ADC0,8,ADC1,8, end;
  66. into device label EC0 code_regex BFCC,\s+16 replace_matched begin FCC0,8,FCC1,8 end;
  67. into device label EC0 code_regex MCUR,\s+16 replace_matched begin CUR0,8,CUR1,8 end;
  68. into device label EC0 code_regex MBRM,\s+16 replace_matched begin BRM0,8,BRM1,8 end;
  69. into device label EC0 code_regex MBCV,\s+16 replace_matched begin BCV0,8,BCV1,8 end;
  70. into device label EC0 code_regex SMW0,\s+16 replace_matched begin MW00,8,MW01,8 end;

  71. into method label UPBI code_regex \(\^\^PCI0\.LPCB\.EC0\.BADC, replaceall_matched begin (B1B2(\^\^PCI0\.LPCB\.EC0\.ADC0,\^\^PCI0\.LPCB\.EC0\.ADC1), end;
  72. into method label UPBI code_regex \(\^\^PCI0\.LPCB\.EC0\.BFCC, replaceall_matched begin (B1B2(\^\^PCI0\.LPCB\.EC0\.FCC0,\^\^PCI0\.LPCB\.EC0\.FCC1), end;
  73. into method label UPBS code_regex \(\^\^PCI0\.LPCB\.EC0\.MCUR, replaceall_matched begin (B1B2(\^\^PCI0\.LPCB\.EC0\.CUR0,\^\^PCI0\.LPCB\.EC0\.CUR1), end;
  74. into method label UPBS code_regex \(\^\^PCI0\.LPCB\.EC0\.MBRM, replaceall_matched begin (B1B2(\^\^PCI0\.LPCB\.EC0\.BRM0,\^\^PCI0\.LPCB\.EC0\.BRM1), end;
  75. into method label CLRI code_regex \(\^\^LPCB\.EC0\.MBRM, replaceall_matched begin (B1B2(\^\^LPCB\.EC0\.BRM0,\^\^LPCB\.EC0\.BRM1), end;
  76. into method label UPBS code_regex \(\^\^PCI0\.LPCB\.EC0\.MBCV, replaceall_matched begin (B1B2(\^\^PCI0\.LPCB\.EC0\.BCV0,\^\^PCI0\.LPCB\.EC0\.BCV1), end;
  77. into method label SMRD code_regex \(SMW0, replaceall_matched begin (B1B2(MW00,MW00), end;
  78. into method label SMWR code_regex Store\s\(Arg3,\sSMW0\) replaceall_matched begin Store(Arg3, MW00)\nStore(ShiftRight(Arg3,8),MW01) end;

  79. #Deal with the fields more than 32-Bit
  80. into device label EC0 code_regex (SMD0,)\s+(256) replace_matched begin SMDY,%2,//%1%2 0x04 end;
  81. into device label EC0 code_regex (FLD0,)\s+(64) replace_matched begin FLD4,%2,//%1%2 0x04 end;
  82. into device label EC0 code_regex (FLD1,)\s+(128) replace_matched begin FLD5,%2,//%1%2 0x04 end;
  83. into device label EC0 code_regex (FLD2,)\s+(192) replace_matched begin FLD6,%2,//%1%2 0x04 end;
  84. into device label EC0 code_regex (FLD3,)\s+(256) replace_matched begin FLD7,%2,//%1%2 0x04 end;

  85. into method label SMRD code_regex \(FLD0, replaceall_matched begin (RECB(0x04,64), end;
  86. into method label SMRD code_regex \(FLD1, replaceall_matched begin (RECB(0x04,128), end;
  87. into method label SMRD code_regex \(FLD2, replaceall_matched begin (RECB(0x04,192), end;
  88. into method label SMRD code_regex \(FLD3, replaceall_matched begin (RECB(0x04,256), end;
  89. into method label SMWR code_regex Store\s+\((.*),\s+SMD0\) replaceall_matched begin WECB(0x04,256,%1) end;
复制代码




2017.6.1更新电池HotPatch文件:




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

Rank: 5Rank: 5Rank: 5

UID
1619547
帖子
441
PB币
133
贡献
0
技术
1
活跃
969
发表于 2016-7-20 08:34:30 IP属地广东 |显示全部楼层
本帖最后由 794767404 于 2017-2-7 19:10 编辑

补充:
因为DSDT未打补丁进MacOS会导致电池异常,所以第二步打补丁可以在重置电池前做;或者在Windows下装虚拟机,在虚拟机里打补丁.

win10下电池异常图片



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

Rank: 5Rank: 5Rank: 5

UID
4702532
帖子
1053
PB币
534
贡献
0
技术
0
活跃
1079
发表于 2016-7-20 08:49:44 IP属地广东 来自手机 |显示全部楼层
把电池拆了就恢复了

Rank: 5Rank: 5Rank: 5

UID
1619547
帖子
441
PB币
133
贡献
0
技术
1
活跃
969
发表于 2016-7-20 08:58:19 IP属地广东 来自手机 |显示全部楼层
Aimisoy糊涂 发表于 2016-7-20 08:49
把电池拆了就恢复了

哦,这是为什么?会损坏电池吗,挺担心的。

Rank: 2Rank: 2

UID
232043
帖子
50
PB币
1172
贡献
0
技术
0
活跃
958
发表于 2016-7-20 10:53:31 IP属地上海 |显示全部楼层
我的光影精灵也和楼主一样的情况。现在也没找到解决的方法。

Rank: 5Rank: 5Rank: 5

UID
49970
帖子
1225
PB币
3213
贡献
0
技术
183
活跃
1172
发表于 2016-7-20 11:00:00 IP属地广东 |显示全部楼层
会损伤电池的,我的索尼笔记本因为黑苹果坏了一块电池。
建议你用黑苹果时插电用。

Rank: 5Rank: 5Rank: 5

UID
1619547
帖子
441
PB币
133
贡献
0
技术
1
活跃
969
发表于 2016-7-20 11:17:27 IP属地广东 来自手机 |显示全部楼层
absktv 发表于 2016-7-20 10:53
我的光影精灵也和楼主一样的情况。现在也没找到解决的方法。

好吧,找到方法请告诉我哦,谢谢啦

Rank: 5Rank: 5Rank: 5

UID
1619547
帖子
441
PB币
133
贡献
0
技术
1
活跃
969
发表于 2016-7-20 11:18:43 IP属地广东 来自手机 |显示全部楼层
andyandy 发表于 2016-7-20 11:00
会损伤电池的,我的索尼笔记本因为黑苹果坏了一块电池。
建议你用黑苹果时插电用。

不是吧...只能谨慎点了,毕竟新机心疼啊

Rank: 5Rank: 5Rank: 5

UID
1619547
帖子
441
PB币
133
贡献
0
技术
1
活跃
969
发表于 2016-7-20 15:39:44 IP属地广东 |显示全部楼层
没办法,再次求助。

Rank: 5Rank: 5Rank: 5

UID
1619547
帖子
441
PB币
133
贡献
0
技术
1
活跃
969
发表于 2016-7-20 16:11:05 IP属地广东 来自手机 |显示全部楼层

补充

本帖最后由 794767404 于 2016-7-21 09:18 编辑

17F网友补充:DSDT+Kext,电池驱动后也没用。进WIN10电池还是没响应不掉电。

Rank: 5Rank: 5Rank: 5

UID
1619547
帖子
441
PB币
133
贡献
0
技术
1
活跃
969
发表于 2016-7-20 18:27:23 IP属地广东 来自手机 |显示全部楼层
只能先拆机放电了,唉
头像被屏蔽

UID
4805871
帖子
3474
PB币
3838
贡献
0
技术
8
活跃
529
发表于 2016-7-20 18:31:54 IP属地广东 来自手机 |显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

Rank: 5Rank: 5Rank: 5

UID
1619547
帖子
441
PB币
133
贡献
0
技术
1
活跃
969
发表于 2016-7-20 19:18:29 IP属地广东 来自手机 |显示全部楼层
WLS.pkg 发表于 2016-7-20 18:31
最好把电池驱动了
dsdt+kext

大神又是你哈,看了很多教程还是不会改dsdt,能不能帮我改改dsdt驱动电池呢?
头像被屏蔽

UID
4805871
帖子
3474
PB币
3838
贡献
0
技术
8
活跃
529
发表于 2016-7-20 20:17:16 IP属地广东 来自手机 |显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

Rank: 5Rank: 5Rank: 5

UID
1619547
帖子
441
PB币
133
贡献
0
技术
1
活跃
969
发表于 2016-7-20 20:32:01 IP属地广东 来自手机 |显示全部楼层
没事,至少提供了思路。就是觉得奇怪,没驱动为什么会影响到win10的电量显示...

Rank: 2Rank: 2

UID
232043
帖子
50
PB币
1172
贡献
0
技术
0
活跃
958
发表于 2016-7-20 20:50:16 IP属地上海 |显示全部楼层
显示电量,只能DSDT+Kext,这个我已经实现了。只是进了黑苹果后,整个机器的电池会出现丢失状态的情况,退出黑果再进Win,会显示”未充电“,只到电池自己耗完,才可以在Win中找回。但一回黑果,又会丢失。

Rank: 2Rank: 2

UID
232043
帖子
50
PB币
1172
贡献
0
技术
0
活跃
958
发表于 2016-7-20 20:54:13 IP属地上海 |显示全部楼层
DSDT+Kext,电池驱动后也没用。还是会进WIN电池没响应。

Rank: 5Rank: 5Rank: 5

UID
1619547
帖子
441
PB币
133
贡献
0
技术
1
活跃
969
发表于 2016-7-20 21:13:25 IP属地广东 来自手机 |显示全部楼层
absktv 发表于 2016-7-20 20:54
DSDT+Kext,电池驱动后也没用。还是会进WIN电池没响应。

~(>_<)~,还有什么思路吗?看来你折腾这个问题挺久了..

Rank: 2Rank: 2

UID
1962106
帖子
377
PB币
55
贡献
0
技术
3
活跃
659
发表于 2016-7-20 21:29:33 IP属地黑龙江 |显示全部楼层
论坛里面好像有电池的解决方案

Rank: 5Rank: 5Rank: 5

UID
1619547
帖子
441
PB币
133
贡献
0
技术
1
活跃
969
发表于 2016-7-20 22:09:04 IP属地广东 来自手机 |显示全部楼层
liujie1024 发表于 2016-7-20 21:29
论坛里面好像有电池的解决方案

在哪?感觉这不是普通的电池问题,因为他影响到了win10的电量显示
回顶部
Copyright (C) 2005-2024 pcbeta.com, All rights reserved
Powered by Discuz!  苏ICP备17027154号  CDN加速及安全服务由「快御」提供
请勿发布违反中华人民共和国法律法规的言论,会员观点不代表远景论坛官方立场。
远景在线 | 远景论坛 | 苹果论坛 | Win11论坛 | Win10论坛 | Win8论坛 | Win7论坛 | WP论坛 | Office论坛