Macos WiFi: различия между версиями

Материал из noname.com.ua
Перейти к навигацииПерейти к поиску
Строка 3: Строка 3:
 
* http://wifi-mac.blogspot.com/2013/03/80211d-macos.html
 
* http://wifi-mac.blogspot.com/2013/03/80211d-macos.html
 
* http://wifi-mac.blogspot.ru/2013/03/mac-os-x-5.html
 
* http://wifi-mac.blogspot.ru/2013/03/mac-os-x-5.html
  +
==Немного теории==
==1==
 
  +
  +
Часто пользователи Mac OS X сталкиваются с проблемой, когда компьютеры от Apple не видят сетей Wi-Fi работающих в диапазоне 5 ГГц или такие сети периодически отваливаются. Основная проблема в данном случае возникает из-за того, что Mac OS X любит ограничивать использование каналов и диапазонов из-за различных региональных требований.
  +
<BR>
  +
Возникновение проблемы рассмотрим на примере компьютера от Apple, официально поставляемого в Россию, с установленной внутри картой от Broadcom.
  +
<BR>
  +
Для снятия данных о текущем режиме работы адаптера Wi-Fi, и параметрах работы с роутером, нужно заглянуть в приложение "Сведения о системе", в раздел Wi-Fi. Так же есть способ посмотреть то-же самое в терминале, все цитаты ниже в этой заметке получены как раз из терминала по команде:
  +
<PRE>
  +
system_profiler SPAirPortDataType
  +
</PRE>
  +
В ответе нас интересовать будут текущие параметры работы нашего адаптера Wi-Fi:
  +
<PRE>
  +
en1:
  +
Card Type: AirPort Extreme (0x14E4, 0xХХ)
  +
Firmware Version: Broadcom BCM43xx 1.0 (5.10.131.36.15)
  +
Locale: RoW
  +
Country Code: X2
  +
Supported PHY Modes: 802.11 a/b/g/n
  +
Supported Channels: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 36, 40, 44, 48, 52, 56, 60, 64, 100, 104, 108, 112, 116, 120, 124, 128, 132, 136, 140, 149, 153, 157, 161, 165
  +
</PRE>
  +
У меня было вот так:
  +
<PRE>
  +
#system_profiler SPAirPortDataType
  +
Wi-Fi:
  +
  +
Software Versions:
  +
CoreWLAN: 3.0.2 (302.12)
  +
CoreWLANKit: 2.0.2 (202.10)
  +
Menu Extra: 8.0.2 (802.7)
  +
configd plug-in: 8.3.2 (832.18.1)
  +
System Information: 8.0 (800.1)
  +
IO80211 Family: 5.2.2 (522.4)
  +
WiFi Diagnostics: 1.1 (110.26)
  +
AirPort Utility: 6.2 (620.33)
  +
Interfaces:
  +
en1:
  +
Card Type: AirPort Extreme (0x14E4, 0x8D)
  +
Firmware Version: Broadcom BCM43xx 1.0 (5.106.98.100.16)
  +
MAC Address: 00:26:bb:01:93:f7
  +
Locale: FCC
  +
Country Code: GB
  +
Supported PHY Modes: 802.11 a/b/g/n
  +
Supported Channels: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 36, 40, 44, 48, 52, 56, 60, 64, 100, 104, 108, 112, 116, 120, 124, 128, 132, 136, 140
  +
Wake On Wireless: Supported
  +
AirDrop: Supported
  +
Status: Connected
  +
Current Network Information:
  +
Mirantis WiFi:
  +
PHY Mode: 802.11n
  +
BSSID: de:9f:db:1b:bf:a7
  +
Channel: 132
  +
Country Code: GB
  +
Network Type: Infrastructure
  +
Security: WPA2 Enterprise
  +
Signal / Noise: -57 dBm / -92 dBm
  +
Transmit Rate: 117
  +
MCS Index: 14
  +
</PRE>
  +
<BR>
  +
В данном примере видно, что адаптер у нас от Broadcom, и виден текущий режим работы адаптера 802.11 a/b/g/n и поддерживаемые каналы. Также указана страна - X2.
  +
