diff --git a/esp8266/modesp.c b/esp8266/modesp.c
index 44401d3a6142daef553d1b5219014678dfa02319..885e7ae95eeb54d1499d5469184fd7a14d144641 100644
--- a/esp8266/modesp.c
+++ b/esp8266/modesp.c
@@ -27,12 +27,12 @@
 #include <stdio.h>
 #include <string.h>
 #include <stdbool.h>
-#include <errno.h>
 
 #include "py/nlr.h"
 #include "py/obj.h"
 #include "py/gc.h"
 #include "py/runtime.h"
+#include "py/mperrno.h"
 #include "py/mphal.h"
 #include "netutils.h"
 #include "queue.h"
@@ -577,7 +577,7 @@ STATIC mp_obj_t esp_flash_read(mp_obj_t offset_in, mp_obj_t len_or_buf_in) {
     if (alloc_buf) {
         m_del(byte, buf, len);
     }
-    nlr_raise(mp_obj_new_exception_arg1(&mp_type_OSError, MP_OBJ_NEW_SMALL_INT(res == SPI_FLASH_RESULT_TIMEOUT ? ETIMEDOUT : EIO)));
+    nlr_raise(mp_obj_new_exception_arg1(&mp_type_OSError, MP_OBJ_NEW_SMALL_INT(res == SPI_FLASH_RESULT_TIMEOUT ? MP_ETIMEDOUT : MP_EIO)));
 }
 STATIC MP_DEFINE_CONST_FUN_OBJ_2(esp_flash_read_obj, esp_flash_read);
 
@@ -594,7 +594,7 @@ STATIC mp_obj_t esp_flash_write(mp_obj_t offset_in, const mp_obj_t buf_in) {
     }
     nlr_raise(mp_obj_new_exception_arg1(
         &mp_type_OSError,
-        MP_OBJ_NEW_SMALL_INT(res == SPI_FLASH_RESULT_TIMEOUT ? ETIMEDOUT : EIO)));
+        MP_OBJ_NEW_SMALL_INT(res == SPI_FLASH_RESULT_TIMEOUT ? MP_ETIMEDOUT : MP_EIO)));
 }
 STATIC MP_DEFINE_CONST_FUN_OBJ_2(esp_flash_write_obj, esp_flash_write);
 
@@ -606,7 +606,7 @@ STATIC mp_obj_t esp_flash_erase(mp_obj_t sector_in) {
     }
     nlr_raise(mp_obj_new_exception_arg1(
         &mp_type_OSError,
-        MP_OBJ_NEW_SMALL_INT(res == SPI_FLASH_RESULT_TIMEOUT ? ETIMEDOUT : EIO)));
+        MP_OBJ_NEW_SMALL_INT(res == SPI_FLASH_RESULT_TIMEOUT ? MP_ETIMEDOUT : MP_EIO)));
 }
 STATIC MP_DEFINE_CONST_FUN_OBJ_1(esp_flash_erase_obj, esp_flash_erase);
 
diff --git a/esp8266/modnetwork.c b/esp8266/modnetwork.c
index 5e9273158c3bc41df852fdea735f86b84bd500a2..4ad4137b6cd6cf9dae0acc041f0fd238449b85ff 100644
--- a/esp8266/modnetwork.c
+++ b/esp8266/modnetwork.c
@@ -27,7 +27,6 @@
 #include <stdio.h>
 #include <stdint.h>
 #include <string.h>
-#include <errno.h>
 
 #include "py/nlr.h"
 #include "py/objlist.h"
diff --git a/esp8266/modpybspi.c b/esp8266/modpybspi.c
index 1131e8ef6b8e164de5148522bbfeadada50163d6..e8ee0f343eb64810065eccca06571702b6780339 100644
--- a/esp8266/modpybspi.c
+++ b/esp8266/modpybspi.c
@@ -27,7 +27,6 @@
 #include <stdio.h>
 #include <stdint.h>
 #include <string.h>
-#include <errno.h>
 
 #include "ets_sys.h"
 #include "etshal.h"
