Ultimaker / Cura

3D printer / slicing GUI built on top of the Uranium framework
GNU Lesser General Public License v3.0
6.06k stars 2.06k forks source link

Cura 5.8b1 Print tries to start as soon as bed reaches temp #19398

Open LilBub opened 1 month ago

LilBub commented 1 month ago

Elixir_test_cube.zip

Cura Version

5.8.0 Beta 1

Operating System

Windows 11

Printer

Ultimaker 2+

Reproduction steps

Slice print Upload to latest Octoprint Noticed that as soon as temp hit 60 on bed, print start I also observed that it did not try to do any of the pre print material purge

Actual results

Print tries to print with a cold hot end once bed is at 60c

Expected results

Normal print!

Add your .zip and screenshots here ⬇️

UM2_Test_cube_100_flow_Proj_cura58b1.zip

I don't know if Octoprint is mucking with the code one uploaded or if this Cura.

I was able to repeat the same exact issue with Cura 5.7.2

Here is the Start G-Code I have for the Ultimaker 2+

G21 ;metric values G90 ;absolute positioning M82 ;set extruder to absolute mode M107 ;start with the fan off G28 Z0 ;move Z to bottom endstops G28 X0 Y0 ;move X/Y to endstops G1 X15 Y0 F4000 ;move X/Y to front of printer G1 Z15.0 F9000 ;move the platform to 15mm G92 E0 ;zero the extruded length G1 F200 E50 ;extrude 50 mm of feed stock G92 E0 ;zero the extruded length again G1 Y50 F9000 ;Put printing message on LCD screen M117 Printing...

LilBub commented 1 month ago

Checking Octoprint, there are no GCODE start commands

image

LilBub commented 1 month ago

I just tried a print from a few months ago stored on my Octoprint Raspberry Pi that was made with Cura 5.7 That's printing fine. So, something is up with the newer version(s)

Asterchades commented 1 month ago

OctoPrint's start and end scripts are completely independent of Cura's, and are quite often left blank so as not to interfere with the slicer you've used. Only the Cura scripts will actually be embedded in the resulting GCode.

From what I can see, it looks like the automatically generated temperature commands embedded in the GCode (so only influenced by Cura) is not creating an M109 statement to wait for the tool to finish heating. It's setting the tool to heat (M104) - just not waiting for it to finish, which in turn will likely have prevented it from purging due to low temperature failsafes in the firmware. 5.7.2 broke part of this (specifically the ability to override it) so work has been done here, and it would seem that perhaps something was inadvertently broken in the process.

Someone on the team will take a look at this.

HellAholic commented 1 month ago

@LilBub It looks like you've switched the Gcode flavor to Marlin. The Ultimaker 2+ uses the firmware presets with Ultimaker 2 Gcode flavor. Marlin flavor can be used to get control on the temperatures, retraction lengths, etc without using the firmware presets. But this is meant for more expert users to gain additional control over the printer.

To clarify, 5.7.2 did not break the ability to override the temperature commands but rather did not filter out the addition of commands to the start of the Gcode if user already had the temperature commands in their start Gcode, causing double input of temp commands which is fixed in the 5.8-beta.1. What was resolved in 5.7.2 was an issue that was preventing the temperature commands to be added to the start Gcode based on the printer definition. So the printers that specified addition of the command in their definition were not getting that commands added which resulted in users adding their start gcode commands for heat ups.

Here is how you can switch back to the Ultimaker 2 flavor:

Can you maybe share why you switched to the Marlin flavor?

TLDR:

GregValiant commented 1 month ago

@LilBub Your StartUp gcode doesn't contain any Cura Keywords for the bed and hot end temperatures. That means that the temperature "prepend" will be put in. There are two settings that also control the content of the Prepend in regards to "waiting". You must load the "Printer Settings" plugin from the MarketPlace to access them. image

That's from your project and you have "Wait for Build Plate Heatup" checked and so Cura adds the M190 line. But "Wait for Nozzle Heatup" is NOT checked (that is the new default and a result of the fix for the 5.7.2 problem) and so only the M104 line is added and the "wait" command M109 is not. When you slice and save the project you get this: M140 S60 M105 M190 S60 M104 S210 M82 ;absolute extrusion mode That does not have the M109 line.

With "Wait for Nozzle Heat Up" checked you would get this: M140 S60 M105 M190 S60 M104 S210 M105 M109 S210 M82 ;absolute extrusion mode

