ESP8266 Micropython - подключение к университетскому Wi-Fi (WPA2 Enterprise PEAP)

У меня есть плата с микросхемой ESP8266, на которой установлена ​​прошивка Micropython v1.8.7. Мое требование - использовать WebREPL через университетский Wi-Fi, который использует аутентификацию WPA2 Enterprise EAP-MSCHAPv2. Мой Google-fu пока сообщил мне, что пользователи Arduino смогли подключиться к WPA2 Enterprise EAP-TLS (аутентификация на основе сертификатов) (ссылка), но не (SSID, имя пользователя, pwd) сети.

Все обсуждения, которые я видел до сих пор, относятся как минимум к середине 2016 года, поэтому мне интересно, смог ли кто-нибудь понять, как это сделать с тех пор. Я никогда раньше не баловался сетевыми вещами (и при этом я не великий программист), поэтому все вышеперечисленные громкие слова для меня довольно новы. Таким образом, у меня есть следующие вопросы:

  1. Это просто внутреннее ограничение ESP8266? Или это можно сделать? В этом обсуждении кажется, что это можно сделать, но возможность должна быть закодирована.
  2. Можно ли каким-то образом отделить персональное соединение WPA2 от WPA2 Enterprise, которое может использоваться ESP8266, а также моим ПК? До сих пор я пытался попытаться установить точку доступа с помощью Connectify, но безуспешно.

Я ценю любую помощь, которую вы можете оказать. Если есть какая-либо соответствующая информация, которую я не включил, сообщите мне, и я отредактирую ее.

Изменить: @MaximilianGerhardt Это то, что у меня работает на WPA2 Personal:

import network
wlan = network.WLAN(network.STA_IF)
wlan.active(True)
wlan.connect('ssid','pwd')
wlan.ifconfig()

import webrepl
webrepl.start()

На WPA2 Enterprise я надеялся, что изменение этой строки сработает, но без радости:

wlan.connect('ssid',auth=WPA2_ENT,'user','pwd')

Спасибо, я посмотрю на Espressif Non-OS SDK V2.0.0 и посмотрю, смогу ли я заставить его работать.


person Udu    schedule 09.01.2017    source источник
comment
Код в проекте esp8266-eduroam (github.com / joostd / esp8266-eduroam / blob / master / wpa2e-v20 / user /) и комментарий 22-дневной давности на github.com/esp8266/Arduino/issues/1032#issuecomment-267809940 предполагает, что это возможно с новейшей версией 2.0 espressif SDK (wifi_station_set_enterprise_username() и wifi_station_set_enterprise_password()). Какой код вы еще пробовали?   -  person Maximilian Gerhardt    schedule 09.01.2017
comment
Проголосуйте за запрос функции на странице github.com/micropython/micropython/issues/2778   -  person Colonel Panic    schedule 28.02.2017
comment
@ColonelPanic Я открыл выпуск 2778 :)   -  person Udu    schedule 28.02.2017


Ответы (1)


Как я указал в комментариях, проблема, по-видимому, была решена в новейшей версии 2.0 Espressif SDK. Но поскольку вы используете не Espressif C SDK, а микропрограмму Python "Micropython", это изменение еще не распространено на эту микропрограмму Python.

Вы можете увидеть отображение сетевых функций (active(), connect(), ifconfig() и т.д.) в прошивке здесь: https://github.com/micropython/micropython/blob/master/esp8266/modnetwork.c#L430. В строке 115 вы также можете увидеть вызов wifi_station_connect(), который является собственной функцией Espressif-SDK. Таким образом, вы увидите, что прошивка еще не использует новые функции для аутентификации WPA2. В строке 490 можно увидеть все доступные параметры для аутентификации:

MP_OBJ_NEW_SMALL_INT(AUTH_OPEN) ,
MP_OBJ_NEW_SMALL_INT(AUTH_WEP) ,
MP_OBJ_NEW_SMALL_INT(AUTH_WPA_PSK) ,
MP_OBJ_NEW_SMALL_INT(AUTH_WPA2_PSK) ,
MP_OBJ_NEW_SMALL_INT(AUTH_WPA_WPA2_PSK)

Корпоративная аутентификация WPA2 еще не входит в их число.

Итак, теперь я бы сказал, что у вас есть следующие варианты:

  1. Откройте проблему с github, https://github.com/micropython/micropython/, в которой вы их задаете для реализации аутентификации WPA2 для ESP8266
  2. Переключитесь на C SDK из Espressif
person Maximilian Gerhardt    schedule 09.01.2017
comment
Спасибо за подтверждение! Я открыл вопрос на Github. Сначала я попытаюсь попросить университет предоставить альтернативное соединение WPA2 PSK, если это возможно. Если нет, полагаю, мне придется использовать SDK Espressif. Я поддержал ваш ответ и принял его, но поскольку это мой первый вопрос по SO, моя репутация недостаточно высока, чтобы отразить его публично. Еще раз спасибо! - person Udu; 09.01.2017