Wi-Fi Old: различия между версиями

Материал из Wiren Board
(Добавил отключение DHCP сервера в режиме клиента.)
(не показано 7 промежуточных версий 2 участников)
Строка 2: Строка 2:
<translate>
<translate>
<!--T:1-->
<!--T:1-->
==Режимы работы==
'''Wi-Fi''' в Wiren Board можно настроить на работу в одном из двух или трёх режимов:
'''Wi-Fi''' в Wiren Board можно настроить на работу в одном из двух или трёх режимов:
* режим точки доступа (включён по умолчанию);
* Режим точки доступа (включён по умолчанию). Работает относительно медленно. Скорости вполне хватит для работы с веб-интерфейсом, но не стоит использовать как замену роутера.
* режим клиента;
* Режим клиента.
* одновременная работа в режиме и точки доступа, и клиента (только в некоторых версиях контроллера; подробнее смотрите ниже).
* Одновременная работа в режиме и точки доступа, и клиента.


В очень редких случаях возможна несовместимость адаптера Wi-Fi в Wiren Board с некоторыми другими устройствами Wi-Fi. Это общая проблема реализаций Wi-Fi на чипсетах разных производителей. Если вы столкнулись с необъяснимыми проблемами при работе, рекомендуем поменять настройки шифрования, ширины канала и т.п.


==Первое подключение по Wi-Fi== <!--T:2-->
==Первое подключение по Wi-Fi== <!--T:2-->
Строка 13: Строка 15:
# [[File:connectors-sma-rpsma.jpg|thumb|right|300 px|Сравнение разъёмов для антенн Wi-Fi (RP-SMA) и GSM (SMA)]] Прикрутите антенну к разъёму для антенны Wi-Fi.
# [[File:connectors-sma-rpsma.jpg|thumb|right|300 px|Сравнение разъёмов для антенн Wi-Fi (RP-SMA) и GSM (SMA)]] Прикрутите антенну к разъёму для антенны Wi-Fi.
#: Без антенны Wi-Fi в Wiren Board работает на расстоянии не более одного метра. Чтобы получить стандартный для Wi-Fi радиус работы, нужно подключить к соответствующему разъёму контроллера антенну. Если контроллер находится в щитке (особенно в металлическом) или отдельной комнате, лучше использовать выносную антенну.
#: Без антенны Wi-Fi в Wiren Board работает на расстоянии не более одного метра. Чтобы получить стандартный для Wi-Fi радиус работы, нужно подключить к соответствующему разъёму контроллера антенну. Если контроллер находится в щитке (особенно в металлическом) или отдельной комнате, лучше использовать выносную антенну.
#: Разъём для антенны - стандартный для Wi-Fi [https://en.wikipedia.org/wiki/SMA_connector#Reverse_polarity_SMA RP-SMA] (который при этом отличается от используемого для GSM-антенн разъёма SMA).
#: Разъём для антенны - стандартный для Wi-Fi [https://en.wikipedia.org/wiki/SMA_connector#Reverse_polarity_SMA RP-SMA] ("гнездо", у GSM-антенн наоборот).
# По умолчанию Wiren Board работает в режиме точки доступа:
# По умолчанию Wiren Board работает в режиме точки доступа:
#* имя точки доступа: ''WirenBoard...''
#* имя точки доступа: ''WirenBoard...''
Строка 60: Строка 62:
/etc/init.d/hostapd restart
/etc/init.d/hostapd restart
</syntaxhighlight>
</syntaxhighlight>


=== Настройка в режиме клиента === <!--T:9-->
=== Настройка в режиме клиента === <!--T:9-->
Строка 66: Строка 67:
<!--T:10-->
<!--T:10-->
# Отключите режим точки доступа.
# Отключите режим точки доступа.
#: Для этого в файле <code>/etc/default/hostapd</code> закомментируйте строку (то есть добавьте знак '''#''' в начало строки)<syntaxhighlight lang="bash">#DAEMON_CONF="/etc/hostapd.conf"</syntaxhighlight>
#: Для этого в файле <code>/etc/default/hostapd</code> закомментируйте строку (то есть добавьте знак '''#''' в начало строки)<syntaxhighlight lang="bash">#DAEMON_CONF="/etc/hostapd.conf"</syntaxhighlight> Закомментировать можно командой: <syntaxhighlight lang="bash"> sed -i 's/^DAEMON_CONF/#DAEMON_CONF/' /etc/default/hostapd</syntaxhighlight>
# Отредактируйте <code>/etc/network/interfaces</code>:
# Отредактируйте <code>/etc/network/interfaces</code>:
#* закомментируйте строки, относящиеся к настройке в режиме точки доступа: <syntaxhighlight lang="bash">
#* закомментируйте строки, относящиеся к настройке в режиме точки доступа: <syntaxhighlight lang="bash">
Строка 79: Строка 80:
                 wpa-psk  {password} # вместо {password} подставьте пароль
                 wpa-psk  {password} # вместо {password} подставьте пароль
