Zyxel p-330wс прошивкой wive-ng как wifi client

dtvims
Site Admin
Сообщения: 134
Зарегистрирован: Пн авг 02, 2010 2:43 pm

Zyxel p-330wс прошивкой wive-ng как wifi client

Сообщение dtvims » Пн ноя 26, 2012 12:15 pm

Подключение Zyxel p-330w (rtl8186) с прошивкой wive-ng как wifi client

Чаще всего роутер используется для раздачи WiFi и множество инструкций нацелено именно на это, тем более, в таком режиме потерять контроль над роутером тяжело, а вот если мы его захотим включить в режиме "RMODE=CLIENT", то тут и начинаются приключения.
Можно найти советы автора, но они дают только направление небрежно брошенное в нужную сторону, а Вы понимайте как можете.
У меня точка доступа, раздающая Интернет запаролена фразой по протоколу WPA2-Pers, а Zyxel должен подключиться к ней клиентом по WiFi, что удобно уменьшением проводов и расширяющем границы использования возможностей rtl8186. Для меня rtl8186 работает в 2-х функциях: 1) свитч; 2) Сетевой UART. Если я подключу Zyxel по WiFi, то он вместе со своим UART`ом сможет путешествовать почти без проводов, что приятно.
Теперь о плохом. В режиме "RMODE=CLIENT" wive-ng у меня работать отказывается, причем очевидно не по тому, что не может, а потому, что что-то делаю не так, но что?
Ищем инструкции в сети. Есть простая инструкция, как включить нужный режим, но если точка без пароля http://www.g700ap.ru/articles/firmware-upgrade-wive.html. Данная инструкция помогла, но не сильно, поскольку мне так не надо, да я думаю можно было и без нее обойтись, для подключения к открытой точке. Но там есть отправные точки, что есть в wive.
Можно же сперва подключить все через командную строку. Вот такая команда, например, включает режим клиента:

Код: Выделить всё

iwpriv wlan0 set_mib opmode=8

Т.е. через команду

Код: Выделить всё

iwpriv wlan0 set_mib свойство

устанавливаются различные свойства WiFi адаптера, но НЕ авторизация. Вообще, если искать инструкции как осуществляется подключение в linux по WiFi, то выясняется, что большинства команд в wive нету, в том числе из утилит "iw", они просто убраны за ненадобностью, для экономии места, остается выяснить только что осталось.
Вот тут http://forum.volsat.com.ua/showthread.php?p=8458 есть пример нескольких команд подключения к точке доступа:

Код: Выделить всё

Я думал так
#Encryption mode:
# 0 - disabled; 1 - WEP64; 5 - WEP128; 2 - WPA-PSK/WPA2-PSK
iwpriv wlan0 set_mib encmode=2

#Number of key for encrypt. Range 0-3
iwpriv wlan0 set_mib wepdkeyid=0

#64bit/128bit WEP Encryption
iwpriv wlan0 set_mib wepkey1=ключ!!!!!
iwpriv wlan0 set_mib wepkey2=
iwpriv wlan0 set_mib wepkey3=
iwpriv wlan0 set_mib wepkey4=
собственно WPA key тут не нашел

Заметим, что данный пример скорее для WEP шифрования, но команда

Код: Выделить всё

iwpriv wlan0 set_mib encmode=2

включает именно "WPA-PSK/WPA2-PSK".
Вот тут и самое зло! После включения данного режима, Zyxel подключается к точке доступа, но не авторизуется. Команда

Возвращает данные подключения, но фактически ничего не работает.
Я решил, что проблема в том, что я задаю IP статически с общим IP на всю точку и применил настройки для отдельного IP на wlan0 и использования dhcp. Заметим, что dhcp не заработал, но и статический адрес перестал быть доступен после перезагрузки (ну я пару команд воткнул нагло в скрипт /etc/rc.d/S25wifinetwork), т.о. я потерял полностью возможность подключиться по ssh к Zyxel. Причем заливка другой прошивки настроек НЕ сбрасывает. У wive основные настройки лежат в отдельной памяти, а из папки "nomnt", вшитой в прошивку, восстанавливаются дефолтные настройки, а потому (почему-то я не подумал про возможность кнопочкой "reset" сбросить настройки) я залил оригинальную прошивку wive-ng (у меня была своя версия с отключенной консолью по UART), чтобы получить отладочную консоль по UART. Уже через UART я разбирался далее, что же надо сделать.

На Польском форуме я наконец нашел чего мне не хватает http://inbox.eu.org/board3/index.php?a=topic&t=108, все понятно, если знаешь Польский язык :).
Настройки шифрования WPA лежат в файлике /etc/wpa.conf, собственно, настройки от туда и необходимо как-то подгрузить к адаптеру, а это делает команда

Код: Выделить всё

auth wlan0 wlan0 $AUTH_MODE /etc/wpa.conf

где "$AUTH_MODE" должен быть режимом WiFi, вроде "client-infra", для режима клиента. Но после этого все-равно ничего не заработает. Необходимо еще дать команду

Код: Выделить всё

iwcontrol wlan0

после чего все успешно поднимается, при условии, что в файлике "/etc/wpa.conf" правильные настройки.
Итак разобрались, что же надо чтобы запустить все в ручную, но что же необходимо, чтобы заработали просто штатные настройки wive-ng. Скажу по секрету: Там все есть, надо только знать как включить. По мне так подсказки написаны не совсем очевидно. Я воспользовался преимуществом владения исходниками wive-ng и поиском нашел нужные мне команды. Ну что делать, если программисту легче разобраться к коде, чем в кривом мануале?
В файле /etc/rc.d/S71wifiapps я нашел:

Код: Выделить всё

#---------------------WPA starting of end----------------
if [ "$WPA" = "yes" ] ; then
    if [ "$RMODE" == "CLIENT" ] ; then
   wpa_start_mode="client-infra"
        else
   wpa_start_mode="auth"
    fi
    echo Starting WPA daemon in $wpa_start_mode mode
    if [ "$WLAN_IN_BR0" == "yes" ]; then
        auth wlan0 br0 $wpa_start_mode /etc/wpa.conf
        else
        auth wlan0 wlan0 $wpa_start_mode /etc/wpa.conf
    fi
fi

Из чего делаем вывод, что надо выставить параметр "WPA=yes", найти который можно в файле "general".

Код: Выделить всё

#Enable/disable wpa/wpa2
WPA=no

Честно говоря, я эту штуку не включил, т.к. решил, что "Enable" соответствует "wpa", а "disable", соответствует "wpa2", а мне-то нужен был последний :) - горе от ума! Тут и была основная проблема, почему ничего не работало. Именно эта опция и включает все что мне было необходимо! А именно Если "WPA=yes", то заработает режим WPA любой, иначе вообще работать не будет. Заметим, что и все остальные команды выполняются по аналогичному условию от параметра "[ "$WPA" = "yes" ]".

Итак в файле "general" делаем следующие настройки (пишу, что надо менять):

Код: Выделить всё

#Set Mode: AP/CLIENT/ADHOC
RMODE=CLIENT
#Set ESSID of wirelless Infrastructure Network
ESSID=SF-WL
#This is name BS to first probe connect (12 digits macaddress)
JOINBS=001111111FFF
#Enable/disable wpa/wpa2
WPA=yes

Пояcню некоторые. По уверению автора ESSID нужен только для режима AP. Реально сюда также можно задавать SSID точки доступа к которой мы подключаемся (в работе не проверял, т.к. в процессе настройки задал JOINBS), т.е. в "S25wifinetwork" есть общая для всех режимов строка

Код: Выделить всё

iwpriv wlan0 set_mib ssid="$ESSID"

JOINBS - это MAC адрес точки доступа к которой мы подключаемся. По заверению автора, надо пользоваться только этой опцией. Реально она использует команду

Код: Выделить всё

if [ "$JOINBS" != "" ] ; then
   iwpriv wlan0 set_mib bssid2join=$JOINBS
fi

Что интерпритируется как, если задано JOINBS, то сперва пробовать подключаться именно к точке доступа с данным MAC адресом.
Найти нужный MAC легко. Даем команду

собственно, ведь через нее и надо настраивать wive-ng. А там пункт "6)Scan", чуть-чуть подождать и она выдаст список точек доступа. Ищем там нужную, и вынимаем от туда MAC в виде "00:11:11:11:1F:FF", от куда необходимо будет убрать все ":" и вставить в конфиг.
Далее правим файлик "/etc/wpa.conf" или 4)WPA:

Код: Выделить всё

#0 - disable, 1 - WEP, 2 - WPA, 4 - WPA2 only, 6 - WPA2 mixed
encryption = 4
ssid = "SF-WL"
#1 - TKIP, 2 - AES
unicastCipher = 2
wpa2UnicastCipher = 2

usePassphrase = 1
psk = "youpassphrase"

У меня эти значения были по умолчанию, но именно на них и надо обратить внимание. Тут достаточно только задать "psk = "youpassphrase"" пароль к точке доступа.

Жмем сохранить и перезагрузить. Все должно заработать.

Главное, почему, то что надо, нашлось не на сайте или форуме с прошивкой, а на именно польском форуме после потерянных 2-х вечеров? Зато теперь знаю как менять настройки WiFi в wive-ng через командную строку без перезагрузки (удобно, если после перезагрузки все должно вернуться на как "было`").

