diff --git a/unix/moduselect.c b/unix/moduselect.c
index 6a01325a1d3e04eb8de493ed79a5268cba48833a..537bd47960ebe9c71e196156554d935bf193a81f 100644
--- a/unix/moduselect.c
+++ b/unix/moduselect.c
@@ -25,6 +25,10 @@
  * THE SOFTWARE.
  */
 
+#include "py/mpconfig.h"
+
+#if MICROPY_PY_USELECT
+
 #include <stdio.h>
 #include <errno.h>
 #include <poll.h>
@@ -212,3 +216,5 @@ const mp_obj_module_t mp_module_uselect = {
     .name = MP_QSTR_uselect,
     .globals = (mp_obj_dict_t*)&mp_module_select_globals,
 };
+
+#endif // MICROPY_PY_USELECT
diff --git a/unix/mpconfigport.h b/unix/mpconfigport.h
index 5161066c00fea5b96bceb0fdcf8aaaac89f0e423..ad75f5287eaeeae8e53fb5b7f6dc0847f0fb1210 100644
--- a/unix/mpconfigport.h
+++ b/unix/mpconfigport.h
@@ -104,6 +104,9 @@
 #define MICROPY_PY_UHEAPQ           (1)
 #define MICROPY_PY_UHASHLIB         (1)
 #define MICROPY_PY_UBINASCII        (1)
+#ifndef MICROPY_PY_USELECT
+#define MICROPY_PY_USELECT          (1)
+#endif
 #define MICROPY_PY_MACHINE          (1)
 
 // Define to MICROPY_ERROR_REPORTING_DETAILED to get function, etc.
@@ -158,6 +161,11 @@ extern const struct _mp_obj_module_t mp_module_jni;
 #else
 #define MICROPY_PY_SOCKET_DEF
 #endif
+#if MICROPY_PY_USELECT
+#define MICROPY_PY_USELECT_DEF { MP_ROM_QSTR(MP_QSTR_uselect), MP_ROM_PTR(&mp_module_uselect) },
+#else
+#define MICROPY_PY_USELECT_DEF
+#endif
 
 #define MICROPY_PORT_BUILTIN_MODULES \
     MICROPY_PY_FFI_DEF \
@@ -166,7 +174,7 @@ extern const struct _mp_obj_module_t mp_module_jni;
     MICROPY_PY_SOCKET_DEF \
     { MP_ROM_QSTR(MP_QSTR_machine), MP_ROM_PTR(&mp_module_machine) }, \
     { MP_ROM_QSTR(MP_QSTR_uos), MP_ROM_PTR(&mp_module_os) }, \
-    { MP_ROM_QSTR(MP_QSTR_uselect), MP_ROM_PTR(&mp_module_uselect) }, \
+    MICROPY_PY_USELECT_DEF \
     MICROPY_PY_TERMIOS_DEF \
 
 // type definitions for the specific machine