Dual extruder alternating correct + incorrect temperature status messages

I am having some challenges getting dual extrusion working and I believe it all stems from alternating incorrectly reported temperatures. I can print 100% fine on EXT0, and on EXT0 + EXT1, however printing just on EXT1 does not work and I get really weird messages in the log.

I ran a test where I tried extruding just from EXT1. (note I had also had EXT0 on for a while, hence the higher temp, but that doesn't matter for the test)

From the below log, you'll see I get T0 reporting true T0 temp, then it reports T1 temp, then back and forth etc...
While this is happening, the icon for EXT0 flips between heat and no-heat. 
13:41:25.045 : T0:166.37 /210.00 B:30.68 /25.00 T0:194.91 /210.00 T1:166.37 /210.00 @:127 B@:0 @0:127 @1:127 W:?
13:41:25.186 : T0:195.06 /210.00 B:31.51 /25.00 T0:195.06 /210.00 T1:166.39 /210.00 @:127 B@:0 @0:127 @1:127
13:41:26.052 : T0:165.38 /210.00 B:30.73 /25.00 T0:195.91 /210.00 T1:165.38 /210.00 @:127 B@:0 @0:127 @1:127 W:?
13:41:26.193 : T0:195.91 /210.00 B:30.73 /25.00 T0:195.91 /210.00 T1:165.38 /210.00 @:127 B@:0 @0:127 @1:127

Then one of a few different things happen at random:
1. the print starts, but the log file has "echo: cold extrusion prevented"
2. I get a "thermal runaway" error and the machine halts
3. I get a "heater failure" error and the machine halts
Thank you.


  • That looks like a firmware bug or configuration error. T0 is temperature of the first extruder by definition. The temperature for active extruder has the name T: but in your example you see that you have two T0: per line and the first one seems to be switching between value of T0 and T1. Also normally you get only one report per second. Here both follow in 0.1s distance until next second starts again. So not sure what firmware you are using that gets this, but the wrong output is the problem why you see changing values in host. It is the firs "wrong" T0.
  • Good news. On a new board I got a marlin version with nearly the same bug. Did not get the double report but the first T0: instead of T: so I had chance to find a fix for 1.4.1. Until then you can edit the marlin.xml file in install_folder/firmwares by adding
    <bugfixResponse name="REPLACE" param="^\s?T0:(.* T0:.*)" value="T:$1"/>
    After restarting it should then show correct temperatures. The trick will replace first T0: into T: so no firmware repair necessary, also it is still wrong.
  • I think I see what you're doing with this XML. Nice. Looks like it's only on Repetier Server though? Is there a similar place to put this regex if using just the direct serial connection in Repetier Host?  Thanks!
  • I just tried this, but I don't think it took... also I could be wrong but I think I need a regex like:
    replacing with just
    as it appears my issue has an incorrect temperature reported at the beginning of the ACK and then the  actual temperatures reported later in the ACK. Not sure... Thanks!
  • Looking at the G-Code documentation - your regex is correct, though it still didn't take for some reason. 
    However I think I found the issue in firmware: (bug)
    I updated the temperature.cpp and temperature.h files and now it appears to work correctly.  Hooray!  Thanks again!
  • Great you found the marlin fix. After all best is to have firmware not have the bug at all. Host it self can not fix like with xml, it would only work if host connects through server.
Sign In or Register to comment.