image

На днях нашей компании исполняется 20 лет. Последние 15 лет из этих 20 мы делаем программы для анализа Wi-Fi-сетей. Часть этой работы – разработка драйверов для Wi-Fi-адаптеров, и в этой статье я расскажу, как команда разработчиков тестирует продукты своего труда, и как процесс тестирования эволюционировал за эти 15 лет вместе с эволюцией стандартов и адаптеров. Будет много картинок (то, что называют «geek porn») и технических подробностей.

Зачем вообще писать специальные драйверы?

Когда вы делаете софт для анализа сетей Wi-Fi (а мы делаем программу для инспектирования и моделирования сетей и анализатор пакетов Wi-Fi), вам нужно каким-то образом получать (читать, захватывать, сниффить, ловить… — всё это синонимы) пакеты Wi-Fi, которыми обмениваются близлежащие точки доступа и клиенты. Сделать это под Windows можно, только создав набор своих собственных драйверов для определенных чипсетов.

Что же не так с обычными стандартными драйверами, которые делает производитель адаптера? С точки зрения обычного пользователя, с ними всё хорошо. Есть только маленькая проблема – вы не можете его использовать для чтения Wi-Fi пакетов в режиме пассивного наблюдателя. А без этого вы не можете создать софт для анализа сетей. Вообще, это большая тема для отдельной статьи (и я ее напишу в этом году). Если вам интересно прямо сейчас, то я расскажу кратко в следующем абзаце, а если тема программирования вам не близка, просто пропустите его.

Лет десять назад под Windows появился новый API для пассивного чтения Wi-Fi пакетов, так называемый monitor mode. «Сниффить» пакеты на Windows можно было всегда, и никто не мешает вам запустить Wireshark и видеть пакеты, идущие через ваш беспроводный адаптер, но проблема в том, что вы увидите только свои пакеты и только дата-пакеты. Вся остальная информация (чужие пакеты, пакеты типа Beacon, информация по уровню сигнала в пакете и его дата-рейту, и т.п.) недоступна. Новый API был призван решить этот вопрос раз и навсегда. Но не решил: его не поддерживает нормально почти ни один чипсет основных вендоров, а сам API устарел еще в момент рождения и не развивается Microsoft. Короче говоря, с ним полная катастрофа. И если вы наткнулись на софт для анализа сетей Wi-Fi под Windows, продавцы которого утверждают, что он поддерживает любые или почти любые адаптеры Wi-Fi и не требует замены драйверов – вам точно впаривают то, что называется по-английски snake oil.

Писать специальные драйверы для мониторинга Wi-Fi сложно, долго и дорого. Количество компаний, которые занимаются этим, можно посчитать, используя пальцы одной руки.

Зачем тестировать связку адаптер-драйвер

Драйвер – это программа для взаимодействия с hardware (железом), специфичная для конкретного hardware. В процессе разработки драйвера программист должен убедиться, что драйвер корректно ловит пакеты, переключает частотные каналы и диапазоны, корректно реагирует на hibernate системы, верно подсчитывает уровни сигнала, и делает еще массу вещей, без которых невозможно анализировать Wi-Fi сеть.

Казалось бы, это довольно понятная и простая задача: воткнул адаптер в компьютер, а дальше разрабатывай и тестируй свой драйвер, сколько хочешь. В реальности, есть масса нюансов, о которых мы и расскажем.

Какой должна быть платформа для тестирования

Чтобы технологично тестировать драйверы, нужен некий test bed, то есть платформа для работы с разнообразным железом, которая должна соответствовать нескольким требованиям:

  • Простое отключение одного и подключение другого адаптера.
  • Возможность подключения к современным компьютерным интерфейсам.
  • Низкие помехи от электронных компонентов.
  • Мобильность. В процессе тестирования нужно иметь возможность перемещать Wi-Fi адаптер, меняя ориентацию его антенн в пространстве и меняя дистанцию до точки доступа (иначе вы не сможете нормально откалибровать уровень сигнала).
  • Возможность подключения нескольких адаптеров одновременно (для USB).

Кроме того, бывает крайне полезно посмотреть, как работает стандартный драйвер, т.е. увидеть общение драйвера адаптера с компьютером на уровне шины, но мы оставим пока эту тему в стороне.

Археология и современность

Теперь пришло время рассказа непосредственно про железо. Вспомним былое, местами весьма древнее, и обсудим новое.

2003

Мы начали заниматься софтом для Wi-Fi в 2003 году (до этого мы делали софт только для проводных сетей). Начало нулевых был временем, когда Wi-Fi только-только начинал свой путь. Первый из семьи стандартов, 802.11, был принят еще в 1997 году. За ним последовали 802.11b и 802.11а в 1999, но в массы технология пошла значительно позже. Большинство ноутбуков продавались без встроенного Wi-Fi, но к ним можно было самостоятельно купить адаптеры: внешние, подключаемые к порту CardBus (PCMCIA) для ноутбуков, либо внутренние стандарта PCI. Небольшая часть high-end ноутбуков продавалась и со встроенными адаптерами miniPCI.

Нашим первым шагом была поддержка CardBus-адаптеров 802.11b. То были благословенные времена: почти все такие адаптеры были на чипсете Prism компании Intersil, сорс-код драйвера был доступен бесплатно для всех после подписания NDA, а максимальная скорость передачи данных на физическом уровне составляла 11 Mbps, т.е. реально можно было передавать данные со скоростью не более 1 мегабайта в секунду в идеальных условиях.


Wi-Fi-адаптер CardBus с внешним антеннами

Wi-Fi-адаптер CardBus с внешним антеннами

Надо сказать, что адаптеры неплохо работали, имели хорошую чувствительность, особенно если была возможность подключения внешних антенн. С платформой для тестирования было тоже всё очень просто и безальтернативно: почти все ноутбуки имели один или два порта CardBus.

Старинный ноутбук с портами PCMCIA
Вы еще помните этих мамонтов по 3-4 килограмма?

Все, что нам оставалось – вставить адаптер в такой внешний порт.

Адаптер CardBus и соответствующий слот древней машины
Адаптер CardBus и соответствующий слот древней машины