</syntaxhighlight>
</syntaxhighlight>
#* Для того чтоб в режиме клиента не выдавать в сеть IP-адреса отключите DHCP-сервер:<syntaxhighlight lang="bash">
systemctl disable dnsmasq
systemctl stop dnsmasq
</syntaxhighlight>
# Чтобы применить изменения, выполните команды
# Чтобы применить изменения, выполните команды
<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
Строка 88: Строка 94:


<!--T:12-->
<!--T:12-->
Режим одновременной работы модуля Wi-Fi и в режиме точки доступа, и в режиме клиента, называется ''Concurrent Mode'' или ''STA+SoftAP'', и поддерживается не всеми Wi-Fi модулями. Также он работает не на всех версиях Wiren Board. Проверено, что он работает из коробки на Wiren Board с чипом Realtek 8723BU и ядром Linux 4.1.15. Чтобы проверить, выполняются ли эти условия, выполните команды:
Режим одновременной работы модуля Wi-Fi и в режиме точки доступа, и в режиме клиента, называется ''Concurrent Mode'' или ''STA+SoftAP'', и поддерживается не всеми Wi-Fi модулями. Он работает на всех версиях Wiren Board 6, и на некоторых ревизиях WB5. Проверено, что он работает из коробки на Wiren Board с чипом Realtek 8723BU и ядром Linux 4.1.15. Чтобы проверить, выполняются ли эти условия, выполните команды:
<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
uname -a
uname -a
Строка 116: Строка 122:
   netmask 255.255.255.0
   netmask 255.255.255.0
</syntaxhighlight>
</syntaxhighlight>


=== Универcальный файл настроек Wi-Fi === <!--T:15-->
=== Универcальный файл настроек Wi-Fi === <!--T:15-->
Строка 173: Строка 178:
# end of wireless bits
# end of wireless bits
</syntaxhighlight>
</syntaxhighlight>


=== Автоматическое переподключение при проблемах с соединением === <!--T:19-->
=== Автоматическое переподключение при проблемах с соединением === <!--T:19-->
Строка 216: Строка 220:
</syntaxhighlight>
</syntaxhighlight>


== Ограничения == <!--T:25-->
<!--T:26-->
# Wi-Fi в Wiren Board в режиме точки доступа работает относительно медленно. Скорости вполне хватит для работы с веб-интерфейсом, но не стоит использовать Wiren Board в качестве замены роутера.
# В очень редких случаях возможна несовместимость адаптера Wi-Fi в Wiren Board с некоторыми другими устройствами Wi-Fi. Это общая проблема реализаций Wi-Fi на чипсетах разных производителей. Если вы столкнулись с необъяснимыми проблемами при работе, рекомендуем поменять настройки шифрования, ширины канала и т.п.
</translate>
</translate>

Версия 09:20, 8 июня 2020

Другие языки:

Режимы работы

Wi-Fi в Wiren Board можно настроить на работу в одном из двух или трёх режимов:

  • Режим точки доступа (включён по умолчанию). Работает относительно медленно. Скорости вполне хватит для работы с веб-интерфейсом, но не стоит использовать как замену роутера.
  • Режим клиента.
  • Одновременная работа в режиме и точки доступа, и клиента.

В очень редких случаях возможна несовместимость адаптера Wi-Fi в Wiren Board с некоторыми другими устройствами Wi-Fi. Это общая проблема реализаций Wi-Fi на чипсетах разных производителей. Если вы столкнулись с необъяснимыми проблемами при работе, рекомендуем поменять настройки шифрования, ширины канала и т.п.

