Running my Ultrabase (glass plate) through a MOSFET on an stock A8 board with Marlin 1.1.8. When I do PID tune through Pronterface (by using the M303 E-1 C8 S70 command) the bed heats up no problem and completes the tune, but when printing from SD or using the Preheat PLA command on the printer to heat the bed, nothing happens and then I get "Bed heating failed".

As its working through Pronterface I know the wiring is okay.



Anet A8 Stock Board
Ultrabase 220x200 12v
PID Values extracted from Pronterface Via M303 E-1 C8 S70 from cold bed
Message take about 1 minute to appear, seems to be a timeout as opposed to an instant error

Disabling PIDTEMPBED and enabling MAX_BED_POWER resolves the issue allowing the printer to heat the bed

Thermal protection for bed set to

#define WATCH_BED_TEMP_PERIOD 180               // Seconds
#define WATCH_BED_TEMP_INCREASE 2               // Degrees Celsius

When using PIDTEMPBED the LED on the bed does not light, but when using MAX_BED_POWER / PIDTUNE it does

  • $\begingroup$ what G-code is executed to get PID tunning? $\endgroup$
    – profesor79
    Nov 22, 2018 at 13:59
  • $\begingroup$ M303 E-1 C8 S70 $\endgroup$
    – NXSmiggy
    Nov 22, 2018 at 14:00
  • $\begingroup$ Please add some details in your question (by edit) on printer size/type, voltage, how you got the PID values (e.g. heated bed first or from cold)? Also explain if the message pops up instantly, or after a few seconds. $\endgroup$
    – 0scar
    Nov 23, 2018 at 8:02
  • $\begingroup$ @NXSmiggy Disabling PIDBDTEMP results in bang-bang heat up. PID is bypassed. $\endgroup$
    – 0scar
    Nov 23, 2018 at 9:57

1 Answer 1


I thought this was an easy problem to fix as the previous Configuration.h you shared had PID incorrectly configured.

I'm guessing that you experience this LCD screen:

"Bed heating failed" message

What I experienced myself when PID tuning the bed is that it matters whether the bed is preheated or not. At first attempt the command such as the M303 E-1 C8 S70 you used did result a failed PID tuning (note that you should perform the test from a cold bed).

Your PID values:

// PIDTune from Pronterface
#define DEFAULT_bedKp 305.95
#define DEFAULT_bedKi 60.24
#define DEFAULT_bedKd 388.4805

are similar results as I have for a 24V 300 x 300 x 3 mm bottom cork insulated heat plate with 3 mm glass.

You have not added the "Configuration_adv.h", but this file contains the advanced settings for the printer and most probably contain:

  #define THERMAL_PROTECTION_BED_PERIOD 20    // Seconds
  #define THERMAL_PROTECTION_BED_HYSTERESIS 2 // Degrees Celsius

   * As described above, except for the bed (M140/M190/M303).
  #define WATCH_BED_TEMP_PERIOD 60                // Seconds
  #define WATCH_BED_TEMP_INCREASE 2               // Degrees Celsius

This describes that the software waits for 60 seconds for the bed to increase 2 °C. If the temperature increase is not observed, there is no heat input to the bed, or it does not reach the set temperature. Please check your values.

  • $\begingroup$ Updated with requested information, Disabling PIDTEMPBED and re-enabling MAX_BED_POWER allows the printer to control the bed again $\endgroup$
    – NXSmiggy
    Nov 23, 2018 at 8:29
  • $\begingroup$ Additional information provided as requested $\endgroup$
    – NXSmiggy
    Nov 23, 2018 at 17:13

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .