Raspberry Pi проблема с WiFi 5Ghz

#raspberrypi

Raspberry Pi

Давно думал о покупке Raspberry Pi. И только сейчас собрался. Просмотрел магазины Москвы, где малинка 4 версии на 2 гигабайта памяти обходилась в среднем более 8 тыс рублей, почти купил, но решил обратить внимание на Aliexpress. Где, как оказалось в дальнейшем, можно купить набор получше за чуть более 4500 рублей, это с учетом доставки. В результате заказал именно там.

Ждать пришлось почти три недели, но было отслеживание и информирование о том, где находиться посылка. Время пролетело незаметно.

В наборе была сама малинка, алюминиевый корпус с активным охлаждением, карта памяти на 64 гигабайта и карт-ридер, блок питания и кабель hdmi.

raspberry

Чтобы понимать размерность:

raspberry-size

В собранном состоянии:

raspberry-full01

Немного другой ракурс:

raspberry-full02

Собирать малинку было просто, на все потратил порядка 15 минут. Чуть больше готовил SD-карту, когда записывал образ Raspberry. Для того, чтобы настроить малинку на работу необходимо после записи образа снова подключить SD-карту к компьютеру и в разделе /Volumes/boot создать два файла:

  1. пустой файл ssh для активации ssh-сервиса при старте малинки
  2. файл wpa_supplicant.conf с описанием подключения к wifi-сети (документация представлена на официальной странице headless )

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

ssh pi@raspberrypi.local

Описание проблемы

Дома у меня подключение к интернету от провайдера МГТС на скорости 200 мегабит в секунду. При этом дома раздается интернет по WiFi через их роутер ZTE F670. При использовании подключения к WiFi на частоте 5Ghz получаю стабильные 200 мегабит на своих устройствах.

Проблема заключается в том, что подключиться на частоте 5Ghz на малинке мне не удалось. Сканирование сети показывало наличие SSID только в сети с частотой 2.4Ghz. Что довольно странно, так как в документации явно говориться о поддержке всех частот.

В интернетах нашел упоминание о том, что настройке беспроводной сети для малинки 4-й версии нужно явно указывать страну, в которой работает беспроводная сеть. От этого зависит, какие частоты будут использоваться для подключения к сети в 5Ghz. И так же указывалось, что в ряде стран 5Ghz просто отключается. В качестве решения предлагалось выставить явно страну в US или GB, где поддержка присутствует. Попытался менять файл wpa_supplicant.conf, указывая эти страны, что приводило к тому, что при сканировании начинали появляться сети с 5Ghz, но подключится к ним было невозможно.

На одном из форумов так же указывали, что если использовать не официальный дистрибутив raspberrypi, который основан на Debian, а Ubuntu, то проблем с сетью нет. Залил Ubuntu на SD-карту, загрузился, подключение к WiFi прошло успешно и работало стабильно в сети 5Ghz. Все бы хорошо. Только Ubuntu как был странным дистрибутивом, так им и остался.

Использовать малинку я собирался в основном в двух вещах:

  1. pi-hole
  2. nextcloud

Блокировка рекламы и сетевой диск. Как раз с первым в Ubuntu у меня возникли проблемы. При установке pi-hole в режиме docker, контейнер не стартовал, указывая на то, что порт 53 уже занят другим процессом. Это связано с тем, что на 53 порту висит по умолчанию systemd-resolved, локальный резволвер, который для десктопа дает массу преимуществ, но сильно мешает на сервере. А при установке pi-hole в режиме приложения, производиться отключение указанного сервиса, с последующими проблемами при использовании системы.

Не больше одного дня меня хватило на Ubuntu, после чего удалил ее и вернулся к Debian. Пусть медленнее, но работает безо всех этих проблем.

Решение проблемы с подключением

После установки Debian решил потратить чуть больше времени на анализ проблемы. Изначально настроил подключение на использование сети 2,4Ghz с гарантированным подключением. В параметрах подключения указывал RU. Для просмотра текущих параметров работы беспроводной сети использовал команды:

