Hi all - I'm trying to enable the M600 command so that I can change filament using the post-processing script in Cura (4.13). I understand that this command is not enabled by default in the firmware, so have dipped my toe into firmware modification - which I have never done before ... so go easy on me!
I downloaded what I understand is the latest version of the firmware for UM2 : GitHub - Ultimaker/UM2.1-Firmware
Installed the Arduino IDE and opened up the Marlin.ino project file, set the processor type and serial port. Looked for the M600 command in the configuration_adv.h file and uncommented the line that defines the FILAMENTCHANGEENABLE variable:
//adds support for experimental filament exchange support M600; requires display
#ifdef ULTIPANEL
#define FILAMENTCHANGEENABLE
#ifdef FILAMENTCHANGEENABLE
#define FILAMENTCHANGE_XPOS 3
#define FILAMENTCHANGE_YPOS 3
#define FILAMENTCHANGE_ZADD 10
#define FILAMENTCHANGE_FIRSTRETRACT -2
#define FILAMENTCHANGE_FINALRETRACT -100
#endif
#endif
... and the complied and uploaded the firmware. That seemed to work in that the firmware version changed from 3.3.0 to DEV - so something happened. However, when I test the command with a doctored gcode file (below), the print starts normally but seems t ignore the M600 command and go straight to the cool-down cycle as if the print has finished (the only commands in the gcode are to move to a safe place, extrude a little filament and then change the filament).
What am I doing wrong???
gcode that I used:
;FLAVOR:UltiGCode
;TIME:43424
;MATERIAL:44253
;MATERIAL2:0
;NOZZLE_DIAMETER:0.4
;MINX:9.7
;MINY:9.7
;MINZ:0.27
;MAXX:213.3
;MAXY:213.3
;MAXZ:1.97
;POSTPROCESSED
;Generated with Cura_SteamEngine 4.13.1
M82 ;absolute extrusion mode
G1 Y50 F2400
G92 E0
G92 E0
G10
M107
M600 E30.00 U300.00 X0.00 Y0.00 ; Generated by FilamentChange plugin
G10
M107
;Version _2.6 of the firmware can abort the print too early if the file ends
;too soon. However if the file hasn't ended yet because there are comments at
;the end of the file, it won't abort yet. Therefore we have to put at least 512
;bytes at the end of the g-code so that the file is not yet finished by the
;time that the motion planner gets flushed. With firmware version _3.3 this
;should be fixed, so this comment wouldn't be necessary any more. Now we have
;to pad this text to make precisely 512 bytes.
M82 ;absolute extrusion mode
;End of Gcode
;SETTING_3 {"global_quality": "[general]\\nversion = 4\\nname = Not supported #2
;SETTING_3 \\ndefinition = ultimaker2_plus\\n\\n[metadata]\\ntype = quality_chan
;SETTING_3 ges\\nquality_type = not_supported\\nsetting_version = None\\n\\n[val
;SETTING_3 ues]\\nadhesion_type = none\\nretraction_combing = infill\\n\\n", "ex
;SETTING_3 truder_quality": ["[general]\\nversion = 4\\nname = Not supported #2\
;SETTING_3 \ndefinition = ultimaker2_plus\\n\\n[metadata]\\ntype = quality_chang
;SETTING_3 es\\nquality_type = not_supported\\nsetting_version = None\\nposition
;SETTING_3 = 0\\n\\n[values]\\ncoasting_enable = True\\ninfill_enable_travel_op
;SETTING_3 timization = True\\ntravel_avoid_other_parts = False\\n\\n"]}