Creating & Sending G-Code

Gcode is a simple programming language used to control many different types of computerised CNC machine such as 3D printers, Laser cutters and Plotters. Like these machines Joto’s movements are controlled by a basic set of G-code instructions stored in a .gcode file.

Every CNC machine will have slightly different features and functions and therefore require a slightly different flavour of G-code to operate successfully. If you plan to manually control Joto from outside the Joto app it’s a good idea to familiarise yourself with Joto’s flavour of G-code.

See below for an example of which G-code commands Joto uses.

; Start code
G21 ; Set units to Metric
G90 ; Absolute coordinates
M106 S40 ; Move Joto’s pen to position 40 which lifts the nib out of the dock
G4 P500 ; Short pause to allow the pen to move
M106 S0 ; Turn the motor off that moves the pen
; This block of commands allows Joto to reliably set the home (0,0) position
G1 F16000
M202 X450 Y450
G1 X5
G28 X0
G1 Y5
G28 Y0
G4 P1000
M202 X250 Y250 ; Set the acceleration for your jot
G1 F8000 ; Set the speed

; Drawing
; Repeat the commands below with your own X,Y, coordinates to draw multiple lines
G1 X120 Y120 ; G1 is a move command which will move the pen to a specific X,Y, coordinate
M106 S110.0 ; Move Joto’s pen to position 110 which presses the nib onto the surface
G4 P60.0
; After the pen is in the down position add your X,Y, coordinates to draw a line
G1 X152.58 Y282.55
G1 X151.99 Y281.51
G1 X151.36 Y280.56
G1 X150.71 Y279.69
G1 X150.03 Y278.91
M106 S70.0 ; Move Joto’s pen to position 70 which lifts the nib off the surface
G4 P60.0

; Finish code
M106 S40 ; lifts the nib all the way up, ready to enter the dock
G4 P100
M106 S0
; This block of commands allows Joto to reliably get back to the home (0,0) position
G1 F16000
M202 X450 Y450
G1 X5
G28 X0
G1 Y5
G28 Y0
G4 P1000
M106 S140 ; Moves Joto’s pen to position 140 to place the nib back into the dock
G4 P1000
M106 S0
M84 ; Turns Joto’s motors off.

The following G-code is the set of commands used to operate Joto’s standard wiping routine.

