Dual Extruder and Prusaslicer

Hello :slight_smile:

I’m writing this because I did some experiments with the dual extruder module and Prusaslicer yesterday.
This thread should be more than a journal, than a tutorial, because I’m completely new to prusaslicer and dual extrusion 3d printing.
I’m coming from cura, but I wanted to try something new and got the expression Prusaslicer has cool features for dual extrusion.

Yesterday was my first day with this software, and I must say that, in my opinion, it is less intuitive than cura. But so far I got some results.

Initial calibration was okay. I did it with *.17 and only the chinese signs while calibrating have been hard to understand for me. But there’s google lens…
I’m using PrusaSlicer 2.6.0-alpha3 for my tests.
I’m not using any snapmaker filament for my tests or calibrations.
Disclaimer: I’m not aware if this is the right approach, so please tell me your opinion.
I will not publish my whole prusaslicer configuration, because it’s not ready for release/sharing.

I started creating a completely new printer with prusaslicer, but with this configuration I couldn’t get filament templates to work.
So I used the in prusaslicer included Snapmaker template and modified it for use with dual extruder.
Afterwards I added some gimmicks like the 3d model done by stefix and the plate svg I found in following repository:

My first goal is to be able to print independently with two nozzles, two objects. I’m not interested in combined printing so far. After I achieved that goal, I’ll be able to calibrate e-steps and so on.
Also, my extruders are always loaded, so I needed a start gcode which changes dynamic the preheating and priming procedure.

If I use extruder 1, only prepare extruder 1.
If I use extruder 2, only prepare extruder 2.
If I use them together, prepare them together.

Prusaslicer offers gcode makros, so I used this as solution for my problem.
Also, I needed to add a custom filament I called NULL. When I select this filament for an extruder, the macro logic detects it (first_layer_temperature is 1) and does not prepare the extruder virtually loaded with this filament. So in the combination with the gcode macro the Extruder loaded with NULL filament is considered as not in use.

{if first_layer_temperature[0] > 1}M104 S{first_layer_temperature[0]} T0 ; Preheat left extruder{endif}
{if first_layer_temperature[1] > 1}M104 S{first_layer_temperature[1]} T1 ; Preheat right extruder{endif}
M140 S[first_layer_bed_temperature] ;Set Bed Temperature
G28 ;home
G90 ;absolute positioning

G1 X330 Y15 Z0 F1800; Go to start

{if first_layer_temperature[0] > 1}M109 S{first_layer_temperature[0]} T0 ; Wait for left extruder{endif}
{if first_layer_temperature[1] > 1}M109 S{first_layer_temperature[1]} T1 ; Wait for right extruder{endif}

M190 S{first_layer_bed_temperature[0]} ;Wait for Bed Temperature

{if first_layer_temperature[0] > 1}
G92 E0 ;Zero set extruder position
G1 E20 F200 ;Feed filament to clear nozzle
G92 E0 ;Zero set extruder position
{if first_layer_temperature[1] > 1}
G92 E0 ;Zero set extruder position
G1 E20 F200 T1 ;Feed filament to clear nozzle
G92 E0 ;Zero set extruder position

So far I have reached my first milestone. My next step will be extruder calibration, afterwards flow and bed adhesion, then retraction.

Further observation and remarks:

Oozing and nozzle pressure is an important topic. My first impressions looks like I won’t get around a using wipe tower at a certain height. When you build up nozzle pressure you need to extrude, there will always pee some filament.
I’m thinking about removing all priming action from the start gcode and simply add a much longer skirt.
I modified my bed, that’s why I use this unusual starting position.
I’ll add some pictures, someday.
Furthermore, I forgot the rest, but did you know that in 1966, Al Bundy scored four touchdowns in a single game while playing for the Polk High School Panthers in the 1966 city championship game versus Andrew Johnson High School, including the game-winning touchdown in the final seconds against his old nemesis, Bubba “Spare Tire” Dixon.


So, this is my next step. I calibrated the extruder and found my sweet spot @ M92 E674

There is only one E Step for the two extruders. Do you can measure the first and verify with the second one.

But I’m experiencing a really thin first layer. The lines are flexible like harp strings.

Can somebody explain this?

Looks like inconsistent first layer speed/extrusion amount.

The calibration models print with perfect first layer…
But my flow cube sliced by prusa looks weird.
The adhesion is very bad.
I never experienced something like this before.

I think I found it. After automatic calibration, my Z0 is 0.3 mm off in the air.
@Hauke, or somebody who has the dual extruder head, you experienced something similar?
I do not use the touchscreen, only octoprint. Is there any way to compensate this?

I just got the dual extruder tonight and I’ve been using it with PrusaSlicer (did not bother to try with Luban yet). It actually works rather well out of the box for dual material prints. I have not experienced first layer issues, but I do start prints from the touchscreen (sending them over by WiFi using a script).

