ESP8266 Micropython - 连接大学 Wi-fi ( WPA2 Enterprise PEAP )

Posted

技术标签:

【中文标题】ESP8266 Micropython - 连接大学 Wi-fi ( WPA2 Enterprise PEAP )【英文标题】:ESP8266 Micropython - connecting to University Wi-fi ( WPA2 Enterprise PEAP ) 【发布时间】:2017-05-23 23:29:28 【问题描述】:

我有一块带有 ESP8266 芯片的开发板,运行 Micropython 固件 v1.8.7。我的要求是通过大学 Wi-Fi 使用 WebREPL,它使用 WPA2 Enterprise EAP-MSCHAPv2 身份验证。到目前为止,我的 Google-fu 告诉我,Arduino 用户已经能够连接到 WPA2 Enterprise EAP-TLS(基于证书的身份验证)(link),但不能连接到(SSID、用户名、密码)网络。

到目前为止,我在该主题上看到的所有主题似乎最迟都是从 2016 年年中开始的,所以我想知道从那时起是否有人能够弄清楚如何做到这一点。我以前从未涉足网络相关的东西(我也不是一个伟大的程序员),所以上面所有的大词对我来说都是新的。因此,我有以下问题:

    这只是 ESP8266 的固有限制吗?或者可以做到吗? This discussion 似乎暗示可以做到,但需要编写功能。 是否可以以某种方式从 WPA2 Enterprise 分支出 WPA2 Personal 连接,供 ESP8266 和我的 PC 使用?到目前为止,我尝试的是使用 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 企业版上,我曾希望更改这条线路会起作用,但没有任何乐趣:

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

谢谢,我会研究一下 Espressif Non-OS SDK V2.0.0,看看我能不能让它工作。

【问题讨论】:

esp8266-eduroam 项目 (github.com/joostd/esp8266-eduroam/blob/master/wpa2e-v20/user/…) 中的代码和 github.com/esp8266/Arduino/issues/1032#issuecomment-267809940 的 22 天前评论表明,使用最新的 2.0 espressif SDK (wifi_station_set_enterprise_username() 和 @987654330) 可能是可能的@)。你试过什么代码? 请在github.com/micropython/micropython/issues/2778为功能请求投票 @ColonelPanic 我是打开问题 2778 的人 :) 【参考方案1】:

正如我在 cmets 中链接的那样,问题显然已在最新的 2.0 Espressif SDK 中得到解决。但由于您使用的不是 Espressif C SDK,而是 python“Micropython”固件,因此此更改尚未传播到此 python 固件中。

您可以在此处查看固件中网络功能的映射(active()connect()ifconfig() 等):https://github.com/micropython/micropython/blob/52df2f889e3315a4ced5a81e80efbb138182cd1b/esp8266/modnetwork.c。在第 115 行,您还可以看到对 wifi_station_connect() 的调用,这是一个原生 Espressif-SDK 函数。因此您会看到,固件尚未使用新功能进行 WPA2 身份验证。在line 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 企业认证还不是其中之一。

所以现在我会说你的选择是:

    打开一个 github 问题 https://github.com/micropython/micropython/,在其中要求他们为 ESP8266 实施 WPA2 身份验证 从 Espressif 切换到 C SDK

编辑:这仍然是一个问题,并在 https://github.com/micropython/micropython/issues/2778 中进行了跟踪。

【讨论】:

感谢您的确认!我在 Github 上打开了一个问题。如果可能,我将首先尝试向大学请求备用 WPA2 PSK 连接。如果没有,我想我将不得不使用 Espressif SDK。我赞成您的回答并接受了它,但由于这是我第一次提出关于 SO 的问题,因此我的代表还不够高,无法公开反映。再次感谢!

以上是关于ESP8266 Micropython - 连接大学 Wi-fi ( WPA2 Enterprise PEAP )的主要内容,如果未能解决你的问题,请参考以下文章

简述micropython环境如何把Python源程序写进ESP8266模块?

ESP8266 /ESP32 连接到自己的MQTT服务器并实现自动重连 基于micropython

使用Ubuntu将ESP8266写入MicroPython固件并连接WIFI进行GET请求

micropython(esp8266)adc采集通过tcp发送采集的数据

micropython(esp8266)adc采集通过tcp发送采集的数据

micropython esp8266 烧录