Первое подключение по Wi-Fi

  1. Сравнение разъёмов для антенн Wi-Fi (RP-SMA) и GSM (SMA)
    Прикрутите антенну к разъёму для антенны Wi-Fi.
    Без антенны Wi-Fi в Wiren Board работает на расстоянии не более одного метра. Чтобы получить стандартный для Wi-Fi радиус работы, нужно подключить к соответствующему разъёму контроллера антенну. Если контроллер находится в щитке (особенно в металлическом) или отдельной комнате, лучше использовать выносную антенну.
    Разъём для антенны - стандартный для Wi-Fi RP-SMA ("гнездо", у GSM-антенн наоборот).
  2. По умолчанию Wiren Board работает в режиме точки доступа:
    • имя точки доступа: WirenBoard...
    • пароль: нет
    • адрес контроллера в созданной сети: 192.168.42.1

Настройка Wi-Fi в Linux

Настройка производится стандартным для Linux Debian способом - через файл /etc/network/interfaces. Краткие инструкции для типовых задач даны ниже, на сайте Linux Debian есть подробная документация.

Настройка в режиме точки доступа

Режим точки доступа включён по умолчанию. Работа в режиме точки доступа обеспечивается демоном hostapd.

Процесс настройки:

  1. Включите режим точки доступа. Для этого:
    • в файле /etc/default/hostapd раскомментируйте строку (то есть удалите знак # в начале строки)
      DAEMON_CONF="/etc/hostapd.conf"
      
    • отредактируйте файл /etc/hostapd.conf, чтобы он выглядел так:
      interface=wlan0
      #driver=nl80211 # оставьте эту строку закомментированной
      ssid=WirenBoard # вместо WirenBoard можете подставить другое имя для создаваемой точки доступа
      channel=1
      wpa=2
      wpa_passphrase=your_password # вместо your_password подставьте пароль
      wpa_key_mgmt=WPA-PSK
      wpa_pairwise=TKIP CCMP
      rsn_pairwise=TKIP CCMP
      
  2. Отредактируйте /etc/network/interfaces:
    • раскомментируйте и отредактируйте (или добавьте, если их не было) строки, относящиеся к настройке в режиме точки доступа:
      iface wlan0 inet static
            address 192.168.42.1 # здесь 192.168.42.1  - адрес, по которому в новой сети будет находиться Wiren Board; можете указать другой адрес
            netmask 255.255.255.0
      
    • закомментируйте строки, относящиеся к работе в режиме клиента:
      #auto wlan0
      #iface wlan0 inet dhcp 
      #                wpa-ssid {ssid}
      #                wpa-psk  {password}
      
  3. Выполните команду
/etc/init.d/hostapd restart

Настройка в режиме клиента

  1. Отключите режим точки доступа.
    Для этого в файле /etc/default/hostapd закомментируйте строку (то есть добавьте знак # в начало строки)
    #DAEMON_CONF="/etc/hostapd.conf"
    
    Закомментировать можно командой:
     sed -i 's/^DAEMON_CONF/#DAEMON_CONF/' /etc/default/hostapd
    
  2. Отредактируйте /etc/network/interfaces:
    • закомментируйте строки, относящиеся к настройке в режиме точки доступа:
      #iface wlan0 inet static
      #      address 192.168.42.1
      #      netmask 255.255.255.0
      
    • раскомментируйте и отредактируйте строки (или добавьте, если их не было):
      auto wlan0
      iface wlan0 inet dhcp 
                      wpa-ssid {ssid} # вместо {ssid} подставьте имя точки доступа
                      wpa-psk  {password} # вместо {password} подставьте пароль
      
    • Для того чтоб в режиме клиента не выдавать в сеть IP-адреса отключите DHCP-сервер:
      systemctl disable dnsmasq
      systemctl stop dnsmasq
      
  1. Чтобы применить изменения, выполните команды
ifdown wlan0
ifup wlan0

Настройка в режиме точки доступа и клиента одновременно

Режим одновременной работы модуля Wi-Fi и в режиме точки доступа, и в режиме клиента, называется Concurrent Mode или STA+SoftAP, и поддерживается не всеми Wi-Fi модулями. Он работает на всех версиях Wiren Board 6, и на некоторых ревизиях WB5. Проверено, что он работает из коробки на Wiren Board с чипом Realtek 8723BU и ядром Linux 4.1.15. Чтобы проверить, выполняются ли эти условия, выполните команды:

uname -a
lsmod | grep 8723bu

Если условия не выполнены, возможно, на вашем Wiren Board всё равно можно настроить Concurrent Mode. В качестве отправной точки используйте инструкцию.

Если условия выполнены:

  1. Выполните команду
    iwconfig
    
    В её выводе должны быть показаны два интерфейса Wi-Fi: wlan0 и wlan1.
  2. Настройте по двум предыдущим инструкциям подключение в режиме клиента и подключение в режиме точки доступа, но используйте для них разные интерфейсы. Например, оставьте wlan0 для точки доступа, а клиента сделайте на wlan1. Соответствующая часть файла /etc/network/interfaces должна выглядеть так:
    # Wireless interfaces
    auto wlan1
    iface wlan1 inet dhcp
        wpa-ssid {ssid} # вместо {ssid} подставьте имя точки доступа
        wpa-psk {password} # вместо {password} подставьте пароль
    
    auto wlan0
    iface wlan0 inet static
      address 192.168.42.1
      netmask 255.255.255.0
    

Универcальный файл настроек Wi-Fi

Ниже дан текст файла, в котором показаны настройки для подключения к сетям с разными параметрами шифрования. Файл позаимствован здесь.

####################
#; start of wireless bits
#; this command stays for all configs
auto wlan0
###################
#; comments indicated by #;
#; commands indicated by #
#; remove the # to enable the command
####################
#; if using static IP then....#
#iface wlan0 inet static
# address UR_IP
#gateway UR_ROUTER_IP
#netmask 255.255.255.0
##################
#; otherwise use dhcp #
#iface wlan0 inet dhcp
###################
#; OPEN wireless config #
#wireless-essid UR_ESSID
#wireless-mode managed

###################
#; WEP wireless config #
#wireless-essid UR_ESSID
#wireless-key UR_KEY
#; end of WEP config

########################
#; WPA and WPA2 wireless config #
#; all command config lines above HERE to be #'ed except the entry auto wlan0
########################
wpa-driver wext
wpa-ssid UR_ESSID
#; wpa-ap-scan is 1 for visible and 2 for hidden hubs
wpa-ap-scan 1
#; wpa-proto is WPA for WPA1 (aka WPA) or RSN for WPA2
wpa-proto WPA
#; wpa-pairwise and wpa-group is TKIP for WPA1 or CCMP for WPA2
wpa-pairwise TKIP
wpa-group TKIP
wpa-key-mgmt WPA-PSK
#; use "wpa_passphrase UR_ESSID UR_KEY" to generate UR_HEX_KEY
#; enter the result below
wpa-psk UR_HEX_KEY
##########################
# end of wireless bits

Автоматическое переподключение при проблемах с соединением

Способ заимствован здесь: [1]

Допустим, контроллер подключён к роутеру с адресом 192.168.0.1 через интерфейс wlan1. Тогда:

  1. Создайте в папке /root скрипт wifi_autoconnect.sh с содержанием:
    #!/bin/bash
    
    # Подставьте имя интерфейса
    WLANINTERFACE=wlan1
    # Подставьте адрес роутера или сервера в интернете, доступ к которому будет проверяться
    SERVER=192.168.0.1
    
    # Only send two pings, sending output to /dev/null
    ping -I ${WLANINTERFACE} -c2 ${SERVER} > /dev/null
    
    # If the return code from ping ($?) is not 0 (meaning there was an error)
    if [ $? != 0 ]
    then
    # Restart the wireless interface
    ifdown --force ${WLANINTERFACE}
    ifup ${WLANINTERFACE}
    fi
    
  2. Сделайте файл исполняемым, выполнив команду
    chmod +x /root/wifi_autoconnect.sh
    
  3. Запланируйте выполнение скрипта каждую минуту. Для этого:
    1. Установите cron:
      apt-get install cron
      
    2. Добавьте в конец файла /etc/crontab строку
      *  *	* * *	root	/root/wifi_autoconnect.sh
      # обязательно добавьте пустую строку в конец файла