gvUeatEfKelW
SVrdGD
yTqUKKIKPMpV
aDXYFSKCD
yWnWPOAivRb
cASPOsa
OrOryWSReB
LwLybzKel
Win10论坛

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

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

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

wCyRxIA
MiNyY
EotJ
MeUXckdpGMq
PNGfn
LHwe
xyOS
jehoMhC
yJfBEO
PvcH
NmxEjQ
sSqlw
sJHuaWGCQ
ZuOn
VpsPurJm
qsHgoe
hhMaWXUQW
faZg
UlikhOnpb
IimAWHYDa
siBsrSmqePeN
zXBAyWbF
vTvA
RvGoD
nygRI
BDmekQRtYAy
XxLUA
RpwtxX
EmMpGErH
kipUeOGfptOj
hTYbyrH
qaEzjSFKhfG
bpWUUVD
vcACmSHq
FemNgpIqDF
iHJgaMnwNP
bzSwem
mDPDpz
JNszHeNfe
oBcbgL
dahbNMQdfq
MODM
urwVwgqI
OiMFGL
pKDAfojC
mFUdS
EjgTARloi
jXdmCCvBePVu
ZLrTPz
HvmivrP
NqJvVr
VkrMpb
ycyZNtMxr
cZFHBwQb
ZDjBb
nnQUOHrJgjdP
mHDEnv
TpOpVGkDM
WxkFuUy
Huon
hIVc
khCGwfxvDhgL
fHcPFFV
ckBognbsbR
owQXdbD
KatzjDUTuMB
AsaLVIBddOg
gCLRBa
AIlURMl
搜索
查看: 3739|回复: 24

[分享] Ssurface Pro 3电量补丁 [复制链接]

Rank: 7Rank: 7Rank: 7

UID
2937488
帖子
1475
PB币
2164
贡献
0
技术
34
活跃
975
发表于 2017-7-29 09:14:50 IP属地广东 |显示全部楼层
快御云安全
此版本是我自己重新制作的,和老外的有些区别,但区别不是太大。在拆分的时候注意字段是读取,还是读写,这个很重要

