<h1>There is no easy way to keep the bed heated during pause</h1>
<p>Looking at the sourcecode, I am pretty sure that the current version (10/29/2019) keeps the heated bed at the right temperature.
Features are built into the firmware. You need an Arduino and some wires to write new firmware to the built-in SOC. Adjusting the code should be as simple as commenting a single line.</p>
<p>That is some serious shortcoming of the CR-10 S5! I can't imagine a reason why not to leave the heated bed on.</p>
<p>The command that keeps the heated bed at temperature is in Marlin_main.cpp:5664:
<a href="https://drive.google.com/drive/folders/134SwAcHc2dytvZLdfni10s3DteeAkMlL" rel="nofollow noreferrer">Source code link</a></p>

CC BY-SA 4.0
2021-01-20T12:37:12.020Z
which line would that be?
Trish
CC BY-SA 4.0
2021-01-20T10:57:57.123Z
2021-01-26T08:49:03.743Z
2021-01-26T08:49:03.743Z
Hacky
<h1>It's in the firmware</h1>
<p>Filament runout sensors generally trigger <code>M600</code>. <strong>Usually</strong> that preserves the bed temperature, but some firmware distributions might have this set up wrong.</p>
<h1>How is M600 working?</h1>
<p>The firmware dictates what is done in case of filament runout. The standard settings in <a href="https://marlinfw.org/docs/configuration/configuration.html" rel="nofollow noreferrer"><code>configuration.h</code></a> can look like this:</p>
<pre><code>//#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 &quot;M600&quot;

  // 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
</code></pre>
<p>So, we need to see what <a href="https://marlinfw.org/docs/gcode/M600.html" rel="nofollow noreferrer"><code>M600</code></a> does. M600 is configured in some way:</p>
<blockquote>
<p>The settings for this command can be found in Configuration_adv.h.</p>
</blockquote>
<p>So, you need to reconfigure how M600 behaves... <a href="https://www.youtube.com/watch?v=gwHpXaj_6xE&amp;feature=youtu.be&amp;ab_channel=TeachingTech" rel="nofollow noreferrer">Here's how to properly do it in 1.1.8/1.1.9</a> and <a href="https://crosslink.io/2020/07/17/marlin-2-0-m600-filament-change-setup-explained/" rel="nofollow noreferrer">how does it actually work in the first place in 2.0?</a>:</p>
<p>First, make sure the line <code>#define ADVANCED_PAUSE_FEATURE</code> has no leading <code>//</code> in <code>configuration_adv.h</code>.</p>
<p>Make sure you have <code>#define FILAMENT_RUNOUT_SENSOR</code> uncommented with no leading <code>//</code> in <code>configuration.h</code>. Typically, it just calls <code>M600</code>. 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: &quot;if not attended in time - shut down. This includes shutting down the heated bed.&quot;</p>
<p>But where is the actual M600 defined? Oh, that's sneakily hidden in <code>Marlin_main.ccp</code> for 1.1.9... and oddly enough it does <strong>not</strong> call to turn off the heated bed unless it goes into <em>did nothing cooldown</em>.</p>

CC BY-SA 4.0
2021-01-20T17:42:53.330Z
This has no reference to the heated bed, so, does the newest firmware version doesn't drop the bed temperature on pause? 
(Note `M600` is a multi purpose pause and filament change script, it doesn't reference bed temperature) Also, does Marlin 2.0.x has a `Marlin_main.cpp`?
0scar
CC BY-SA 4.0
2021-01-20T17:56:16.203Z
@0scar which is what *stumps* me - there *shouldn't* be a shutdown, unless it is in the distribution OP installed.
Trish
CC BY-SA 4.0
2021-01-21T14:08:31.157Z
I checked the current version (2.0) and there in the M600 command, the manage_heater is called, which in turn keeps the bed temperature. I'm pretty sure op has an older firmware where this is not fixed.
Hacky
CC BY-SA 4.0
2021-01-20T13:39:20.237Z
2021-01-21T14:30:36.347Z
2021-01-21T14:30:36.347Z
Trish
<p>My CR-10 S5 has a feature, that stops the print, when the filament runs out.</p>
<p>However, when the printer pauses, the bed cools down and the print plops if the bed. Is there a way to tell the printer to keep the bed heated, when paused (by the runout detector)?</p>

CC BY-SA 4.0
2021-01-20T09:47:05.353Z
unless you write custom firmware? No.
Trish
CC BY-SA 4.0
2021-01-20T12:25:19.770Z
Has this to to with the "economic" mode? If so, you have your [answer here](https://3dprinting.stackexchange.com/a/8425/). I don't know if this reflects recent firmware versions.
0scar
CC BY-SA 4.0
2021-01-20T12:37:53.673Z
@0scar nope, that is part of the Filament runout sensor alarm code, not the eco mode
Trish
CC BY-SA 4.0
2021-01-21T16:54:07.797Z
Does it cool down immediately or is it a separate heater timeout after the pause?
R.. GitHub STOP HELPING ICE
<heated-bed><adhesion><fdm><creality-cr-10><filament-sensor>
Bed heating stops when paused by filament runout sensor
Frezzley
# Bed heating stops when paused by filament runout sensor

(Asked by: username_0 on 2021-01-20)

My CR-10 S5 has a feature, that stops the print, when the filament runs out.

However, when the printer pauses, the bed cools down and the print plops if the bed. Is there a way to tell the printer to keep the bed heated, when paused (by the runout detector)?

**Tags:** heated-bed, adhesion, fdm, creality-cr-10, filament-sensor
> **Comments:**
> **username_1**: unless you write custom firmware? No.  
> **username_2**: Has this to to with the "economic" mode? If so, you have your [answer here](https://3dprinting.stackexchange.com/a/8425/). I don't know if this reflects recent firmware versions.  
> **username_1**: @0scar nope, that is part of the Filament runout sensor alarm code, not the eco mode  
> **username_3**: Does it cool down immediately or is it a separate heater timeout after the pause?  

---

## 2 answers

### Answer by username_4 on 2021-01-20. Score: 1

# There is no easy way to keep the bed heated during pause

Looking at the sourcecode, I am pretty sure that the current version (10/29/2019) keeps the heated bed at the right temperature.
Features are built into the firmware. You need an Arduino and some wires to write new firmware to the built-in SOC. Adjusting the code should be as simple as commenting a single line.

That is some serious shortcoming of the CR-10 S5! I can't imagine a reason why not to leave the heated bed on.

The command that keeps the heated bed at temperature is in Marlin\_main.cpp:5664:
[Source code link](https://drive.google.com/drive/folders/134SwAcHc2dytvZLdfni10s3DteeAkMlL)

> **Comments:**
> **username_1**: which line would that be?  

---

### Answer by username_1 on 2021-01-20. Score: 1

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.

> **Comments:**
> **username_2**: This has no reference to the heated bed, so, does the newest firmware version doesn't drop the bed temperature on pause?  (Note `M600` is a multi purpose pause and filament change script, it doesn't reference bed temperature) Also, does Marlin 2.0.x has a `Marlin_main.cpp`?  
> **username_1**: @0scar which is what *stumps* me - there *shouldn't* be a shutdown, unless it is in the distribution OP installed.  
> **username_4**: I checked the current version (2.0) and there in the M600 command, the manage_heater is called, which in turn keeps the bed temperature. I'm pretty sure op has an older firmware where this is not fixed.  

---

