diff --git a/ports/esp32/mphalport.h b/ports/esp32/mphalport.h
index 8a0f1dc8b01c5b96a367d86d5c541700cff3c3ed..3215bc062c313290214f98c7fd5921d0ccccc943 100644
--- a/ports/esp32/mphalport.h
+++ b/ports/esp32/mphalport.h
@@ -59,12 +59,15 @@ mp_hal_pin_obj_t machine_pin_get_id(mp_obj_t pin_in);
 #define mp_obj_get_pin(o) machine_pin_get_id(o) // legacy name; only to support esp8266/modonewire
 #define mp_hal_pin_name(p) (p)
 static inline void mp_hal_pin_input(mp_hal_pin_obj_t pin) {
+    gpio_pad_select_gpio(pin);
     gpio_set_direction(pin, GPIO_MODE_INPUT);
 }
 static inline void mp_hal_pin_output(mp_hal_pin_obj_t pin) {
+    gpio_pad_select_gpio(pin);
     gpio_set_direction(pin, GPIO_MODE_INPUT_OUTPUT);
 }
 static inline void mp_hal_pin_open_drain(mp_hal_pin_obj_t pin) {
+    gpio_pad_select_gpio(pin);
     gpio_set_direction(pin, GPIO_MODE_INPUT_OUTPUT_OD);
 }
 static inline void mp_hal_pin_od_low(mp_hal_pin_obj_t pin) {