<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**: @username_2 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`](https://marlinfw.org/docs/configuration/configuration.html) 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`](https://marlinfw.org/docs/gcode/M600.html) 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](https://www.youtube.com/watch?v=gwHpXaj_6xE&feature=youtu.be&ab_channel=TeachingTech) and [how does it actually work in the first place in 2.0?](https://crosslink.io/2020/07/17/marlin-2-0-m600-filament-change-setup-explained/):

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**: @username_2 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.  

---

