Ever since the upgrade to Apple OS X Mountain Lion (10.8) on my MacBook (v5.1) I encountered wireless problems every now and then. These 'experiences' are documented in two different blog posts here and here.
At the time I was also running an 'old' version of Little Snitch (v2.x). After installing v3.0.1 my problems seemed to have solved... Seemed, until I upgraded Little Snitch to v3.0.2.
After the (mandatory) reboot my wireless connections were gone. The adapter wouldn't go active. The symptoms being the exactly the same as before. So I have no doubt, that Little Snitch had something to do with it.
Usually, I re-install the OSX and everything is back to normal, so it is a configuration issue. Not a hardware problem, and config issues should be solvable. Since I had nothing better to do, I restarted investigating the issue, and I actually solved my problem (so far).
The following messages were showing up in the Console.app (the Apple syslog viewer) as usual with this issue.
12/8/12 10:45:42.000 AM kernel[0] WLAN adapter PCIE config space was not restored (stateNumber = 1)
12/8/12 10:45:42.000 AM kernel[0] WLAN adapter PCIE config space was not restored (stateNumber = 2)
The complete (sanitized from usernames and incriminating stuff) log can be downloaded here for further reference.
First I found a post on the Apple Support forums of someone having similar problems, only his problem was gone (for a while) after a reboot. My problem was permanent. No matter how many reboots.
I also found a thread suggesting deleting some system configuration files to restore the network configuration settings
Go into /Library/Preferences/System Configuration/ and delete:
com.apple.airport.preferences.plist
com.apple.network.identification.plist
com.apple.smb.server.plist
NetworkInterfaces.plist
preferences.plist
Doing this didn't solve my problem, but got me thinking...
What if I remove the adapter from the operating system, AND remove those files?....
First I removed the adapter from the System Preferences panel (the network section).
After that I removed the configuration files I mentioned earlier before the reboot.
After the reboot, the adapter was still gone, so I had to add the adapter by hand in the System Preferences panel.
Just click the +, and add a WiFi adapter. Almost everything else in done automagically.
There are some things that I had to add manually. These were:
- The network name of the MacBook was reset to MacBook. I had the name in the Sharing option in System Preferences. Due to the name reset, I got login messages from FaceTime and iMessage that the MacBook5.1 was added to the list of devices that were using FaceTime and iMessage.
- I also had to add the wireless networks again. Apart from that, the MacBook logged in automatically, since the passwords for the wireless network are saved in Keychain.
Apart from that everything looks peachy again, but I can only wonder for how long...
In the mean time, I will contact the creators of Little Snitch (obdev). Perhaps they have some additional tips'n tricks, or perhaps they can do something with their installer to circumvent the issue.
UPDATE: I contacted Obdev Support regarding my wireless problems. They assured me that Little Snitch itself doesn't change the configuration of the wireless (or other network) adapters. All they do is capture the requests on an application layer, or to quote their own words:
There's a kernel API which is very close to the application layer. When an application does a system call which relates to a network function, the system call first passes down to the kernel, then it goes through the filter API we use and then it's injected at the top level of the network stack.
Since we are close to the application layer, we can pause the application and let the user decide what to do. AND we still know the origin of the package (which application sent it). Further down in the IP stack, all packages are treated equally. At some point (at the TCP or UDP level), they go through a buffer and then there's no direct relation between the package and the application any more. It's a regular, documented API.
In the mean time, everything seems to function as it should.... But I think I might be 'back' when I upgrade something in the networking chain....