В данном случае X2 - это базовый региональный код прошитый в картах Broadcom (во встроенной eeprom-памяти) для всех компьютерах Apple официально продаваемых в Европе (Россия в том числе). Базовый региональный код задает частоты по умолчанию на которых нужно искать роутеры при первом сканировании. Для компьютеров Apple продаваемых в других регионах - базовый код будет иметь значение X0, X1 или X3.
  +
<BR>
  +
При первом сканировании MacOS начинает проверять эфир с диапазона 2.4ГГц и составлять для себя список имеющихся в эфире роутеров, чтобы потом подключиться к роутеру с наибольшим приоритетом выставленным в сетевых настройках в MacOS. Параллельно MacOS также пытается определить регион в котором находится компьютер, чтобы настроить региональные ограничения - делает MacOS это по протоколу 802.11d, слушая какие региональные коды выставлены в роутерах.
  +
<BR>
  +
В случае с картами Broadcom, первую смену страны Мак старается взять с предпочтительной сети, если она видна в эфире. Если предпочтительной в эфире нет, или на ней отключено 802.11d - то код страны берется с любого соседнего роутера. Но иногда этот алгоритм сбоит, и мак цепляет код страны с чужого роутера. Особенно часто беда происходит после пробуждения из сна. Также при каждом ручном подключении к другому роутеру, драйвер для карт Broadcom обновит региональный код и соответственно список каналов, на значения из роутера к которому подключается, естественно если там вещается по 802.11d другая страна, от той, на которую мак уже настроился ранее...
  +
<BR>
  +
Для карт Atheros под Мак алгоритм другой - драйвер не ориентируется на список предпочтительных сетей, и страна по протоколу 802.11d хватается от первого попавшегося в эфире роутера, после этого уже не важно какой код в роутере к которому подключается MacOS - для карт Atheros код выставляется один раз и до отключения адаптера!
  +
Увидеть такую смену региональных настроек можно в системном логе. Для отображения последних срабатываний 802.11d идем в терминал и вводим команды:
  +
<BR>
  +
- для Mac OS X 10.8:
  +
<PRE>
  +
cat /var/log/system.log | grep 802.11d -A1
  +
</PRE>
  +
<BR>
  +
- для Mac OS X 10.7:
  +
<PRE>
  +
cat /var/log/kernel.log | grep 802.11d -A1
  +
</PRE>
  +
  +
В ответ получим большой список с историей смены регионального кода:<BR>
  +
<PRE>
  +
...
  +
en1: 802.11d country code set to 'CN'.
  +
en1: Supported channels 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 149, 153, 157, 161, 165
  +
...
  +
en1: 802.11d country code set to 'TW'.
  +
en1: Supported channels 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 56, 60, 64, 100, 104, 108, 112, 116, 120, 124, 128, 132, 136, 140, 149, 153, 157, 161, 165
  +
...
  +
</PRE>
  +
Также при каждой смене регионального кода, сразу-же поменяется информация о текущем режиме работы адаптера выдаваемой в терминале по команде:
  +
<BR>
  +
<PRE>
  +
system_profiler SPAirPortDataType
  +
en1:
  +
Card Type: AirPort Extreme (0x14E4, 0xХХ)
  +
Firmware Version: Broadcom BCM43xx 1.0 (5.10.131.36.15)
  +
Locale: RoW
  +
Country Code: TW
  +
Supported PHY Modes: 802.11 a/b/g/n
  +
Supported Channels: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 56, 60, 64, 100, 104, 108, 112, 116, 120, 124, 128, 132, 136, 140, 149, 153, 157, 161, 165
  +
</PRE>
  +
<BR>
  +
В данном случае вместо базового кода X2 стал отображаться региональный код TW и поменялись доступные к использованию каналы.
  +
<BR>
  +
Дальнейший поиск сетей происходит уже по обновленному списку доступных каналов, и очень часто из-за этого возникают ситуации, когда MacOS перестает видеть роутеры работающие на частотах которые отсутствуют в обновленном списке каналов, особенно работающие в диапазоне 5ГГц.
  +
<BR>
  +
Причем данная проблема наиболее сильно проявляет себя, когда на нужном нам роутере протокол 802.11d отключен, а вокруг вещает множество соседских роутеров, на которых 802.11d активирован и MacOS приходится использовать региональные настройки с этих чужих роутеров.
  +
<BR>
  +
==Локализация проблемы ==
  +
  +