pi@raspberrypi:~ $ sudo iw reg get
global
country RU: DFS-ETSI
    (2402 - 2482 @ 40), (N/A, 20), (N/A)
    (5170 - 5250 @ 80), (N/A, 20), (N/A), AUTO-BW
    (5250 - 5330 @ 80), (N/A, 20), (0 ms), DFS, AUTO-BW
    (5650 - 5730 @ 80), (N/A, 30), (0 ms), DFS
    (5735 - 5835 @ 80), (N/A, 30), (N/A)
    (57000 - 66000 @ 2160), (N/A, 40), (N/A)

Видно, что настроено на использование именно российских каналов. Теперь смотрим список доступных каналов:

pi@raspberrypi:~ $ iw list
Wiphy phy0
    max # scan SSIDs: 10
    max scan IEs length: 2048 bytes
    max # sched scan SSIDs: 16
    max # match sets: 16
    max # scan plans: 1
    max scan plan interval: 508
    max scan plan iterations: 0
    Retry short limit: 7
    Retry long limit: 4
    Coverage class: 0 (up to 0m)
    Device supports roaming.
    Device supports T-DLS.
    Supported Ciphers:
        ,* WEP40 (00-0f-ac:1)
        ,* WEP104 (00-0f-ac:5)
        ,* TKIP (00-0f-ac:2)
        ,* CCMP-128 (00-0f-ac:4)
        ,* CMAC (00-0f-ac:6)
    Available Antennas: TX 0 RX 0
    Supported interface modes:
         ,* IBSS
         ,* managed
         ,* AP
         ,* P2P-client
         ,* P2P-GO
         ,* P2P-device
    Band 1:
        Capabilities: 0x1062
            HT20/HT40
            Static SM Power Save
            RX HT20 SGI
            RX HT40 SGI
            No RX STBC
            Max AMSDU length: 3839 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-7
        Bitrates (non-HT):
            ,* 1.0 Mbps
            ,* 2.0 Mbps (short preamble supported)
            ,* 5.5 Mbps (short preamble supported)
            ,* 11.0 Mbps (short preamble supported)
            ,* 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)
            ,* 2472 MHz [13] (20.0 dBm)
            ,* 2484 MHz [14] (disabled)
    Band 2:
        Capabilities: 0x1062
            HT20/HT40
            Static SM Power Save
            RX HT20 SGI
            RX HT40 SGI
            No RX STBC
            Max AMSDU length: 3839 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-7
        VHT Capabilities (0x00001020):
            Max MPDU length: 3895
            Supported Channel Width: neither 160 nor 80+80
            short GI (80 MHz)
            SU Beamformee
        VHT RX MCS set:
            1 streams: MCS 0-9
            2 streams: not supported
            3 streams: not supported
            4 streams: not supported
            5 streams: not supported
            6 streams: not supported
            7 streams: not supported
            8 streams: not supported
        VHT RX highest supported: 0 Mbps
        VHT TX MCS set:
            1 streams: MCS 0-9
            2 streams: not supported
            3 streams: not supported
            4 streams: not supported
            5 streams: not supported
            6 streams: not supported
            7 streams: not supported
            8 streams: not supported
        VHT TX highest supported: 0 Mbps
        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] (disabled)
            ,* 5190 MHz [38] (disabled)
            ,* 5200 MHz [40] (disabled)
            ,* 5210 MHz [42] (disabled)
            ,* 5220 MHz [44] (disabled)
            ,* 5230 MHz [46] (disabled)
            ,* 5240 MHz [48] (disabled)
            ,* 5260 MHz [52] (disabled)
            ,* 5280 MHz [56] (disabled)
            ,* 5300 MHz [60] (disabled)
            ,* 5320 MHz [64] (disabled)
            ,* 5500 MHz [100] (disabled)
            ,* 5520 MHz [104] (disabled)
            ,* 5540 MHz [108] (disabled)
            ,* 5560 MHz [112] (disabled)
            ,* 5580 MHz [116] (disabled)
            ,* 5600 MHz [120] (disabled)
            ,* 5620 MHz [124] (disabled)
            ,* 5640 MHz [128] (disabled)
            ,* 5660 MHz [132] (disabled)
            ,* 5680 MHz [136] (disabled)
            ,* 5700 MHz [140] (disabled)
            ,* 5720 MHz [144] (disabled)
            ,* 5745 MHz [149] (disabled)
            ,* 5765 MHz [153] (disabled)
            ,* 5785 MHz [157] (disabled)
            ,* 5805 MHz [161] (disabled)
            ,* 5825 MHz [165] (disabled)
    Supported commands:
         ,* new_interface
         ,* set_interface
         ,* new_key
         ,* start_ap
         ,* join_ibss
         ,* set_pmksa
         ,* del_pmksa
         ,* flush_pmksa
         ,* remain_on_channel
         ,* frame
         ,* set_wiphy_netns
         ,* set_channel
         ,* tdls_oper
         ,* start_sched_scan
         ,* start_p2p_device
         ,* connect
         ,* disconnect
         ,* crit_protocol_start
         ,* crit_protocol_stop
         ,* update_connect_params
    Supported TX frame types:
         ,* 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
         ,* 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
         ,* P2P-device: 0x00 0x10 0x20 0x30 0x40 0x50 0x60 0x70 0x80 0x90 0xa0 0xb0 0xc0 0xd0 0xe0 0xf0
    Supported RX frame types:
         ,* managed: 0x40 0xd0
         ,* AP: 0x00 0x20 0x40 0xa0 0xb0 0xc0 0xd0
         ,* P2P-client: 0x40 0xd0
         ,* P2P-GO: 0x00 0x20 0x40 0xa0 0xb0 0xc0 0xd0
         ,* P2P-device: 0x40 0xd0
    software interface modes (can always be added):
    valid interface combinations:
         ,* #{ managed } <= 1, #{ P2P-device } <= 1, #{ P2P-client, P2P-GO } <= 1,
           total <= 3, #channels <= 2
         ,* #{ managed } <= 1, #{ AP } <= 1, #{ P2P-client } <= 1, #{ P2P-device } <= 1,
           total <= 4, #channels <= 1
    Device supports scan flush.
    Device supports randomizing MAC-addr in sched scans.
    Supported extended features:
        ,* [ 4WAY_HANDSHAKE_STA_PSK ]: 4-way handshake with PSK in station mode
        ,* [ 4WAY_HANDSHAKE_STA_1X ]: 4-way handshake with 802.1X in station mode