2007

На смену далеко не миниатюрным CardBus-адаптерам приходит более изящный стандарт ExpressCard на шине PCI Express. На рынке появляются 34-миллиметровые ExpressCard-адаптеры Wi-Fi, причем уже 802.11g и 802.11a. Скорости растут, применяются новые схемы модуляции.

Wi-Fi-адаптеры ExpressCard
Wi-Fi-адаптеры ExpressCard

ExpressCard, как и CardBus, вполне удобен для тестирования. Карты легко менять, ноутбуки мобильны, на рынке нет недостатка в моделях с портами ExpressCard.

Десктопы тоже не стоят на месте, в 2007 принят стандарт PCI Express 2.0, так что внутри десктопов уже часто появляются PCIe-адаптеры с внешними антеннами. Их тестировать не так удобно (снять крышку корпуса, заменить PCIe-адаптер, вернуть всё на место).

2010

Мы начинаем поддержку Wi-Fi-адаптеров USB 2.0. Это очень удобный форм-фактор как для тестирования, так и для использования конечными пользователями. Всё, что нужно – порт USB, или несколько портов, если вы используете несколько адаптеров.

На арену выходит легендарный адаптер Proxim ORiNOCO 8494 стандарта 802.11n, основанный на чипсете производства Atheros Communications, тогда еще не поглощённой Qualcomm. Этот адаптер использовали все профессиональные программы для Wi-Fi site surveys. У него отличная чувствительность.

Легендарный USB-адаптер Proxim ORiNOCO 8494
Легендарный USB-адаптер Proxim ORiNOCO 8494

Возможность подключить сразу несколько адаптеров – большой плюс, это ускоряет время сканирования каналов, если речь идет о программах для site survey, и позволяет, например, анализировать поведение клиентов при роуминге, если речь идёт о пакетных анализаторах.

Тем не менее, не стоит забывать, что типичный USB-адаптер Wi-Fi потребляет от 200 до 300 mA, и если вы используете пассивный USB-хаб, воткнув в него три адаптера, то вы легко можете выйти за предельные для USB 2.0 500 mA.

Измеритель PortaPow для определения потребляемого адаптером тока
Измеритель PortaPow для определения потребляемого адаптером тока

Радиочастотных помех от хабов USB 2.0 практически нет, и, помимо вопроса о потребляемом токе, единственное, о чем вам надо позаботиться – это расположение портов на хабе. Порты должны быть расположены так, чтобы в соседние порты можно было вставить адаптеры одновременно (если порты расположены слишком близко, вставить адаптеры просто не получится).

Следующей проблемой в 2010 году для нас стало появление адаптеров MiniPCIe, которые пришли на смену MiniPCI в ноутбуках. Начали мы с того, что разбирали ноутбуки, чтобы протестировать новый адаптер. Какая это была боль – рассказывать, наверное, не надо. Замена адаптера в ноутбуке – это небыстрый и нудный процесс, причем можно наткнуться на много подводных камней. Во-первых, если в «родном» адаптере ноутбука стоял адаптер с двумя антеннами, а нам хотелось протестировать модель с тремя антеннами, нормального решения не было. Во-вторых, часть производителей ноутбуков занимается откровенным вредительством, жестко прошивая в BIOS те модели адаптеров, которые ноутбук поддерживает. И если новый адаптер не попадает в такой white list, то он просто не распознается. В-третьих, вам может просто не повезти, и вы что-нибудь сломаете внутри.

В какой-то момент нам пришлось использовать десктопы с платой-переходником PCIe <-> MiniPCIe. Но решение это не было идеальным: мобильность устройства всё же важна. Идеальное же решение нашлось у тайваньских ребят из фирмы Bplus Technology, которые, среди большого ассортимента очень интересных отладочных решений, предлагали вот такую прекрасную плату:

Плата для тестирования с разъемом MiniPCIe
Плата для тестирования с разъемом MiniPCIe, подключаемая через адаптер ExpressCard

Эта плата стала просто спасением на много лет. Test bed получился великолепным: адаптеры можно менять в два счета, сохранена мобильность, помех нет, а сама плата стоит совсем недорого. Всё что нужно – ноутбук со слотом ExpressCard, но в те годы это не было проблемой.

Плата в подключенном состоянии
Плата в подключенном состоянии, адаптер ExpressCard вставлен в ноутбук

2013

К 2013 году Wi-Fi полностью завоевал мир. Все ноутбуки поголовно оснащены интегрированными модулями Wi-Fi, и эти модули, на волне всеобщей миниатюризации, начинают выпускаться в новом форм-факторе, M.2 (он же NGFF). Карты M.2 меньше привычных MiniPCIe и имеют другой разъем.

Плата с разъемом MiniPCIe, модуль MiniPCIe, модуль M.2
Плата с разъемом MiniPCIe, модуль MiniPCIe, модуль M.2

Очень хочется продолжить использование нашего прекрасного комплекта для тестирования, и Bplus Technologies снова приходит на помощь. Они выпускают переходник MiniPCIe <-> M.2, и мы легко делаем вот такой толстый бутерброд:

«Бутерброд» из платы MiniPCIe, переходника MiniPCIe <-> M.2,
Wi-Fi-адаптера M.2 и подключенные к нему omni-антенны
«Бутерброд» из платы MiniPCIe, переходника MiniPCIe <-> M.2, Wi-Fi-адаптера M.2 и подключенные к нему omni-антенны

Ноутбуков с ExpressCard на рынке уже почти не остается, но у нас есть запас таких старых машин, хотя уже понятно, что скоро придется искать новое решение. Но об этом ниже.

2014

В декабре 2013 года ратифицирован стандарт 802.11ac, и в 2014 году на рынке появляется много адаптеров 802.11ac, причем уже USB 3.0. Зачем адаптерам USB 3.0? Потому что скорости шины 2.0 уже не хватает. Трехпотоковые (3 spatial streams) адаптеры 802.11n могли обеспечивать максимальную скорость 450 Mbps на физическом уровне, а вот адаптеры 802.11ac уже могут давать 867 Mbps (два потока, ширина канала 80 MHz) или 1300 Mbps (три потока, ширина канала 80 MHz) и даже в теории 2340 Mbps (три потока, ширина канала 160 MHz, только таких нет в природе).