В моменты возникновения ситуации, когда компьютер от Apple не видит работающей сети в диапазоне 5 ГГц, нужно в терминале посмотреть на текущий режим работы адаптера:
  +
<PRE>
  +
system_profiler SPAirPortDataType
  +
</PRE>
  +
В ответе обращаем внимание на выделенные параметры:
  +
<PRE>
  +
Card Type: AirPort Extreme (0x14E4, 0x8E)
  +
Firmware Version: Broadcom BCM43xx 1.0 (5.106.198.19.22)
  +
Locale: RoW
  +
Country Code: TW
  +
Supported PHY Modes: 802.11 a/b/g/n
  +
Supported Channels: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 56, 60, 64, 100, 104, 108, 112, 116, 120, 124, 128, 132, 136, 140, 149, 153, 157, 161, 165
  +
</PRE>
  +
В данном примере показана ситуация, когда Мак обнаружил страну TW (Тайвань), и скорректировал список каналов для соответствия региональным требованиям.
  +
Данная страна TW приносит много хлопот пользователям MacOS, так-как запрещает работать в диапазоне 5 ГГц на каналах 36, 40, 44, 48 и 52, из-за того,что они запрещены для использования в Тайване.
  +
И если наш роутер работает на одном из этих каналов, то MacOS увидеть его никак не сможет.
  +
  +
Очень похоже на Тайвань действует и обнаружение маком страны Китай (CN):
  +
<PRE>
  +
Card Type: AirPort Extreme (0x14E4, 0x8E)
  +
Firmware Version: Broadcom BCM43xx 1.0 (5.106.98.100.16)
  +
Locale: RoW
  +
Country Code: CN
  +
Supported PHY Modes: 802.11 a/b/g/n
  +
Supported Channels: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 149, 153, 157, 161, 165
  +
</PRE>
  +
Данная страна CN ещё больше ограничивает каналы в диапазоне 5 ГГц. Для использования разрешено лишь пять каналов 149, 153, 157, 161 и 165.
  +
<BR>
  +
Также вредной для МакОС является установка на роутере страны RU (Россия):
  +
<PRE>
  +
Card Type: AirPort Extreme (0x14E4, 0x8E)
  +
Firmware Version: Broadcom BCM43xx 1.0 (5.106.198.19.22)
  +
Locale: RoW
  +
Country Code: RU
  +
Supported PHY Modes: 802.11 a/b/g
  +
Supported Channels: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 36, 40, 44, 48, 52, 56, 60, 64, 100, 104, 108, 112, 116, 120, 124, 128, 132, 136, 140, 149, 153, 157, 161, 165
  +
</PRE>
  +
В данной ситуации, драйвер для карт Broadcom при обнаружении страны RU - отключает режим N. То есть в диапазоне 2.4 ГГц можно использовать только режимы 802.11b/g, а в диапазоне 5 ГГц можно использовать только режим 802.11a.
  +
Соответственно если на роутере для диапазона 5 ГГц стоит режим n-only - то мак подключиться к ней не сможет. Чтобы хоть как-то роутер смог подключиться к сети работающей на 5 ГГц, в роутере в настройках сети 5 ГГц должен стоять режим 802.11a/n - в этом случае Мак с картой от Broadcom подключится в а-режиме, но будет работать на максимальной для этого режима скорости 54 Мбит/с...
  +
  +
Драйвер для карт Atheros при обнаружении страны RU действует по другому:
  +
<PRE>
  +
en1:
  +
Card Type: AirPort Extreme (0x168C, 0x17AA)
  +
Firmware Version: Atheros 9280: 4.0.67.5-P2P
  +
Locale: RoW
  +
Country Code: RU
  +
Supported Channels: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13
  +
</PRE>
  +
В данной ситуации вместо отключения режима N, происходит отключение диапазона 5 ГГц, то есть в диапазоне 2.4 ГГц - можно использовать все режимы 802.11b/g/n, а в диапзоне 5ГГц - вообще нельзя использовать ни 802.11a, ни 802.11n. Иначе говоря, Мак в такой ситуации сетей работающих в 5 ГГц вообще видеть не будет.
  +
<BR>
  +
Аналогичное поведение происходит и со страной UA:
  +
* драйвер для карт Broadcom при обнаружении страны UA отключает режим N в обоих диапазонах.
  +
* драйвер для карт Atheros при обнаружении страны UA отключает диапазон 5 ГГц.
  +