Обращаем внимание на то, что напротив 5Ghz каналов стоит disabled. То есть при использовании RU эти каналы просто отключаются. Пробуем переключить на лету страну:

pi@raspberrypi:~ $ sudo iw reg set US
pi@raspberrypi:~ $ sudo iw reg get
global
country 98: DFS-UNSET
    (2402 - 2472 @ 40), (N/A, 20), (N/A)
    (5170 - 5250 @ 80), (N/A, 20), (N/A), AUTO-BW
    (5250 - 5330 @ 80), (N/A, 20), (0 ms), DFS, AUTO-BW
    (5650 - 5730 @ 80), (N/A, 23), (0 ms), DFS
    (5735 - 5835 @ 80), (N/A, 30), (N/A)
    (57240 - 63720 @ 2160), (N/A, 40), (N/A)

Видно, что режим переключился, осталось проверить, что у нас с каналами?

pi@raspberrypi:~ $ iw phy phy0 channels
Band 1:
    ,* 2412 MHz [1]
      Maximum TX power: 20.0 dBm
      Channel widths: 20MHz HT40+
    ,* 2417 MHz [2]
      Maximum TX power: 20.0 dBm
      Channel widths: 20MHz HT40+
    ,* 2422 MHz [3]
      Maximum TX power: 20.0 dBm
      Channel widths: 20MHz HT40+
    ,* 2427 MHz [4]
      Maximum TX power: 20.0 dBm
      Channel widths: 20MHz HT40+
    ,* 2432 MHz [5]
      Maximum TX power: 20.0 dBm
      Channel widths: 20MHz HT40- HT40+
    ,* 2437 MHz [6]
      Maximum TX power: 20.0 dBm
      Channel widths: 20MHz HT40- HT40+
    ,* 2442 MHz [7]
      Maximum TX power: 20.0 dBm
      Channel widths: 20MHz HT40- HT40+
    ,* 2447 MHz [8]
      Maximum TX power: 20.0 dBm
      Channel widths: 20MHz HT40-
    ,* 2452 MHz [9]
      Maximum TX power: 20.0 dBm
      Channel widths: 20MHz HT40-
    ,* 2457 MHz [10]
      Maximum TX power: 20.0 dBm
      Channel widths: 20MHz HT40-
    ,* 2462 MHz [11]
      Maximum TX power: 20.0 dBm
      Channel widths: 20MHz HT40-
    ,* 2467 MHz [12] (disabled)
    ,* 2472 MHz [13] (disabled)
    ,* 2484 MHz [14] (disabled)