M106 S40
G4 P500
M106 S0
G1 F16000
M202 X450 Y450
G1 X5
G28 X0
G1 Y5
G28 Y0
G4 P1000
M202 X250 Y250
G4 P60
G1 F10000
G1 X195.53 Y331.6
G1 X194.9 Y332.48
G1 X194.24 Y333.35
G1 X193.56 Y334.2
G1 X192.86 Y335.03
G1 X192.13 Y335.82
G1 X191.37 Y336.59
G1 X190.58 Y337.32
G1 X189.76 Y338.01
G1 X188.91 Y338.65
G1 X188.02 Y339.26
G1 X187.11 Y339.81
G1 X186.16 Y340.31
G1 X185.18 Y340.76
G1 X184.18 Y341.16
G1 X183.15 Y341.5
G1 X182.1 Y341.78
G1 X181.03 Y342.0
G1 X174.38 Y342.01
G1 X173.28 Y341.8
G1 X172.19 Y341.53
G1 X171.12 Y341.19
G1 X170.08 Y340.8
G1 X169.06 Y340.35
G1 X168.07 Y339.85
G1 X167.12 Y339.3
G1 X166.2 Y338.69
G1 X165.33 Y338.04
G1 X164.5 Y337.34
G1 X163.73 Y336.59
G1 X163.0 Y335.81
G1 X162.32 Y334.99
G1 X161.7 Y334.13
G1 X161.13 Y333.24
G1 X160.61 Y332.32
G1 X160.15 Y331.37
G1 X159.74 Y330.4
G1 X159.38 Y329.4
G1 X159.07 Y328.39
G1 X158.8 Y327.36
G1 X158.58 Y326.31
G1 X158.39 Y325.25
G1 X158.24 Y324.18
G1 X158.13 Y323.1
G1 X158.04 Y322.02
G1 X157.97 Y320.93
G1 X157.92 Y319.83
G1 X157.89 Y318.74
G1 X157.86 Y317.64
G1 X157.84 Y316.54
G1 X157.83 Y315.44
G1 X157.81 Y314.34
G1 X157.79 Y313.24
G1 X157.77 Y312.14
G1 X157.75 Y311.04
G1 X157.72 Y309.94
G1 X157.7 Y308.84
G1 X157.67 Y307.75
G1 X157.64 Y306.65
G1 X157.6 Y305.55
G1 X157.56 Y304.45
G1 X157.52 Y303.35
G1 X157.48 Y302.25
G1 X157.44 Y301.15
G1 X157.39 Y300.05
G1 X157.34 Y298.96
G1 X157.29 Y297.86
G1 X157.24 Y296.76
G1 X157.18 Y295.66
G1 X157.13 Y294.56
G1 X157.07 Y293.47
G1 X157.0 Y292.37
G1 X156.94 Y291.27
G1 X156.87 Y290.17
G1 X156.8 Y289.08
G1 X156.73 Y287.98
G1 X156.66 Y286.88
G1 X156.58 Y285.79
G1 X156.5 Y284.69
G1 X156.42 Y283.59
G1 X156.33 Y282.5
G1 X156.25 Y281.4
G1 X156.16 Y280.3
G1 X156.07 Y279.21
G1 X155.98 Y278.11
G1 X155.88 Y277.02
G1 X155.78 Y275.92
G1 X155.68 Y274.83
G1 X155.58 Y273.73
G1 X155.48 Y272.64
G1 X155.37 Y271.55
G1 X155.26 Y270.45
G1 X155.15 Y269.36
G1 X155.03 Y268.26
G1 X154.92 Y267.17
G1 X154.8 Y266.08
G1 X154.68 Y264.99
G1 X154.55 Y263.89
G1 X154.43 Y262.8
G1 X154.3 Y261.71
G1 X154.17 Y260.62
G1 X154.04 Y259.53
G1 X153.9 Y258.43
G1 X153.76 Y257.34
G1 X153.62 Y256.25
G1 X153.48 Y255.16
G1 X153.34 Y254.07
G1 X153.19 Y252.98
G1 X153.04 Y251.89
G1 X152.89 Y250.81
G1 X152.74 Y249.72
G1 X152.58 Y248.63
G1 X152.42 Y247.54
G1 X152.26 Y246.45
G1 X152.1 Y245.37
G1 X151.93 Y244.28
G1 X151.76 Y243.19
G1 X151.59 Y242.11
G1 X151.42 Y241.02
G1 X151.25 Y239.93
G1 X151.07 Y238.85
G1 X150.89 Y237.77
G1 X150.71 Y236.68
G1 X150.53 Y235.6
G1 X150.34 Y234.51
G1 X150.15 Y233.43
G1 X149.96 Y232.35
G1 X149.77 Y231.27
G1 X149.57 Y230.18
G1 X149.37 Y229.1
G1 X149.17 Y228.02
G1 X148.97 Y226.94
G1 X148.77 Y225.86
G1 X148.56 Y224.78
G1 X148.35 Y223.7
G1 X148.14 Y222.62
G1 X147.92 Y221.54
G1 X147.71 Y220.47
G1 X147.49 Y219.39
G1 X147.27 Y218.31
G1 X147.04 Y217.24
G1 X146.82 Y216.16
G1 X146.59 Y215.08
G1 X146.36 Y214.01
G1 X146.13 Y212.93
G1 X145.89 Y211.86
G1 X145.66 Y210.79
G1 X145.42 Y209.71
G1 X145.18 Y208.64
G1 X144.93 Y207.57
G1 X144.69 Y206.5
G1 X144.44 Y205.43
G1 X144.19 Y204.36
G1 X143.94 Y203.29
G1 X143.68 Y202.22
G1 X143.42 Y201.15
G1 X143.16 Y200.08
G1 X142.9 Y199.01
G1 X142.64 Y197.95
G1 X142.37 Y196.88
G1 X142.1 Y195.81
G1 X141.83 Y194.75
G1 X141.56 Y193.68
G1 X141.28 Y192.62
G1 X141.0 Y191.56
G1 X140.72 Y190.49
G1 X140.44 Y189.43
G1 X140.15 Y188.37
G1 X139.87 Y187.31
G1 X139.58 Y186.25
G1 X139.29 Y185.19
G1 X138.99 Y184.13
G1 X138.7 Y183.07
G1 X138.4 Y182.01
G1 X138.1 Y180.96
G1 X137.79 Y179.9
G1 X137.49 Y178.84
G1 X137.18 Y177.79
G1 X136.87 Y176.73
G1 X136.56 Y175.68
G1 X136.25 Y174.63
G1 X135.93 Y173.57
G1 X135.61 Y172.52
G1 X135.29 Y171.47
G1 X134.97 Y170.42
G1 X134.64 Y169.37
G1 X134.31 Y168.32
G1 X133.98 Y167.27
G1 X133.65 Y166.22
G1 X133.32 Y165.18
G1 X132.98 Y164.13
G1 X132.64 Y163.08
G1 X132.3 Y162.04
G1 X131.96 Y160.99
G1 X131.61 Y159.95
G1 X131.26 Y158.91
G1 X130.91 Y157.87
G1 X130.56 Y156.83
G1 X130.21 Y155.79
G1 X129.85 Y154.75
G1 X129.49 Y153.71
G1 X129.13 Y152.67
G1 X128.77 Y151.63
G1 X128.4 Y150.59
G1 X128.03 Y149.56
G1 X127.66 Y148.52
G1 X127.29 Y147.49
G1 X126.92 Y146.46
G1 X126.54 Y145.42
G1 X126.16 Y144.39
G1 X125.78 Y143.36
G1 X125.4 Y142.33
G1 X125.01 Y141.3
G1 X124.63 Y140.27
G1 X124.24 Y139.24
G1 X123.84 Y138.22
G1 X123.45 Y137.19
G1 X123.05 Y136.17
G1 X122.65 Y135.14
G1 X122.25 Y134.12
G1 X121.85 Y133.1
G1 X121.45 Y132.07
G1 X121.04 Y131.05
G1 X120.63 Y130.03
G1 X120.22 Y129.01
G1 X119.8 Y128.0
G1 X119.39 Y126.98
G1 X118.97 Y125.96
G1 X118.55 Y124.95
G1 X118.13 Y123.93
G1 X117.7 Y122.92
G1 X117.28 Y121.91
G1 X116.85 Y120.89
G1 X116.42 Y119.88
G1 X115.98 Y118.87
G1 X115.55 Y117.86
G1 X115.11 Y116.86
G1 X114.67 Y115.85
G1 X114.23 Y114.84
G1 X113.78 Y113.84
G1 X113.34 Y112.83
G1 X112.89 Y111.83
G1 X112.44 Y110.83
G1 X111.99 Y109.83
G1 X111.53 Y108.83
G1 X111.07 Y107.83
G1 X110.61 Y106.83
G1 X110.15 Y105.83
G1 X109.69 Y104.83
G1 X109.22 Y103.84
G1 X108.76 Y102.84
G1 X108.29 Y101.85
G1 X107.82 Y100.86
G1 X107.34 Y99.87
G1 X106.87 Y98.87
G1 X106.39 Y97.89
G1 X105.91 Y96.9
G1 X105.42 Y95.91
G1 X104.94 Y94.92
G1 X104.45 Y93.94
G1 X103.97 Y92.95
G1 X103.47 Y91.97
G1 X102.98 Y90.99
G1 X102.49 Y90.01
G1 X101.99 Y89.03
G1 X101.49 Y88.05
G1 X100.99 Y87.07
G1 X100.49 Y86.09
G1 X99.98 Y85.12
G1 X99.47 Y84.14
G1 X98.96 Y83.17
G1 X98.45 Y82.2
G1 X97.94 Y81.22
G1 X97.42 Y80.25
G1 X96.9 Y79.29
G1 X96.38 Y78.32
G1 X95.86 Y77.35
G1 X95.34 Y76.38
G1 X94.81 Y75.42
G1 X94.28 Y74.46
G1 X93.75 Y73.49
G1 X93.22 Y72.53
G1 X92.69 Y71.57
G1 X92.15 Y70.61
G1 X91.61 Y69.66
G1 X91.07 Y68.7
G1 X90.53 Y67.74
G1 X89.98 Y66.79
G1 X89.44 Y65.84
G1 X88.89 Y64.88
G1 X88.34 Y63.93
G1 X87.78 Y62.98
G1 X87.23 Y62.04
G1 X86.67 Y61.09
G1 X86.11 Y60.14
G1 X85.55 Y59.2
G1 X84.99 Y58.25
G1 X84.43 Y57.31
G1 X83.86 Y56.37
G1 X83.29 Y55.43
G1 X82.72 Y54.49
G1 X82.15 Y53.55
G1 X81.57 Y52.62
G1 X80.99 Y51.68
G1 X80.42 Y50.75
G1 X79.84 Y49.82
G1 X79.25 Y48.88
G1 X78.67 Y47.95
G1 X78.08 Y47.03
G1 X77.18 Y45.61
G1 X76.19 Y44.14
G1 X75.11 Y42.7
G1 X73.91 Y41.38
G1 X72.56 Y40.26
G1 X71.07 Y39.39
G1 X69.46 Y38.81
G1 X67.77 Y38.55
G1 X66.06 Y38.63
G1 X64.38 Y39.04
G1 X62.78 Y39.74
G1 X61.29 Y40.71
G1 X59.93 Y41.89
G1 X58.69 Y43.19
G1 X57.56 Y44.55
G1 X56.52 Y45.88
G1 X55.45 Y47.29
G1 X54.41 Y48.72
G1 X53.77 Y49.63
G1 X53.14 Y50.5
G1 X51.87 Y52.0
G1 X50.42 Y52.95
G1 X48.59 Y52.97
G1 X47.38 Y52.39
G1 X46.64 Y51.89
G1 X45.78 Y51.19
G1 X44.76 Y50.25
G1 X43.52 Y49.04
G1 X42.81 Y48.31
G1 X42.03 Y47.48
G1 X41.16 Y46.55
G1 X40.2 Y45.5
G1 X39.13 Y44.32
G1 X37.95 Y43.01
G1 X36.65 Y41.55
G1 X35.94 Y40.75
G1 X35.2 Y39.91
G1 X34.41 Y39.03
G1 X33.59 Y38.1
G1 X32.72 Y37.11
G1 X31.81 Y36.08
G1 X30.85 Y34.99
G1 X29.84 Y33.84
G1 X28.78 Y32.64
G1 X27.66 Y31.37
G1 X26.49 Y30.03
G1 X25.26 Y28.63
G1 X23.96 Y27.16
G1 X23.29 Y26.39
G1 X22.6 Y25.61
G1 X21.89 Y24.81
G1 X21.17 Y23.99
G1 X20.43 Y23.14
G1 X19.67 Y22.28
G1 X18.89 Y21.4
G1 X18.09 Y20.49
G1 X17.28 Y19.56
G1 X16.44 Y18.62
G1 X15.58 Y17.64
G1 X14.71 Y16.65
G1 X13.81 Y15.63
G1 X12.89 Y14.59
G1 X11.95 Y13.52
G1 X10.98 Y12.43
G1 X10.0 Y11.31
G1 X8.98 Y10.16
G1 X7.95 Y8.99
G1 X6.89 Y7.79
G1 X5.81 Y6.57
G1 X4.7 Y5.31
G1 X3.56 Y4.03
G1 X2.4 Y2.72
G1 X1.22 Y1.37
G1 X0.0 Y0.0
M106 S0
G4 P200
G1 F16000
M202 X450 Y450
G1 X5
G28 X0
G1 Y5
G28 Y0
G4 P1000
M202 X250 Y250
G4 P60
G1 F10000
M106 S140
G4 P1000
M106 S0

