How to hack Cura 2.1 for LulzBot 3D Printers

For the past 18 months Ultimaker has been hard at work on a new generation of Cura. The user interface has been completely redesigned and a huge amount of work has been put into the slicing engine too. This post provides an overview of what has changed. For more details read the full release notes: https://ultimaker.com/en/blog/21263-cura-212-has-been-released Also included in this post is instructions on how to adopt this version of Cura so that it can be used with LulzBot 3D printers. This will help people start kicking the tires before official support is built/included by Aleph Objects.

New Features
Multiple object selection and grouping
Undo and Redo
Reorganized print settings management panel

  • Over 200 customizable settings
  • Cascading hierarchy
  • Easier to learn new settings
  • Can hide settings that you do not use or are irrelevant to your printer
  • New patterns for infill and support

Discrete object profile modifiers – vary slicing settings between multiple objects. Here is an example showing different infill patterns being used in the same job


Import models in 3MF format
‘Cut-Off Object Bottom’ is now a proper tool instead of profile setting

Challenges
Many of the below problems will be fixed over time, but they have not been taken care of yet.
Interoperability

  • On Linux, Cura 2.1 cannot be installed side by side with existing Cura Original
  • Cura 2.1 connects with printers when it is started up, so ongoing USB print jobs will be killed

Performance – model loading, gcode preview, slicing and similar features feel sluggish in comparison to Cura Original
Stability – Some crashes on Debian when rotating large/complex models
Regressions – these features were not deliberately removed, they just have not been re-implemented on the new code base yet

  • No support for multiple extrusion
  • Minimal print controller interface
  • No import gcode
  • No install custom firmware
  • No import several models at the same time

Experimentation – it is not possible to edit printer specifications through the user interface. Instead you must modify files to change things like build window dimensions or start/end gcode. Instructions on how to do this are described below.
Z-offsets are messed up, so adhesion will not be as good as you are used to

How to hack
Disclaimer: These instructions are written for Debian Jessie, while the majority of these instructions will work on different platforms you might have to change a step or two. Additionally this document will likely not be useful once Cura 2.2 is released.

  1. Download Cura 2.1.2 from here https://ultimaker.com/en/products/cura-software
  2. An extra package is required for cura to function ‘sudo apt-get install python3-pyqt5’
  3. Navigate to where you downloaded cura ‘cd ~/’
  4. Install Cura ‘sudo dpkg -i Cura-2.1.2-Linux.deb’
  5. If you run into this error message
    ‘RuntimeError: the sip module implements API v11.0 to v11.1 but the Arcus module requires API v11.2’
    when running cura then you will need to replace file ‘/opt/cura/bin/cura/cura_app.py’ with this file https://devel.lulzbot.com/software/Cura2/resources/cura_app.py (which is a backup version of what is available here https://github.com/thopiekar/Cura/blob/7d2b329e78491c4bd8ab8ad84965de494906f55f/cura_app.py)
  6. Verify cura has installed correctly by typing ‘cura’ at the command line
  7. Quit Cura
  8. Now that you have Cura working, next is to create a custom machine configuration
  9. Navigate to where Cura 2 keeps its configuration data ‘cd ~/.local/share/cura/machines’
  10. Create a machine configuration. Here is a basic example for the LulzBot Mini https://devel.lulzbot.com/software/Cura2/resources/lulzbot_mini.json. Some details on how to modify this data is explained here: https://ultimaker.com/en/resources/20511-change-machine-settings
  • ‘cp ~//lulzbot_mini.json ./’
  • OR
  • ’ lulzbot_mini.json’ then cut/paste file contents in
  1. The current formatting of start/end gcode makes it quite difficult to read or modify. As a result, the wiping and probing temperatures are functionally locked. The numbers included in my .json file were taken from an ABS profile. One (extremely inconvenient) workaround to allow printing in a different material is to export gcode then manually manipulate the file to adjust wipe/probe temperatures.
  2. Run Cura
  3. Add the new printer configuration
  • Click on Printer → Add printer → Test → LulzBot Mini → Finish
  1. Now is a good opportunity to marvel at the long list of settings you have to experiment with. You may also want to make them all visible by clicking:
  • Settings → Preferences → Settings
  • For each box that is not checked, click it. Yes it takes forever and no there is no “select all” option
  1. Experiment and print cool stuff!

Edit: My mistake. The functionality to ‘load models with drag & drop’ as well as ‘import profile from gcode’ do already work \o/
Also clarified a few other items

Yes, # 14 WAS a pain when I made my Taz5 entry. Only printed one or two things with it when I did it though, but it came out a lot better than I thought it would for the rough hack ignorant me had done. :blush:

Thanks for the pointers to do this.

Addition:
I am using the Windows version so I think this applies to both Windows and Linux. The Machine files are just in a different location in Windows.

C:\Program Files\Cura 2.1\resources\machines - for all users

or

C:\Users> User_Name> \AppData\Local\cura\machines - for a single user

Just quick glance the thread, is this hack only works for the CUra 2.13 Linux version?

LouisR While I have not tested it, these instructions will be useful for Windows and OSX. A few steps will be slightly different.
(I edited my post to explain this a little)

I am trying to set this up for my Taz 5 on Windows 10 since none of the old Curas load for me. I am not seeing the option to load my new printer file–only the same list that was there before.

I think the issue is step #13: the word “Test” is not present. I then tried to use one of the existing profiles (rigidbotbig) and changed the filename and id to match the original but it doesn’t look like it is using my settings.