Band 2:
    ,* 5170 MHz [34] (disabled)
    ,* 5180 MHz [36]
      Maximum TX power: 20.0 dBm
      Channel widths: 20MHz HT40+ VHT80
    ,* 5190 MHz [38] (disabled)
    ,* 5200 MHz [40]
      Maximum TX power: 20.0 dBm
      Channel widths: 20MHz HT40- VHT80
    ,* 5210 MHz [42] (disabled)
    ,* 5220 MHz [44]
      Maximum TX power: 20.0 dBm
      Channel widths: 20MHz HT40+ VHT80
    ,* 5230 MHz [46] (disabled)
    ,* 5240 MHz [48]
      Maximum TX power: 20.0 dBm
      Channel widths: 20MHz HT40- VHT80
    ,* 5260 MHz [52]
      Maximum TX power: 20.0 dBm
      No IR
      Radar detection
      Channel widths: 20MHz HT40+ VHT80
      DFS state: usable (for 11 sec)
      DFS CAC time: 60000 ms
    ,* 5280 MHz [56]
      Maximum TX power: 20.0 dBm
      No IR
      Radar detection
      Channel widths: 20MHz HT40- VHT80
      DFS state: usable (for 11 sec)
      DFS CAC time: 60000 ms
    ,* 5300 MHz [60]
      Maximum TX power: 20.0 dBm
      No IR
      Radar detection
      Channel widths: 20MHz HT40+ VHT80
      DFS state: usable (for 11 sec)
      DFS CAC time: 60000 ms
    ,* 5320 MHz [64]
      Maximum TX power: 20.0 dBm
      No IR
      Radar detection
      Channel widths: 20MHz HT40- VHT80
      DFS state: usable (for 11 sec)
      DFS CAC time: 60000 ms
    ,* 5500 MHz [100]
      Maximum TX power: 20.0 dBm
      No IR
      Radar detection
      Channel widths: 20MHz HT40+ VHT80
      DFS state: usable (for 675 sec)
      DFS CAC time: 60000 ms
    ,* 5520 MHz [104]
      Maximum TX power: 20.0 dBm
      No IR
      Radar detection
      Channel widths: 20MHz HT40- VHT80
      DFS state: usable (for 675 sec)
      DFS CAC time: 60000 ms
    ,* 5540 MHz [108]
      Maximum TX power: 20.0 dBm
      No IR
      Radar detection
      Channel widths: 20MHz HT40+ VHT80
      DFS state: usable (for 675 sec)
      DFS CAC time: 60000 ms
    ,* 5560 MHz [112]
      Maximum TX power: 20.0 dBm
      No IR
      Radar detection
      Channel widths: 20MHz HT40- VHT80
      DFS state: usable (for 675 sec)
      DFS CAC time: 60000 ms
    ,* 5580 MHz [116]
      Maximum TX power: 20.0 dBm
      No IR
      Radar detection
      Channel widths: 20MHz HT40+ VHT80
      DFS state: usable (for 675 sec)
      DFS CAC time: 60000 ms
    ,* 5600 MHz [120]
      Maximum TX power: 20.0 dBm
      No IR
      Radar detection
      Channel widths: 20MHz HT40- VHT80
      DFS state: usable (for 675 sec)
      DFS CAC time: 60000 ms
    ,* 5620 MHz [124]
      Maximum TX power: 20.0 dBm
      No IR
      Radar detection
      Channel widths: 20MHz HT40+ VHT80
      DFS state: usable (for 675 sec)
      DFS CAC time: 60000 ms
    ,* 5640 MHz [128]
      Maximum TX power: 20.0 dBm
      No IR
      Radar detection
      Channel widths: 20MHz HT40- VHT80
      DFS state: usable (for 675 sec)
      DFS CAC time: 60000 ms
    ,* 5660 MHz [132]
      Maximum TX power: 20.0 dBm
      No IR
      Radar detection
      Channel widths: 20MHz HT40+ VHT80
      DFS state: usable (for 11 sec)
      DFS CAC time: 60000 ms
    ,* 5680 MHz [136]
      Maximum TX power: 20.0 dBm
      No IR
      Radar detection
      Channel widths: 20MHz HT40- VHT80
      DFS state: usable (for 11 sec)
      DFS CAC time: 60000 ms
    ,* 5700 MHz [140]
      Maximum TX power: 20.0 dBm
      No IR
      Radar detection
      Channel widths: 20MHz HT40+ VHT80
      DFS state: usable (for 11 sec)
      DFS CAC time: 60000 ms
    ,* 5720 MHz [144]
      Maximum TX power: 20.0 dBm
      No IR
      Radar detection
      Channel widths: 20MHz HT40- VHT80
      DFS state: usable (for 11 sec)
      DFS CAC time: 60000 ms
    ,* 5745 MHz [149]
      Maximum TX power: 20.0 dBm
      Channel widths: 20MHz HT40+ VHT80
    ,* 5765 MHz [153]
      Maximum TX power: 20.0 dBm
      Channel widths: 20MHz HT40- VHT80
    ,* 5785 MHz [157]
      Maximum TX power: 20.0 dBm
      Channel widths: 20MHz HT40+ VHT80
    ,* 5805 MHz [161]
      Maximum TX power: 20.0 dBm
      Channel widths: 20MHz HT40- VHT80
    ,* 5825 MHz [165]
      Maximum TX power: 20.0 dBm
      Channel widths: 20MHz

