貌似Atom也可以100%不睡死了,测试Rom在最末
转自: http://bbs.pdafans.com/viewthread.php?tid=604920
CC8337作者
国外有人声称彻底解决了SB(睡死)问题,附方案软件http://www.hidopod.com/bbs/thread-34219-1-1.html
XDA FLAME USERS 的nikhilraut1985 大大声称解决了大FSB(睡死)问题。
他是比较了东芝G900和大F的文件结构后而发现的,而且经过了部分用家验证。
但本人英文和软硬件知识都比较菜,请本坛的高手组织大家测试一下。
原文如下:http://www.xdaflameusers.com/viewtopic.php?id=1165&p=1
Hey Friends Finally I was able to solve the SB Problem Totally FOR WM6 AND WM6.1
WHat did I did?
I Downloaded the Toshiba G900 DUmp
I noticed that it had a sperate dll for
nvd.dll "Power-manageable block device'
nvrm.dll "for Generic power-manageable devices"
while our flame had only 1 dll i.e nvrm.dll for both generic and block power-manageable devices
I Compared the dll calls of nvrm.dll of G900 And nvrm.dll and found that the flame nvrm.dll calls
nvbsp.dll While that of G900 does not call nvbsp.dll
SO our flame has nvbsp in place of nvd.dll of the toshiba G900.
Now the Promblem lies in the flame registry.
[HKEY_LOCAL_MACHINEDriversBuiltInnvplatform]
"P4"=dword:1
"VI_DEFAULT_STATE"=dword:1
"EnableDPD"=dword:1
"GpioVI"=dword:1005b
"GpioDPD"=dword:10054
"IClass"=multi_sz:"{8DD679CE-8AB4-43c8-A14A-EA4963FAA715}"
"Index"=dword:1
"Order"=dword:1
"Dll"="nvrm.dll"
"Prefix"="NVR"
now see the Iclass which is a multi line string value having value {8DD679CE-8AB4-43c8-A14A-EA4963FAA715}"
[HKEY_LOCAL_MACHINESystemCurrentControlSetControlPowerInterfaces]
"{A32942B7-920C-486b-B0E6-92A702A99B35}"="Generic power-manageable devices"
"{8DD679CE-8AB4-43c8-A14A-EA4963FAA715}"="Power-manageable block devices"
"{98C5250D-C29A-4985-AE5F-AFE5367E5006}"="Power-manageable NDIS miniports"
"{EB91C7C9-8BF6-4a2d-9AB8-69724EED97D1}"="Power-manageable display"
this value is for Power-manageable block devices what abt the "{A32942B7-920C-486b-B0E6-92A702A99B35}"="Generic power-manageable device
so the modified registry is
[HKEY_LOCAL_MACHINEDriversBuiltInnvplatform]
"P4"=dword:1
"VI_DEFAULT_STATE"=dword:1
"EnableDPD"=dword:1
"GpioVI"=dword:1005b
"GpioDPD"=dword:10054
"IClass"=multi_sz:"{A32942B7-920C-486b-B0E6-92A702A99B35}","{8DD679CE-8AB4-43c8-A14A-EA4963FAA715}"
"Index"=dword:1
"Order"=dword:1
"Dll"="nvrm.dll"
"Prefix"="NVR"
now after this i disable all the power manageable value disablepowermanagement to 1
and did a soft rest
did the following tests
GSM off –aftersuspend phone wake's up
GSM,WLAN,Bluetooth on –aftersuspend phone wake's up
Installed Malloth's latern the c# one phone wak's up after suspend
INSTALLED SPB SHELL 2.0 PHONE WAKE'S UP
翻译
他就是说,Toshiba G900有两个动态链接库管理电源(对应不同类的设备):
nvd.dll 对应"Power-manageable block device'
nvrm.dll 对应"Generic power-manageable devices"
(可能是写反了,与下面的内容矛盾)
而Flame只有一个:nvrm.dll。
他对比后发现flame的nvrm.dll调用了nvbsp.dll,而Toshiba G900的nvrm.dll没有,所以认为 flame的 nvbsp.dll相当于toshiba G900的nvd.dll。这是引起睡死的根源。
利用注册表编辑器打开注册表,找到
[HKEY_LOCAL_MACHINESystemCurrentControlSetControlPowerInterfaces]
"{A32942B7-920C-486b-B0E6-92A702A99B35}"="Generic power-manageable devices"
"{8DD679CE-8AB4-43c8-A14A-EA4963FAA715}"="Power-manageable block devices"
"{98C5250D-C29A-4985-AE5F-AFE5367E5006}"="Power-manageable NDIS miniports"
"{EB91C7C9-8BF6-4a2d-9AB8-69724EED97D1}"="Power-manageable display"
即Generic power-manageable devices对应的标识为{A32942B7-920C-486b-B0E6-92A702A99B35}
Power-manageable block devices对应的标识为{8DD679CE-8AB4-43c8-A14A-EA4963FAA715}
修改第一步
而注册表中的
[HKEY_LOCAL_MACHINEDriversBuiltInnvplatform]
"P4"=dword:1
"VI_DEFAULT_STATE"=dword:1
"EnableDPD"=dword:1
"GpioVI"=dword:1005b
"GpioDPD"=dword:10054
"IClass"=multi_sz:"{8DD679CE-8AB4-43c8-A14A-EA4963FAA715}"
"Index"=dword:1
"Order"=dword:1
"Dll"="nvrm.dll"
"Prefix"="NVR"
注意"IClass"=multi_sz:"{8DD679CE-8AB4-43c8-A14A-EA4963FAA715}",只有一个标识。
所以修改的方法为:添加另一个没出现的标识,即将
IClass的值{8DD679CE-8AB4-43c8-A14A-EA4963FAA715},改为{A32942B7-920C-486b-B0E6-92A702A99B35},{8DD679CE-8AB4-43c8-A14A-EA4963FAA715}
修改第二步
大家應該用註冊表編輯器查找:disablepowermanagement 項,把值改爲1。
之后软起即可。
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
[color=Blue]【接上文】
我在Atom上更改的思路如下:
1、"{A32942B7-920C-486b-B0E6-92A702A99B35}"在Atom中只有NLS,wavedev、backlight有此数值。
"{8DD679CE-8AB4-43c8-A14A-EA4963FAA715}"则完全找不到对应的dll,水平有限,-_-!
2、按一楼思路修改NLS,wavedev、backlight,均不可行,甚至更惨,会有白屏。
3、下了一个Flame的模板,将nvrm.dll移植到Atom的Xip中,一直搞不定地址冲突,郁闷烦恼……
4、又下了一个Flame的Rom,解开XIP,Oh,MyGod,原来Flame的OEMDrivers是在XIP中的,与Atom很大区别。
5、发现nvrm.dll和nvbsp.dll并不在XIP所需文件中,呵呵,那就好办了。
6、将nvrm.dll和nvbsp.dll拷贝到Atom模板中的OEMDrivers;
7、将原文第一步的东东加入RGU:
HKEY_LOCAL_MACHINEDriversBuiltInnvplatform]
"P4"=dword:1
"VI_DEFAULT_STATE"=dword:1
"EnableDPD"=dword:1
"GpioVI"=dword:1005b
"GpioDPD"=dword:10054
"IClass"=multi_sz:"{A32942B7-920C-486b-B0E6-92A702A99B35},{8DD679CE-8AB4-43c8-A14A-EA4963FAA715}"
"Index"=dword:1
"Order"=dword:1
"Dll"="nvrm.dll"
8、原文第二部巨耗电,觉得不可行。
9、又去网上搜了一下,觉得以下这个可行:
(1、)修改.rgu文件。
修改处及结果:
[HKEY_LOCAL_MACHINEDriversBuiltInnvplatform]
"P4"=dword:1
"VI_DEFAULT_STATE"=dword:1
"EnableDPD"=dword:1
"GpioVI"=dword:1005b
"GpioDPD"=dword:10054
"IClass"="{A32942B7-920C-486b-B0E6-92A702A99B35}=b%"
"Index"=dword:1
"Order"=dword:1
"Dll"="nvrm.dll"
"Prefix"="NVR"
(2、)修改.rgu文件。
修改处及结果:
[HKEY_LOCAL_MACHINEDriversSDCARDClientDriversClassSDMemory_Class]
"Dll"="SDMemory.dll"
"DisablePowerManagement"=dword:0
"Prefix"="DSK"
"BlockTransferSize"=dword:40 ; send no more than 64 blocks of data per bus transfer
"Profile"="SDMemory"
"IClass"=multi_sz:"{A4E7EDDA-E575-4252-9D6B-4195D48BB865}",
"{8DD679CE-8AB4-43c8-A14A-EA4963FAA715}"
(3、)在Enterprise,OEM_Drivers,Enterprise,OS,IRDA目录下的rgu文件,找到DisablePowerManagement修改其值为0 —— (我当然是直接加在OEMDrivers里的那个Rgu啦,原作者的做法比较累)。
结果:目前还没有发现睡死,还需测试。用电正常,省电是谈不上了,估计也就2天多一点。
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
【再接上文】
感觉这是一个折中的方法,应该还是要在Atom里找一找8DD679CE-8AB4-43c8-A14A-EA4963FAA715对应的dll到底是哪个?即对应的nvrm.dll应该是Atom的哪个dll文件,抛砖引玉吧,还需要高手出马。[/color]
测试ROM连接:http://www.brsbox.com/filebox/down/fc/1f31a1774007eb8edb74498281aa16a2
















