更改Mac OS X无线卡国家代码


16

使用通道13上的Mac OS X 连接到无线路由器时遇到问题,这是因为附近有其他正在广播美国国家代码的路由器。到目前为止,我发现的唯一解决方法是每次转到路由器并重新启动计算机。

我问过Google,似乎有人认为它设置了语言环境会更改它,或者它已在路由器固件中固定。我都证明是错的。man ifconfig也没有太有启发性。

有人知道强制卡使用其他国家代码或渠道的另一种方法吗? 我宁愿不切换到另一个通道,因为附近有很多干扰(如KisMAC所示)。

谢谢


编辑

找到了

/System/Library/PrivateFrameworks/Apple80211.framework/Versions/Current/Resources/airport

这似乎允许在卡上设置任意渠道,但不能设置县代码。这似乎没有效果。


我知道您不想更改频道,但是在阅读了这里的答案之后,对我来说,它似乎是最简单,最不容易破解的解决方案。
wjandrea

Answers:


6

802.11d是无线接入点用来广播(除其他事项外)应该在其中运行的监管域(即国家/地区代码)的协议。似乎没有明确的规则规定当各种设备广播冲突的监管域信息时该怎么做。

理想的解决方案是禁用/替换/重新配置正在广播错误信息的设备。

我发现了一个(较旧的)Apple Discussions线程,该线程指示Mac的AirPort硬件将使用开机或从睡眠中唤醒后听到的第一个国家/地区代码。线程中稍后的帖子(在第二页上)表明,仅关闭/打开AirPort硬件本身而不是整个系统的电源就足够了。几个人报告说,使用脚本反复打开和打开AirPort接口(使用networksetup)成功,直到碰巧获得所需状态为止(据报道system_profiler)。


基于TA25972,似乎较旧的设备(可能是不侦听802.11d信息的型号)甚至可能无法切换“国家/地区代码”。


不幸的是,我无法访问正在广播错误国家代码的无线路由器。我以前见过讨论线程,但是我所在的房间距离正确的路由器很远,每次重新启动似乎都找到了美国广播路由器。不过,有趣的是,KisMAC表示,即使将国家/地区代码设置为美国,也可以检测到通道13上的路由器。因此,我稍后可能会调查。
嫩枝

1
我今天再次检查了一次,尽管有美国和美国的国家代码不在支持的频道列表中,但KisMAC能够找到我的路由器并确定它在频道13上
Twig

5

我解决了这个问题,并解决了!

我要做的就是禁用802.11d信标功能。在Mac OS X上的任何可用设置中都无法做到这一点。

但是,您可以对网卡驱动程序进行二进制修补,以使国家/地区代码始终为X2。

因此,显然,我需要做的是使用字符串0x81 0x78 0x30 0x6B 0x10 0x00 0x00 0x0F 0x85to 更改/二进制修补网络驱动程序0x81 0x78 0x30 0x6B 0x10 0x00 0x00 x90 0xE0。这迫使驾驶员无论发送什么信标都使用国家代码《 X2》,因此它永远不会改变。

您可以使用十六进制编辑实用程序进行更改,也可以将以下非常方便的单行代码复制并粘贴到终端应用程序中:

sudo perl -pi -e 's|\x81\x78\x30\x6B\x10\x00\x00\x0F\x85|\x81\x78\x30\x6B\x10\x00\x00\x90\xE9|' /System/Library/Extensions/IO80211Family.kext/Contents/PlugIns/AirPortBrcm4360.kext/Contents/MacOS/AirPortBrcm4360 && sudo touch /System/Library/Extensions/

该解决方案适用于Mac Book Pro Retina 2013。


2
对于其他MBP,您可以使用以下命令找到需要修补的驱动程序:sudo kextstat | grep AirPort
Stephen Connolly

我收到有关无效kext的消息。恢复文件并触摸目录。
k06a

如果您希望将国家/地区代码改为ES,该怎么办?
Fran Marzoa 2015年

必须在2011年末的13英寸Macbook Pro上禁用SIP才能进行更改。即使如此,它对我也不起作用。:(
GAM

1
不起作用..我得到:无法删除/System/Library/Extensions/IO80211Family.kext/Contents/PlugIns/AirPortBrcm4360.kext/Contents/MacOS/AirPortBrcm4360:不允许操作,正在跳过文件。
user426132

1

解决国家/地区代码冲突的最简单方法-您的MAC正在从“最近的”广播路由器中提取错误的国家/地区代码.....因此,如果您的近邻中一个国家/地区的代码不正确,您自己的路由器会认为该国家/地区代码是“错误的”国家/地区-它弄乱了您的互联网连接-解决方案-取下不再使用的旧路由器-只需将其插入电源并将其靠近活动路由器即可.....确保旧路由器设置正确的国家/地区代码,但请勿将其连接到互联网。然后,您的MAC将从此“虚拟”路由器中获取国家/地区代码,并采用正确的国家/地区代码.....问题已解决。这似乎对我有用,而且我已经为此问题困扰了很长时间.....

顺便说一句,这解决了我的问题之一-但是如果有人知道如何克服长防火墙并解决使用VPN时随机出现的高延迟的问题,那将是一个额外的收获........请感激您没有工作在中国.....它的互联网是邪恶的。


1

如果在El Capitan上使用AirPortBrcm4331驱动程序:

  1. 在恢复模式下重新启动(引导时为CMD + r),打开终端并运行 csrutil disable
  2. 重新启动,打开终端并运行
    • sudo perl -pi -e 's|\x30\x6B\x10\x00\x00\x0F\x85\xEA|\xFF\xFF\x10\x00\x00\x0F\x85\xEA|g' /System/Library/Extensions/IO80211Family.kext/Contents/PlugIns/AirPortBrcm4331.kext/Contents/MacOS/AirPortBrcm4331
    • sudo touch /System/Library/Extensions/
  3. 在恢复模式下重新启动(引导时为CMD + r),打开终端并运行 csrutil enable

0

我的wifi路由器也有类似的问题,但是当我将路由器设置为5 ghz时,自动通道已解决。


它是如何解决的?国家代码是否更改?
罗斯2014年

没有公交车,就我所知,我附近的wifi设备上的国家/地区代码没有更改,至少从我将2.4 GHZ切换到5 GHZ并将路由器设置为自动选择了它可以民意调查,我发现问题已解决,如果我换回2.4 GHZ,则国外代码再次出现,并证明是iMac的内部wifi卡无法连接到互联网的问题。Wi-Fi诊断工具告知了国家/地区代码问题。交换回5GHZ,并自动选择最佳通道可轮询,并消除了问题。
Peter Boocock 2014年

0

我找到了一个稍微奇怪的解决方案。我尝试了Google提供的所有解决方案,但是都没有用,但是我看到一篇文章提到KisMAC可以看到第13频道。安装它之后,突然我的国家/地区代码从美国更改为X3,现在我可以在第13频道连接了。


-1

在2010年中期的MacBook Pro中,我要做的就是将kext名称从AirPortBrcm4360更改为AppleAirPortBrcm43224,我终于找到了正确的位置!


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.