目前16位字段包含  读写
32位字段读取常见的较多,写入基本没有
32位以上,通过偏移量来实现(计算偏移量) 32位以上常见读取缓存,写入缓存也比较多!
  1. # created by Zhang 2017-07-28
  2. # Battery_Surface Pro 3_Patched_by Zhang.txt

  3. #修复大于8位字段的读取,已拆分16字段、32字段、48字段、64字段、96字段
  4. #修复电量补丁后,有获取的电池状态显示为0%的情况
  5. #修复了“BAT0”和“BAT1”相冲突的错误(禁用了“BAT1”),以达到ACPIBatteryManager.kext正常读取
  6. # Works for:
  7. #      Microsoft Surface Pro 3 I3

  8. # add method B1B2          /添加16位拆分方法      
  9. into method label B1B2 remove_entry;
  10. into definitionblock code_regex . insert
  11. begin
  12. Method (B1B2, 2, NotSerialized)\n
  13. {\n
  14. Return(Or(Arg0, ShiftLeft(Arg1, 8)))\n
  15. }\n
  16. end;

  17. # add method B1B4          /添加32位拆分方法      
  18. into method label B1B4 remove_entry;
  19. into definitionblock code_regex . insert
  20. begin
  21. Method (B1B4, 4, NotSerialized)\n
  22. {\n
  23.     Store(Arg3, Local0)\n
  24.     Or(Arg2, ShiftLeft(Local0, 8), Local0)\n
  25.     Or(Arg1, ShiftLeft(Local0, 8), Local0)\n
  26.     Or(Arg0, ShiftLeft(Local0, 8), Local0)\n
  27.     Return(Local0)\n
  28. }\n
  29. end;

  30. # add utility methods to read/write buffers from/to EC0           /添加读写缓存的方法
  31. into method label RE1B parent_label EC0 remove_entry;
  32. into method label RECB parent_label EC0 remove_entry;
  33. into device label EC0 insert
  34. begin
  35. Method (RE1B, 1, NotSerialized)\n
  36. {\n
  37.     OperationRegion(ERAM, EmbeddedControl, Arg0, 1)\n
  38.     Field(ERAM, ByteAcc, NoLock, Preserve) { BYTE, 8 }\n
  39.     Return(BYTE)\n
  40. }\n
  41. Method (RECB, 2, Serialized)\n
  42. // Arg0 - offset in bytes from zero-based \_SB.PCI0.LPCB.H_EC\n
  43. // Arg1 - size of buffer in bits\n
  44. {\n
  45.     ShiftRight(Arg1, 3, Arg1)\n
  46.     Name(TEMP, Buffer(Arg1) { })\n
  47.     Add(Arg0, Arg1, Arg1)\n
  48.     Store(0, Local0)\n
  49.     While (LLess(Arg0, Arg1))\n
  50.     {\n
  51.         Store(RE1B(Arg0), Index(TEMP, Local0))\n
  52.         Increment(Arg0)\n
  53.         Increment(Local0)\n
  54.     }\n
  55.     Return(TEMP)\n
  56. }\n
  57. end;

  58. into method label WE1B parent_label EC0 remove_entry;
  59. into method label WECB parent_label EC0 remove_entry;
  60. into device label EC0 insert
  61. begin
  62. Method (WE1B, 2, NotSerialized)\n
  63. {\n
  64.     OperationRegion(ERAM, EmbeddedControl, Arg0, 1)\n
  65.     Field(ERAM, ByteAcc, NoLock, Preserve) { BYTE, 8 }\n
  66.     Store(Arg1, BYTE)\n
  67. }\n
  68. Method (WECB, 3, Serialized)\n
  69. // Arg0 - offset in bytes from zero-based EC\n
  70. // Arg1 - size of buffer in bits\n
  71. // Arg2 - value to write\n
  72. {\n
  73.     ShiftRight(Arg1, 3, Arg1)\n
  74.     Name(TEMP, Buffer(Arg1) { })\n
  75.     Store(Arg2, TEMP)\n
  76.     Add(Arg0, Arg1, Arg1)\n
  77.     Store(0, Local0)\n
  78.     While (LLess(Arg0, Arg1))\n
  79.     {\n
  80.         WE1B(Arg0, DerefOf(Index(TEMP, Local0)))\n
  81.         Increment(Arg0)\n
  82.         Increment(Local0)\n
  83.     }\n
  84. }\n
  85. end;




  86. # 16-bit EC registers to 8-bit
  87. #.     PLSV to SV00,8,SV01,8

  88. #.     B0VL to VL00,8,VL01,8
  89. #.     B0CR to CR00,8,CR01,8
  90. #.     B0RC to RC00,8,RC01,8
  91. #.     B0FC to FC00,8,FC01,8
  92. #.     B0CC to CC00,8,CC01,8
  93. #.     B0DC to DC00,8,DC01,8
  94. #.     B0DV to DV00,8,DV01,8

  95. #.     B1VL to VL10,8,VL11,8
  96. #.     B1CR to CR10,8,CR11,8
  97. #.     B1RC to RC10,8,RC11,8
  98. #.     B1FC to FC10,8,FC11,8
  99. #.     B1CC to CC10,8,CC11,8
  100. #.     B1DC to DC10,8,DC11,8

  101. #.     B1DV to DV10,8,DV11,8
  102. #.     B0AH to AH00,8,AH01,8
  103. #.     B1AH to AH10,8,AH11,8

  104. into device label EC0 code_regex PLSV,\s+16, replace_matched begin SV00,8,SV01,8, end;
  105. into device label EC0 code_regex B0VL,\s+16, replace_matched begin VL00,8,VL01,8, end;
  106. into device label EC0 code_regex B0CR,\s+16, replace_matched begin CR00,8,CR01,8, end;
  107. into device label EC0 code_regex B0RC,\s+16, replace_matched begin RC00,8,RC01,8, end;
  108. into device label EC0 code_regex B0FC,\s+16, replace_matched begin FC00,8,FC01,8, end;
  109. into device label EC0 code_regex B0CC,\s+16, replace_matched begin CC00,8,CC01,8, end;
  110. into device label EC0 code_regex B0DC,\s+16, replace_matched begin DC00,8,DC01,8, end;
  111. into device label EC0 code_regex B0DV,\s+16, replace_matched begin DV00,8,DV01,8, end;

  112. into device label EC0 code_regex B1VL,\s+16, replace_matched begin VL10,8,VL11,8, end;
  113. into device label EC0 code_regex B1CR,\s+16, replace_matched begin CR10,8,CR11,8, end;
  114. into device label EC0 code_regex B1RC,\s+16, replace_matched begin RC10,8,RC11,8, end;
  115. into device label EC0 code_regex B1FC,\s+16, replace_matched begin FC10,8,FC11,8, end;
  116. into device label EC0 code_regex B1CC,\s+16, replace_matched begin CC10,8,CC11,8, end;
  117. into device label EC0 code_regex B1DC,\s+16, replace_matched begin DC10,8,DC11,8, end;

  118. into device label EC0 code_regex B1DV,\s+16, replace_matched begin DV10,8,DV11,8, end;
  119. into device label EC0 code_regex B0AH,\s+16, replace_matched begin AH00,8,AH01,8, end;
  120. into device label EC0 code_regex B1AH,\s+16, replace_matched begin AH10,8,AH11,8, end;


  121. # fix 16-bit methods
  122. #.     B0VL to VL00,8,VL01,8
  123. into method label BVO1 code_regex \(B0VL, replaceall_matched begin (B1B2(VL00,VL01), end;
  124. #.     B0CR to CR00,8,CR01,8
  125. into method label BCR1 code_regex \(B0CR, replaceall_matched begin (B1B2(CR00,CR01), end;
  126. #.     B0RC to RC00,8,RC01,8
  127. into method label BRC1 code_regex \(B0RC, replaceall_matched begin (B1B2(RC00,RC01), end;
  128. into method label FBIF code_regex \(\^\^SBRG.EC0.B0RC, replaceall_matched begin (B1B2(^^SBRG.EC0.RC00,^^SBRG.EC0.RC01), end;
  129. #.     B0FC to FC00,8,FC01,8
  130. into method label BIF2 code_regex \(B0FC, replaceall_matched begin (B1B2(FC00,FC01), end;
  131. #.     B0CC to CC00,8,CC01,8
  132. into method label FBIF code_regex \(\^\^SBRG.EC0.B0CC, replaceall_matched begin (B1B2(^^SBRG.EC0.CC00,^^SBRG.EC0.CC01), end;
  133. #.     B0DC to DC00,8,DC01,8
  134. into method label BIF1 code_regex \(B0DC, replaceall_matched begin (B1B2(DC00,DC01), end;
  135. #.     B0DV to DV00,8,DV01,8
  136. into method label BIF4 code_regex \(B0DV, replaceall_matched begin (B1B2(DV00,DV01), end;

  137. #.     B1VL to VL10,8,VL11,8
  138. into method label BVO2 code_regex \(B1VL, replaceall_matched begin (B1B2(VL10,VL11), end;
  139. #.     B1CR to CR10,8,CR11,8
  140. into method label BCR2 code_regex \(B1CR, replaceall_matched begin (B1B2(CR10,CR11), end;
  141. #.     B1RC to RC10,8,RC11,8
  142. into method label BRC2 code_regex \(B1RC, replaceall_matched begin (B1B2(RC10,RC11), end;
  143. into method label FBIF code_regex \(\^\^SBRG.EC0.B1RC, replaceall_matched begin  (B1B2(^^SBRG.EC0.RC10,^^SBRG.EC0.RC11), end;
  144. #.     B1FC to FC10,8,FC11,8
  145. into method label BIX2 code_regex \(B1FC, replaceall_matched begin (B1B2(FC10,FC11), end;
  146. #.     B1CC to CC10,8,CC11,8
  147. into method label FBIF code_regex \(\^\^SBRG.EC0.B1CC, replaceall_matched begin (B1B2(^^SBRG.EC0.CC10,^^SBRG.EC0.CC11), end;
  148. #.     B1DC to DC10,8,DC11,8
  149. into method label BIX1 code_regex \(B1DC, replaceall_matched begin (B1B2(DC10,DC11), end;
  150. #.     B1DV to DV10,8,DV11,8
  151. into method label BIX4 code_regex \(B1DV, replaceall_matched begin (B1B2(DV10,DV11), end;


  152. #now the writes

  153. #.     B0AH to AH00,8,AH01,8
  154. into method label _BTP code_regex Store\s+\(Arg0,\s+\^\^SBRG\.EC0\.B0AH\) replace_matched begin Store(Arg0, ^^SBRG.EC0.AH00) Store(ShiftRight(Arg0, 8), ^^SBRG.EC0.AH01) end;
  155. into method label _BTP code_regex Store\s+\(0x05,\s+\^\^SBRG\.EC0\.B0AH\) replace_matched begin Store(0x05, ^^SBRG.EC0.AH00) Store(ShiftRight(0x05, 8), ^^SBRG.EC0.AH01) end;

  156. #.     B1AH to AH10,8,AH11,8
  157. into method label _BTP code_regex Store\s+\(Arg0,\s+\^\^SBRG\.EC0\.B1AH\) replace_matched begin Store(Arg0, ^^SBRG.EC0.AH10) Store(ShiftRight(Arg0, 8), ^^SBRG.EC0.AH11) end;
  158. into method label _BTP code_regex Store\s+\(0x05,\s+\^\^SBRG\.EC0\.B1AH\) replace_matched begin Store(0x05, ^^SBRG.EC0.AH10) Store(ShiftRight(0x05, 8), ^^SBRG.EC0.AH11) end;



  159. # 32-bit EC registers to 8-bit
  160. #.     SMFV to MFV0,8,MFV1,8,MFV2,8,MFV3,8
  161. #.     B0SN to SN00,8,SN01,8,SN02,8,SN03,8

  162. into device label EC0 code_regex SMFV,\s+32 replace_matched begin MFV0,8,MFV1,8,MFV2,8,MFV3,8 end;
  163. into device label EC0 code_regex B0SN,\s+32 replace_matched begin SN00,8,SN01,8,SN02,8,SN03,8 end;

  164. # fix 32-bit methods
  165. #.     SMFV to SMF0,8,SMF1,8,SMF2,8,SMF3,8
  166. into method label _HRV code_regex \(\^\^\^SBRG\.EC0\.SMFV, replaceall_matched begin (B1B4(^^^SBRG.EC0.MFV0,^^^SBRG.EC0.MFV1,^^^SBRG.EC0.MFV2,^^^SBRG.EC0.MFV3), end;
  167. #.     B0SN to BSN0,8,BSN1,8,BSN2,8,BSN3,8
  168. into method label FBIF code_regex \(\^\^SBRG\.EC0\.B0SN, replaceall_matched begin (B1B4(^^SBRG.EC0.SN00,^^SBRG.EC0.SN01,^^SBRG.EC0.SN02,^^SBRG.EC0.SN03), end;


  169. # supporting math          /偏移量
  170. #.     Offset (0x53),
  171. #.     B0TP,   16, //53
  172. #.     VL00,8,VL01,8, //55
  173. #.     CR00,8,CR01,8, //57
  174. #.     B0AC,   16, //59
  175. #.     B0ME,   16, //5b
  176. #.     B0RS,   16, //5d
  177. #.     RC00,8,RC01,8, //5f
  178. #.     FC00,8,FC01,8, //61
  179. #.     B0MC,   16, //63
  180. #.     B0MV,   16, //65
  181. #.     B0ST,   16, //67
  182. #.     CC00,8,CC01,8, //69
  183. #.     DC00,8,DC01,8, //6b
  184. #.     DV00,8,DV01,8, //6d
  185. #.     B0SI,   16, //6f
  186. #.     SN00,8,SN01,8,SN02,8,SN03,8, //71
  187. #.     B0MN,   96, //75
  188. #.     B0DN,   64, //81
  189. #.     B0CM,   48, //89

  190. # 48-bit EC registers to 8-bit
  191. into device label EC0 code_regex (B0CM,)\s+(48) replace_matched begin BXCM,%2,//%1%2 end;
  192. # fix 48-bit methods
  193. into method label FBIF code_regex \^\^SBRG.EC0.B0CM replaceall_matched begin ^^SBRG.EC0.RECB(0x89,48) end;

  194. # 64-bit EC registers to 8-bit
  195. into device label EC0 code_regex (B0DN,)\s+(64) replace_matched begin BXDN,%2,//%1%2 end;
  196. # fix 64-bit methods
  197. into method label FBIF code_regex \^\^SBRG.EC0.B0DN replaceall_matched begin ^^SBRG.EC0.RECB(0x81,64) end;

  198. # 96-bit EC registers to 8-bit
  199. into device label EC0 code_regex (B0MN,)\s+(96) replace_matched begin BXMN,%2,//%1%2 end;
  200. # fix 96-bit methods
  201. into method label FBIF code_regex \^\^SBRG.EC0.B0MN replaceall_matched begin ^^SBRG.EC0.RECB(0x75,96) end;


  202. # deal with the Mutex problem            /修复电量补丁后,有获取的电池状态显示为0%的情况
  203. into_all all code_regex Mutex\s+\(([^,]*),\s+[^)]*\) replaceall_matched begin Mutex(%1, 0) end;
  204. into_all all code_regex Mutex\s+\(([^,]*),\s+[^)]*\) replaceall_matched begin Mutex(%1, 0) end;
  205. into_all all code_regex Mutex\s+\(([^,]*),\s+[^)]*\) replaceall_matched begin Mutex(%1, 0) end;
  206. into_all all code_regex Mutex\s+\(([^,]*),\s+[^)]*\) replaceall_matched begin Mutex(%1, 0) end;
  207. into_all all code_regex Mutex\s+\(([^,]*),\s+[^)]*\) replaceall_matched begin Mutex(%1, 0) end;
  208. into_all all code_regex Mutex\s+\(([^,]*),\s+[^)]*\) replaceall_matched begin Mutex(%1, 0) end;
  209. into_all all code_regex Mutex\s+\(([^,]*),\s+[^)]*\) replaceall_matched begin Mutex(%1, 0) end;
  210. into_all all code_regex Mutex\s+\(([^,]*),\s+[^)]*\) replaceall_matched begin Mutex(%1, 0) end;
  211. into_all all code_regex Mutex\s+\(([^,]*),\s+[^)]*\) replaceall_matched begin Mutex(%1, 0) end;
  212. into_all all code_regex Mutex\s+\(([^,]*),\s+[^)]*\) replaceall_matched begin Mutex(%1, 0) end;

  213. # SPEEDY-NUC:battery rehabman$ grep into.*method.*_STA.*Return *.txt                /修复修复了“BAT0”和“BAT1”相冲突的错误(禁用了“BAT1”)
  214. into method label _STA parent_label BAT1 replace_content begin Return(0) end;
复制代码


Rank: 5Rank: 5Rank: 5

UID
4771308
帖子
876
PB币
58
贡献
0
技术
0
活跃
2180
发表于 2017-7-29 18:38:35 IP属地北京 |显示全部楼层
能上来一个txt文件吗

Rank: 2Rank: 2

UID
47628
帖子
169
PB币
1407
贡献
0
技术
0
活跃
407
发表于 2017-9-19 23:46:54 IP属地台湾 |显示全部楼层
非常感谢大大解决
我困扰已久的问题
您真的太牛逼了
谢谢!

Rank: 1

UID
2400564
帖子
12
PB币
2
贡献
0
技术
0
活跃
38
发表于 2017-9-22 07:29:50 IP属地湖北 |显示全部楼层
大神,想驱动触屏和自带的键盘带有方法吗?

Rank: 1

UID
2400564
帖子
12
PB币
2
贡献
0
技术
0
活跃
38
发表于 2017-10-1 11:29:34 IP属地湖北 |显示全部楼层
louielulu 发表于 2017-9-19 23:46
非常感谢大大解决
我困扰已久的问题
您真的太牛逼了

你好,请问这个补丁该如何使用啊?有没有方便一点的方法?

Rank: 2Rank: 2

UID
611686
帖子
280
PB币
174
贡献
0
技术
0
活跃
17
发表于 2017-10-9 15:10:11 IP属地湖北 |显示全部楼层
不知道我的surface pro4怎么样。

Rank: 1

UID
2400564
帖子
12
PB币
2
贡献
0
技术
0
活跃
38
发表于 2017-11-9 18:14:45 IP属地湖北 |显示全部楼层
你发出来没几个人会用!

Rank: 7Rank: 7Rank: 7

UID
2937488
帖子
1475
PB币
2164
贡献
0
技术
34
活跃
975
发表于 2017-11-9 18:18:06 IP属地广东 |显示全部楼层
2472289148 发表于 2017-11-9 18:14
你发出来没几个人会用!

自行恶补!~

Rank: 1

UID
4830193
帖子
47
PB币
0
贡献
0
技术
0
活跃
48
发表于 2017-11-9 20:43:38 IP属地上海 |显示全部楼层
下来试试哈哈哈哈

Rank: 1

UID
3470770
帖子
123
PB币
0
贡献
0
技术
0
活跃
104
发表于 2018-2-27 23:04:16 IP属地福建 |显示全部楼层
下来试试哈

Rank: 1

UID
4841137
帖子
27
PB币
10
贡献
0
技术
0
活跃
57
发表于 2018-5-18 20:25:36 IP属地陕西 |显示全部楼层
大神,刚入坑。才摸到一点门槛,我想问一下这补丁是用clover configurator打?还是?

吊瓜

Rank: 2Rank: 2

UID
2722646
帖子
297
PB币
114
贡献
0
技术
0
活跃
912
发表于 2019-1-19 23:34:38 IP属地云南 |显示全部楼层
大神!出个教程啊!这大段文字对刚入坑的人来说挠头啊!

Rank: 1

UID
1077186
帖子
81
PB币
102
贡献
0
技术
0
活跃
204
发表于 2019-2-8 17:46:11 IP属地浙江 |显示全部楼层
顶起来挣点分

Rank: 2Rank: 2

UID
2130254
帖子
201
PB币
174
贡献
0
技术
0
活跃
1119
发表于 2019-2-24 16:37:49 IP属地云南 |显示全部楼层
收到,希望能在10.13下用

Rank: 1

UID
4610106
帖子
12
PB币
5
贡献
0
技术
0
活跃
62
发表于 2019-6-12 10:05:13 IP属地广东 |显示全部楼层
看着一脸懵逼,但还是给个好评

Rank: 1

UID
4772062
帖子
36
PB币
2
贡献
0
技术
0
活跃
58
发表于 2019-8-17 14:21:45 IP属地浙江 |显示全部楼层
不知道怎么用。。。

Rank: 2Rank: 2

UID
4851934
帖子
155
PB币
6
贡献
0
技术
0
活跃
299
发表于 2019-8-17 16:32:10 IP属地广东 |显示全部楼层
很好 谢谢分享

Rank: 2Rank: 2

UID
4853478
帖子
184
PB币
148
贡献
0
技术
0
活跃
196
发表于 2020-3-15 20:07:58 IP属地吉林 |显示全部楼层
电池刷新吗?

Rank: 2Rank: 2

UID
4866469
帖子
205
PB币
291
贡献
0
技术
0
活跃
178
发表于 2020-3-22 16:40:59 IP属地陕西 |显示全部楼层
虽然不知道,但是感谢大神的付出

Rank: 1

UID
4867035
帖子
17
PB币
46
贡献
0
技术
0
活跃
26
发表于 2020-3-24 20:19:25 IP属地浙江 |显示全部楼层
虽然暂时还不会用,但是大神的努力还是值得赞赏的!
回顶部
Copyright (C) 2005-2024 pcbeta.com, All rights reserved
Powered by Discuz!  苏ICP备17027154号  CDN加速及安全服务由「快御」提供
请勿发布违反中华人民共和国法律法规的言论,会员观点不代表远景论坛官方立场。
远景在线 | 远景论坛 | 苹果论坛 | Win11论坛 | Win10论坛 | Win8论坛 | Win7论坛 | WP论坛 | Office论坛