1st attempt at changing filament for 2-color printing

I was perusing thingiverse.com. When I came upon this model, my wife looked at it & told me I absolutely had to print it and hang it on my wall. I have no idea why (OK, OK, m-a-y-b-e I have a bit of an idea):

First I tried using the Filament Change option in Cura (Extension>Post Processing>Modify G-Code>Add Script). It adds an M600 script to the g-code. Unfortunately, it didn’t work on my printer. I opened Marlin in VS Code & found that M600 is not enabled, & there is not enough room on my 8-bit controller to allow me to enable it.

I checked the other post processing scripts and found Pause at height. Checking its features, it seemed like it could be a reasonable substitute for M600. I filled in the fields:


The print seemed to be going well. I did notice that I need more top & bottom layers with this filament, and that I will never use grid infill again, as it leaves a rough surface because of the lines crossing over each other.

However, my main issue came after the filament change. The changed seemed to go well: the printer beeped, moved the head to X100, Y15, Z40 (or thereabouts), and paused. I changed the filament & clicked the button on the LCD panel. The printer extruded the 150mm of filament & resumed printing. But, as you can see, the alignment was somehow off. I have no idea why.

[ATTACH=JSON]{“data-align”:“none”,“data-size”:“medium”,“data-attachmentid”:6287}[/ATTACH] [ATTACH=JSON]{“data-align”:“none”,“data-size”:“medium”,“data-attachmentid”:6285}[/ATTACH]

Has anyone got any experience with this script, or have any advice?

What printer are you using.?
I had a big problem with the steppers unlocking at 30 seconds and the position would change.
I did get around the problem by adding code but it’s still not perfect. My printer is the ender 3 v2. With this printer there is no way to unlock just the extruder so while doing the filament change I have to push the filament and not use the wheel.

For this reason alone I’ll not buy another Creality printer.

I use the smith3d firmware and it supports the M600 command so have no problem with it. It;s not the printer but the firmware. It unlocks the extruder but x,y,z axes are locked. even though the M117 command is not supported on the screen you can still press the button after swapping the filament and it will continue the print.

I’m using an Ender 5 Pro (hence my handle Ender5r). Re: unlocking after 30 seconds. I’m going to double check, I left the timeout setting at 0 (as you can see in the screenshot of the settings window), which is supposed to leave all the steppers active.

Are you certain you can’t unlock just the extruder? You can’t add M18 E to the code somewhere?

Yes I tried everything. There is not way to lock or unlock just the extruder. It’s all or nothing.
I seems the board does not allow it.

I use Octo print and I tried a ton of commands. Nothing unlocks just the extruder

Does M18 E unlock your extruder?

I just tried the M18 E on my ender 3 v2 octoprint and with the smith3d firmware it works all steeper motors are locked except the extruder

I set the timeout to 59000

I don’t think I’ve ever tried to unlock just the extruder. When I’m feeding filament I issue a G1 Exxx Fxxx from Cura normally. I will have to give it a try.

OTOH, have you tried connecting a computer directly to the printer & use Pronterface to test things like this?

The timeout keeps things locked until the timer runs out, then they unlock, or that’s how I interpreted the help balloon.

I use the raspberry connected to the printer. With OctoPI you can just type in any command you want to send

octoprint has a terminal tab built into it so sending commands to the printer is not a problem

I understand, but the idea is to isolate the cause of the problem. The 1st step is to simplify the setup. That would involve getting the Pi out of the picture to see if the problem suddenly disappears.

If I send M18 X then It unlocks all - even extruder If I send The lock(m?? - Cant remember the lock code) M?? X it locks all Steppers - Even the Extruder

Even putting the command M18 E in the gcode just using the SD card does not work

This is the gcode that DrVax used in his video for printers that don’t support the m600 coomand (like the ender 3 v2 stock firmware) but for people that have a octoprint server.

; ***** g-code entered into the Octoprint pause section *****
{% if pause_position.x is not none %}
; play some tone to remind us something is happening
M300 S440 P200
M300 S660 P250
M300 S880 P300
; relative XYZ
; relative E
; retract filament, move Z slightly upwards
G1 Z+10 E-5 F4500
; absolute E
; absolute XYZ
; move to a safe rest position, adjust as necessary
G1 X0 Y0
; make sure position steppers stay powered on to lock position
M17 Z X Y
; unlock the extruder stepper so we can use the dial
M84 E
{% endif %}

; ***** G-code entered into the Octoprint resume section *****
{% if pause_position.x is not none %}
; relative extruder
; prime nozzle
; retract filament just a bit
G1 E-5 F4500
; now extrude it the same amount
G1 E5 F4500
; absolute E
; absolute XYZ
; reset E
G92 E{{ pause_position.e }}
; move back to pause position XYZ
G1 X{{ pause_position.x }} Y{{ pause_position.y }} Z{{ pause_position.z }} F4500
; reset to feed rate before pause if available
{% if pause_position.f is not none %}G1 F{{ pause_position.f }}{% endif %}
{% endif %}

I found someplace on the internet. Cant recall where but there are some board not capable of doing this. There is some code in Marlin that checks for this.

What firmware are you using?

Yeah Im using that code in octopi in place of the pause
My Extruder stays locked

M84 X or M84 Y unlocks all steppers. Even The Z

Yeah, M84 might work if M18 doesn’t.