# G4 S20 vs. G4 P2000

Given the Marlin Firmware what is the difference between the following lines of code:

G4 S20

and

G4 P2000

• You really ought to be able to look up gcode reference tables online! – Carl Witthoft Nov 16 '18 at 13:11
• Please edit your question to include the firmware you are using so that people can answer the question for your specific case. – 0scar Nov 16 '18 at 13:11
• @0scar done :) thank you – Arthur Mamou-Mani Nov 17 '18 at 18:01
• @CarlWitthoft of course I did prior to asking. – Arthur Mamou-Mani Nov 17 '18 at 18:01

The answer is that it depends on the type of firmware you are using.

Let us look at the documentation of G4 to find that G4 is valid for all the listed firmware types:

Pause the machine for a period of time.

Furthermore it states that:

Parameters

• Pnnn Time to wait, in milliseconds (In Teacup, P0, wait until all previous moves are finished)
• Snnn Time to wait, in seconds (Only on Repetier, Marlin, Smoothieware, and RepRapFirmware 1.16 and later)

It clearly shows that the S parameter (which defines the pause in seconds) is only supported by a few firmware types. Do note that this documentation may not be up-to-date, so it is best to look into the source code or the users manual of the particular firmware you are using.

E.g. if you are using Marlin Firmware, G4 S20 will pause the machine for 20 seconds while G4 P2000 will pause the machine for 2000 milliseconds which is 2 seconds. This means that a different time is requested, to have 20 seconds waiting time you could use G4 P20000

To answer your question what the actual difference between the 2 commands is:

• it is either 18 seconds of extra waiting time if your firmware supports the S parameter, or
• a firmware that skips or chokes on the command because it is not supported (that also probably depends on your firmware).

The code G4 refers to dwell. (From what I'm seeing, it can be written as either G4 or G04). Pis the length of dwell time, usually in milliseconds. The parameter S seems to be invalid, because the only inputs are X (seconds), P (milliseconds), or U (undefined). If you have S20 in your code, it is invalid, whereas P2000 will cause all axes to remain unmoving for 2 seconds before moving on.

(Note: Not all machines will accept X or U.)

EDIT: This answer is specific to non-specific g-code, taken from this Source, since the OP did not state any specifics about their firmware type or equipment used.

• See Oscar's answer -- yours is applicable only to certain firmwares. – Carl Witthoft Nov 16 '18 at 13:12
• I'm curious to know for which firmware(s) this is, could you please add that to your answer. – 0scar Nov 16 '18 at 16:02