IMPORTANT! Problem with Dual V3 and/or new Cura

Good news. I tested a new beta of Cura with a new firmware release over the last 3 days. The firmware problem has been fixed. Cura is still buggy but I was told it was a beta and not yet fully tested.

Great! I see the firmware version hasnt been bumped in a few days. Im almost caught up on Christmas orders, so hopefully ill have a machine to test it on in the next few days. Id really like this to be a permanent fixture on the machine. Seems it could be if all the kinks can get worked out…

Nice! Were the two nozzles pretty close (0.02? 0.04?..) before you fine tuned them w/ the right z-lead screw? Did the fine tuning cause an obvious slant in the x-axis? I’m wondering how much the x-axis can be tilted before other problems arise?

I need to get perfect bottoms on my parts without 1. drips or 2. thin spots where the extrusions are not butted up against each other due to nozzle height differences using 0.2 or 0.1 mm layer heights; hence the reason for my questions.

It would be nice if Lulzbot had put a fine tuning adjustment screw on one of the nozzles. There are error tolerances on the z-height from one print to another + error tolerances on the dual nozzle heights (if not leveled like you did) + … which cumulatively can add up to a lot of error tolerances.

A quarter turn on the lead screw is the most I’ve adjusted… anything more and I’ll turn the lead screw back, and resort bed level screws on that side of the bed. Typically a n eighth of a turn (clockwise=up, ccw=down) on the lead screw does the trick.

On the TAZ5, make sure to start with a proper nozzle height for T0… otherwise, adjustments to T1 will need to be re-done.

A quarter turn on the lead screw should translate to ~.25mm… calculated from a pitch of 2mm, I think that’s correct…

Awesome, thanks. I’ve got something similar to the TAZ 6 bed corners so hopefully an 1/8 to 1/4 turn on the z-lead screw would do it.

I’m currently running the e3d Chimera dual extruder and have the nozzle heights adjusted to within 0.02 mm of each other by hand because they don’t have a nozzle leveling screw either.

Believe it or not a 0.02 mm difference in nozzle heights on a dual nozzle extruder makes a noticeable difference on the first layer if not compensated for when printing 0.2 mm or lower layer heights.

I’ve been compensating for that difference in s3d when I slice the parts. It’s good to know you found a way to fine tune the nozzle heights of the lulzbot v3 the way you did, I might try using your technique to eliminate the nozzle height differences in the Chimera…,and then might buy the v3. Thanks.

The fixed nozzles were an initial concern with the dual v3. Using the lead screw seemed to be the only way to adjust the T1 (right side) nozzle. Definitely should work for the Chimera also if its the dual extruder with common heatsink.

Binding of the gantry is definitely a concern. Make sure not to rotate the lead screw too many times. Also need to track the adjustments you’ve made in the past. Compounding the adjustments rotations can definitely lead to binding issues.

When installing the modular bed, I leveled out the gantry with a digital level, then got the nozzles close with the business card. Heated bed and nozzles to get a good initial Z with T0, then worked with the lead screw and bed adjustments to fine tune the T1 height.

FYI, swapped to this in a hurry after the fan on the front of my oem extruder got some filament stuck in it from a spaghetti print failure and clogged the hotend with filament from heat creep. Definately still communication issues. First print it tried to do the wipe after homing right on top of the z endstop. Luckily I was watching very closely and hit the power switch as it touched it before it could destroy things. Luckily I have a spare OEM hotend from the machine I put an itworks aero on…

FYI, Tried with V1.1.5.70, still bad. Starting G Code even does a G28 Z into the back left bed leveling washer instead of the actual z home switch when commands are sent too fast! A G28 X Y followed by a G28 Z after 4 or 5 seconds works fine. Printing a gcode file from octoprint dosnt.

Hi silent_ninja1,