<BR>
  +
Для определения источника возникновения проблемы, с которого МакОС берет проблемную страну нужно запустить в терминале сканирование эфира по команде:
  +
<PRE>
  +
/System/Library/PrivateFrameworks/Apple80211.framework/Resources/airport -s
  +
</PRE>
  +
В ответ мы получим список роутеров которые видит наш Мак:
  +
<PRE>
  +
SSID BSSID RSSI CH HT CC SECURITY (auth/unicast/group)
  +
dlink178 1c:7e:e5:d0:df:хх -65 1,+1 Y RU WPA(PSK/TKIP,AES/TKIP)
  +
hh245 cc:5d:4e:fb:8f:хх -67 1 Y TW WPA2(PSK/AES/AES)
  +
Dread 00:22:90:90:07:хх -69 11 N -- WPA(PSK/TKIP/TKIP)
  +
MajorWiFi 50:46:5d:cc:c2:хх -41 6 Y -- WPA2(PSK/AES/AES)
  +
sohc f0:7d:68:9b:da:хх -75 6 N -- WPA(PSK/TKIP/TKIP)
  +
</PRE>
  +
В данном отчете наглядно видно региональные настройки роутеров. Для этого смотрим столбец СС (Country Code):
  +
* для роутеров с отключенным протоколом 802.11d мы увидим прочерки.
  +
* для роутеров вещающих региональный код, будут видны две буквы.
  +
  +
Также полезно поизучать лог последних срабатываний 802.11d. Для этого вводим в терминал команду для OS X 10.8:
  +
<PRE>
  +
cat /var/log/system.log | grep 802.11d -A1
  +
</PRE>
  +
или для Mac OS X 10.7:
  +
<PRE>
  +
cat /var/log/kernel.log | grep 802.11d -A1
  +
</PRE>
  +
==Пути решения==
  +
<BR>
  +
Первое что стоит проверить, это взглянуть на региональные настройки своего роутера которые видны в терминале по команде:
  +
<PRE>
  +
/System/Library/PrivateFrameworks/Apple80211.framework/Resources/airport -s
  +
</PRE>
  +
<BR>
  +
Если там в столбце СС для нашего роутера указана проблемная страна TW, CN, RU, UA, то нужно в настройках роутера поменять её на страну в которых меньше ограничений, например на US, UK, DE...
  +
<BR>
  +
Если для нашего роутера стоят прочерки - то значит, что в роутере вообще отключено вещание региональных настроек по протоколу 802.11d, а это очень плохо для MacOS, так как Мак будет хватать страну с первого попавшегося в эфире чужого роутера. При этом у соседей могут быть всевозможные региональные настройки, и МакОС постоянно будет настраиваться на различные каналы доспупны к использованию - что ведет как раз к ситуации, когда Мак периодически не видит сети 5ГГц.
  +
<BR>
  +
Отсюда вытекает самое главное решение - протокол 802.11d должен быть обязательно включен в своем роутере, для избавления лишних проблем с MacOS. Также желательно перевести сеть 2,4 ГГц вещающую в своем роутере на канал номер 1, чтобы при первоначальном поиске наш роутер попался раньше соседей, и региональный код МакОС взяла с нашего роутера, а не схватила с первого попавшегося соседа...
  +
<BR>
  +
  +
Также есть кардинальное решение данной проблемы - пропатчить драйвер Wi-Fi из состава MacOS, выключив в нём работу протокола 802.11d. После этого МакОС не будет обращать внимание на региональные настройки роутеров, и список доступных каналов и диапазонов будет неизменен. Подробности в заметке - отключение 802.11d в Mac OS X.
  +
<BR>
  +
==Из практики==
  +
<BR>
  +
Ситуация с пропаданием сети 5 ГГц в большинстве своем проявляется в связке компьютера от Apple и роутеров от сторонних производителей.
  +
Особенно часто проблемы представляют роутеры от TP-Link. Хотя в последнее время стал портиться ASUS: в современных роутерах от ASUS на чипсетах Broadcom (RT-N66U, RT-AC66U и т.д.) протокол 802.11d по умолчанию отключен, что как раз приводит в описанным в этой заметке проблемам...
  +
<BR>
  +
