diff --git a/Marlin/src/HAL/shared/esp_wifi.cpp b/Marlin/src/HAL/shared/esp_wifi.cpp
index ab073d6f08..5f38ff3128 100644
--- a/Marlin/src/HAL/shared/esp_wifi.cpp
+++ b/Marlin/src/HAL/shared/esp_wifi.cpp
@@ -23,13 +23,21 @@
 #include "../../inc/MarlinConfig.h"
 #include "Delay.h"
 
-void esp_wifi_init(void) {
+void esp_wifi_init(void) {                          // init ESP01 WIFI module pins
+  #if PIN_EXISTS(ESP_WIFI_MODULE_GPIO0)
+    OUT_WRITE(ESP_WIFI_MODULE_GPIO0_PIN, HIGH);
+  #endif
+  #if PIN_EXISTS(ESP_WIFI_MODULE_GPIO2)
+    OUT_WRITE(ESP_WIFI_MODULE_GPIO2_PIN, HIGH);
+  #endif
   #if PIN_EXISTS(ESP_WIFI_MODULE_RESET)
+    delay(1);  // power up delay (0.1mS minimum)
     OUT_WRITE(ESP_WIFI_MODULE_RESET_PIN, LOW);
     delay(1);
     OUT_WRITE(ESP_WIFI_MODULE_RESET_PIN, HIGH);
   #endif
   #if PIN_EXISTS(ESP_WIFI_MODULE_ENABLE)
+    delay(1);  // delay after reset released (0.1mS minimum)
     OUT_WRITE(ESP_WIFI_MODULE_ENABLE_PIN, HIGH);
   #endif
 }
diff --git a/Marlin/src/pins/pinsDebug_list.h b/Marlin/src/pins/pinsDebug_list.h
index bb7ececa92..2ffa709a6d 100644
--- a/Marlin/src/pins/pinsDebug_list.h
+++ b/Marlin/src/pins/pinsDebug_list.h
@@ -1415,3 +1415,9 @@
 #if PIN_EXISTS(ESP_WIFI_MODULE_ENABLE)
   REPORT_NAME_DIGITAL(__LINE__, ESP_WIFI_MODULE_ENABLE_PIN)
 #endif
+#if PIN_EXISTS(ESP_WIFI_MODULE_GPIO0)
+  REPORT_NAME_DIGITAL(__LINE__, ESP_WIFI_MODULE_GPIO0_PIN)
+#endif
+#if PIN_EXISTS(ESP_WIFI_MODULE_GPIO2)
+  REPORT_NAME_DIGITAL(__LINE__, ESP_WIFI_MODULE_GPIO2_PIN)
+#endif
diff --git a/Marlin/src/pins/stm32f4/pins_BTT_SKR_PRO_V1_1.h b/Marlin/src/pins/stm32f4/pins_BTT_SKR_PRO_V1_1.h
index 8d68ca3f9f..8eadf523f3 100644
--- a/Marlin/src/pins/stm32f4/pins_BTT_SKR_PRO_V1_1.h
+++ b/Marlin/src/pins/stm32f4/pins_BTT_SKR_PRO_V1_1.h
@@ -340,13 +340,15 @@
 /**
  *          _____
  *      TX | 1 2 | GND      Enable PG1   // Must be high for module to run
- *  Enable | 3 4 | GPIO2    Reset  PG0   // Leave as unused (OK to leave floating)
- *   Reset | 5 6 | GPIO0    GPIO2  PF15  // Leave as unused (best to leave floating)
- *     3.3V| 7 8 | RX       GPIO0  PF14  // Leave as unused (best to leave floating)
+ *  Enable | 3 4 | GPIO2    Reset  PG0   // active low, probably OK to leave floating
+ *   Reset | 5 6 | GPIO0    GPIO2  PF15  // must be high (ESP3D software configures this with a pullup so OK to leave as floating)
+ *     3.3V| 7 8 | RX       GPIO0  PF14  // Leave as unused (ESP3D software configures this with a pullup so OK to leave as floating)
  *            ̄ ̄
  *            W1
  */
-#define ESP_WIFI_MODULE_COM 6                     // Must also set SERIAL_PORT or SERIAL_PORT_2 to this
-#define ESP_WIFI_MODULE_BAUDRATE        BAUDRATE  // Must use same BAUDRATE as SERIAL_PORT & SERIAL_PORT_2
-#define ESP_WIFI_MODULE_RESET_PIN           -1
+#define ESP_WIFI_MODULE_COM 6                         // Must also set either SERIAL_PORT or SERIAL_PORT_2 to this
+#define ESP_WIFI_MODULE_BAUDRATE            BAUDRATE  // Must use same BAUDRATE as SERIAL_PORT & SERIAL_PORT_2
+#define ESP_WIFI_MODULE_RESET_PIN           PG0
 #define ESP_WIFI_MODULE_ENABLE_PIN          PG1
+#define ESP_WIFI_MODULE_GPIO0_PIN           PF14
+#define ESP_WIFI_MODULE_GPIO2_PIN           PF15