diff --git a/esp8266/modpybuart.c b/esp8266/modpybuart.c
index eefb38d998cddba2b36d1f62b7eb76ca6acdcad9..5971ffecec69815d1be4fd508922eaf8eb0d3f4b 100644
--- a/esp8266/modpybuart.c
+++ b/esp8266/modpybuart.c
@@ -27,13 +27,13 @@
 #include <stdio.h>
 #include <stdint.h>
 #include <string.h>
-#include <errno.h>
 
 #include "ets_sys.h"
 #include "uart.h"
 
 #include "py/runtime.h"
 #include "py/stream.h"
+#include "py/mperrno.h"
 #include "modpyb.h"
 
 // baudrate is currently fixed to this value
@@ -136,7 +136,7 @@ STATIC mp_uint_t pyb_uart_read(mp_obj_t self_in, void *buf_in, mp_uint_t size, i
 
     // wait for first char to become available
     if (!uart_rx_wait(self->timeout * 1000)) {
-        *errcode = EAGAIN;
+        *errcode = MP_EAGAIN;
         return MP_STREAM_ERROR;
     }
 
@@ -173,7 +173,7 @@ STATIC mp_uint_t pyb_uart_write(mp_obj_t self_in, const void *buf_in, mp_uint_t
 }
 
 STATIC mp_uint_t pyb_uart_ioctl(mp_obj_t self_in, mp_uint_t request, mp_uint_t arg, int *errcode) {
-    *errcode = EINVAL;
+    *errcode = MP_EINVAL;
     return MP_STREAM_ERROR;
 }
 
diff --git a/esp8266/moduos.c b/esp8266/moduos.c
index d75062eaf70e505d6c3b6af530ea10a424301762..bc2838d2d4105bd55809b179c941cf667b7a8f08 100644
--- a/esp8266/moduos.c
+++ b/esp8266/moduos.c
@@ -25,7 +25,6 @@
  */
 
 #include <string.h>
-#include <errno.h>
 
 #include "py/mpconfig.h"
 #include "py/nlr.h"
@@ -33,6 +32,7 @@
 #include "py/objtuple.h"
 #include "py/objstr.h"
 #include "py/runtime.h"
+#include "py/mperrno.h"
 #include "extmod/misc.h"
 #include "genhdr/mpversion.h"
 #include "esp_mphal.h"
@@ -74,7 +74,7 @@ STATIC MP_DEFINE_CONST_FUN_OBJ_0(os_uname_obj, os_uname);
 #if MICROPY_VFS_FAT
 mp_obj_t vfs_proxy_call(qstr method_name, mp_uint_t n_args, const mp_obj_t *args) {
     if (MP_STATE_PORT(fs_user_mount)[0] == NULL) {
-        nlr_raise(mp_obj_new_exception_arg1(&mp_type_OSError, MP_OBJ_NEW_SMALL_INT(ENODEV)));
+        nlr_raise(mp_obj_new_exception_arg1(&mp_type_OSError, MP_OBJ_NEW_SMALL_INT(MP_ENODEV)));
     }
 
     mp_obj_t meth[n_args + 2];
diff --git a/esp8266/mpconfigport.h b/esp8266/mpconfigport.h
index 89f3bb952bb51944e431e8a9e3343b8883caceeb..1c0b465abe0cacb3ef6977e8984420deb1637be1 100644
--- a/esp8266/mpconfigport.h
+++ b/esp8266/mpconfigport.h
@@ -24,6 +24,7 @@
 #define MICROPY_ENABLE_SOURCE_LINE  (1)
 #define MICROPY_MODULE_WEAK_LINKS   (1)
 #define MICROPY_CAN_OVERRIDE_BUILTINS (1)
+#define MICROPY_USE_INTERNAL_ERRNO  (0)
 #define MICROPY_PY_BUILTINS_COMPLEX (0)
 #define MICROPY_PY_BUILTINS_STR_UNICODE (1)
 #define MICROPY_PY_BUILTINS_BYTEARRAY (1)