Для активаци 802.11d на роутерах TP-Link, нужно в настройках параметров WIFI поменять страну. Почему-то на большинстве роутеров TP-Link по умолчанию, после включения роутера 802.11d отключен, и начинает вещать региональные настройки только после смены страны через GUI. И это делать нужно при каждой перезагрузке роутера - заново лезть в настройки роутера и менять страну...
  +
<BR>
  +
Для активации 802.11d на роутерах от ASUS нужно использовать Telnet. К примеру рецепт для ASUS RT-N66U:
  +
<PRE>
  +
1. подключаемся по telnet
  +
2. даём четыре команды
  +
nvram set wl0_reg_mode=h
  +
nvram set wl_reg_mode=h
  +
nvram commit
  +
reboot
  +
</PRE>
  +
У родных роутеров от Apple - проблем меньше, но тоже есть...<BR>
  +
Протокол 802.11d, жизненно важный для правильной работы MacOS, по умолчанию включен во всех роутерах от Apple и нигде в настройках не отключается - это хорошо.<BR>
  +
Но к выбору страны нужно относиться внимательно:<BR>
  +
В роутерах Apple официально поставляемым в Россию - есть для использования выбор страны Россия (RU), но использовать её крайне не рекомендуется. Из-за этого будет пропадать режим N на Маках с Broadcom, или 5 ГГц на Маках c Atheros, как я говорил выше.<BR>
  +
Поэтому в роутерах Apple для России нужно сменить страну на любую европейскую, например на Финляндию...<BR>

Версия 16:44, 23 октября 2013

Mac OS и проблема с WiFi

Этат статья - 90% копипаста + мои размышления по ходу

Немного теории

Часто пользователи Mac OS X сталкиваются с проблемой, когда компьютеры от Apple не видят сетей Wi-Fi работающих в диапазоне 5 ГГц или такие сети периодически отваливаются. Основная проблема в данном случае возникает из-за того, что Mac OS X любит ограничивать использование каналов и диапазонов из-за различных региональных требований.
Возникновение проблемы рассмотрим на примере компьютера от Apple, официально поставляемого в Россию, с установленной внутри картой от Broadcom.
Для снятия данных о текущем режиме работы адаптера Wi-Fi, и параметрах работы с роутером, нужно заглянуть в приложение "Сведения о системе", в раздел Wi-Fi. Так же есть способ посмотреть то-же самое в терминале, все цитаты ниже в этой заметке получены как раз из терминала по команде:

system_profiler SPAirPortDataType

В ответе нас интересовать будут текущие параметры работы нашего адаптера Wi-Fi:

en1:
Card Type: AirPort Extreme (0x14E4, 0xХХ)
Firmware Version: Broadcom BCM43xx 1.0 (5.10.131.36.15)
Locale: RoW
Country Code: X2
Supported PHY Modes: 802.11 a/b/g/n
Supported Channels: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 36, 40, 44, 48, 52, 56, 60, 64, 100, 104, 108, 112, 116, 120, 124, 128, 132, 136, 140, 149, 153, 157, 161, 165

У меня было вот так:

#system_profiler SPAirPortDataType
Wi-Fi:

      Software Versions:
          CoreWLAN: 3.0.2 (302.12)
          CoreWLANKit: 2.0.2 (202.10)
          Menu Extra: 8.0.2 (802.7)
          configd plug-in: 8.3.2 (832.18.1)
          System Information: 8.0 (800.1)
          IO80211 Family: 5.2.2 (522.4)
          WiFi Diagnostics: 1.1 (110.26)
          AirPort Utility: 6.2 (620.33)
      Interfaces:
        en1:
          Card Type: AirPort Extreme  (0x14E4, 0x8D)
          Firmware Version: Broadcom BCM43xx 1.0 (5.106.98.100.16)
          MAC Address: 00:26:bb:01:93:f7
          Locale: FCC
          Country Code: GB
          Supported PHY Modes: 802.11 a/b/g/n
          Supported Channels: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 36, 40, 44, 48, 52, 56, 60, 64, 100, 104, 108, 112, 116, 120, 124, 128, 132, 136, 140
          Wake On Wireless: Supported
          AirDrop: Supported
          Status: Connected
          Current Network Information:
            Mirantis WiFi:
              PHY Mode: 802.11n
              BSSID: de:9f:db:1b:bf:a7
              Channel: 132
              Country Code: GB
              Network Type: Infrastructure
              Security: WPA2 Enterprise
              Signal / Noise: -57 dBm / -92 dBm
              Transmit Rate: 117
              MCS Index: 14


