M104 or M109 doesn't work on Run on pause
M104 T0 S100 Code doesn't work appropriately at print pause.
I want to let the nozzle temperature cooldown to 100Cº when the print is paused.
When I send @pause to the printer's console, the print pauses well.
But M104 or M109 command is not working.
I have written my pause commands at the Printer Setting -> G-codes -> Event Dependent -> Run on pause.
And the G-Code commands are written as,
My Repetier Server is version 1.3.0, and I'm using Marlin Firmware to control my printer.
I tested my printer with Repetier Server of version 1.1.0, M104, and M109 code works on this version.
I want to let the nozzle temperature cooldown to 100Cº when the print is paused.
When I send @pause to the printer's console, the print pauses well.
But M104 or M109 command is not working.
I have written my pause commands at the Printer Setting -> G-codes -> Event Dependent -> Run on pause.
And the G-Code commands are written as,
M104 T0 S100 M104 T1 S100 G0 X50 Y100 F1500Sometimes, these command works well, so the nozzle temperature cooldown to 100Cº, but most of the time, this doesn't work.
My Repetier Server is version 1.3.0, and I'm using Marlin Firmware to control my printer.
I tested my printer with Repetier Server of version 1.1.0, M104, and M109 code works on this version.
Comments
I can't find other FAQs mentioning this problem.
My Gcode file sets the nozzle temperature to 250Cº on starting code, and when I pause the print, the nozzle temperature got settled to 100Cº for a while. After a few seconds, the nozzle temperature changes to 250Cº again.
Why is this happening?
I want my nozzle temperature to remain at 100Cº until I click "Continue", but it keeps changing to the printing temperature.
But with your second post when you write it got set to 100°C that means the commands get executed as they do on my test just running. What you should do for testing is go to console, enable commands and then hit pause. You should see the 100°C command getting send.
Now check when the restore temperature gets send if at all. It gets normally just reset on continue so question is where does it come from. Does your firmware change it, then you see no command for it just higher temperature. If it comes from server you see maybe more commands being send helping to find the source. It might be that you have the enable commands in some scripts. There is at least a the pause handling in general tab that would disable temperatures. But the only command knwing how to set old temperatures is normally the continue function.
Do you have other custom g-codes defined, maybe event dependent that could change temperature?
First, I tried with the Nightly build as you said, but I'm having the same problem.
This is what I receive after printing my part on 1.
And this is my G-code's starting code.
When I click the pause, the temperature drops to 100ºC, but after a while, the Extruder 1 temperature returns to 250ºC. I was watching the console to find what makes the temperature go back to 250, and I found that when it happens when M117 is sent on the console.
So I manually sent the M117 before the server automatically sends the above code, but nothing happened when just simply sending M117. Maybe M117 is not the main cause, but there should be something happening when M117 is sent by the server.
I'm using some custom G-codes for my printer, but I don't control temperatures with them.
Send:3:02:54.594: @pause User requested pause.
What you need is go to console and disable command, ack and M105 filter to see everything. Watch for the lines around where the target temperature changes to 250 back. The end of pause cause will show 100°C for extruder: T: xxx / 100 and when that changes to your old temperature it is the question if you see commands at all or not. If you see commands it comes from server and we need to search there for what you see as commands. Otherwise firmware settings is what to check for. Firmwares often also have a pause function and if they paused temperature they can also put them back.
In printer config->general you can disable sending ETE/ETA/layer so no M117 will appear. They have no influence on anything except the status line of printer. If you do not se ethem on printer display (not all show them) you should disable them anyway.
And this is what I got when I pressed the pause button.
The server command seemed to be sent well, as I could find it on the "N57 M104 T0 S100 T1 S100".
And the server received "ok" and sent the M76 after the M104 command.
I could see the last received command as T:0.00 / 250.00, and this seems like the firmware is not able to catch M104 command from the server, so the temperature received is still set at 250ºC.
But when I just send the "M104 T0 S100 T1 S100" command directly on the console, this works so fine, different from the above situation.
But I also see that the M104 command is wrong. Looks like you try to set 2 exterder temperatures at once:
M104 T0 S100 T1 S100
this should be written like this:
M104 T0 S100
M104 T1 S100
You see that after your command extruder 2 (T1) is reportet to be set to 100°C isntead of 0 it had before. Firmware expects only one T and one temperature in a command line.
Actually you should only set temp to 100 for extruders in use like this:
@if {{ext_0. temp_set!=0}}
M104 T0 S100
@endif
@if {{ext_1. temp_set!=0}}
M104 T1 S100
@endif
As you said above, you were right!
I just splitter the M104 T0 S100 T1 S100 to two codes by "M104 T0 S100", "M104 T1 S100", and this works just fine.
I have no idea why I thought I could set the temperature of two extruders at once.
It was my silly mistake.
I'm very grateful for this issue has been solved.
Thank you for keep commenting on me.
Double-check syntax, and consider using M109 for temperature control during pauses. Additionally, updating Repetier Server and Marlin to the latest versions may address compatibility issues.