This is really helpful information! I’ve been able to connect to the Joto using Universal Gcode Sender (UGS) using the TinyG firmware choice. Before I start creating my own Gcode files, I’d like to confirm that TinyG is the correct firmware selection. The other options in UGS are GRBL, Smoothieware and g2core.

We’ve not used UGS before but I’m sure either TinyG or GRBL will be fine. If you’re just sending the gcode file, it shouldn’t need to know the flavour of the code. I would assume choosing the different flavours will effect the other button functionality.

We’ve used pronterface throughout Joto development and that has always worked fine.

Yes…I see that Pronterface works much better with the Joto than UGS or any other Gcode sender I’ve used (UGS, LaserGRBL, GRBLPlotter). My initial reluctance in downloading Pronterface was the name change (to PrintRun) and all the utilities that are included. All I was looking for was a simple Gcode sender. However, after downloading and extracting it, Pronterface is the apparent .exe file and it came up nicely. I like that it has user-defined buttons that simplify certain tasks (e.g., PenUp, PenDown, PenUndock, PenDock, etc.). Maybe it’s just me, but I can’t get the homing button to work that homes “X” and “Y” at the same time (lower-left on the jog wheel). I can home in the “X” direction and then home in the “Y” direction just fine. When I try doing both at the same time the Joto hangs and the Pronterface console window displays “busy:processing”. I have yet to figure out how to regain control of the Joto once that happens short of pressing/holding the top button.

Hi @dwburger - yes you’re right you have to home one axis at a time. It’s because we use Trinamic drivers with stall detection for sensorless homing, so it needs to detect one axis at a time, otherwise the voltage its detecting is affected by the other axis.

You’ll find that not all pronterface functions will work (as its designed for 3D printers) but you can certainly load some gCode and send it in a way that Joto understands.

Thanks for the explanation!