"О, мои нервы!" (c) Одна за всех!

vanyaacido
Сообщения: 9
Зарегистрирован: Вс дек 14, 2014 9:36 pm
Откуда: Россия
Контактная информация:

Zyxel p 330wс прошивкой wive ng как wifi client

Сообщение vanyaacido » Сб янв 17, 2015 8:12 pm

Код:interrupt <- оформите сами интеррaпт от UART в С

tmp = getchar1;
putchar1tmp string_inindex_str;

TCNT1 = 0;
TCCR1B = 0x1D;
if index_str==0
TCCR1B = 0x1D;

if index_str == 19 index_str=0;
else index_str;



Как помещать в сон МК?

MoskKsusBiz
Сообщения: 10
Зарегистрирован: Пн окт 19, 2015 10:43 am

Zyxel p 330wс прошивкой wive ng как wifi client

Сообщение MoskKsusBiz » Сб янв 30, 2016 1:21 pm

Есть такая проблема: конфигурирую выоды контроллера как выходы, но не все ими становятся, например, сброс у Atmega8 выходом не становится. Что делать?

dtvims
Site Admin
Сообщения: 134
Зарегистрирован: Пн авг 02, 2010 2:43 pm

Re: Zyxel p-330wс прошивкой wive-ng как wifi client

Сообщение dtvims » Вт фев 02, 2016 2:24 pm

Чтобы сброс стал выходом надо поменять FUSEbits на переконфигурацию reset в порт ввода вывода, но тогда программировать контроллер по ISP будет не возможно! После переконфигурирования Reset программировать можно будет, или высоковольтным программатором, или параллельным.


Вернуться в «Микроконтроллеры и автоматизация»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 2 гостя