So the default went from "Enabled" to "Disabled" and so you get what you got. It is "expected behavior" given the repair that was made. I'll remove the bug label and I'm inclined to close this. Let us know if checking that setting works for you. You could also alter your startup gcode to include the Cura Keywords, but simply making that setting adjustment should work. If you have custom setting profiles they may need updating to include the "enabled" for the setting.

LilBub commented 1 month ago

Hi,

A few points

I don't recall changing that recently since Octoprint needs Marlin. I am looking through previous versions and I had G-Code flavor set to the Marlin in 5.7.0 and things worked fine. I also see the identical settings (Marlin) in 5.6.0.

So - don't be so quick to shut down my ticket quite yet.

Also, this check box to Wait for Nozzle doesn't show up for me

image

If I drill down into the settings, I see it there but it has a icon in front of it

image

GregValiant commented 1 month ago

I'll stick the bug label back on. I went through the U2 definition and the U2Plus definition and there are no over-rides for "Wait for nozzle heatup". Going deeper - In order for it to be visible "Enable Nozzle Temperature Control" must be checked and in order for that one to be visible ""machine_gcodeflavor != \"UltiGCode\"" which is Greek for "The Gcode flavor cannot be "Ultimaker 2". So if you switch back to Marlin, it will be visible. BUT as @HellAholic stated: "Switching to Marlin for UM2+ is not recommended and not officially supported."_ I can understand that you want to use Octoprint and it may be possible. Adjusting your StartUp gcode to include: M109 S{material_print_temperature_layer_0} might be something to try.

@wawanbreton Everyone else has kicked in...can you shed any light on this? It would appear that if the firmware is set to Ultimaker 2 that the hot end prepend temperature is not being applied (because the firmware handles it(?) or maybe because UM2 firmware isn't playing nice with Octoprint(?) or (most likely) I'm just having a senior moment and everything is OK.

HellAholic commented 1 month ago

@LilBub for the setting to show up, try switching the flavor to Marlin. That should pop the wait for nozzle in the printer setting plugin. UItimaker 2 flavor image Marlin flavor image

This is not only limited to UM2+, all the UM machines like S5 or the new Factor 4 also handle the wait through firmware. I did discuss this with the teams that made the printers and the profiles before responding to your message, so just wanted to let you know that it wasn't a shallow comment. We also didn't close the discussion on the ticket, so I'm not sure what gave you the impression of a quick shutdown. Even if a ticket is closed you can always comment and it can be re-opened. We honestly appreciate the interaction with the community members here.

For the 5.7 and 5.6 version, you are correct, previous versions of Cura did not comply with the machine definitions correctly. So that meant that the temp wait commands were present even when they should not have been according to the printer definition. This was increasing the wait time before a print, causing oozing, and other quality issues.

LilBub commented 1 month ago

@HellAholic , my Ultimaker 2+ "Machine Settings" were already it set to Marlin mode.

image

What has me confused is I upgraded another PC (desktop) in my workshop to Cura 5.8 B1 Upon updating and installing the Printer Settings Plugin for it (to match the laptop), I checked a few things.

1) Same Marlin settings (Marlin) in Machine Settings 2) Now this is strange, when I look at the Printer Settings, on the dekstop install, I see the check box for Wait for Nozzle Heatup

image

Why I can see it on one install and not another has me stumped

At first, I thought it might be the Profile loaded (Nomal - 0.15mm). On each install I changed the material to Ultimaker PLA just to match up. I would have expected the pulldown to offer several options but I am used to only seeing one. (Save that question for later)

That said, I'm curious why one has the check box, and one does not?

HellAholic commented 1 month ago

Indeed that is puzzling. Could you maybe make a zip out of your configuration folder on the device that doesn't show the setting and send that over?

LilBub commented 1 month ago

Indeed that is puzzling. Could you maybe make a zip out of your configuration folder on the device that doesn't show the setting and send that over?

Specifically which folder?

image

HellAholic commented 1 month ago

Everything apart from the cura.cfg & cura.log

LilBub commented 1 month ago

25mb barrier, Zip files is 26mb Anything you do not need?

HellAholic commented 1 month ago

Instead of the plugins folder just send a screenshot of the plugins you have installed :P That should lower the size a bit

LilBub commented 1 month ago

Sure!

image

HellAholic commented 1 month ago

So as far as I can see, this "might" be related to the settings visibility and some sort of race condition. My initial try I only got 3 options showing for the printer settings in the setting visibility with majority of the plugins added. On the consecutive tries with only the PrinterSettings plugin that was not the case. Could you also give that approach a try? You can just disable the other plugins from the Marketplace > Manage plugins image

If I were you, I would go 1 by 1 and see at what point (if at all) the setting shows up. Let me know if you find anything.