В данном примере видно, что адаптер у нас от Broadcom, и виден текущий режим работы адаптера 802.11 a/b/g/n и поддерживаемые каналы. Также указана страна - X2. В данном случае X2 - это базовый региональный код прошитый в картах Broadcom (во встроенной eeprom-памяти) для всех компьютерах Apple официально продаваемых в Европе (Россия в том числе). Базовый региональный код задает частоты по умолчанию на которых нужно искать роутеры при первом сканировании. Для компьютеров Apple продаваемых в других регионах - базовый код будет иметь значение X0, X1 или X3.
При первом сканировании MacOS начинает проверять эфир с диапазона 2.4ГГц и составлять для себя список имеющихся в эфире роутеров, чтобы потом подключиться к роутеру с наибольшим приоритетом выставленным в сетевых настройках в MacOS. Параллельно MacOS также пытается определить регион в котором находится компьютер, чтобы настроить региональные ограничения - делает MacOS это по протоколу 802.11d, слушая какие региональные коды выставлены в роутерах.
В случае с картами Broadcom, первую смену страны Мак старается взять с предпочтительной сети, если она видна в эфире. Если предпочтительной в эфире нет, или на ней отключено 802.11d - то код страны берется с любого соседнего роутера. Но иногда этот алгоритм сбоит, и мак цепляет код страны с чужого роутера. Особенно часто беда происходит после пробуждения из сна. Также при каждом ручном подключении к другому роутеру, драйвер для карт Broadcom обновит региональный код и соответственно список каналов, на значения из роутера к которому подключается, естественно если там вещается по 802.11d другая страна, от той, на которую мак уже настроился ранее...
Для карт Atheros под Мак алгоритм другой - драйвер не ориентируется на список предпочтительных сетей, и страна по протоколу 802.11d хватается от первого попавшегося в эфире роутера, после этого уже не важно какой код в роутере к которому подключается MacOS - для карт Atheros код выставляется один раз и до отключения адаптера! Увидеть такую смену региональных настроек можно в системном логе. Для отображения последних срабатываний 802.11d идем в терминал и вводим команды:
- для Mac OS X 10.8:

cat /var/log/system.log | grep 802.11d -A1 


- для Mac OS X 10.7:

cat /var/log/kernel.log | grep 802.11d -A1 

В ответ получим большой список с историей смены регионального кода:

...
en1: 802.11d country code set to 'CN'.
en1: Supported channels 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 149, 153, 157, 161, 165
...
en1: 802.11d country code set to 'TW'.
en1: Supported channels 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 56, 60, 64, 100, 104, 108, 112, 116, 120, 124, 128, 132, 136, 140, 149, 153, 157, 161, 165
...

Также при каждой смене регионального кода, сразу-же поменяется информация о текущем режиме работы адаптера выдаваемой в терминале по команде:

system_profiler SPAirPortDataType
en1:
Card Type: AirPort Extreme (0x14E4, 0xХХ)
Firmware Version: Broadcom BCM43xx 1.0 (5.10.131.36.15)
Locale: RoW
Country Code: TW
Supported PHY Modes: 802.11 a/b/g/n
Supported Channels: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 56, 60, 64, 100, 104, 108, 112, 116, 120, 124, 128, 132, 136, 140, 149, 153, 157, 161, 165


В данном случае вместо базового кода X2 стал отображаться региональный код TW и поменялись доступные к использованию каналы.
Дальнейший поиск сетей происходит уже по обновленному списку доступных каналов, и очень часто из-за этого возникают ситуации, когда MacOS перестает видеть роутеры работающие на частотах которые отсутствуют в обновленном списке каналов, особенно работающие в диапазоне 5ГГц.
Причем данная проблема наиболее сильно проявляет себя, когда на нужном нам роутере протокол 802.11d отключен, а вокруг вещает множество соседских роутеров, на которых 802.11d активирован и MacOS приходится использовать региональные настройки с этих чужих роутеров.

Локализация проблемы

В моменты возникновения ситуации, когда компьютер от Apple не видит работающей сети в диапазоне 5 ГГц, нужно в терминале посмотреть на текущий режим работы адаптера:

