I was experiencing push notifications (Gmail, Google Voice, etc) arriving seconds to minutes late.



That wasn’t so terrible. More concerning was the fact that I use push notifications to get incoming VOIP calls (a feature of the Acrobits app - it means zero battery drain when not in a call because there’s no need for the app to maintain a SIP connection). But with push notifications delayed, I was getting missed calls without even ringing.



A post on Reddit about the poor support for IPv6 got me thinking, and I ended up vastly improving my Android experience by dumping IPv6 for the time being. Here’s what I did.



Diabling IPv6 for the mobile data connection was trivial. The APN menu has a setting for IPv4, IPv6, and IPv4/IPv6 (ie both). Setting it to IPv4 did the trick (although I can’t be certain that every provider will work on IPv4 only. Mine does.)



For WiFi it was a bit harder. There are apps that purport to do this but they didn’t work so well. What did work was Tasker. You will need root for this.



Create a profile called WiFiConnected, choosing State->Net->Wifi Connected. Leave everything else blank.



In this Profile, create a Task called IPv6. The task should be: Code->Run Shell. In the Command line, enter:



echo 1 > /proc/sys/net/ipv6/conf/wlan0/disable_ipv6



Check the box next to “Use Root”.



Since making these changes, all my notifications come instantly. My VOIP calling works flawlessly.