fieldOfView commented 1 month ago

Just for the record, @HellAholic :

Switching to Marlin for UM2+ is not recommended and not officially supported.

This is untrue. If you want to use the UM2 family to print via USB (which includes using Octoprint, because that ultimately prints over USB), you MUST switch to the Marlin Gcode flavor. This has been true ever since the UM2 was launched. The "Ultimaker 2" gcode flavor does not have start gcode (because that is added by the printer firmware). When switching an Ultimaker 2 family printer to the "Marlin" gcode flavor, a good starting point for Start- and End gcode snippets is automatically activated (and can be edited in Machine Settings). I worked on this extensively when I was working on Cura 2.x.

The OctoPrint plugin specifically checks if Ultimaker 2-family printers are using the "Ultimaker 2" flavor, and offers to make the change to "Marlin" for the user, because that is the only way Ultimaker 2-family printers can be used with OctoPrint. See also https://github.com/fieldOfView/Cura-OctoPrintPlugin?tab=readme-ov-file#notes-on-ultigcode-ultimaker-2ultimaker-2

If you intended to say that printing over USB (via OctoPrint or not) is not recommended officially supported, that may be true.

LilBub commented 1 month ago

@HellAholic , just to provide some more information - for the past 4 days I have had 9 machines running non stop using laptop, slicing with Cura 5.8B1 a variety of prints that all work with Octoprint without any issue. With the newer versions of Cura, I can't utilize my Ultimaker 2+ via Octoprint due to this issue.

So, I don't think it is necessarily a plugin issue. (But I'm willing to try your request to evaluate if the Printer Settings / Wait for Nozzle is remedied by toggling off some plugins)

HellAholic commented 1 month ago

@fieldOfView The comment for support is directly from PPM team. If a printer manufacturer states that something is not officially supported then it's outside of being "True / Untrue". Yes, the printer works with Marlin flavor but UM team would not recommend it as they would like the heat up and priming to be handled by the firmware, that is what they have tested and what has been validated.

The question and discussion here is mainly the reason why an option does not show up in the UI correctly that would allow the users to override the settings using the Marlin flavor and send prints over the Octoprint. It's not a question of whether the plugin is working correctly or something is not supported and therefore rejected, but trying to find an actionable solution to help resolve the issue.

I'm trying to reproduce the issue of that setting not showing up in a reliable manner so I can discuss it with the developers to resolve.

@LilBub If you can send me the rest of the configuration folder instead, that would also work, then I can investigate further without bothering you with instructions :)

LilBub commented 1 month ago

Hi @HellAholic , when I get home from work today I'll offer a Google Drive link for that.

LilBub commented 1 month ago

@HellAholic here you go

https://drive.google.com/file/d/1SynurHW5_l_G6wYqsDnh2pfPDKkqTYxf/view?usp=sharing

LilBub commented 1 month ago

You should have access to that link (I thought you already had it!)

HellAholic commented 1 month ago

Just loaded the printers in, the UM2+ shows the Ultimaker 2 flavor in the setting. So the issue seems to be somewhere there, if you see Marlin in the settings but the printer is actually still in Ultimaker 2 config. I can poke around a bit more to see what else I can find.

LilBub commented 1 month ago

Well on my end it shows Marlin so that's kinda wonky?

HellAholic commented 1 month ago

Super simple solution for you could be with big air quotes on could, adding a new um2+ and setting it to Marlin again. Not sure if you've already tried it. I'm following the things on my end and will let you know if I find anything else.

HellAholic commented 1 month ago

image On the right is the definition changes from your profile, left is the definition changes for the UM2+ after setting it to the Marlin

LilBub commented 1 month ago

Now with those settings, do you see the Nozzle heat up option?

HellAholic commented 1 month ago

The options then shows up in the Printer setting plugin image you can either add this line machine_gcode_flavor = RepRap (Marlin/Sprinter) or add a new printer and try, or use the zip below which is your file with the line added. Ultimaker+2%2B_settings.inst.zip

I'm checking to see if any of the upgrade paths could potentially cause this issue. Previously before upgrade you were on 5.7.2 or 5.7.0?

LilBub commented 1 month ago

I have all the versions, but yes, I had 5.7.2 and upped to 5.8 B1

LilBub commented 1 month ago

Ok I know why you are seeing Ultimaker 2 in the Marlin type. You had suggested changing that to see if the Wait for Nozzle Heatup would show up in Printer Settings :-)

LilBub commented 1 month ago

Just chiming in to update - I DO see the Heat Up Nozzle option now and I am able to print via Octoprint to my Ultimaker 2+