2.4.1. Simplify 3D Custom G-Code


Simplify 3D gcode overview.


These notes are based on my experiences with the Prusa i3 Mk3 and Artillery/Evnovo Sidewinder X1 printers. If you are using a different printer, please verify the hardware details are similar.


Please be sure that you’ve calibrated your printer, and particularly your Live-Z settings before using any of the following examples. These routines move the nozzle around close to the bed, and could cause damage if your printer is not adjusted properly. Start G-Code

Thanks to /u/SpectreGadget on reddit for pointing out that my sample code used incorrect placeholders.


I’ve made extensive edits to my gcode routines. The gcode samples on this page are current but the accompanying notes need to be updated.

I’ve incorporated these features into my own customized g-code settings for Simplify3D. Here’s a section-by-section breakdown:


Update with S3D startup gcode analysis.

At this point, the print will proceed normally.

I’m not a fan of the loud printer beeps, but I have inserted several chirp sounds (M300 S100 P10) to indicate progress throughout the print.

Here’s the full start g-code:


Full Simplify 3D startup gcode.

Listing 2.39 Simplify 3D start g-code
 1; Last updated 20191117
 2M300 S40 P10 ; chirp
 3M115 U3.7.2 ; tell printer latest fw version
 4M117 Initializing
 5; Set coordinate modes
 6G90 ; use absolute coordinates
 7M83 ; extruder relative mode
 8; Reset speed and extrusion rates
 9M200 D0 ; disable volumetric e
10M220 S100 ; reset speed
11; Set hardware parameters
12M201 X1500 Y1500 Z1000 E5000 ; sets maximum accelerations  mm/sec^2
13M203 X200 Y200 Z12 E120 ; sets maximum feedrates mm/sec
14M204 P1500 R1250 T1500 ; sets acceleration (PT) and retract acceleration (R) mm/sec^2
15M205 X10.00 Y10.00 Z0.40 E1.50 ; sets the jerk limits  mm/sec
16M205 S0 T0 ; sets the minimum extruding and travel feed rate mm/sec
17; Set initial warmup temps
18M117 Nozzle preheat
19M104 S160 ; set extruder no-ooze temp
20M140 S75  ; set bed PINDA warmup temp
21; Nozzle warmup before home to avoid driving hardened ooze into PEI surface
22M109 S160 ; wait for extruder no-ooze warmup temp before mesh bed leveling, cool hot PINDA
23M300 S40 P10 ; chirp
24; Home
25M117 Homing
26G28 W ; home all without mesh bed level
27; Present bed for final cleaning
28G0 Z3; Raise nozzle before move
29G0 X125 Y180 F10200; Move nozzle to PINDA warming position
30G0 Z0.15 F10200; Lower nozzle to PINDA warming position
31; Wait for PINDA warmup
32M117 PINDA warmup
33M860 S35 ; wait for PINDA temp to stabilize
34M140 S[bed0_temperature] ; set target bed temp
35G0 Z3; Raise nozzle before move
36M300 S40 P10 ; chirp
37; Mesh bed leveling
38M117 Mesh bed leveling
39G80 ; mesh bed leveling
40M117 Saving results
41G81 ; save mesh leveling results
42; Final warmup routine
43M117 Final warmup
44G0 Z5; Raise nozzle to avoid denting bed while nozzle heats
45M140 S[bed0_temperature] ; set bed final temp
46M104 S[extruder0_temperature] ; set extruder final temp
47M109 S[extruder0_temperature] ; wait for extruder final temp
48M190 S[bed0_temperature] ; wait for bed final temp
49M300 S40 P10 ; chirp
50; Prime line routine
51M117 Printing prime line
52G0 Z0.15 ; Restore nozzle position - (thanks tim.m30)
53M900 K0; Disable Linear Advance for prime line
54G92 E0.0 ; reset extrusion distance
55G1 Y-3.0 F1000.0 ; go outside print area
56G1 E2 F1000 ; de-retract and push ooze
57G1 X20.0 E6  F1000.0 ; fat 20mm intro line @ 0.30
58G1 X60.0 E3.2  F1000.0 ; thin +40mm intro line @ 0.08
59G1 X100.0 E6  F1000.0 ; fat +40mm intro line @ 0.15
60G1 E-0.8 F3000; retract to avoid stringing
61G1 X99.5 E0 F1000.0 ; -0.5mm wipe action to avoid string
62G1 X110.0 E0 F1000.0 ; +10mm intro line @ 0.00
63G1 E0.6 F1500; de-retract
64G92 E0.0 ; reset extrusion distance
65M82 ; extruder absolute mode
66; Final print adjustments
67M117 Preparing to print
68M300 S40 P10 ; chirp
69M900 K60 ;Set Linear Advance
70M117 Print in progress End G-Code

My end g-code is pretty standard. I like to reset any values that aren’t automatically cleared before a job:

  1. Linear Advance (M900 Kxx) is set to 0.

  2. Extrusion rate (M221) is set to 100%.

The rest is pretty standard Prusa g-code. Here’s my current end g-code:


S3D end gcode.

Listing 2.40 Simplify 3D end g-code
 1; Last updated 20191117
 2G4 ; wait
 3; Raise nozzle and present bed
 4M117 Printing complete
 5G4 ; wait
 6G92 E0 ; prepare to retract
 7G1 E-0.8 F3000; retract to avoid stringing
 8; Anti-stringing end wiggle
 9G91 ; use relative coordinates
10G1 X-0.5 Y-0.5 F1200
11G1 X1 Y1 F1200
12G90 ; use absolute coordinates
13G1 Z210 ; Move print head up
14G0 X0 Y210 F10200; present bed
15; Reset print setting overrides
16M200 D0 ; disable volumetric e
17M220 S100 ; reset speed factor to 100%
18M221 S100 ; reset extruder factor to 100%
19M900 K0 ; reset linear acceleration
20; Shut down printer
21M104 S0 ; turn off temperature
22M140 S0 ; turn off heatbed
23M107 ; turn off fan
24M84 ; disable motors
25M300 extra_loading_move = -2 Simplify 3D placeholders

Table 2.4 Simplify 3D G-Code Placeholders



First Layer Temperature


First Layer Bed Temperature


Contact and feedback

You can find me on the Prusa support forums or Reddit where I lurk in many of the 3D printing-related subreddits. I occasionally drop into the Official Prusa 3D discord server where I can be reached as bobstro (bobstro#9830). You can email me directly at projects@ttlexceeded.com.

Last updated 20191125