Become a MacRumors Supporter for $50/year with no ads, ability to filter front page stories, and private forums.

Kisuke

macrumors newbie
Original poster
Jan 16, 2016
1
1
Hi guys,

I had a problem with Wifi on my Macbook Pro. So I am sharing a solution here just for case anyone has same issue.

Well. Why should someone want to disable 802.11d feature on his Mac?
This feature just simply scans available wifi networks and sets wireless card to some region based on this scan. Wireless networks transmits some informations about themselves. Informations are SSID (network name), channel, country code and some other... In case of Apple computers it sets wireless card region to most restrictive one country code that this scan find.
Based on region set on wireless card you can use specific frequency (channel) to connect to wireless network.

And here is the problem. Many users don't know how to properly setup their Wifi and they are transmitting bad country code.
For example in my case. I am living in Czech Republic, which uses wireless channels 1 - 13. So my wireless AP is set to country code CZ.
But many nearby networks transmits country code US - United states (because this is default configuration on most routers). But US have only channels 1 - 11 available for wifi.
So in this case my Macbook sets wireless region to US. Result is that I can't connect to WiFi networks on channel 12 and 13.

So for everyone with the same problem, here is final resolution to fix this. Just keep in mind that you are disabling this feature and it will no longer work (but it is not necessary feature, for example most windows notebooks does not have this feature at all).

Reboot your Mac in recovery mode (CMD+R while booting)
Open Tools - Terminal from menu
Then run command "csrutil disable"
Reboot to OS

Open Terminal
Run "kextstat | grep AirPort"
Now you can determine what type of wireless card do you have.

If you have AirPort.Atheros40 then run:
sudo perl -pi -e 's|\x75\x47\x48\x85\xF6|\xE9\xCB\x00\x00\x00|' /System/Library/Extensions/IO80211Family.kext/Contents/PlugIns/AirPortAtheros40.kext/Contents/MacOS/AirPortAtheros40

For AirPortBrcm4360 run:
sudo perl -pi -e 's|\x24\xC8\x05\x00\x00\x6B\x10|\x24\xC8\x05\x00\x00\xFF\xFF|' /System/Library/Extensions/IO80211Family.kext/Contents/PlugIns/AirPortBrcm4360.kext/Contents/MacOS/AirPortBrcm4360

For AirPortBrcm4331 run:
sudo perl -pi -e 's|\x30\x6B\x10\x00\x00\x0F\x85\xEA|\xFF\xFF\x10\x00\x00\x0F\x85\x EA|g' /System/Library/Extensions/IO80211Family.kext/Contents/PlugIns/AirPortBrcm4331.kext/Contents/MacOS/AirPortBrcm4331

When you done this, run "sudo touch /System/Library/Extensions/"
Now you can reboot your system. 802.11d should be disabled after reboot.

For security reasons I recommend to enable system files protection again.
If you want to do this, reboot your Mac to recovery mode again. Open terminal and run "csrutil enable".
Reboot to OS.

Bad thing is, you must repeat this 802.11d fix procedure after every OS update :(
 
  • Like
Reactions: cynics
Register on MacRumors! This sidebar will go away, and you'll see fewer ads.