[Galaxy S II Q&A, Help & Troubleshooting] damnation333:
Hey guys,

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:

To investigate what traffic is causing the constant wifi usage you can use Shark or Network Log to get a better resolution of the actual network traffic (source):

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:

(Source: here)

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://xdaforums.com/showthread.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.php?fname=./data/ota/files/fluxi-kernel-sgs2-XX.03-beta1.zip

N.E.A.K kernel: 2.1.2x http://xdaforums.com/showthread.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