Единственная проблема с USB 3.0 заключается в том, что устройства USB 3.0 (кабели, коннекторы, схемотехника) способны генерировать довольно мощный широкополосный радиочастотный шум, который делает адаптеры гораздо менее чувствительными, поскольку понижается отношение сигнал/шум. В отсутствие хорошего экранирования, этот эффект можно легко наблюдать. Скриншот, приведенный ниже, сделан с помощью TamoGraph Site Survey и анализатора спектра Wi-Spy. На скриншоте показана типичная картина работы нескольких сетей в диапазоне 2.4 GHz (амплитуды вверху и так называемый waterfall view внизу). Видно, что порог шума находится примерно на уровне –95 dBm.

Помехи от USB-хаба отсутствуют
Помехи от USB-хаба отсутствуют

Теперь попробуем приблизить Wi-Spy к хабу или внешнему диску USB 3.0. Картина радикально меняется:

Мощные помехи от USB-хаба
Мощные помехи от USB-хаба

Рядом с хабом наблюдается очень приличный шум, примерно на уровне -77 dBm. Если учесть, что минимальное отношение сигнал/шум, при котором Wi-Fi еще как-то может работать, составляет около 4 dB, то при такой картинке адаптер не сможет соединиться с сетью, если сигнал от точки доступа будет ниже -73 dBm. Чтобы обойти эту проблему, стоит попробовать разные хабы или использовать дополнительные USB-кабели, удаляющие адаптер от источников RF-шума.

Вы спросите, как же при таких помехах живут адаптеры USB 3.0? Они живут очень интересной жизнью. Взять, к примеру, адаптеры на чипсете Realtek: когда адаптер не ассоциирован, он работает в режиме USB 2.0, сканируя каналы и находя близлежащие сети. Когда адаптер подключается к сети, то специальный системный сервис Windows переинициализирует устройство, переключая его в режим USB 3.0. В этом режиме адаптер остается до тех пор, пока он не диссоциируется, после чего он снова возвращается в режим USB 2.0. Вот такие безумные танцы.

2018

Время идет вперед, и если с тестированием USB-адаптеров никаких новых проблем не появляется (разъемы USB Type-C не в счет, копеечный переходник решает проблему), то в отношении MiniPCIe и M.2 назревает кризис. Жить дальше со старой связкой «ноутбук со слотом ExpressCard + плата MiniPCIe с интерфейсом ExpressCard» становится невыносимо. Во-первых, старые ноутбуки уже не тянут Windows 10. Во-вторых, они могут умереть в любой момент, оставив нас у разбитого корыта, поскольку искать на блошином рынке древние ноутбуки на замену совершенно не хочется.

Надо найти новое решение. Мобильное, желательно и под Windows и под macOS, с современным интерфейсом для подключения. Естественно, с возможностью Direct Memory Access (DMA). Самое простое – вставить плату-переходник PCIe <-> MiniPCIe в десктоп, но тогда на мобильности надо поставить крест. Таскать на себе десктоп по офису очень полезно для здоровья, но не очень продуктивно. Кроме того, мы вообще сейчас уходим от десктопов в сторону ноутбуков и Intel NUC; десктопы в значительной степени потеряли смысл в последние годы.

Итак, что нам остается? Конечно же не USB, потому что, увы, нельзя сделать мостик PCIe <-> USB. Тогда Thunderbolt: он есть в новых ноутбуках и NUC’ах, и он должен сделать возможным мостик PCIe <-> Thunderbolt. Хорошо, направление поиска – некий девайс для подключения адаптера PCIe через Thunderbolt.

Ищем, ищем и находим красавца: Startech Thunderbolt 3 PCIe Expansion Chassis. Естественно, его разработчикам даже в самых буйных фантазиях не могла прийти в голову мысль, что кто-то захочет вставить в это шасси карту Wi-Fi. На сайте, собственно, описаны все те фантазии, которые посетили разработчиков: «The Thunderbolt 3 PCIe chassis makes it easy to expand your system with the capabilities you need to work at peak productivity. You can add many types of PCI Express cards, such as a PCIe USB 3.1/3.0/2.0 and USB-C, SSD, network, eSATA, FireWire or video capture cards». Теоретически, Wi-Fi должен взлететь. Практически… ну вы знаете как бывает практически. Если у компонента есть хоть малейший шанс не заработать по любой причине (драйвер, firmware, микросхемы), то он обязательно не заработает.

Мы написали в саппорт. Саппорт, объяснимо, был совершенно не готов к вопросу по Wi-Fi. Сказали, что пробовали Ethernet-адаптеры, но Wi-Fi – никогда. Ну что же, попробуем за них мы. Посылка приезжает быстро, и нам остается только снять внешний корпус и вставить PCIe-плату с переходником на M.2.

image
Внутренности Startech TB31PCIEX16

В переходник надо вставить адаптер Wi-Fi и прикрутить его. Дальше подключаем к плате антенны (через микроскопические коннекторы, без лупы не справиться), прикручиваем антенны к скобе PCIe-платы, чтобы вывести их наружу, и подключаем весь юнит к питанию и Thunderbolt-порту ноутбука.

image
Startech TB31PCIEX16 в собранном виде

И оно заработало. Не сразу, конечно, такие железяки обычно сразу не сдаются. Пришлось сначала обновить firmware контроллера Thunderbolt в компьютере. Но потом всё пошло как по маслу.

Будущее

Мы внимательно следим за развитием индустрии. Следующий интерфейс на подходе – M.2 CNVio, который используется, к примеру, в самых новых адаптерах Intel 9560. Следующий Wi-Fi стандарт – 802.11ax. Будем решать проблемы по мере поступления.

