New Cura version 5 announcement

I watched the Cura 5 announcement Launch event: Cura 5.0 and metal 3D printing - YouTube yesterday 4/24/22 and it really looks amazing. They completely rewrote their slicing engine to achieve better accuracy and detail all while increasing print speed with your existing printer.

The big question is will we be able to get an updated version of the “Lulzbot” edition. With Lulzbot completely skipping Cura 4, is their any hope that they will update to Cura 5?


I doubt that we will ever see CuraLE 5 and judging from the progress of

I’m not holding my breath for that either.

What we can do is create our own profiles for Ultimaker Cura and use that instead of CuraLE.

1 Like

The main thing missing from Ultimaker Cura is the G-Code replacement tokens (G-Code variables) based on filament profiles.

In the Start G-Code for LulzBot printers that use the bed-leveling washers (not the BL-Touch) the nozzle needs to heat to the a softening temperature – which varies based on which filament you happen to be using.

The tokens (variables):

  • {material_soften_temperature}
  • {material_wipe_temperature}
  • {material_probe_temperature}

There are more … but these come from the filament profiles – so they can be different for every material you print. Ultimaker Cura doesn’t have this concept.

They DO have a tokens for print temperature (which comes from the slicer settings you pick in the materials section of the slicing job) but not things like wipe & probe temp.

Slic3r and PrusaSlicer can do g-code math (you can use math int he curly braces) so you could do things like using the print temperature minus some amount – not the best but better than nothing. But Cura doesn’t support the notion of solving simple math (I think it’s just addition & subtraction) in the curly braces.

If they were to just add that much to Ultimaker Cura, I think it would be easy to make it work. I tried using Simplify3D for some time and eventually dropped it because I had to manually correct too many things to make it work.

I’d be great if we could arbitrarily create our own token definitions.

1 Like