Tried putting the printer file in both the places @kmanley57 suggested… no nothin. Was 2.1.2 updated to remove that functionality?

I see mine when I go to the menu selections at the top of the Cura window? Currently running(AKA testing) 2.1.2 for a Taz 5 on Windows 10 and printed out about 20 test models so far with no problems.

I see the Test subgroup that Nick put his in and the Lulzbot one I created a few months ago when I made my trial json file for my Taz 5


.

Strange. Are you using 32 or 64 bit version? I downloaded it (64 bit–from the “download for free” link) from the same link in the first post yesterday (29 June, 2016). Is there a chance it was removed since you got your version? I tried 32 bit today. It is still labeled 2.1.2.

This is what I see (in both 64 and 32):

Is there a step I missed with installing? Downloaded file installs and runs fine without any additional hacks. Does Test mode need to be enabled in some way?

Thanks!

y8s,

No, that functionality has not been removed. What is more likely is that there is that Cura is encountering an error when importing your file but not explicitly reporting an error message about it. Try opening the log file and searching for any references to the name of your .json file. Alternatively you could post your file here and I might be able to figure what is wrong.

Here is the locations of where log files are saved
Linux ~/.local/share/cura/cura.log
Windows should be C:\Users\User_Name\AppData\Local\cura\cura.log
Mac should be ~/.cura/cura.log

kmanley57, care to post pictures of your test prints so far? :slight_smile:

OK this may be part of it:

2016-06-30 11:22:00,459 - ERROR - An error occurred loading Machine Definition C:\Users\USERNAME/AppData/Local/cura\machines\taz5.json: File C:\Users\USERNAME/AppData/Local/cura\machines\taz5.json is an invalid settings file
2016-06-30 11:22:00,490 - ERROR - An error occurred loading Machine Definition C:\Program Files\Cura 2.1\resources\machines\taz5.json: File C:\Program Files\Cura 2.1\resources\machines\taz5.json is an invalid settings file

But I’ve tried to create it a few times a few ways. The current file was generated using the machine generator linked from github. I’ve also tried taking another machine and renaming it and its id and readable name in the file. Nothing shows up.

Both the machine settings file and cura.log logfile are attached. I trimmed the log to the last startup/shutdown period and obscured my username as above because of paranoia. :slight_smile:
cura_trimmed.log (3.3 KB)
taz5.json.txt (2.17 KB)

Here is one from two days ago.
20160625_123345.jpg
The bottom of the print showing the support structure.
20160625_123428.jpg

kmanley57, that is the OctoPrint logo right? Looks pretty sweet.

y8s, seems like there is an extra { at the start of your file, just delete that and it will probably work.

I must have missed selecting it when I pasted in the generated code. It works fine now.

Once I get things sorted with the millions of settings, I’ll try some prints and post them up.

20 mm cube came out ok. Support was on (I meant to disable it).

Top layer was a little chunky and the bottom peeled away slightly in the corners but it’s really not bad for a 5 minute run through the many settings.

y8s

So i am trying to download cura 2.1.2 onto my mac, some of the terminal codes arent working for me, for example:

‘sudo apt-get install python3-pyqt5’
‘sudo dpkg -i Cura-2.1.2-Linux.deb’

And thats as far as ive gotten, please help me!!! Thanks!

Does this Cura have proper control for bridging moves?

bluegunnar15, for mac you can skip the step for ‘sudo apt-get install python3-pyqt5’. Also you need to download the Cura-2.1.2-Darwin.dmg file and install it similar to how you have installed Cura in the past (https://www.lulzbot.com/learn/tutorials/cura-lulzbot-edition-installation-osx)

How do you expect bridging moves to work? What behavior would be different? As far as I can tell there are no new settings specifically relating to bridging.

Like S3D. Ability to control fan speed, flow rate, movement speed etc for bridging moves.

I bought S3D a few weeks ago almost solely for that ability, it would have been just typical if Cura brought it all in :smiley:

I bought S3D about a 1 1/2 years ago and just started using it last month. It is far superior to anything out there. Have built up a bunch of different profiles. I got tired of Slic3r crashing all the time and Cura has simply got to be one of the worst Slicers.

However, I have to disagree about S3D being good with bridging. It, actually, is the worst. You have full control over the actual bridging (flow rate, speed, etc), but it insists on creating perimeters across the bridge and you have no control over these. So, while you can get perfect control over the actual bridging, the perimeters will likely fail and droop. The S3D bug forum is full of complaints over this.

Also, unlike Slic3r, S3D doesn’t allow you to control the speed of small perimeters, so it generally does this too fast and they don’t come out all that great. Luckily, there is a Python script that can be used to fix this.

I did a Benchy using Slic3r, Cura, and S3D. Slic3r beat Cura hands down and S3D outdid Slic3r by a large margin.

Kenny

Yes, I found that out almost instantly, it’s a complete disappointment. Particularly considering the part I really absolutely needed good bridging for was almost entirely perimiters (as the area that was bridging is sloped on the Z axis. Luckily it still worked as the few threads of ‘infill’ on each layer were enough for the layers on top to start building on. It was a total mess inside but that wasn’t important.

Regarding overall quality, I more or less agree. Cura is infinitely better for tiny/thin walled parts. I also get a much neater and smoother top layer with Cura for reasons I’m not really sure of. But the tool paths are far tidier and quicker and print generally come out looking much neater, except for the top.

But I think this is probably a discussion for a different thread.