diff --git a/Marlin/Configuration.h b/Marlin/Configuration.h
index d7d35d240028971aa99e48381f62f2eb26ca636e..5bad2d583a7621e9fc6fcc20de35dbd13757646a 100644
--- a/Marlin/Configuration.h
+++ b/Marlin/Configuration.h
@@ -49,7 +49,11 @@
#define MOTHERBOARD 7
#endif
+//// The following define selects which power supply you have. Please choose the one that matches your setup
+// 1 = ATX
+// 2 = X-Box 360 203Watts (the blue wire connected to PS_ON and the red wire to VCC)
+#define POWER_SUPPLY 1
//===========================================================================
//=============================Thermal Settings ============================
diff --git a/Marlin/Configuration_adv.h b/Marlin/Configuration_adv.h
index f9dce1483ddf5e01250e1b362b5fb00120c51529..b718640c1ccdf0e08dae710400ef87ca4b1dcf7b 100644
--- a/Marlin/Configuration_adv.h
+++ b/Marlin/Configuration_adv.h
@@ -243,6 +243,23 @@ const unsigned int dropsegments=5; //everything with less than this number of st
#ifdef ULTIPANEL
#undef SDCARDDETECTINVERTED
#endif
+
+// Power Signal Control Definitions
+// By default use ATX definition
+#ifndef POWER_SUPPLY
+ #define POWER_SUPPLY 1
+#endif
+// 1 = ATX
+#if (POWER_SUPPLY == 1)
+ #define PS_ON_AWAKE LOW
+ #define PS_ON_ASLEEP HIGH
+#endif
+// 2 = X-Box 360 203W
+#if (POWER_SUPPLY == 2)
+ #define PS_ON_AWAKE HIGH
+ #define PS_ON_ASLEEP LOW
+#endif
+
//===========================================================================
//=============================Buffers ============================
//===========================================================================
diff --git a/Marlin/Marlin_main.cpp b/Marlin/Marlin_main.cpp
index bd811caed9bf59a240b849e1edb3220374342234..b212aa5b4f816826993f60588b0abe3530b2b3e8 100644
--- a/Marlin/Marlin_main.cpp
+++ b/Marlin/Marlin_main.cpp
@@ -295,6 +295,10 @@ void setup_powerhold()
WRITE(SUICIDE_PIN, HIGH);
#endif
#endif
+ #if (PS_ON_PIN > -1)
+ SET_OUTPUT(PS_ON_PIN);
+ WRITE(PS_ON_PIN, PS_ON_AWAKE);
+ #endif
}
void suicide()
@@ -1137,7 +1141,7 @@ void process_commands()
#if (PS_ON_PIN > -1)
case 80: // M80 - ATX Power On
SET_OUTPUT(PS_ON_PIN); //GND
- WRITE(PS_ON_PIN, LOW);
+ WRITE(PS_ON_PIN, PS_ON_AWAKE);
break;
#endif
@@ -1148,7 +1152,7 @@ void process_commands()
suicide();
#elif (PS_ON_PIN > -1)
SET_OUTPUT(PS_ON_PIN);
- WRITE(PS_ON_PIN, HIGH);
+ WRITE(PS_ON_PIN, PS_ON_ASLEEP);
#endif
break;