diff --git a/src/drivers/boards/mindpx-v2/board_config.h b/src/drivers/boards/mindpx-v2/board_config.h
index 01dfaa94d88b24e377ed9c081d344f3ad7d9606c..b99f1626aa10a71d210f3c4886da10f65ac0ed9e 100644
--- a/src/drivers/boards/mindpx-v2/board_config.h
+++ b/src/drivers/boards/mindpx-v2/board_config.h
@@ -334,6 +334,10 @@
 
 #define BOARD_DMA_ALLOC_POOL_SIZE 5120
 
+/* This board provides the board_on_reset interface */
+
+#define BOARD_HAS_ON_RESET 1
+
 __BEGIN_DECLS
 
 /****************************************************************************************************
diff --git a/src/drivers/boards/mindpx-v2/init.c b/src/drivers/boards/mindpx-v2/init.c
index 8adf137d5860df6a549b0aee5eb431b85d581855..ac55154f482f4db325c688b8ca626962b350b8e2 100644
--- a/src/drivers/boards/mindpx-v2/init.c
+++ b/src/drivers/boards/mindpx-v2/init.c
@@ -118,6 +118,39 @@ __END_DECLS
 /****************************************************************************
  * Protected Functions
  ****************************************************************************/
+/************************************************************************************
+ * Name: board_on_reset
+ *
+ * Description:
+ * Optionally provided function called on entry to board_system_reset
+ * It should perform any house keeping prior to the rest.
+ *
+ * status - 1 if resetting to boot loader
+ *          0 if just resetting
+ *
+ ************************************************************************************/
+__EXPORT void board_on_reset(int status)
+{
+	/* configure the GPIO pins to outputs and keep them low */
+	stm32_configgpio(GPIO_GPIO0_OUTPUT);
+	stm32_configgpio(GPIO_GPIO1_OUTPUT);
+	stm32_configgpio(GPIO_GPIO2_OUTPUT);
+	stm32_configgpio(GPIO_GPIO3_OUTPUT);
+	stm32_configgpio(GPIO_GPIO4_OUTPUT);
+	stm32_configgpio(GPIO_GPIO5_OUTPUT);
+	stm32_configgpio(GPIO_GPIO6_OUTPUT);
+	stm32_configgpio(GPIO_GPIO7_OUTPUT);
+
+	/**
+	 * On resets invoked from system (not boot) insure we establish a low
+	 * output state (discharge the pins) on PWM pins before they become inputs.
+	 */
+
+	if (status >= 0) {
+		up_mdelay(400);
+	}
+}
+
 /****************************************************************************
  * Public Functions
  ****************************************************************************/
@@ -134,34 +167,29 @@ __END_DECLS
 __EXPORT void
 stm32_boardinitialize(void)
 {
+	// Reset all PWM to Low outputs.
+
+	board_on_reset(-1);
+
 	/* configure LEDs */
 
 	board_autoled_initialize();
 
 	/* configure ADC pins */
 
-	px4_arch_configgpio(GPIO_ADC1_IN4);	/* VDD_5V_SENS */
-	px4_arch_configgpio(GPIO_ADC1_IN10);	/* BATT_CURRENT_SENS */
-	px4_arch_configgpio(GPIO_ADC1_IN12);	/* BATT_VOLTAGE_SENS */
-	px4_arch_configgpio(GPIO_ADC1_IN11);	/* RSSI analog in */
-	px4_arch_configgpio(GPIO_ADC1_IN13);	/* FMU_AUX_ADC_1 */
-	px4_arch_configgpio(GPIO_ADC1_IN14);	/* FMU_AUX_ADC_2 */
-	px4_arch_configgpio(GPIO_ADC1_IN15);	/* PRESSURE_SENS */
+	stm32_configgpio(GPIO_ADC1_IN4);	/* VDD_5V_SENS */
+	stm32_configgpio(GPIO_ADC1_IN10);	/* BATT_CURRENT_SENS */
+	stm32_configgpio(GPIO_ADC1_IN12);	/* BATT_VOLTAGE_SENS */
+	stm32_configgpio(GPIO_ADC1_IN11);	/* RSSI analog in */
+	stm32_configgpio(GPIO_ADC1_IN13);	/* FMU_AUX_ADC_1 */
+	stm32_configgpio(GPIO_ADC1_IN14);	/* FMU_AUX_ADC_2 */
+	stm32_configgpio(GPIO_ADC1_IN15);	/* PRESSURE_SENS */
 
 	/* configure power supply control/sense pins */
 
-	px4_arch_configgpio(GPIO_SBUS_INV);
-	px4_arch_configgpio(GPIO_FRSKY_INV);
+	stm32_configgpio(GPIO_SBUS_INV);
+	stm32_configgpio(GPIO_FRSKY_INV);
 
-	/* configure the GPIO pins to outputs and keep them low */
-	px4_arch_configgpio(GPIO_GPIO0_OUTPUT);
-	px4_arch_configgpio(GPIO_GPIO1_OUTPUT);
-	px4_arch_configgpio(GPIO_GPIO2_OUTPUT);
-	px4_arch_configgpio(GPIO_GPIO3_OUTPUT);
-	px4_arch_configgpio(GPIO_GPIO4_OUTPUT);
-	px4_arch_configgpio(GPIO_GPIO5_OUTPUT);
-	px4_arch_configgpio(GPIO_GPIO6_OUTPUT);
-	px4_arch_configgpio(GPIO_GPIO7_OUTPUT);
 
 	/* configure SPI interfaces */