Like many others I was seeing many wakeups by com.android.phone, and as noted by others this is because of fast dormancy. Or rather, because of LG's implementation of it.
I'm not gonna go into too much detail, but the offending implementation can be found in com/android/internal/telephony/LgeFDHandlerInterfaceImpl . This class is in /system/framework/com.lge.core.jar . After data activity on HSPA networks they use AlarmManager to periodically wake up and check the number of bytes transmitted over the network interface. This goes on until some time after it stops changing, and the connection is considered dormant.
This periodic checking is what's waking the device, and for every new byte transferred the wakeup/polling period is extended and device doesn't sleep. The chattier apps are, the more awake time you'll get.
Enough of the boring details, here's how I disabled it and got rid of the com.android.phone wakeups. Root required.
This helped me, hope it does the same for you.
Edit 2:
I've written a quick and dirty app that tries to handle this setting without need for terminals or root. Try it and report issues here: http://xdaforums.com/showthread.php?t=2021248
Edit 1:
In essence you need to change a value in a sqlite database and there are many ways to do it. There are apps, use adb shell etc. Whatever works for you. If someone wants to write an app that makes this easier, be my guest
Reversal is restoring the original value "1,0,0,1000,5000,60000,3000,5000,1,8" and reboot:
This database is not there after a wipe, so future ROM chefs wanting to include it by default should edit /etc/dcm_settings.xml as this is where the initial database contents come from. Just replace the original value with "0" for ATT.
I'm not gonna go into too much detail, but the offending implementation can be found in com/android/internal/telephony/LgeFDHandlerInterfaceImpl . This class is in /system/framework/com.lge.core.jar . After data activity on HSPA networks they use AlarmManager to periodically wake up and check the number of bytes transmitted over the network interface. This goes on until some time after it stops changing, and the connection is considered dormant.
This periodic checking is what's waking the device, and for every new byte transferred the wakeup/polling period is extended and device doesn't sleep. The chattier apps are, the more awake time you'll get.
Enough of the boring details, here's how I disabled it and got rid of the com.android.phone wakeups. Root required.
Code:
$ adb shell
# su
# sqlite3 /data/data/com.android.providers.telephony/databases/telephony.db
update dcm_settings set fastdormancy="0" where numeric="310410";
.quit
# reboot
This helped me, hope it does the same for you.
Edit 2:
I've written a quick and dirty app that tries to handle this setting without need for terminals or root. Try it and report issues here: http://xdaforums.com/showthread.php?t=2021248
Edit 1:
In essence you need to change a value in a sqlite database and there are many ways to do it. There are apps, use adb shell etc. Whatever works for you. If someone wants to write an app that makes this easier, be my guest
Reversal is restoring the original value "1,0,0,1000,5000,60000,3000,5000,1,8" and reboot:
Code:
update dcm_settings set fastdormancy="1,0,0,1000,5000,60000,3000,5000,1,8" where numeric="310410";
This database is not there after a wipe, so future ROM chefs wanting to include it by default should edit /etc/dcm_settings.xml as this is where the initial database contents come from. Just replace the original value with "0" for ATT.
Code:
<profile>
<siminfo
operator="ATT"
country="US"
mcc="310"
mnc="410"
extraid=""
/>
<settings
fastdormancy_param="1,0,0,1000,5000,60000,3000,5000,1,8"
ipmtu="1410"
/>
</profile>
Last edited: