It's in the firmware
Filament runout sensors generally trigger M600
. Usually that preserves the bed temperature, but some firmware distributions might have this set up wrong.
How is M600 working?
The firmware dictates what is done in case of filament runout. The standard settings in configuration.h
can look like this:
//#define FILAMENT_RUNOUT_SENSOR
#if ENABLED(FILAMENT_RUNOUT_SENSOR)
#define NUM_RUNOUT_SENSORS 1 // Number of sensors, up to one per extruder. Define a FIL_RUNOUT#_PIN for each.
#define FIL_RUNOUT_INVERTING false // Set to true to invert the logic of the sensor.
#define FIL_RUNOUT_PULLUP // Use internal pullup for filament runout pins.
//#define FIL_RUNOUT_PULLDOWN // Use internal pulldown for filament runout pins.
// Set one or more commands to execute on filament runout.
// (After 'M412 H' Marlin will ask the host to handle the process.)
#define FILAMENT_RUNOUT_SCRIPT "M600"
// After a runout is detected, continue printing this length of filament
// before executing the runout script. Useful for a sensor at the end of
// a feed tube. Requires 4 bytes SRAM per sensor, plus 4 bytes overhead.
//#define FILAMENT_RUNOUT_DISTANCE_MM 25
#ifdef FILAMENT_RUNOUT_DISTANCE_MM
// Enable this option to use an encoder disc that toggles the runout pin
// as the filament moves. (Be sure to set FILAMENT_RUNOUT_DISTANCE_MM
// large enough to avoid false positives.)
//#define FILAMENT_MOTION_SENSOR
#endif
#endif
So, we need to see what M600
does. M600 is configured in some way:
The settings for this command can be found in Configuration_adv.h.
So, you need to reconfigure how M600 behaves... Here's how to properly do it in 1.1.8/1.1.9 and how does it actually work in the first place in 2.0?:
First, make sure the line #define ADVANCED_PAUSE_FEATURE
has no leading //
in configuration_adv.h
.
Make sure you have #define FILAMENT_RUNOUT_SENSOR
uncommented with no leading //
in configuration.h
. Typically, it just calls M600
. You can replace the line with any other line of commands, for example have it play music or abort the print, or just dwell for a couple minutes and beep tragically. The factory setup for M600 contains safety setup: "if not attended in time - shut down. This includes shutting down the heated bed."
But where is the actual M600 defined? Oh, that's sneakily hidden in Marlin_main.ccp
for 1.1.9... and oddly enough it does not call to turn off the heated bed unless it goes into did nothing cooldown.