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

Материал из Wiren Board
Строка 195: Строка 195:
iwconfig wlan0
iwconfig wlan0
</syntaxhighlight>
</syntaxhighlight>
#: при успешном подключении команда должна вывести: <code>wlan0    IEEE 802.11bgn  ESSID:"ИМЯСЕТИ"</code>. Если в строке написано <code>unassociated</code>, то контроллер не смог подключиться к точке доступа.
#: при успешном подключении команда должна вывести: <code>wlan0    IEEE 802.11bgn  ESSID:"ESSID"</code>. Если в строке написано <code>unassociated</code>, то контроллер не смог подключиться к точке доступа.
# Если контроллер успешно подключился к точке доступа, то запустите dhcpclient:
# Если контроллер успешно подключился к точке доступа, то запустите dhcpclient:
#:<syntaxhighlight lang="bash">
#:<syntaxhighlight lang="bash">

Версия 14:52, 25 августа 2021

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

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

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

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

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

Антенны

Сравнение разъёмов для антенн Wi-Fi (RP-SMA) и GSM (SMA)

Прикрутите антенну к разъёму для антенны Wi-Fi.

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

Подключение к точке доступа

Контроллер создает WiFi точку доступа и мы можем подключиться к ней:

  • Откройте на ноубуке или телефоне список WiFi точек доступа.
  • Выберите из списка точку доступа с именем WirenBoard-XXXXXXXX. Где XXXXXXXX - серийный номер контроллера.

При подключении по WiFi контроллер будет доступен по IP-адресу 192.168.42.1.

По умолчанию, для подключения к контроллеру по WiFi не требуется пароль, но вы можете это изменить.

Настройка Wi-Fi на контроллере Wiren Board

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

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

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

Сперва настраиваем демон hostapd:

  1. в файле /etc/default/hostapd раскомментируйте строку (то есть удалите знак # в начале строки)
    DAEMON_CONF="/etc/hostapd.conf"
    
  2. отредактируйте файл /etc/hostapd.conf, чтобы он выглядел так:
    interface=wlan0
    #driver=nl80211 # оставьте эту строку закомментированной
    ssid=WirenBoard # вместо WirenBoard можете подставить другое имя для создаваемой точки доступа
    channel=1
    

Теперь нужно настроить сам интерфейс. Настройка делается в файле /etc/network/interfaces:

  1. раскомментируйте и отредактируйте (или добавьте, если их не было) строки, относящиеся к настройке в режиме точки доступа:
    iface wlan0 inet static
          address 192.168.42.1 # здесь 192.168.42.1  - адрес, по которому в новой сети будет находиться Wiren Board; можете указать другой адрес
          netmask 255.255.255.0
    
  2. закомментируйте строки, относящиеся к работе в режиме клиента:
    #auto wlan0
    #iface wlan0 inet dhcp 
    #                wpa-ssid {ssid}
    #                wpa-psk  {password}
    

Выполните команду

/etc/init.d/hostapd restart

В итоге у нас получилась открытая точка доступа, для подключения к которой не требуется пароль.

Установка пароля на подключение к точке доступа

Подключитесь к контроллеру по SSH и откройте файл настроек /etc/hostapd.conf, для этого введите команду:

nano /etc/hostapd.conf

Добавьте в конец файла строки:

wpa=2
wpa_passphrase=your_password
wpa_key_mgmt=WPA-PSK
wpa_pairwise=TKIP CCMP
rsn_pairwise=TKIP CCMP

Придумайте свой пароль и замените в файле your_password на него. Сохраните файл нажатием клавиш Ctrl+O и выйдете из редактора Ctrl+X.

После этого выполните команду:

/etc/init.d/hostapd restart

Контроллер применит новые настройки и связь с ним будет потеряна. Нужно будет заново подключиться к контроллеру по WiFi с указанным паролем. Если изменения настроек вы не можете подключиться к контроллеру по WiFi — подключитесь к нему по Ethernet и проверьте настройки в файле /etc/hostapd.conf.

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

Режим одновременной работы модуля 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
    

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

Отключение режима точки доступа

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

  1. Отключите автоматический запуск сервиса hostapd:
    systemctl disable hostapd
    
  2. Остановите демон hostapd
    service hostapd stop
    
  3. Теперь закомментируйте настройки точки доступа и задайте настройки WiFi-клиента:
    • откройте файл для редактирования
    mcedit /etc/network/interfaces
    
    • закомментируйте строки, относящиеся к настройке в режиме точки доступа:
      #iface wlan0 inet static
      #  address 192.168.42.1
      #  netmask 255.255.255.0
      
  4. Сохраните и закройте файл настроек.
  5. Запретите раздачу IP-адресов, для этого остановите DHCP-сервер:
    systemctl disable dnsmasq
    service dnsmasq stop
    

Теперь вы можете подключить контроллер к Wi-Fi точке доступа вручную или настроить автоматическое подключение.

Настройка автоматического подключения к Wi-Fi

Вы можете настроить автоматическое подключение контроллера к Wi-Fi точке доступа:

  1. Откройте файл настроек:
    mcedit /etc/network/interfaces
    
  2. Раскомментируйте и отредактируйте строки (или добавьте, если их не было):
    auto wlan0
    iface wlan0 inet dhcp 
      wpa-ssid ssid # вместо ssid подставьте имя точки доступа
      wpa-psk  password # вместо password подставьте пароль
    
  3. Если точка доступа скрыта, то добавьте параметр:
      wpa-scan-ssid 1
    
  4. Сохраните и закройте файл настроек.
  5. Завершите настройку, для этого перезапустите беспроводной интерфейс командами:
    ifdown wlan0 && ifup wlan0
    

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

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

  1. Запустите поиск доступных точек доступа:
    iwlist wlan0 scanning
    
    В ответ будет выведен список. Проверьте, что ваша точка доступа есть в списке, её имя будет в параметре ESSID.
  2. Задайте параметры подключения, вместо ESSID и PASSWORD подставьте имя точки доступа и пароль к ней:
    iwconfig wlan0 essid ESSID key PASSWORD
    
  3. Запустите сетевой интерфейс:
    ifconfig wlan0 up
    
  4. Подождите 20 секунд и проверьте подключение командой:
    iwconfig wlan0
    
    при успешном подключении команда должна вывести: wlan0 IEEE 802.11bgn ESSID:"ESSID". Если в строке написано unassociated, то контроллер не смог подключиться к точке доступа.
  5. Если контроллер успешно подключился к точке доступа, то запустите dhcpclient:
    dhclient wlan0
    
    если на точке доступа запущен DHCP-сервер, то контроллер получит от него IP-адрес.

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

Ниже приведен текст файла с настройками для подключения к сетям с разными параметрами шифрования. Оригинал файла можно посмотреть на сайте www.raspberrypi.org.

####################
#; 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

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

Способ заимствован на сайте alexba.in.

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

  1. Создайте в папке /root скрипт wifi_autoconnect.sh:
    mcedit /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. Запланируйте выполнение скрипта каждую минуту:
    • Если планировщик cron не установлен, установите его командой:
      apt-get install cron
      
    • Добавьте в конец файла /etc/crontab строку
      *  *	* * *	root	/root/wifi_autoconnect.sh
      # Обязательно добавьте пустую строку в конец файла