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

ESP8266 Micropython - connecting to University Wi-fi ( WPA2 Enterprise PEAP )

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

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

  1. 这只是ESP8266的固有局限性吗?或者可以做到吗? This discussion 似乎建议可以做到,但需要对功能进行编码。
  2. 是否有可能以某种方式从 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 Enterprise 上,我曾希望更改此行会起作用,但没有成功:

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

谢谢,我会研究一下 Espressif Non-OS SDK V2.0.0,看看是否可以正常工作。

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

您可以在此处的固件中看到网络功能(active()connect()ifconfig() 等)的映射:https://github.com/micropython/micropython/blob/52df2f889e3315a4ced5a81e80efbb138182cd1b/esp8266/modnetwork.c. In line 115 you can also see the call to wifi_station_connect(), which is a native Espressif-SDK function. Thus you'll see, the firmware doesn't yet make use of the new functions for WPA2 authentication. In 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 企业认证还不是其中之一。

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

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

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