I have been reading around the wlan_rx_wakelock since days now since I cannot get rid of this battery drain and just wanted to collect all the information out there and the solutions that worked for some people.
If you put your phone into airplane mode or just simply turn off WiFi you will see in better battery stats that the wlan_rx_wake wakelock will vanish and a deleted_wakelocks will turn up with a similar up time and battery drain percentage.
Some people wake up with a drained phone in the morning, some have a horrendous battery drain when in work on the work/school/university WiFi. Some people have found solutions, but for most it could be tracked back to a certain WiFi network. The wakelock doesn't appear when signed in on the home WiFi, but is present when at work. This shows it is not a problem of the phone itself, but the WIFI AP is the cause.
This is the basic information from the BBS thread here:
wlan_rx
Author(s): sven, credits to Entropy512 @xda-dev
Ranking: n/a
Speaking Name: wlan_rx
Rationale: Wifi chip received a packet from somewhere - On a Galaxy S II, lots of these combined with the fact that the device takes 650 msec to resume from suspend and 150 to go back to sleep means that occasional wifi packets coming in will skyrocket Android OS usage. As an extreme example, run the following from a Linux box when wifi sleep policy is "never" and watch your deep sleep percentages plummet, your battery drain, and Android OS skyrocket: ping -i 5 <wifi IP address of phone>
Know actions: Use a sniffer to determine the cause of the traffic.
Known conditions of occurence:
Related wakelocks: wlan_wake References:
wlan_wake
Author(s): sven, credits to Entropy512 @xda-dev
Ranking: n/a
Speaking Name: wlan_wake
Rationale: wifi chip woke the CPU (Usually this fires and leads to a wlan_rx wakelock).
Know actions: Use a sniffer to determine the cause of the traffic.
Known conditions of occurence:
Related wakelocks: wlan_rx References:
1. Shark for Android - Capture the packets with this. Use wireshark on your PC/MAC to read the captures.
2. Network Log (also in play store) : Will help identify which applications are using your network, on a per packet basis. Note, this is a higher level capture than Shark for Android. (As in, shark will capture every packet that hits the interface. Network log will not.)
Solutions:
- use a static IP instead of DHCP (you may have to set a static IP every time you sign up in that particular network)
- disable IPv6 protocol on your phone (Dorimanx kernels have an option for this in ST tweaks or you can use "Android Firewall" for this
- update your router firmware
- buy a gaming adapter for your Wifi network that gets the DHCP IP adress, but gives your phone a static IP (source)
- optimise router settings: click
- Windows network is causing the problem - solution here: click
- Change wireless network encryption method, change wifi channel, instead of using auto baseband use only 2.4 or 5GHz baseband (Wi - Fi - advanced - Wi - Fi frequency band)
- turn off uPNP in router/AP
- t urn off netbios in windows network
- Thoravukk FAQ tells you: Q. My device not entering deep sleep if i use Wifi?
A: That's not a Kernel issue! It's a Router and (Windows 7) Network problem. Disable IPv6, IP Helper service, shell hardware detection service and the Windows Media Player Network Sharing Service. Source: here - try different kernels: see below
Apps that have been demonstrated to cause the wakelock:
- Dropbox (October 2012)
Several people have been able to get rid of this problem by using a different kernel:
If your wlan_rx wakelock is caused by the IPv6 problem then switching to Dorimanx 7.4x kernel will get rid of this problem as this kernel disables IPv6 for you.
People with Galaxy Nexus phones got rid of the problem by using the CMplusTuna kernel, which is not available for SGS2 unfortunately.
Another user got rid of the problem using "lean kernel" available for GNex and SGSIII.
i9300 users might get rid of it by using the Perseus Kernel "It's caused by the OS enabling some unwanted network filters, I disabled this now in Perseus 26.1 and it should also remove all drain." Source: here
Following up on network filtering and multicast I found this code project which seems to be merged into CM10.1:
bcmdhd: Change packet filter settings to block multicast
A common complaint of users is that battery life on wifi
is very poor, with frequent wlan_rx_wake wakelocks.
It turns out Samsung "opened up" the packet filter
settings from Gingerbread to ICS.
This makes them match the tuna configuration, minus
the filter to allow mDNS through (which lets a bunch
of other stuff through too.)
The original patch reverted to Gingerbread settings,
but it seems like the filter definitions changed
from GB to ICS.
Several users reported that they only have this problem in their work/school/university network. Many users mentioned a network called "eduroam" which is a worldwide network in universities besides the local network (which normally uses the same equipment). So it seems the WiFi equipment/settings cause our phones to be constantly awake. And many report they don't have good 3G reception in these kind of buildings, so they can't just go without WiFi sadly. I can confirm this as I only have the battery drain here in my university.
Also a very interesting in the common Networking forum: http://forum.xda-developers.com/show....php?t=1738171
Kernel's I have tried without any luck:
Siyah 5.0.1
Dorimanx:7.44
Fluxi kernel: http://fluxi.xda-hosting.de/download...X.03-beta1.zip
N.E.A.K kernel: 2.1.2x http://forum.xda-developers.com/show....php?t=1576355
Shun Andromeda: 2-2-7
Dream Kernel: 2.7.5
Abyss Kernel: 2.0 F4
Maybe something is hidden in those Nexus kernels that would also work for the SGSII. Unfortunately I haven't got a clue about coding, so I am hoping that if we help together we find a solution.
Thanks for any input.
damnation333





Linear Mode