I did not have anything similar, but I yet did not use PrusaSlicer. What I had was a dissimilarity between left and right Z-Offset after calibration by +/- 0.05 mm. I got this away by running the Sensor Calibration from the calibration menu.

Hi Slynold,
just updated to 1.15.19, to print a small thing, and now have the same: Needed to lower Z by 0.35 mm for a decent print :frowning: Did a sensor calibration and another Auto-Z-Calibration, same effect. sigh

Interesting, thanks for your feedback!
I tried adjusting the bed mesh level but this had no effect!

Oh, try the manual z calibration. I think this will work!

I guess it may, but I’d really like Snapmaker to fix this… Auto-Z-Levelling is such a nice feature!!! I’d really appreciate if they would make it work in a stable manner!

Do you know if this problem persists with the new firmware? Sick at the moment, cannot test it by myself.

I’ve also had this problem. In my post here, steps 4 and 5 are how you would address this. The way Snapmaker appears to have implemented this, you have to use two different commands to adjust the Z-offset of the left versus the right extruders.

The problem you are experiencing is also present in the 1.15.20 firmware. I just noticed that they released 1.15.21 today, but the release notes don’t mention anything with respect to Z-offset, so I’m not expecting it to address the problem.

1 Like

Alright - today I made a few new tests.
I did a manual Z calibration to work around the 0.3 mm bug.
My e-steps at 677 were perfect for both extruders. The result of a flow test was much better than with the SE.

Afterwards I printed 3 Benchys. Extruder 1, Extruder 2 and the third one Multicolor.

I created a print profile based on the 0.16 mm Optimal Profile which comes with the Snapmaker Profile of Prusaslicer.

I changed retraction to 0.6 mm at 60 mm/s and perimeter speed to 100 mm/s
Infill 10% Grid, 2 perimeters and go for it.

The Single Extruder Benchys are nearly perfect. The multicolor one suffers from the tool changes. I printed without purge tower (Blobs and Strings)


Also newer to PrusaSlicer where did you put your gcode?

1 Like

Hey, sorry for this late reply.
Custom g codes are placed in the menu tab “Printer Settings”, in the blade “Custom G-code”.

1 Like

Hello guys,
I’ve been tryng to print in Prusa with the dual extruder but I haven´t been able to use a purge tower because every time I activate it, I got an error message saying… “wipe tower is only compatible with relative direction of the extruder”
Does anybody know how to solve this?
Also, when I print multicolor without the wipe tower, the software don’t do the orders to the second extruder to heat up.

I hope someone can help me.

Thank you.

Hi, you have to check “Use relatibe E distances” to use wipe tower at Printer Settings-general-advanced.
And be sure to add “G92 E0” in “After layer change G-code”.

Hello @takeota. Thank you for your answer. Now I can use the wipe tower :slight_smile:
But I have another problem. When it switches to the second extruder. The gcode generated do not give instructions to heat up the nozzle, so it cannot print. Do you know what could be happening?

Thank you.

Hi Felipevc

This is what I put in my Custom G-Code on the printer settings tab.

Start G-Code:

M82 ;absolute extrusion mode
;Start GCode begin

; set extruder(s) and bed temperature
M104 T0 S[first_layer_temperature_0] ; set nozzle temp
M104 T1 S[first_layer_temperature_1] ; set nozzle temp
M140 S[first_layer_bed_temperature] ; set bed temp

G28 ; home all axes
G90 ;absolute positioning
G1 X-10 Y-10 F3000
G1 Z0 F1800
M109 T0 S[first_layer_temperature_0] ; wait for nozzle temp
M109 T1 S[first_layer_temperature_1] ; wait for nozzle temp
M190 S[first_layer_bed_temperature] ; wait for bed temp
G92 E0
G1 E20 F200  ; Prime extrude for wipe
G92 E0

End G-code:

;End GCode begin
M104 S0 ;extruder heater off
M140 S0 ;heated bed heater off
G90 ;absolute positioning
G92 E0
G1 E-2 F300 ;retract the filament a bit before lifting the nozzle, to release some of the pressure
G28 X0 Y0 ; home
M84 ;steppers off
M107 ;fan off
M82 ;absolute extrusion mode
;End GCode end

I’m not telling you what to do, but I will say it did the trick for me.

Hello @moonglum, thank you for that. Now both nozzles are working :slight_smile :slight_smile:

Now the question is, do you know how can I make the printer do the nozzle change above the wipe tower and not above the part I´m printing?
I think Luban is ver good at this. When you print mulicolor, Luban makes the other nozzle start heating up from the stand by temperature even before the nozzle 1 finishes the last layer to don’t waste time. And then, it moves to the wipe tower to do the nozzle change there, and not above the printing part. That way, it avoids any noise of filament on the part.

Is there any workaround for that?

Thank you very much for your help.