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

1

8

I have a board with an ESP8266 chip running Micropython firmware v1.8.7. My requirement is to use WebREPL via the University Wi-Fi, which uses WPA2 Enterprise EAP-MSCHAPv2 authentication. My Google-fu so far has informed me that Arduino users have been able to connect to WPA2 Enterprise EAP-TLS (certificate based authentication) (link) but not (SSID, username, pwd) networks.

All the threads I've seen so far on the subject seem to be from mid-2016 at the very latest, so I'm wondering whether someone's been able to figure out how to do this since then. I've never dabbled in network related stuff before (nor am I a great programmer), so all the big words above are pretty new to me. I thus have the following questions:

  1. Is this just an inherent limitation of the ESP8266? Or can it be done? This discussion seems to suggest it can be done but the capability needs to be coded in.
  2. Is it possible to somehow branch out a WPA2 Personal connection from the WPA2 Enterprise that can be used by the ESP8266 as well as my PC? What I've tried so far is to attempt a hotspot using Connectify but there's been no luck there.

I appreciate any help you guys can provide. If there's any relevant info I haven't included, please let me know and I'll edit it in.

Edit: @MaximilianGerhardt This is what works for me on a WPA2 Personal:

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

import webrepl
webrepl.start()

On a WPA2 Enterprise, I had hoped changing this line would work, but no joy:

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

Thanks, I'll look into the Espressif Non-OS SDK V2.0.0 and see if I can make it work.

Rosabelle answered 9/1, 2017 at 16:28 Comment(3)
The code at the esp8266-eduroam project (github.com/joostd/esp8266-eduroam/blob/master/wpa2e-v20/user/…) and the 22-days old comment at github.com/esp8266/Arduino/issues/1032#issuecomment-267809940 suggests it might be possible with the newest 2.0 espressif SDK (wifi_station_set_enterprise_username() and wifi_station_set_enterprise_password()). What code have you tried yet ?Sacring
Please vote for the feature request at github.com/micropython/micropython/issues/2778Vance
@ColonelPanic I was the one who opened issue 2778 :)Rosabelle
S
5

As I linked in the comments the problem has apparently been solved in the newest 2.0 Espressif SDK. But since you're not using the Espressif C SDK, but the python "Micropython" firmware, this change has not been yet propagated into this python firmware.

You can see the mapping of the network functions (active(), connect(), ifconfig() etc) in the firmware here: 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 you can see all the available options for authentication:

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 enterprise authentication is not yet one of them.

So now I'd say your options are:

  1. Open a github issue https://github.com/micropython/micropython/ in which you ask them to implement WPA2 authentication for the ESP8266
  2. Switch to the C SDK from Espressif

EDIT: This is still an issue and tracked in https://github.com/micropython/micropython/issues/2778.

Sacring answered 9/1, 2017 at 19:48 Comment(1)
Thanks for the confirmation! I've opened an issue on Github. I will first try asking the university for an alternate WPA2 PSK connection if possible. If not, I suppose I'll have to use the Espressif SDK. I've upvoted your answer and accepted it, but since this is my first ever question on SO, my rep is not high enough to reflect it publicly. Thanks again!Rosabelle

© 2022 - 2024 — McMap. All rights reserved.