So, for a long while now, I’ve noticed that the Samsung S5 I have has a distinct problem with Wifi reception. Specifically, unlike the other Android devices I have, it does not seem to receive packets from the Wifi-router in a timely manner. This is most noticeable in MiniCards when playing Rummy. If you have a number of AI bots playing, they will appear to perform nonsensical moves. Anyone in the game with one of the other devices always sees the proper sequence of moves, but if you’re on the Samsung on the same network, sometimes you just see all your opponents simultaneously pick up and put down. Confusing!
What appears to be happening is that the packets arrive from the server, go to your wifi-router, it sends out a traffic indicator beacon. The packets then just have to sit there until Samsung wakes up out of power-save mode and collects the packets. I haven’t managed to confirm this with a packet trace but this is pretty much the only explanation that fits what’s happening. I’m not saying that Samsung is the only vendor that has this problem; it’s entirely possible that other devices have a similar problem, and equally possible that other S5’s don’t have this problem (there are 42 different S5 variants out there and some of them don’t even have the same chipset).
The obvious solution would be to disable power saving mode. There are several things that control this. Some android devices have an option in Settings to control this, however on my S5 there is only “Keep Wi-Fi on during sleep” which doesn’t seem to make any difference. There is also the WIFI_MODE_FULL_HIGH_PERF flag which can be set. I’ve tried this and it doesn’t appear to make any difference.
However today I discovered there is a secret menu, which got my hopes up. Dial *#0011# and you get this
then select WiFi and you get here:
…unfortunately it didn’t fix my problem 🙁
So it looks like I will have to do some very hacky workaround, which will probably involve lots of pinging to keep the interface awake.