30 August, 2009

iPhone 3GS WiFi Speed Issues

So, since buying my iPhone 3GS, it's been plauged with speed issues over WiFi. Not the awesome Lightwire service on campus, but my home, with my Cisco Aironet 123AG access point, the last place in the world I expect to have problems.

For those lucky enough not to experience slack WiFi, the problem is that is some applications are completely unusable. Using the http://i.dslr.net/tinyspeedtest.html website, my iPhone (on good days) gets ~4000ms pings and I~50kbps. But there should be no reason for this; The speedtest.net app works fine, showing speeds of ~14Mbps... Curious...

So, I did some packet captures (the capture point being on wired ethernet, directly after the AP); the iPhone takes seconds to ACK the TCP packets when running Mail or Safari (didn't bother testing any other applications).

My logic may be failed, but if I run the test and get 256ms and 3500kbps on my MacBook, there should be no reason why this isn't possible on my iPhone. My MacBook uses .11a, while the iPhone 3GS seems to only use .11b/g (which is very odd, because the chipset is there to support 802.11a), so each device isn't sharing radio space with the other.

So I tried screwing with the settings, and the thing which had the most profound effect was the Beacon Interval. By changing it from 4000 Kusec to 40 Kusec, instantly I went from having ~4000ms pings to ~330ms pings, and a usable data rate of 864kbps! I then lowered it to the absolutely lowest time possible, 20 Kusec, and now have ~285ms pings and ~1500kbps to http://i.dslr.net/tinyspeedtest.html.

This does, however, bring one very pressing question; Why does this only affect my 3GS? Beverley's original iPhone worked fine before changing the settings, as well as our 2 laptops, and various visitor's laptops. In fact, I used this and 4 other identical APs at the NZ WCG, providing internets to ~25 different laptops and PDAs of various descriptions, all roaming around the event, with the exact same configuration I started with, and not a single complaint. It obviously can't be the fault of the AP... can it?