It appears that the Ultimaker Cura team isn’t really interested (i.e. they label it “low priority”) in even adding simple math (+, -, *, /) between the curly braces. I believe it will take someone creating a pull request to even get on the Ultimaker radar (see GcodeStartEndFormatter with basic math functions · Issue #11452 · Ultimaker/Cura · GitHub).

The existing pull request, Adding Official Profiles for LulzBot Machines by rhendersonLulzbot · Pull Request #10232 · Ultimaker/Cura · GitHub, isn’t making much progress do to some unknown (to the public) problem.

1 Like

In GcodeStartEndFormatter with basic math functions · Issue #11452 · Ultimaker/Cura · GitHub, there is a reference to CURA-8462. I asked for additional information about it and got the cryptic response “That is a reference to your private issue tracker”. I assume that “your” refers to LulzBot so I’m asking in this forum, what / where is CURA-8462?

I am using Cura 4.13.1 right now. The problems identified above are easily solvable (and I solved them, even posted my solutions). I haven’t tried them on Cura 5 yet, but they are working in Cura 4.13.1 right now.

Basically you just need to do modify start g-code and end-gcode in your cura machine settings (plagerize and adapt from the lulzbot edition cura machine settings), then run some post-processing script on the g-code.

I do mine using shell scripting and sed, but cura supports python. I just haven’t gotten around to using the python method because I have a working workflow with 4.13.1.

Lulzbot is really shooting themselves in the foot by not taking the available path. There may be something I am not considering in the context of a solution that works for all of their products, but it seems to me that waiting for a competitor to make their life easier, especially when there is a path available, is counter productive. If anybody at Lulzbot is reading this: This is constructive criticism and I want you, an American company hiring Americans to do industrial work to succeed. As silly as this will sound to younger people, this is a national security issue. And I really do want you to succeed.


I tweaked the begin and end gcodes in Cura some time ago and created profiles for generic PLA, PetG and ABS. I haven’t used Cura LE for some time and have no issues using Cura itself. Those settings have worked with the 5.0 Cura as well. I have no intention of going back to Cura LE.


A work-around would be to create a “LulzBot Bed Leveling” plug-in … as a plug-in. It could prompt for the values of soften, wipe, and probe temps. You could remove the bed-leveling steps from the start g-code and let the plug-in generate the start g-code based on those temps. Then we wouldn’t need to rely on Ultimaker to accept the changes.

I’ve been doing pretty much what @bd2022 (Mike) does … make a printer profile for each material.


This is a fantastic idea. Using information from:
one should be able to have tables based on the {material_name} or {material_id} or even something simple like doing the math based on {material_print_temperature} or {material_print_temperature_layer_0}.

LulzBot engineers could create and maintain this plugin.

I’m not sure how you include a plugin with the start gcode but someone (like could probably help with that.

1 Like

LulzBot engineers could create and maintain this plugin.

This would be the easiest solution for Lulzbot to do, and I can’t imagine it would be more difficult than trying to maintain 3.6.

I’ve been using Cura 5 beta since the release with modified startup gcode (using the “standby” temps for wipe and probing). I’ve been primarily printing HIPS, and it’s working fantastic.

I decided to see if I could get Cura 5.0 to work for me. I loaded up my machine basically from the model in the LulzBot edition. I copied the Gcode removing the calculations. Hit slice and the app closed. No errors, just not running anymore. Maybe I’ll try again next week.

2nd try. Set everything up again. Added edited G-Code for start and finish, hard-coding some things, removing some things (especially layer 0 settings,) and using Cura’s tokens for others.

I was amazed when the printer moved the head down and wiped, auto-leveled, failed the auto-level, leveled x-axis, rewipe, level successfully, start to print. It defaulted to using a raft, which is a little too much PLA to waste for me, and begin the print. Print was to be approx. 4.5 hours. About 15-20 layers in 3%,) I saw a window labeled crash report open briefly before the app, once again, exited.

I give up for now. Never had this crashing issue with Cura LE.

May try saving to external drive option, but that’s probably too much of a hassle.

I think Cura 5 is technically still in beta. Cura 4.13 is the latest “stable” release.

You’re right, of course, @TheVirtualTim. But usually when software hits beta it’s somewhat stable. I guess I expected too much.

I believe Cura 5.0-beta is somewhat stable. Stable enough that Ultimaker released it so that it could get much larger exposure. Bugs (i.e. crashes) could still happen as it did for you and if you report it to Ultimaker, it will make the actual release even better. If you don’t report it, then that exact same bug may find its way into the actual release.

I test beta versions and report any problems so that when the stable version releases, the odds are good that it will work well in my environment. A short period of instability in return for a much longer period of trouble free printing.

I usually would, I’m a software developer. But it didn’t even capture the crash report. Not too much to report without that. I’ll drop them a note. Let them know my configuration cpu/memory, etc. Maybe it’s a Ryzen issue or something.

I did find a crash log. It spewed several pages of:
2022-05-04 12:57:31,366 - CRITICAL - [MainThread] cura.CrashHandler.init [66]: An uncaught error has occurred!
2022-05-04 12:57:31,367 - CRITICAL - [MainThread] cura.CrashHandler.init [69]: TypeError: unable to convert a Python ‘float’ object to a C++ ‘int’ instance

…before shutting down. I put in a bug report on github.

Casting a float as an int. That would be a neat trick. :face_with_raised_eyebrow:

Here’s my machine profile, still using it and especially with the octoprint plugin now compatible with 5.0, I’ve been extremely happy. The only bugs I have experienced were when setting up the machine it overflowed the GUI with extra extruders.


;This G-Code has been generated specifically for the LulzBot TAZ 6 with standard extruder
;The following lines can be uncommented for printer specific fine tuning
;More information can be found at
;M92 E833                 ;Set Axis Steps-per-unit
;M301 P21.0 I1.78 D61.93  ;Set Hotend PID
;M906 E135                ;Digipot Motor Current ((750mA-750)/5+135) = 135
;M206 Y4                  ;Set Home Offsets (default:4)
M73 P0 ; clear GLCD progress bar
M75 ; start GLCD timer
G26 ; clear potential 'probe fail' condition
M107 ; disable fans
M420 S0 ; disable previous leveling matrix
G90 ; absolute positioning
M82 ; set extruder to absolute mode
G92 E0 ; set extruder position to 0
M140 S{material_bed_temperature} ; start bed heating up
M109 R{material_standby_temperature}; soften filament before homing Z
G28 ; Home all axis
G1 E-15 F100 ; retract filament
M109 R{material_standby_temperature}                  ; wait for extruder to reach wiping temp
;M206 X0 Y0 Z0              ; uncomment to adjust wipe position (+X ~ nozzle moves left)(+Y ~ nozzle moves forward)(+Z ~ nozzle moves down)
G12                         ; wiping sequence
M206 X0 Y4 Z0               ; reseting stock nozzle position ### CAUTION: changing this line can affect print quality ###
M109 R{material_standby_temperature} ; wait for extruder to reach probe temp
G1 X-10 Y293 F4000 ; move above first probe point
M204 S100 ; set probing acceleration
G29 ; start auto-leveling sequence
M420 S1 ; activate bed level matrix
M425 Z			     ; use measured Z backlash for compensation
M425 Z F0		     ; turn off measured Z backlash compensation. (if activated in the quality settings, this command will automatically be ignored)
M204 S500 ; restore standard acceleration
G1 X0 Y0 Z15 F5000 ; move up off last probe point
G4 S1 ; pause
M400 ; wait for moves to finish
M117 Heating... ; progress indicator message on LCD
M109 R{material_print_temperature_layer_0} ; wait for extruder to reach printing temp
M190 R{material_bed_temperature_layer_0} ; wait for bed to reach printing temp
G1 Z2 E0 F75 ; prime tiny bit of filament into the nozzle
M117 TAZ 6 Printing... ; progress indicator message on LCD

End G-code:

M400                                      ; wait for moves to finish
M140 S45                                  ; start bed cooling
M104 S0                                   ; disable hotend
M107                                      ; disable fans
G91                                       ; relative positioning
G1 E-1 F300                               ; filament retraction to release pressure
G1 Z20 E-5 X-20 Y-20 F3000                ; lift up and retract even more filament
G1 E6                                     ; re-prime extruder
M117 Cooling please wait                  ; progress indicator message on LCD
G90                                       ; absolute positioning
G1 Y0 F3000                               ; move to cooling position
M190 R45 			        ; wait for bed to cool down to removal temp
G1 Y280 F3000                             ; present finished print
M140 S0                                   ; cut bed temperature for cooldown
M77			        ; stop GLCD timer
M84                                       ; disable steppers
G90                                       ; absolute positioning
M117 Print Complete.                      ; print complete message

On thing i learned to get Ultimaker Cura to work is i changed wipe and probe commands to standby temp in the material properties. Has worked well so far on my mini.

Cura LE somehow handles the dual head differently since i have not been able to print well with the Ultimaker version.

How many hours might it take to develop? What skills beyond those of a seasoned python and plug-in developer are needed?