system_profiler SPAirPortDataType

В ответе обращаем внимание на выделенные параметры:

Card Type: AirPort Extreme  (0x14E4, 0x8E)
Firmware Version: Broadcom BCM43xx 1.0 (5.106.198.19.22)
Locale: RoW
Country Code: TW
Supported PHY Modes: 802.11 a/b/g/n
Supported Channels: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 56, 60, 64, 100, 104, 108, 112, 116, 120, 124, 128, 132, 136, 140, 149, 153, 157, 161, 165

В данном примере показана ситуация, когда Мак обнаружил страну TW (Тайвань), и скорректировал список каналов для соответствия региональным требованиям. Данная страна TW приносит много хлопот пользователям MacOS, так-как запрещает работать в диапазоне 5 ГГц на каналах 36, 40, 44, 48 и 52, из-за того,что они запрещены для использования в Тайване. И если наш роутер работает на одном из этих каналов, то MacOS увидеть его никак не сможет.

Очень похоже на Тайвань действует и обнаружение маком страны Китай (CN):

Card Type: AirPort Extreme (0x14E4, 0x8E)
Firmware Version: Broadcom BCM43xx 1.0 (5.106.98.100.16)
Locale: RoW
Country Code: CN
Supported PHY Modes: 802.11 a/b/g/n
Supported Channels: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 149, 153, 157, 161, 165

Данная страна CN ещё больше ограничивает каналы в диапазоне 5 ГГц. Для использования разрешено лишь пять каналов 149, 153, 157, 161 и 165.
Также вредной для МакОС является установка на роутере страны RU (Россия):

Card Type: AirPort Extreme  (0x14E4, 0x8E)
Firmware Version: Broadcom BCM43xx 1.0 (5.106.198.19.22)
Locale: RoW
Country Code: RU
Supported PHY Modes: 802.11 a/b/g
Supported Channels: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 36, 40, 44, 48, 52, 56, 60, 64, 100, 104, 108, 112, 116, 120, 124, 128, 132, 136, 140, 149, 153, 157, 161, 165

В данной ситуации, драйвер для карт Broadcom при обнаружении страны RU - отключает режим N. То есть в диапазоне 2.4 ГГц можно использовать только режимы 802.11b/g, а в диапазоне 5 ГГц можно использовать только режим 802.11a. Соответственно если на роутере для диапазона 5 ГГц стоит режим n-only - то мак подключиться к ней не сможет. Чтобы хоть как-то роутер смог подключиться к сети работающей на 5 ГГц, в роутере в настройках сети 5 ГГц должен стоять режим 802.11a/n - в этом случае Мак с картой от Broadcom подключится в а-режиме, но будет работать на максимальной для этого режима скорости 54 Мбит/с...

Драйвер для карт Atheros при обнаружении страны RU действует по другому:

en1:
Card Type: AirPort Extreme (0x168C, 0x17AA)
Firmware Version: Atheros 9280: 4.0.67.5-P2P
Locale: RoW
Country Code: RU
Supported Channels: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13

В данной ситуации вместо отключения режима N, происходит отключение диапазона 5 ГГц, то есть в диапазоне 2.4 ГГц - можно использовать все режимы 802.11b/g/n, а в диапзоне 5ГГц - вообще нельзя использовать ни 802.11a, ни 802.11n. Иначе говоря, Мак в такой ситуации сетей работающих в 5 ГГц вообще видеть не будет.
Аналогичное поведение происходит и со страной UA:

  • драйвер для карт Broadcom при обнаружении страны UA отключает режим N в обоих диапазонах.
  • драйвер для карт Atheros при обнаружении страны UA отключает диапазон 5 ГГц.


Для определения источника возникновения проблемы, с которого МакОС берет проблемную страну нужно запустить в терминале сканирование эфира по команде:

/System/Library/PrivateFrameworks/Apple80211.framework/Resources/airport -s

В ответ мы получим список роутеров которые видит наш Мак:

