Recently, I acquired a new Android-based smart phone. Just to get familiar with it, playing around, and having phun with it.
Within the context of a research project dealing with voice encryption I was instructed to write some tools and apps on Android.
On our university we have a Wifi network running in WPA enterprise mode with PEAP and an inner MSChapV2 authentication. And surprisingly it worked straightaway. Well, not really. I had to install a Wifi configuration app. I used the Advanced Wifi Configuration Manager. But then it worked – great success!
Ok, let’s guess what is the first thing a typical geek will do with his Android phone? Yes of course, rooting and installing some custom image!
Unfortunately, I noticed that the Wifi at the university campus did not work any more. Of course I blamed those network guys first for being unable to run a Wifi network since my WPA-PSK network at home still did work. But I further noticed that the Wifi on my notebook did still work, hence, I started to investigate what’s wrong with my Android phone.
If you google for it you’ll find a bunch of answers, e.g. this http://code.google.com/p/android/issues/detail?id=8804
Lot’s of people complaining about it. I found out that there is a known bug in wpa_supplicant provided with Android 2.2 but actually this was not true for my image. I think the reason is that there are so much different hand-crafted Andoid images out there that the problem cannot be generalized.
In my case the original installation was running a wpa_supplicant version 0.5.11 and it worked. After upgrading I didn’t work any more. For what every reason unpacking the update image during the installation procedure did not overwrite the old wpa_supplicant even though it was included in the zip file. Obviously, there seems to be some incompatibility between wpa_supplicant-0.5.11 and the responsible kernel module. Probably cfg80211 or mac80211 because WPA-PSK still did work.
What I did to resolve the problem is that I manually unzipped the Gingerbread image on my Linux computer and copied over the wpa_supplicant to the smart phone. This wpa_supplicant is of version 0.6.10 and immediately it worked pretty well.