There are a couple things to be aware regarding 1.1.5.70:

  1. It uses 250000 baud rate for the Minis. This leads to significantly fewer communications issues, but you have to make sure Octoprint is configured for 250000.

  2. The new Marlin 1.1.5.x series is subtly different from the older 1.0.x series and because of this there were a heck of a lot of start GCODE issues that had to be worked out. There have been several revisions to the Mini start GCODE, each one making it more and more compatible with printers that are out in the field. The currently released version of Cura does not have all the tweaks yet, though it works for a majority of the users. Perhaps your printer is one of the ones for which it does not work. We are planning yet another release this month. Here is the very latest start Mini GCODE (this start GCODE is required for 1.1.5.68 or greater and will not work for 1.1.5.64):

;This G-Code has been generated specifically for the LulzBot Mini with standard extruder
G26 ; clear potential 'probe fail' condition
G21 ; set units to Millimetres
M107 ; disable fans
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
G28 ; home all axes
G0 X0 Y187 Z156 F200 ; move away from endstops
M109 R{material_soften_temperature} ;
G1 E-30 F75 ; retract filament
M109 R{material_wipe_temperature} ; wait for extruder to reach wiping temp
G1 X45 Y173 F11520 ; move above wiper pad
G1 Z0 F1200 ; push nozzle into wiper
G1 X42 Y173 Z-.5 F4000             ; wiping
G1 X52 Y171 Z-.5 F4000             ; wiping
G1 X42 Y173 Z0 F4000               ; wiping
G1 X52 Y171 F4000                  ; wiping
G1 X42 Y173 F4000                  ; wiping
G1 X52 Y171 F4000                  ; wiping
G1 X42 Y173 F4000                  ; wiping
G1 X52 Y171 F4000                  ; wiping
G1 X57 Y173 F4000                  ; wiping
G1 X77 Y171 F4000                  ; wiping
G1 X57 Y173 F4000                  ; wiping
G1 X77 Y171 F4000                  ; wiping
G1 X57 Y173 F4000                  ; wiping
G1 X87 Y171 F4000                  ; wiping
G1 X77 Y173 F4000                  ; wiping
G1 X97 Y171 F4000                  ; wiping
G1 X77 Y173 F4000                  ; wiping
G1 X97 Y171 F4000                  ; wiping
G1 X77 Y173 F4000                  ; wiping
G1 X97 Y171 F4000                  ; wiping
G1 X107 Y173 F4000                 ; wiping
G1 X97 Y171 F4000                  ; wiping
G1 X107 Y173 F4000                 ; wiping
G1 X97 Y171 F4000                  ; wiping
G1 X107 Y173 F4000                 ; wiping
G1 X112 Y171 Z-0.5 F1000           ; wiping
G1 Z10 ; raise extruder
G28 X0 Y0 ; home X and Y
G0 X0 Y187 F200 ; move away from endstops
M109 R{material_probe_temperature} ; wait for extruder to reach probe temp
M204 S300 ; set probing acceleration
G29 ; start auto-leveling sequence
M204 S2000 ; restore standard acceleration
G28 X0 Y0 ; re-home to account for build variance of earlier mini builds
G0 X0 Y187 F200 ; move away from endstops
G0 Y152 F4000 ; move in front of wiper pad
G4 S1 ; pause
M400 ; wait for moves to finish
M117 Heating... ; progress indicator message on LCD
M109 R{material_print_temperature} ; wait for extruder to reach printing temp
M190 S{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 Mini Printing... ; progress indicator message on LCD

WARNING; The above start GCODE will not work with Marlin 1.1.5.64. It must be used in concert with Marlin 1.1.5.68 or greater. Similarly, earlier start GCODE will not work with Marlin 1.1.5.68 or above. The changes must be done in concert.

BTW, my post above applies only to Mini users. TAZ 6 users have for the most part been spared the numerous start GCODE changes that have been required to get the various generations of Minis to work.

Ive been working with a Taz6. S3D starting Gcode that ive modified a good bit. It should never allow a G28 over the rear left bed leveling washer. This tells me commands are still getting lost. Octoprint is just set to autodetect at the moment, as ive been bouncing around firmware versions and didnt feel like checking for each one!

G26                          ; clear potential 'probe fail' condition
G21                          ; set units to Millimetres
M107                         ; disable fans
G90                          ; absolute positioning
M140 S[bed0_temperature] ; start heating bed
M104 S175 T0               ; soften filament
M104 S175 T1               ; soften filament
G28 X Y                      ; home X and Y
G1 X-22 Y260 F3000           ; move over the Z_MIN switch
M117 Heating...              ; LCD status message
M109 R175 T0               ; wait for temp
M109 R175 T1               ; wait for temp
T0                           ; return to first extruder
G28 Z                        ; home Z
T0                           ; select this extruder first
M82                          ; set extruder to absolute mode
G92 E0                       ; set extruder to zero
G1  E-15 F25                ; suck up XXmm of filament
T1                           ; switch extruders
M82                          ; set extruder to absolute mode
G92 E0                       ; set extruder to zero
G1  E-15 F25                ; suck up XXmm of filament
M106                         ; Turn on fans to speed cooling
G1 X-22 Y100 F3000           ; move above wiper pad
M107                         ; Turn off fan
T0                           ; switch extruders
G1 Z1                        ; push nozzle into wiper
G1 X -22 Y95 F1000                   ; slow wipe
G1 X -22 Y90 F1000                   ; slow wipe
G1 X -22 Y85 F1000                   ; slow wipe
G1 X -20 Y90 F1000                   ; slow wipe
G1 X -22 Y80 F1000                   ; slow wipe
G1 X -20 Y95 F1000                   ; slow wipe
G1 X -22 Y75 F2000                   ; fast wipe
G1 X -20 Y65 F2000                   ; fast wipe
G1 X -22 Y70 F2000                   ; fast wipe
G1 X -20 Y60 F2000                   ; fast wipe
G1 X -22 Y55 F2000                   ; fast wipe
G1 X -20 Y50 F2000                   ; fast wipe
G1 X -22 Y40 F2000                   ; fast wipe
G1 X -20 Y45 F2000                   ; fast wipe
G1 X -22 Y35 F2000                   ; fast wipe
G1 X -20 Y40 F2000                   ; fast wipe
G1 X -22 Y70 F2000                   ; fast wipe
G1 X -20 Y30 Z2 F2000                ; fast wipe
G1 X -22 Y35 F2000                   ; fast wipe
G1 X -20 Y25 F2000                   ; fast wipe
G1 X -22 Y30 F2000                   ; fast wipe
G1 X -20 Y25 Z1.5 F1000              ; slow wipe
G1 X -22 Y23 F1000                   ; slow wipe
G1 Z10                              ; raise extruder
M204 S100                    ; set accel for probing
G29                          ; probe sequence (for auto-leveling)
M204 S500                    ; set accel back to normal
G1 X20 F5000                 ; clear homing button riser
M104 S[extruder0_temperature] T0 ; set extruder temp
M104 S[extruder1_temperature] T1; set extruder temp
G1 X98 Y-18 Z0.5 F3000       ; move to open space
M400                         ; clear buffer
M117 Heating...              ; LCD status message
M109 R[extruder0_temperature] T0 ; set extruder temp and wait
M109 R[extruder1_temperature] T1; set extruder temp and wait
M117 Purging...              ; LCD status message
T0                           ; select this extruder first
G1  E0 F25                  ; undo retraction
G92 E-15                     ; set extruder negative amount to purge
G1  E0 F25                  ; purge XXmm of filament
T1                           ; switch to second extruder
G1  E0 F25                  ; undo retraction
G92 E-15                     ; set extruder negative amount to purge
G1  E0 F25                  ; purge XXmm of filament
G1 Z0.5                      ; clear bed (barely)
G1 X98 Y0 F5000              ; move above bed to shear off filament
T0                           ; switch to first extruder
M190 [bed0_temperature]; get bed temping up during first layer
G1 Z2 E0 F75
M400                         ; clear buffer
M117 TAZ Printing...         ; LCD status message

Make sure to set Octoprint to 250000 baud, and use the “Simulate additional OK for resend requests” under Advanced Options. That helped communication to the new firmware for me.

We had some reported issues with Octoprint and the v3 dual extruder, please see here specifically: https://code.alephobjects.com/T1598

That’s an interesting thread. Its the recent 1.1.5.xx firmware that has difficulty with Octoprint… not specific to the Dual V3 since the OP on the issue is using a V2 extruder. It sounds like AO may be making progress on fixing the issue with firmware compilation variables. Hope the final release has it sorted out.


Checking the “Simulate an additional ok for resend requests”, seems to be a band-aid from the Octoprint side… it was a suggestion from Gina to help the Prussa machines. But it helped my frustrations with the V3. Report back if you give it a try.

That was actually one of the earliest things I did. I also set the auto temp reporting to 0 to see what came by in the logs a bit better. It stopped it from just sitting there forever, but it still isnt processing the commands that it misses. In either case, if the machine executes a G28 Z while sitting over the first bed washer instead of over the switch, either safe homing position isnt configured or there is an internal firmware command parser or limit check issue.

Im using Marlin 1.1.8_bugfix (as of 2 weeks ago anyway) on my CR10-S5 with octoprint. I havnt seen a similar issue at all, and ive kept that up to date since 1.1.6 so if it was a marlin issue, it would only be in 1.1.5 since the stock 1.1.4 from the cr10 did not exhibit this behavior either.

I just read through the thread on devel there. It sounds like someone needs to follow up with how the temp report and ok lines are submitted to the serial buffer in marlin. If they are getting mixed together should the timing overlap, then they are not populating a buffer or stack synchronously and thats an issue. Octoprint handling an advanced_ok feature from current firmware may be a big help since it then uses a recovery method to move past the issue. I strongly suspect given the above though that there is still more to the issue than just this.

Day job is still way too hectic following the holiday rush (industrial automation) for me to have spare time to dig into this yet. Machine with the dual extruder v3 has been sitting idle since 2 days after my last post of an issue.

Maybe while were at it, I can get them to implement my commit to marlin 1.1.8 so filament change pauses octoprint

https://github.com/MarlinFirmware/Marlin/pull/8849

Following up a bit, since ive been using the same gcode file over and over, I compared the latest beta, .67, starting gcode for the taz6 and found this new nugget around homing

G28 X Y                      ; home X and Y
G1 X-17 F3000                ; clear X endstop
G1 Y258 F3000                ; move over the Z_MIN switch
G1 X-19 F3000                ; move left as far as possible
M117 Heating...              ; LCD status message

It seems alot of the issues with the V3 are caused when the X endstop aborts a command, and the position still shows the target. Old target was -22mm. New is -17 through -19 depending on the command. Abort should either throw an error or keep actual position. Commands need to be split if there is a risk of hitting the endstop. Ill run this with auto temp reporting off for awhile and see what happens. Trying a calibration cube, then benchy, then ill try a temp tower and overhand test. Maybe ill actually get to start using this thing next week lol.

Side note, the 3.1.1. beta crashes on windows when adding a dual v3 taz 6 machine. Havent tried to add anything else.

Let us know what happens when you do add a different machine.

Thank you for the continued feedback!

Adding my aerostruder worked fine. Ill try a couple prints with it and see what I get.

I did get a calibration cube and benchy out of the dual v3 running just extruder 0. Ill try a couple dual extruder tests with 2 colors of pla and see what happens this weekend. Only issue I saw was the right nozzle just barely scraped on the lip of the layer put down by the left nozzle, so ill be messing with one of the lead screws to level it better.

In my experience it’s difficult to get consistently good clean prints (without specs of the wrong color showing up somewhere on the print) with a side by side dual nozzle design.

I wish Lulzbot had used:

  1. The Prusa or Promethius design of dual filament input, single nozzle output

or

  1. The Ultimaker design of lifting the idle nozzle out of the way.

There’s a reason why those companies (mentioned in 1 and 2 above) chose those paths instead of the side by side nozzle design.

A third option would be the Makergear dual extruder design with independently moving extruders, but that would be a big design change for the TAZ.

I had issues with the un-used filament oozing onto the object at the beginning also. This left unwanted blemishes embedded on one side of the object.

Working with the retraction (increased to 1.10mm), using a wipe pillar along with an ooze shield helped tremendously. The wipe pillar primed the nozzle so there were no gaps in the ooze shield, which led to immanent collapses (sticking to the object). The retraction settings will possibly be dependent on the size of the print.

Here are before and after pictures.