SoftAP (точка доступа)

Материал из virt2real wiki
Перейти к: навигация, поиск

Содержание

Общая информация

В модуле Wi-Fi v1.0 используется чип Marvell 88W8686 (подробнее см. Мезонин_Wi-Fi_1.0) Обычная утилита для реализации программной точки доступа (hostapd) с этим чипом не работает, так что для создания программной Wi-Fi точки доступа следует использовать родную марвелловскую утилину uaputl. Эта утилита имеется в составе Virt2real SDK.

Запуск драйверов

Для режима Marvell

Но перед запуском uaputl необходимо загрузить драйвер

modprobe uap8xxx.ko

Для функционирования драйверу нужна специальная низкоуровневая прошивка (firmware) для чипа, она находится в каталоге /lib/firmware/mrvl/ и называется

sd8686_ap.bin

Затем следует сконфигурировать свежепоявившийся интерфейс uap0

ifconfig uap0 192.168.2.1 up

Теперь можно запускать утилиту для создания программной точки доступа

uaputl sys_cfg_ssid "SSID_создаваемой_бсети"
uaputl sys_cfg_protocol 32
uaputl sys_cfg_wpa_passphrase "пароль_для_создаваемой сети"
uaputl sys_cfg_cipher 8 8
uaputl sys_cfg_channel 0 1
uaputl bss_start


Для обычного режима HostAP

ещё не описано


Подключение клиентских устройств

Теперь можно подключаться с любого девайса, оборудованного вайфаем. Только вот при подключении любое устройство будет пытаться получить IP адрес от Виртурилки (в зависимости от настроек сетевого интерфейса вашего устройства). Для того чтоб любое устройство могло динамически получать IP адрес и настройки сети необходимо на Виртурике запустить DHCP сервер.


Упрощённый режим

Параметр ядра

Для упрощения выбора варианта запуска Wi-Fi в режиме клиента или точки доступа в строку параметров ядра добавлена опция "ap".

ap=on

включить точку доступа при загрузке Виртурилки и запустить DHCP-сервер

ap=off

не включать точку доступа и не запускать DHCP-сервер

Пин выбора режима

Так как в некоторых случаях (особенно при загрузке с NAND) редактирование параметров ядра неудобно, в прошивку Виртурилки добавлена возможность установить режим "Клиент"/"Точка доступа" путём замыкания определённых пинов на гребёнке Виртурилки.

По умолчанию, за это отвечают пины CON75 и CON76. Независимо от настройки параметра "ap" в параметрах ядра, если замкнуть пины CON75 и CON76 - при загрузке Виртурилки будет запущен режим точки доступа и DHCP-сервер.


Если данные пины не устраивают (например, если они требуются для других функций) то их можно поменять в файле /etc/init.d/S35wifi, они указаны в самом начале файла

#!/bin/sh
#
# Start the onboard Wi-Fi
#
 
AP_PWR_PIN=75
AP_READ_PIN=76


Логика опроса пинов такая:


При загрузке Виртурилке, когда очередь доходит до файла S35wifi

  • Пин с номером AP_PWR_PIN устанавливается в режим OUTPUT и состояние HIGH (на нём появляется напряжение 3.3В)
  • Пин с номером AP_READ_PIN устанавливается в режим INPUT и производится его чтение
  • Если пин AP_READ_PIN в состоянии 1 (т.е. к нему подведено напряжение 3.3В, а оно будет подведено если этот пин соединён с пином AP_PWR_PIN) - создаётся временный файл /tmp/accesspoint
  • Такой же временный файл (/tmp/accesspoint) создаётся в том же скрипте если установлен параметр ядра "ap=on"
  • После определения состояния пина AP_READ_PIN оба пина больше не нужны и пин AP_PWR_PIN возвращается в состояние LOW
  • Затем, в зависимости от наличия файла /tmp/accesspoint, скрипт точки доступа определяет стартовать или нет (DHCP-сервер - аналогично)