SSID           BSSID                    RSSI    CH   HT   CC   SECURITY (auth/unicast/group)
dlink178      1c:7e:e5:d0:df:хх   -65   1,+1  Y     RU   WPA(PSK/TKIP,AES/TKIP)
hh245          cc:5d:4e:fb:8f:хх    -67   1       Y     TW   WPA2(PSK/AES/AES) 
Dread          00:22:90:90:07:хх -69   11      N     --      WPA(PSK/TKIP/TKIP) 
MajorWiFi   50:46:5d:cc:c2:хх  -41   6       Y     --      WPA2(PSK/AES/AES) 
sohc             f0:7d:68:9b:da:хх  -75   6       N     --      WPA(PSK/TKIP/TKIP)

В данном отчете наглядно видно региональные настройки роутеров. Для этого смотрим столбец СС (Country Code):

  • для роутеров с отключенным протоколом 802.11d мы увидим прочерки.
  • для роутеров вещающих региональный код, будут видны две буквы.

Также полезно поизучать лог последних срабатываний 802.11d. Для этого вводим в терминал команду для OS X 10.8:

cat /var/log/system.log | grep 802.11d -A1 

или для Mac OS X 10.7:

cat /var/log/kernel.log | grep 802.11d -A1 

Пути решения


Первое что стоит проверить, это взглянуть на региональные настройки своего роутера которые видны в терминале по команде:

/System/Library/PrivateFrameworks/Apple80211.framework/Resources/airport -s


Если там в столбце СС для нашего роутера указана проблемная страна TW, CN, RU, UA, то нужно в настройках роутера поменять её на страну в которых меньше ограничений, например на US, UK, DE...
Если для нашего роутера стоят прочерки - то значит, что в роутере вообще отключено вещание региональных настроек по протоколу 802.11d, а это очень плохо для MacOS, так как Мак будет хватать страну с первого попавшегося в эфире чужого роутера. При этом у соседей могут быть всевозможные региональные настройки, и МакОС постоянно будет настраиваться на различные каналы доспупны к использованию - что ведет как раз к ситуации, когда Мак периодически не видит сети 5ГГц.
Отсюда вытекает самое главное решение - протокол 802.11d должен быть обязательно включен в своем роутере, для избавления лишних проблем с MacOS. Также желательно перевести сеть 2,4 ГГц вещающую в своем роутере на канал номер 1, чтобы при первоначальном поиске наш роутер попался раньше соседей, и региональный код МакОС взяла с нашего роутера, а не схватила с первого попавшегося соседа...

Также есть кардинальное решение данной проблемы - пропатчить драйвер Wi-Fi из состава MacOS, выключив в нём работу протокола 802.11d. После этого МакОС не будет обращать внимание на региональные настройки роутеров, и список доступных каналов и диапазонов будет неизменен. Подробности в заметке - отключение 802.11d в Mac OS X.

Из практики


Ситуация с пропаданием сети 5 ГГц в большинстве своем проявляется в связке компьютера от Apple и роутеров от сторонних производителей. Особенно часто проблемы представляют роутеры от TP-Link. Хотя в последнее время стал портиться ASUS: в современных роутерах от ASUS на чипсетах Broadcom (RT-N66U, RT-AC66U и т.д.) протокол 802.11d по умолчанию отключен, что как раз приводит в описанным в этой заметке проблемам...
Для активаци 802.11d на роутерах TP-Link, нужно в настройках параметров WIFI поменять страну. Почему-то на большинстве роутеров TP-Link по умолчанию, после включения роутера 802.11d отключен, и начинает вещать региональные настройки только после смены страны через GUI. И это делать нужно при каждой перезагрузке роутера - заново лезть в настройки роутера и менять страну...
Для активации 802.11d на роутерах от ASUS нужно использовать Telnet. К примеру рецепт для ASUS RT-N66U:

1. подключаемся по telnet
2. даём четыре команды
nvram set wl0_reg_mode=h
nvram set wl_reg_mode=h
nvram commit
reboot

У родных роутеров от Apple - проблем меньше, но тоже есть...
Протокол 802.11d, жизненно важный для правильной работы MacOS, по умолчанию включен во всех роутерах от Apple и нигде в настройках не отключается - это хорошо.
Но к выбору страны нужно относиться внимательно:
В роутерах Apple официально поставляемым в Россию - есть для использования выбор страны Россия (RU), но использовать её крайне не рекомендуется. Из-за этого будет пропадать режим N на Маках с Broadcom, или 5 ГГц на Маках c Atheros, как я говорил выше.
Поэтому в роутерах Apple для России нужно сменить страну на любую европейскую, например на Финляндию...