Комментарии (42)


  1. alexanster
    16.08.2018 20:41
    +1

    Спасибо, у вас лёгкий слог, читается прям, как детектив.
    А про мобильность этого ящика Thunderbolt — с ним же тоже не особо побегаешь, да ещё и своё питание нужно или хватает от ноутбука по Thunderbolt?


    1. NightFlight Автор
      16.08.2018 20:50
      +1

      Спасибо:)

      Про ящик — у него внешние питание, т.е. строго говоря, он не совсем мобилен, но полная мобильность и не требуется в нашем случае. Достаточно того, его можно легко переставить в другую комнату, или же взять в руку, поднести ближе к АП, отнести подальше, повернуть в любой плоскости, и т.п.


  1. iproger
    16.08.2018 21:07
    +1

    Мой опыт wifi-адаптеров. Всегда на пк использовал обычный tp-link (usb) + сторонняя антенна на 7 дБ. Но со временем начались отключения и захотелось попробовать что-то более серьезное. Выбор пал на адаптер ASUS (PCE-AC56). Сразу же взлетела скорость почти на треть на обычном роутере и повысилась стабильность. Возможно сыграли свою роль 2 антенны вместо 1.


    1. maxzh83
      16.08.2018 21:55

      А мой недавний выбор — TP-LINK Archer T2U для десктопа. И выбор оказался так себе. Наверное, виноват сам, надо было внимательно подойти к выбору, но мне не нужны высокие скорости, поэтому решил что подойдет практически любой адаптер. Но проблема пришла откуда совсем не ждал. А именно, беспроводная мышь начала тупить и подвисать. До этого эта же самая мышь отлично работала вместе с ноутбуком много лет. Пришлось временно пересесть на проводную мышь, потом может сменю адаптер.


      1. NightFlight Автор
        16.08.2018 22:56

        Если у вас двухдиапазонная точка доступа, попробуйте для подключения клиента использовать 5 ГГц, а не 2.4 ГГц. Это может решить проблему с мышью.


  1. lonelymyp
    16.08.2018 22:42

    Так вот в чём дело… а я ломал голову почему при использовании USB 3.0 начинала лагать беспроводная мышка. Оказывается USB 3.0 глушит радиосигнал…


  1. barbos6
    17.08.2018 00:46

    Есть такой насущный вопрос — можно ли под linux понудить заставить работать адаптер на чипе rtl8022bu, как две точки доступа в разных диапазонах?

    iw list
    # iw list
    Wiphy phy1
    max # scan SSIDs: 9
    max scan IEs length: 2304 bytes
    Retry short limit: 7
    Retry long limit: 4
    Coverage class: 0 (up to 0m)
    Supported Ciphers:
    * WEP40 (00-0f-ac:1)
    * WEP104 (00-0f-ac:5)
    * TKIP (00-0f-ac:2)
    * CCMP (00-0f-ac:4)
    Available Antennas: TX 0 RX 0
    Supported interface modes:
    * IBSS
    * managed
    * AP
    * P2P-client
    * P2P-GO
    Band 1:
    Capabilities: 0x1963
    RX LDPC
    HT20/HT40
    Static SM Power Save
    RX HT20 SGI
    RX HT40 SGI
    RX STBC 1-stream
    Max AMSDU length: 7935 bytes
    DSSS/CCK HT40
    Maximum RX AMPDU length 65535 bytes (exponent: 0x003)
    Minimum RX AMPDU time spacing: 16 usec (0x07)
    HT TX/RX MCS rate indexes supported: 0-15
    Bitrates (non-HT):
    * 1.0 Mbps
    * 2.0 Mbps
    * 5.5 Mbps
    * 11.0 Mbps
    * 6.0 Mbps
    * 9.0 Mbps
    * 12.0 Mbps
    * 18.0 Mbps
    * 24.0 Mbps
    * 36.0 Mbps
    * 48.0 Mbps
    * 54.0 Mbps
    Frequencies:
    * 2412 MHz [1] (20.0 dBm)
    * 2417 MHz [2] (20.0 dBm)
    * 2422 MHz [3] (20.0 dBm)
    * 2427 MHz [4] (20.0 dBm)
    * 2432 MHz [5] (20.0 dBm)
    * 2437 MHz [6] (20.0 dBm)
    * 2442 MHz [7] (20.0 dBm)
    * 2447 MHz [8] (20.0 dBm)
    * 2452 MHz [9] (20.0 dBm)
    * 2457 MHz [10] (20.0 dBm)
    * 2462 MHz [11] (20.0 dBm)
    * 2467 MHz [12] (20.0 dBm) (no IR)
    * 2472 MHz [13] (20.0 dBm) (no IR)
    * 2484 MHz [14] (disabled)
    Band 2:
    Capabilities: 0x1863
    RX LDPC
    HT20/HT40
    Static SM Power Save
    RX HT20 SGI
    RX HT40 SGI
    No RX STBC
    Max AMSDU length: 7935 bytes
    DSSS/CCK HT40
    Maximum RX AMPDU length 65535 bytes (exponent: 0x003)
    Minimum RX AMPDU time spacing: 16 usec (0x07)
    HT TX/RX MCS rate indexes supported: 0-15
    Bitrates (non-HT):
    * 6.0 Mbps
    * 9.0 Mbps
    * 12.0 Mbps
    * 18.0 Mbps
    * 24.0 Mbps
    * 36.0 Mbps
    * 48.0 Mbps
    * 54.0 Mbps
    Frequencies:
    * 5170 MHz [34] (disabled)
    * 5180 MHz [36] (30.0 dBm)
    * 5190 MHz [38] (disabled)
    * 5200 MHz [40] (30.0 dBm)
    * 5210 MHz [42] (disabled)
    * 5220 MHz [44] (30.0 dBm)
    * 5230 MHz [46] (disabled)
    * 5240 MHz [48] (30.0 dBm)
    * 5260 MHz [52] (30.0 dBm) (no IR)
    * 5280 MHz [56] (30.0 dBm) (no IR)
    * 5300 MHz [60] (30.0 dBm) (no IR)
    * 5320 MHz [64] (30.0 dBm) (no IR)
    * 5500 MHz [100] (30.0 dBm) (no IR)
    * 5520 MHz [104] (30.0 dBm) (no IR)
    * 5540 MHz [108] (30.0 dBm) (no IR)
    * 5560 MHz [112] (30.0 dBm) (no IR)
    * 5580 MHz [116] (30.0 dBm) (no IR)
    * 5600 MHz [120] (30.0 dBm) (no IR)
    * 5620 MHz [124] (30.0 dBm) (no IR)
    * 5640 MHz [128] (30.0 dBm) (no IR)
    * 5660 MHz [132] (30.0 dBm) (no IR)
    * 5680 MHz [136] (30.0 dBm) (no IR)
    * 5700 MHz [140] (30.0 dBm) (no IR)
    * 5745 MHz [149] (30.0 dBm)
    * 5765 MHz [153] (30.0 dBm)
    * 5785 MHz [157] (30.0 dBm)
    * 5805 MHz [161] (30.0 dBm)
    * 5825 MHz [165] (30.0 dBm)
    * 5920 MHz [184] (disabled)
    * 5940 MHz [188] (disabled)
    * 5960 MHz [192] (disabled)
    * 5980 MHz [196] (disabled)
    * 6000 MHz [200] (disabled)
    * 6020 MHz [204] (disabled)
    * 6040 MHz [208] (disabled)
    * 6060 MHz [212] (disabled)
    * 6080 MHz [216] (disabled)
    Supported commands:
    * new_interface
    * set_interface
    * new_key
    * start_ap
    * new_station
    * set_bss
    * join_ibss
    * set_pmksa
    * del_pmksa
    * flush_pmksa
    * remain_on_channel
    * frame
    * set_channel
    * connect
    * disconnect
    Supported TX frame types:
    * IBSS: 0x00 0x10 0x20 0x30 0x40 0x50 0x60 0x70 0x80 0x90 0xa0 0xb0 0xc0 0xd0 0xe0 0xf0
    * managed: 0x00 0x10 0x20 0x30 0x40 0x50 0x60 0x70 0x80 0x90 0xa0 0xb0 0xc0 0xd0 0xe0 0xf0
    * AP: 0x00 0x10 0x20 0x30 0x40 0x50 0x60 0x70 0x80 0x90 0xa0 0xb0 0xc0 0xd0 0xe0 0xf0
    * AP/VLAN: 0x00 0x10 0x20 0x30 0x40 0x50 0x60 0x70 0x80 0x90 0xa0 0xb0 0xc0 0xd0 0xe0 0xf0
    * P2P-client: 0x00 0x10 0x20 0x30 0x40 0x50 0x60 0x70 0x80 0x90 0xa0 0xb0 0xc0 0xd0 0xe0 0xf0
    * P2P-GO: 0x00 0x10 0x20 0x30 0x40 0x50 0x60 0x70 0x80 0x90 0xa0 0xb0 0xc0 0xd0 0xe0 0xf0
    Supported RX frame types:
    * IBSS: 0xd0
    * managed: 0x40 0xd0
    * AP: 0x00 0x20 0x40 0xa0 0xb0 0xc0 0xd0
    * AP/VLAN: 0x00 0x20 0x40 0xa0 0xb0 0xc0 0xd0
    * P2P-client: 0x40 0xd0
    * P2P-GO: 0x00 0x20 0x40 0xa0 0xb0 0xc0 0xd0
    WoWLAN support:
    * wake up on anything (device continues operating normally)
    software interface modes (can always be added):
    interface combinations are not supported
    Device supports scan flush.
    Wiphy phy0
    max # scan SSIDs: 9
    max scan IEs length: 2304 bytes
    Retry short limit: 7
    Retry long limit: 4
    Coverage class: 0 (up to 0m)
    Supported Ciphers:
    * WEP40 (00-0f-ac:1)
    * WEP104 (00-0f-ac:5)
    * TKIP (00-0f-ac:2)
    * CCMP (00-0f-ac:4)
    Available Antennas: TX 0 RX 0
    Supported interface modes:
    * IBSS
    * managed
    * AP
    * P2P-client
    * P2P-GO
    Band 1:
    Capabilities: 0x1963
    RX LDPC
    HT20/HT40
    Static SM Power Save
    RX HT20 SGI
    RX HT40 SGI
    RX STBC 1-stream
    Max AMSDU length: 7935 bytes
    DSSS/CCK HT40
    Maximum RX AMPDU length 65535 bytes (exponent: 0x003)
    Minimum RX AMPDU time spacing: 16 usec (0x07)
    HT TX/RX MCS rate indexes supported: 0-15
    Bitrates (non-HT):
    * 1.0 Mbps
    * 2.0 Mbps
    * 5.5 Mbps
    * 11.0 Mbps
    * 6.0 Mbps
    * 9.0 Mbps
    * 12.0 Mbps
    * 18.0 Mbps
    * 24.0 Mbps
    * 36.0 Mbps
    * 48.0 Mbps
    * 54.0 Mbps
    Frequencies:
    * 2412 MHz [1] (20.0 dBm)
    * 2417 MHz [2] (20.0 dBm)
    * 2422 MHz [3] (20.0 dBm)
    * 2427 MHz [4] (20.0 dBm)
    * 2432 MHz [5] (20.0 dBm)
    * 2437 MHz [6] (20.0 dBm)
    * 2442 MHz [7] (20.0 dBm)
    * 2447 MHz [8] (20.0 dBm)
    * 2452 MHz [9] (20.0 dBm)
    * 2457 MHz [10] (20.0 dBm)
    * 2462 MHz [11] (20.0 dBm)
    * 2467 MHz [12] (20.0 dBm) (no IR)
    * 2472 MHz [13] (20.0 dBm) (no IR)
    * 2484 MHz [14] (disabled)
    Band 2:
    Capabilities: 0x1863
    RX LDPC
    HT20/HT40
    Static SM Power Save
    RX HT20 SGI
    RX HT40 SGI
    No RX STBC
    Max AMSDU length: 7935 bytes
    DSSS/CCK HT40
    Maximum RX AMPDU length 65535 bytes (exponent: 0x003)
    Minimum RX AMPDU time spacing: 16 usec (0x07)
    HT TX/RX MCS rate indexes supported: 0-15
    Bitrates (non-HT):
    * 6.0 Mbps
    * 9.0 Mbps
    * 12.0 Mbps
    * 18.0 Mbps
    * 24.0 Mbps
    * 36.0 Mbps
    * 48.0 Mbps
    * 54.0 Mbps
    Frequencies:
    * 5170 MHz [34] (disabled)
    * 5180 MHz [36] (30.0 dBm)
    * 5190 MHz [38] (disabled)
    * 5200 MHz [40] (30.0 dBm)
    * 5210 MHz [42] (disabled)
    * 5220 MHz [44] (30.0 dBm)
    * 5230 MHz [46] (disabled)
    * 5240 MHz [48] (30.0 dBm)
    * 5260 MHz [52] (30.0 dBm) (no IR)
    * 5280 MHz [56] (30.0 dBm) (no IR)
    * 5300 MHz [60] (30.0 dBm) (no IR)
    * 5320 MHz [64] (30.0 dBm) (no IR)
    * 5500 MHz [100] (30.0 dBm) (no IR)
    * 5520 MHz [104] (30.0 dBm) (no IR)
    * 5540 MHz [108] (30.0 dBm) (no IR)
    * 5560 MHz [112] (30.0 dBm) (no IR)
    * 5580 MHz [116] (30.0 dBm) (no IR)
    * 5600 MHz [120] (30.0 dBm) (no IR)
    * 5620 MHz [124] (30.0 dBm) (no IR)
    * 5640 MHz [128] (30.0 dBm) (no IR)
    * 5660 MHz [132] (30.0 dBm) (no IR)
    * 5680 MHz [136] (30.0 dBm) (no IR)
    * 5700 MHz [140] (30.0 dBm) (no IR)
    * 5745 MHz [149] (30.0 dBm)
    * 5765 MHz [153] (30.0 dBm)
    * 5785 MHz [157] (30.0 dBm)
    * 5805 MHz [161] (30.0 dBm)
    * 5825 MHz [165] (30.0 dBm)
    * 5920 MHz [184] (disabled)
    * 5940 MHz [188] (disabled)
    * 5960 MHz [192] (disabled)
    * 5980 MHz [196] (disabled)
    * 6000 MHz [200] (disabled)
    * 6020 MHz [204] (disabled)
    * 6040 MHz [208] (disabled)
    * 6060 MHz [212] (disabled)
    * 6080 MHz [216] (disabled)
    Supported commands:
    * new_interface
    * set_interface
    * new_key
    * start_ap
    * new_station
    * set_bss
    * join_ibss
    * set_pmksa
    * del_pmksa
    * flush_pmksa
    * remain_on_channel
    * frame
    * set_channel
    * connect
    * disconnect
    Supported TX frame types:
    * IBSS: 0x00 0x10 0x20 0x30 0x40 0x50 0x60 0x70 0x80 0x90 0xa0 0xb0 0xc0 0xd0 0xe0 0xf0
    * managed: 0x00 0x10 0x20 0x30 0x40 0x50 0x60 0x70 0x80 0x90 0xa0 0xb0 0xc0 0xd0 0xe0 0xf0
    * AP: 0x00 0x10 0x20 0x30 0x40 0x50 0x60 0x70 0x80 0x90 0xa0 0xb0 0xc0 0xd0 0xe0 0xf0
    * AP/VLAN: 0x00 0x10 0x20 0x30 0x40 0x50 0x60 0x70 0x80 0x90 0xa0 0xb0 0xc0 0xd0 0xe0 0xf0
    * P2P-client: 0x00 0x10 0x20 0x30 0x40 0x50 0x60 0x70 0x80 0x90 0xa0 0xb0 0xc0 0xd0 0xe0 0xf0
    * P2P-GO: 0x00 0x10 0x20 0x30 0x40 0x50 0x60 0x70 0x80 0x90 0xa0 0xb0 0xc0 0xd0 0xe0 0xf0
    Supported RX frame types:
    * IBSS: 0xd0
    * managed: 0x40 0xd0
    * AP: 0x00 0x20 0x40 0xa0 0xb0 0xc0 0xd0
    * AP/VLAN: 0x00 0x20 0x40 0xa0 0xb0 0xc0 0xd0
    * P2P-client: 0x40 0xd0
    * P2P-GO: 0x00 0x20 0x40 0xa0 0xb0 0xc0 0xd0
    WoWLAN support:
    * wake up on anything (device continues operating normally)
    software interface modes (can always be added):
    interface combinations are not supported
    Device supports scan flush.


    1. NightFlight Автор
      17.08.2018 01:17

      В моем представление это невозможно, и дело не в конкретной ОС. У адаптера один радиомодуль, который в каждый конкретный момент времени настроен на работу на единственной частоте. Если бы адаптеры имели два отдельных радиомодуля (что дорого и не нужно), то они могли бы, скажем, соединяться сразу с двумя AP на разных каналах и/или в разных диапазонах.


  1. electronus
    17.08.2018 01:27

    Подскажите, какой взять самый скоростной адаптер для ас в формате m.2 и usb 3? Спасибо


    1. NightFlight Автор
      17.08.2018 13:54

      Для наших специфических целей главное в адаптере — чувствительность, а не скорость передачи данных в режиме соединения с точкой доступа, поэтому мы просто не тестировали такой аспект, но из личного неформального опыта я бы выбрал ASUS USB-AC68 и Edimax EW-7822UAC. В гугле можно легко найти статьи, где адаптеры тестируются и сравниваются, например тут или тут.

      С M.2 всё одновременно проще и сложнее. Проще, потому что выбор невелик. Сложнее, потому что очень многое зависит не от адаптера, а от того какие антенны подключены и как они расположены в корпусе ноутбука. Так что даже не буду гадать:)


  1. quwy
    17.08.2018 02:18

    Довольно странно видеть фразу «десктопы потеряли смысл сегодня» на фоне ваших же слов о том, что как раз с десктопом проблема решается одним движением. И вдвойне странно наблюдать ваше решение на базе NUC-like PC. Ладно ноутбук (если человек любит страдать, то ради бога), но от этого чем десктоп-то отличается? Только тем, что недостаточно стилен-моден-молодежен?


    1. firedragon
      17.08.2018 10:52

      Дело в специфике их работы. Я промерял силу WIFI по всему дому. Даже с планшетом lenovo x201 было не не очень :)
      А таскать десктоп :)


    1. NightFlight Автор
      17.08.2018 13:40

      Я прошу прощения, видимо не очень четко донес свою мысль. Я имел ввиду, что для нас, для конкретной команды, десктопы не очень удобны. Для десктопов проблема решается все же не одним движением. В него надо залезть, поменять адаптер, и снова всё вернуть на место. При этом, как я писал в статье, вы лишены возможность измерить уровень сигнала на нужном вам наборе дистанций от точки доступа, например 0.5 м, 1 м, 2 м, и т.п. А в остальном, если не рассматривать этот специфический сценарий, десктоп вполне хорошо.

      Что касается NUC, отличий от декстопа два: (1) его можно легко перемещать относительно точек доступа и, самое главное, (2) его легко можно кинуть в сумку и поехать или полететь в другое место. У вас под рукой всегда ваша рабочая машина, со всем софтом, со всеми средами разработки, и т.п. В принципе можно и ноутбук использовать, но это вопрос вкуса. Лично я предпочитаю NUC, а не ноутбук, в качестве рабочей машины.

      «Стилен-моден-молодежен» — нет, нас это совсем не волнует.

      Я совсем не хотел обидеть владельцев десктопов:)


  1. scruff
    17.08.2018 12:19

    Делитантский вопрос меня давно мучает: Есть в офисе ряд ноутбуков, с очень нехорошей болячкой — их wif-fi адаптеры любят «прыгать» с одной точки на другую, при том, что ближайшая точка стоит в паре метров, а дальняя точка метрах в 15 м и за кучей гипсокартона. При подключении к дальней точке (реальный уровень не замерял) сигнал 1-2 деления из 5 виндовых. Естественно ни о какой нормально связи и речи не может быть в этом случае. И так может прыгать каждые 2-3 минуты. Пришлось сторонним софтом жёстко привязать клиентов к ближайшим точкам, т.к. мобильность их пока не предполагается. Кто сталкивался с прыганием?


    1. timdorohin
      17.08.2018 13:12

      Мышки. В моем случае эта болячка была вызвана китайскими радиомышками на 2.4 ГГц
      Решилось выдавливанием мощности точки доступа до упора и переходом на 11-й канал.
      Все равно случается, но очень редко.
      Ноуты — дешевые асусы на пеньках, куплены для офиса, адаптеры — броадком.


      1. scruff
        17.08.2018 13:46

        Да, первое что пришло в голову — периферия — отключил всё — принтер, внешний монитор, безпроводную мышь заменил обычной проводной — эфекта ноль.


      1. scruff
        17.08.2018 13:59

        Каналы, да тоже все перебирал, от 1 до 11 и даже до 13 (меняя регион в точке на Японию). Эффект на полчаса. Мощность — крутил, ближняя на 100%, дальняя на 25%, и всё равно цепляется каким-то макаром, с уровнем 0-1 делений. Уже думал (но так и не опустился до этого) прикрутить разные SSID, но это не то что костыль, это блин, инвалидное кресло с аппаратом исскуственного дыхания.


        1. NightFlight Автор
          17.08.2018 14:03

          А какие адаптеры встроены в те ноутбуки, что страдают этой болезнью? И на каком оборудовании сделана сеть?


          1. scruff
            17.08.2018 14:15

            Сетка на Cisco WAP131, режим bgn, т.к. есть куча неновых ноутов без поддержки «ас». По адаптеру — ноут lenovo ideapad 710s-13, внутри вроде Qualcomm Atheros QCA61x4A Wireless Network Adapter, 802.11с. Есть подозрение, что погоду может портить тот же Bluetooth, встроенный в эту же плату, хотя включение/выключение «зубов» ситуацию не меняло.


            1. NightFlight Автор
              17.08.2018 14:34

              Вряд ли это Bluetooth. У меня мысли в сторону load balancing на стороне сетки… Может быть ближайшая точка overloaded. Ну либо глюки в алгоритме роуминга. Сначала драйверы Qualcomm Atheros (во времена Atheros без Qualcomm) писали в Калифорнии. Потом стали писать в Китае. А сейчас пишут в Индии…


      1. Leon010203
        17.08.2018 19:52

        У меня было наоборот: ставишь мышку между ноутом и роутером, и курсор начинает прыгать (Мышь GIGABYTE FORCE M9 ICE)


        1. Am0ralist
          18.08.2018 00:52

          тут в 7 портовый usb 3.0 втыкаешь приемник мыши в одни порты — мышка беспроводная начинает дрыгать курсором, в другие — норм… логитечки с их универсальным приемником. тоже, видимо, как-то всё наводится по странному.


    1. NightFlight Автор
      17.08.2018 13:29

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

      image


      1. scruff
        17.08.2018 13:53

        Да, спасибо, эту опцию курил, но она не дала нужного результата — скачет, но реже на «Low». Притом гонял опцию по всем 5 параметрам — от Aggressive до Low. Однако, в один день я поступил совсем радикально — вырубил встрoенный адаптер и подключил внешний USB-bgn адаптер — работало удовлетворительно, но нет-нет скакало, около раза в неделю. Но пользователь пожелал остаться на встроенном адаптере+костыль. З.Ы. На внешнем адаптере не было опции Roaming Aggressiveness.


        1. NightFlight Автор
          17.08.2018 13:59

          Можно еще попробовать поиграть с мощностью точек доступа. Часто, при плотном покрытии точками, она излишне высокая. Если мощность выставить пониже, то «дальние» точки будут хуже «слышны», что может отбить у адаптера желание переключаться на них.


          1. scruff
            17.08.2018 14:04

            Было, крутил во все стороны, ответил выше. У самого крыша едет от бредовости ситуации. Пикантность ситуации — офис из гипсокартона, длиной метров 30 из двух точек доступа. Точки условно расположены — одна в первой трети, вторая во второй трети, т.е. все ровно, с точки зрения расположения.


            1. timdorohin
              17.08.2018 14:36

              А микроволновки в офисе нет?
              Видел однажды такое, как кто что разогреет там, так все от вайфая отваливаются.
              Но там точка одна была, они к ней же переподключались.


              1. scruff
                17.08.2018 19:10

                Есть, как и везде, но там точно никто не греет еду каждые 2-3 минуты.


  1. imbasoft
    17.08.2018 13:04

    Вы случаем не из TamoSoft?


    1. NightFlight Автор
      17.08.2018 13:27

      Да, конечно. Это видно в профиле.


  1. vovsir
    17.08.2018 14:18

    «адаптеры на чипсете Realtek: когда адаптер не ассоциирован, он работает в режиме USB 2.0, сканируя каналы и находя близлежащие сети. Когда адаптер подключается к сети, то специальный системный сервис Windows переинициализирует устройство, переключая его в режим USB 3.0». Вопрос: что делать, если «специальный системный сервис Windows» не переинициализирует устройство в режим USB 3.0? Описываю ситуацию: имею сетевой адаптер Netis WF2190, который сносно работает с установленным принудительно драйвером от Linksys WUSB6300 (с родным драйвером железяка просто ужасно глючит). При «холодном» старте ПК адаптер всегда активируется в режиме USB 2.0 и в нем остается постоянно. И только после перезагрузки компьютера «подхватывается» режим USB 3.0, и то не всегда. Можно ли получить подключение USB 3.0 на постоянной основе? Дело в том, что при подключении USB 2.0 скорость копирования больших файлов по Wi-Fi (стандарт ас, между адаптером и роутером 1 толстая капитальная ЖБ стена) составляет примерно 155 Мбит/с (около 19 Мбайт/с), а при подключении USB 3.0 скорость передачи того же файла увеличивается до 245 Мбит/с (около 30 Мбайт/с). Решаема ли проблема в принципе?


    1. NightFlight Автор
      17.08.2018 15:13

      Да, можно попробовать… Открываете реестр, ищите ключ HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4d36e972-e325-11ce-bfc1-08002be10318}\00xx, где XX — это номер адаптера в системе, например 0005. Можно просто пройтись по всем начиная с 0000, вы найдете нужный по имени в ключе DriverDesc. Нашли адаптер, находите ключ ForcedUsbMode типа string. Дефолтное значение — «0». Меняете на «2», что означает forced USB 3.0. Если ключа нет — создайте его. Всё, теперь вынимаете адаптер и снова вставляете.


      1. vovsir
        17.08.2018 16:15

        Спасибо, попробую. Кстати, в драйвере адаптера есть параметр настройки USB Switch Mode со значениями Auto, USB Mode 1, USB Mode 2 и USB Mode 3. Я подозревал что эти опции должны вносить соответствующие изменения в реестре и влиять на скорость интерфейса USB, однако смена этих значений в драйвере походу вообще ничего не дает.


        1. NightFlight Автор
          17.08.2018 21:34

          Помогло?


  1. igrblkv
    17.08.2018 16:26

    NightFlight, простите, если не по теме, но имеется кучка внешних WiFi-антенн от разных производителей. Можно их как-то рассортировать по мощности/усилению хотя-бы приблизительно, без привязки к размеру и без разламывания на части для выяснения внутреннего устройства?
    Я не знаю, типа, сопротивление померить или ещё что-то такое, бытовое, без сложного и дорогого оборудования?


    1. NightFlight Автор
      17.08.2018 16:45

      Часто у производителей на сайте можно найти radiation patterns. Мощности у них нет, есть усиление (gain). Если это штырьковая Wi-Fi-антенна, то это скорее всего обычная omni-антенна, с усилением 3-5 dBm, с круговой диаграммой. Если patch или yagi, то надо смотреть спецификации. А вам зачем это, если не секрет? Какого типа антенны?


      1. igrblkv
        17.08.2018 17:12

        Антенны обычные, от роутеров, точек доступа и подобного оборудования. Сломалась железка — антенны оставили, или у точки доступа поменяли антенны на другие, с большим усилением или направленные, а старые выкидывать не стали…
        Зачем? Ну вот иногда попадаются железки без антенн, но вполне рабочие — хотелось-бы как-то совместить одно с другим, а не бежать в магазин, но с учетом того, что сейчас это две-три антенны, в среднем, хотелось-бы их как-то более-менее согласованные подобрать (на бытовом уровне).
        Ну совсем редко случается, что поменяли на роутере антенны на бОльшие (по размеру) и с большим усилением, с целью расширения зоны охвата, а оказалось, что там хитрая диаграмма направленности и в среднем, в зоне доступа роутера, сигнал существенно ослабел (антенны не направленные, абсолютно такие-же как родные, но размером больше).


        1. NightFlight Автор
          17.08.2018 17:19

          Понятно. Если это обычные от роутеров, со стандартным разъемом RP-SMA, то я не вижу проблем в том, чтобы просто прикрутить да и попробовать:) Ничего страшного не случится. Диаграммы у них обычно очень похожи, gain тоже не сильно отличается.


  1. AC130
    17.08.2018 17:21

    Я слышал из одного источника (заслуживающего некоторого доверия) что большая часть вендоров имплементирует в железках в основном EDCA, зачастую забивая на остальные упомянутые в стандарте механизмы доступа. Можете, исходя из своего опыта, прокомментировать этот тезис?


    1. NightFlight Автор
      17.08.2018 17:44

      Не уверен, что верно понял вопрос… «зачастую забивая на остальные упомянутые в стандарте механизмы доступа» — забивая на какие именно? PCF и HCCA?


      1. AC130
        17.08.2018 19:11

        Да. Вроде HCCA вообще в дешёвых железках нет. Но я не уверен, хотелось бы услышать ваше мнение.

        Ещё было бы интересно узнать обращаете ли вы внимание на то, насколько «честно» реализован EDCA. Может быть, вам встречались какие-нибудь хитрые вендоры, которые делали некорректные реализации метода доступа с целью повысить пропускную способность на их девайсах, к примеру?


        1. NightFlight Автор
          17.08.2018 19:43

          Про HCCA — да, насколько мне известно, ваш источник прав.

          Про хитрых вендоров — нет, я не встречал такого. Я могу предположить, что такое может быть реализовано на уровне firmware, а к firmware у меня нет доступа. Но на уровне драйверов kernel mode — нет, не видел.