diff --git a/esp8266/modesp.c b/esp8266/modesp.c
index 3ca7f72715e46c640823a2e9ea8f3d90eac1d29f..c1591fea278382e7640361d54e4ce283986cb696 100644
--- a/esp8266/modesp.c
+++ b/esp8266/modesp.c
@@ -528,7 +528,10 @@ STATIC void esp_scan_cb(scaninfo *si, STATUS status) {
 
 STATIC mp_obj_t esp_scan(mp_obj_t cb_in) {
     MP_STATE_PORT(scan_cb_obj) = cb_in;
-    wifi_set_opmode(STATION_MODE);
+    if (wifi_get_opmode() == SOFTAP_MODE) {
+        nlr_raise(mp_obj_new_exception_msg(&mp_type_OSError, 
+            "Scan not supported in AP mode"));
+    }
     wifi_station_scan(NULL, (scan_done_cb_t)esp_scan_cb);
     return mp_const_none;
 }