Совершенно другое дело! 5Ghz каналы включены. Отлично! То есть нужно переключить страну в параметрах wifi и дело с концом? Пробуем изменить в файле /etc/wpa_supplicant/wpa_supplicant.conf страну и на US и на лету подгрузить новые настройки с помощью команды:

sudo wpa_cli -i wlan0 reconfigure

Проверяем что получилось:

pi@raspberrypi:~ $ sudo iw reg get
global
country RU: DFS-ETSI
    (2402 - 2482 @ 40), (N/A, 20), (N/A)
    (5170 - 5250 @ 80), (N/A, 20), (N/A), AUTO-BW
    (5250 - 5330 @ 80), (N/A, 20), (0 ms), DFS, AUTO-BW
    (5650 - 5730 @ 80), (N/A, 30), (0 ms), DFS
    (5735 - 5835 @ 80), (N/A, 30), (N/A)
    (57000 - 66000 @ 2160), (N/A, 40), (N/A)

С удивлением наблюдаем, что снова используется RU, хотя выставляли другую страну и список каналов снова указывает на то, что 5Ghz отключены. Для чистоты эксперимента отключаю малинку, создаю снова файл wpa_supplicant.conf в /bootдиректории на SD с указанием US страны. После загрузки проверяю и снова вижу, что изменение страны в параметрах подключения не играет роли, снова используется Россия и снова 5Ghz отключены.

Остается вариант изменения параметров работы роутера. В парметрах ZTE F670 в подключении wifi указываю вместо России Соединенные штаты, перезагружаю роутер и ничего не трогая в малинке, просто проверяю, как обстоят дела с подключением на ней:

pi@raspberrypi:~ $ sudo iw reg get
global
country 98: DFS-UNSET
    (2402 - 2472 @ 40), (N/A, 20), (N/A)
    (5170 - 5250 @ 80), (N/A, 20), (N/A), AUTO-BW
    (5250 - 5330 @ 80), (N/A, 20), (0 ms), DFS, AUTO-BW
    (5650 - 5730 @ 80), (N/A, 23), (0 ms), DFS
    (5735 - 5835 @ 80), (N/A, 30), (N/A)
    (57240 - 63720 @ 2160), (N/A, 40), (N/A)

Получилось! Страна в подключении на малинке изменилась на US и в списке каналов фигурируют 5Ghz, просмотр SSID-сетей отображает все имеющиеся сети. Изменение подключения на SSID с 5Ghz успешно проходит и сохраняется после ребута малинки. Больше никаких проблем с подключением.

Как оказалось, в работе Raspberrypi с wifi важную роль играют не только настройки системы, но и настройки роутера, к которому производиться подключение.