diff --git a/dist/CNC/GRBL/index.html.gz b/dist/CNC/GRBL/index.html.gz
index 4dba286a..431e3b01 100644
Binary files a/dist/CNC/GRBL/index.html.gz and b/dist/CNC/GRBL/index.html.gz differ
diff --git a/dist/CNC/GRBLHal/index.html.gz b/dist/CNC/GRBLHal/index.html.gz
index 9133d4c5..7c7f706f 100644
Binary files a/dist/CNC/GRBLHal/index.html.gz and b/dist/CNC/GRBLHal/index.html.gz differ
diff --git a/src/targets/CNC/GRBL/index.js b/src/targets/CNC/GRBL/index.js
index c1b9864b..d0cca8c7 100644
--- a/src/targets/CNC/GRBL/index.js
+++ b/src/targets/CNC/GRBL/index.js
@@ -41,7 +41,7 @@ import { Eye as WebUILogo } from "preact-feather"
import { addObjectItem, removeObjectItem } from "../../../components/Helpers"
const Target = "GRBL"
-const webUIbuild = "G2"
+const webUIbuild = "G3"
const Name = "ESP3D"
const fwUrl = [
"https://github.com/luc-github/ESP3D/tree/3.0",
diff --git a/src/targets/CNC/grblHAL/index.js b/src/targets/CNC/grblHAL/index.js
index 0cc8bb5e..ed2d0c85 100644
--- a/src/targets/CNC/grblHAL/index.js
+++ b/src/targets/CNC/grblHAL/index.js
@@ -41,7 +41,7 @@ import { AppLogo } from "./logo"
import { addObjectItem, removeObjectItem } from "../../../components/Helpers"
const Target = "grblHAL"
-const webUIbuild = "GH3"
+const webUIbuild = "GH4"
const Name = "grblHAL"
const fwUrl = [
"https://github.com/grblHAL",
diff --git a/src/targets/CNC/grblHAL/translations/en.json b/src/targets/CNC/grblHAL/translations/en.json
index c476129b..a35a3e7b 100644
--- a/src/targets/CNC/grblHAL/translations/en.json
+++ b/src/targets/CNC/grblHAL/translations/en.json
@@ -6,10 +6,19 @@
"$4": "Step enable invert, boolean",
"$5": "Limit pins invert, boolean",
"$6": "Probe pin invert, boolean",
+ "$7": "Spindle PWM options, deprecated",
+ "$8": "Ganged dir invert, mask",
+ "$9": "PWM spindle options, mask",
"$10": "Status report, mask",
"$11": "Junction deviation, mm",
"$12": "Arc tolerance, mm",
"$13": "Report inches, boolean",
+ "$14": "Control invert, mask",
+ "$15": "Coolant invert, mask",
+ "$16": "Spindle invert, mask",
+ "$17": "Control pullup disable, mask",
+ "$18": "Limit pullup disable, mask",
+ "$19": "Probe pullup disable, boolean",
"$20": "Soft limits, boolean",
"$21": "Hard limits, boolean",
"$22": "Homing cycle, boolean",
@@ -18,9 +27,72 @@
"$25": "Homing seek, mm/min",
"$26": "Homing debounce, milliseconds",
"$27": "Homing pull-off, mm",
+ "$28": "G73 retract, mm",
+ "$29": "Pulse delay, microseconds",
"$30": "Max spindle speed, RPM",
"$31": "Min spindle speed, RPM",
- "$32": "Laser mode, boolean",
+ "$32": "Mode (laser/normal), boolean",
+ "$33": "Spindle PWM frequency, Hz",
+ "$34": "Spindle PWM off value, percent",
+ "$35": "Spindle PWM min value, percent",
+ "$36": "Spindle PWM max value, percent",
+ "$37": "Steppers enable, mask",
+ "$38": "Spindle PPR",
+ "$39": "Legacy RT commands, boolean",
+ "$40": "Limit jog commands, boolean",
+ "$41": "Parking enable, mask",
+ "$42": "Parking axis",
+ "$43": "Homing passes",
+ "$44": "Axes homing pass 1, mask",
+ "$45": "Axes homing pass 2, mask",
+ "$46": "Axes homing pass 3, mask",
+ "$47": "Axes homing pass 4, mask",
+ "$48": "Axes homing pass 5, mask",
+ "$49": "Axes homing pass 6, mask",
+ "$50": "Step jog speed, mm/min",
+ "$51": "Slow jog speed, mm/min",
+ "$52": "Fast jog speed, mm/min",
+ "$53": "Step jog distance, mm",
+ "$54": "Slow jog distance, mm",
+ "$55": "Fast jog distance, mm",
+ "$56": "Parking pullout increment, mm",
+ "$57": "Parking pullout rate, mm/min",
+ "$58": "Parking target, mm",
+ "$59": "Parking fast rate, mm/min",
+ "$60": "Restore overrides, boolean",
+ "$61": "Door options, mask",
+ "$62": "Sleep enable, boolean",
+ "$63": "Feed hold actions, mask",
+ "$64": "Force init alarm, boolean",
+ "$65": "Probing feed override, boolean",
+ "$66": "Linear Spindle Piece 1",
+ "$67": "Linear Spindle Piece 2",
+ "$68": "Linear Spindle Piece 3",
+ "$69": "Linear Spindle Piece 4",
+ "$70": "Network Services",
+ "$71": "Blue Tooth Device Name",
+ "$72": "Blue Tooth Service Name",
+ "$73": "Wifi Mode",
+ "$74": "WiFi STA SSID",
+ "$75": "WiFi STA Password",
+ "$76": "WiFi AP SSID",
+ "$77": "WiFi AP Password",
+ "$78": "Wifi AP Country",
+ "$79": "Wifi AP Channel",
+ "$80": "Spindle P Gain",
+ "$81": "Spindle I Gain",
+ "$82": "Spindle D Gain",
+ "$83": "Spindle Deadband",
+ "$84": "Spindle Max Error",
+ "$85": "Spindle I Max Error",
+ "$86": "Spindle D Max Error",
+ "$90": "Position P Gain",
+ "$91": "Position I Gain",
+ "$92": "Position D Gain",
+ "$93": "Position Deadband",
+ "$94": "Position Max Error",
+ "$95": "Position I Max Error",
+ "$96": "Position D Max Error",
"$100": "X steps/mm",
"$101": "Y steps/mm",
"$102": "Z steps/mm",
@@ -45,8 +117,295 @@
"$133": "A Max travel, mm",
"$134": "B Max travel, mm",
"$135": "C Max travel, mm",
+ "$140": "X Backlash, mm",
+ "$141": "Y Backlash, mm",
+ "$142": "Z Backlash, mm",
+ "$143": "A Backlash, mm",
+ "$144": "B Backlash, mm",
+ "$145": "C Backlash, mm",
+ "$150": "X Jerk, mm/min^3",
+ "$151": "Y Jerk, mm/min^3",
+ "$152": "Z Jerk, mm/min^3",
+ "$153": "A Jerk, mm/min^3",
+ "$154": "B Jerk, mm/min^3",
+ "$155": "C Jerk, mm/min^3",
+ "$300": "Hostname",
+ "$301": "IP mode",
+ "$302": "IP address",
+ "$303": "Gateway",
+ "$304": "Netmask",
+ "$305": "Telnet port",
+ "$306": "HTTP port",
+ "$307": "Websocket port",
+ "$308": "FTP port",
+ "$310": "Hostname 2",
+ "$311": "IP Mode 2",
+ "$312": "IP Address 2",
+ "$313": "Gateway 2",
+ "$314": "Net Mask 2",
+ "$315": "Telnet Port 2",
+ "$316": "Http Port 2",
+ "$317": "Web Socket Port 2",
+ "$318": "Ftp Port 2",
+ "$320": "Hostname 3",
+ "$321": "IP Mode 3",
+ "$322": "IP Address 3",
+ "$323": "Gateway 3",
+ "$324": "Net Mask 3",
+ "$325": "Telnet Port 3",
+ "$326": "Http Port 3",
+ "$327": "Web Socket Port 3",
+ "$328": "Ftp Port 3",
+ "$330": "Admin Password",
+ "$331": "User Password",
+ "$332": "NTP Server URI",
+ "$333": "NTP Server URI 2",
+ "$334": "NTP Server URI 3",
+ "$335": "Timezone",
+ "$336": "DST Active",
+ "$337": "Wifi AP BSSID",
+ "$338": "Trinamic Driver",
+ "$339": "Trinamic Homing",
+ "$340": "Spindle At Speed Tolerance",
+ "$341": "Tool Change Mode",
+ "$342": "Tool Change Probing Distance",
+ "$343": "Tool Change Feed Rate",
+ "$344": "Tool Change Seek Rate",
+ "$345": "Tool Change Pulloff Rate",
+ "$346": "Tool Change Restore Position",
+ "$347": "Dual Axis Length Fail Percent",
+ "$348": "Dual Axis Length Fail Min",
+ "$349": "Dual Axis Length Fail Max",
+ "$350": "THC Mode",
+ "$351": "THC Delay",
+ "$352": "THC Threshold",
+ "$353": "THC P Gain",
+ "$354": "THC I Gain",
+ "$355": "THC D Gain",
+ "$356": "THC VAD Threshold",
+ "$357": "THC Void Override",
+ "$358": "Arc Fail Timeout",
+ "$359": "Arc Retry Delay",
+ "$360": "Arc Max Retries",
+ "$361": "Arc Voltage Scale",
+ "$362": "Arc Voltage Offset",
+ "$363": "Arc Height Per Volt",
+ "$364": "Arc Ok High Voltage",
+ "$365": "Arc Ok Low Voltage",
+ "$366": "Arc Voltage Port",
+ "$367": "Arc Ok Port",
+ "$368": "THC Cutter Down Port",
+ "$369": "THC Cutter Up Port",
+ "$370": "Io Port Invert In",
+ "$371": "Io Port Pullup Disable",
+ "$372": "Io Port Invert Out",
+ "$373": "Io Port OD Enable",
+ "$374": "Mod Bus Baud Rate",
+ "$375": "Mod Bus RX Timeout",
+ "$376": "Rotary Axes",
+ "$377": "Blue Tooth Init OK",
+ "$378": "Laser Coolant On Delay",
+ "$379": "Laser Coolant Off Delay",
+ "$380": "Laser Coolant Min Temp",
+ "$381": "Laser Coolant Max Temp",
+ "$382": "Laser Coolant Offset",
+ "$383": "Laser Coolant Gain",
+ "$384": "Disable G92 Persistence",
+ "$385": "Blue Tooth State Input",
+ "$386": "Fan Port 0",
+ "$387": "Fan Port 1",
+ "$388": "Fan Port 2",
+ "$389": "Fan Port 3",
+ "$390": "Laser Coolant Temp Port",
+ "$391": "Laser Coolant Ok Port",
+ "$392": "Door Spindle On Delay",
+ "$393": "Door Coolant On Delay",
+ "$394": "Spindle On Delay",
+ "$395": "Spindle Type",
+ "$396": "Web UI Timeout",
+ "$397": "Web UI Auto Report Interval",
+ "$398": "Planner Blocks",
+ "$399": "CANbus Baud Rate",
+ "$460": "VFD Modbus Address",
+ "$461": "VFD RPM Hz",
+ "$462": "VFD 10",
+ "$463": "VFD 11",
+ "$464": "VFD 12",
+ "$465": "VFD 13",
+ "$466": "VFD 14",
+ "$467": "VFD 15",
+ "$468": "VFD 16",
+ "$469": "VFD 17",
+ "$470": "VFD 18",
+ "$471": "VFD 19",
+ "$472": "VFD 20",
+ "$473": "VFD 21",
+ "$476": "VFD Modbus Address 0",
+ "$477": "VFD Modbus Address 1",
+ "$478": "VFD Modbus Address 2",
+ "$479": "VFD Modbus Address 3",
+ "$480": "Fan 0 Off Delay",
+ "$481": "Auto Report Interval",
+ "$482": "Time Zone Offset",
+ "$483": "Fan To Spindle Link",
+ "$484": "Unlock After E Stop",
+ "$485": "Enable Tool Persistence",
+ "$486": "Offset Lock",
+ "$487": "Spindle On Port",
+ "$488": "Spindle Dir Port",
+ "$489": "Spindle PWM Port",
+ "$490": "Macro 0",
+ "$491": "Macro 1",
+ "$492": "Macro 2",
+ "$493": "Macro 3",
+ "$494": "Macro 4",
+ "$495": "Macro 5",
+ "$496": "Macro 6",
+ "$497": "Macro 7",
+ "$498": "Macro 8",
+ "$499": "Macro 9",
+ "$500": "Macro Port 0",
+ "$501": "Macro Port 1",
+ "$502": "Macro Port 2",
+ "$503": "Macro Port 3",
+ "$504": "Macro Port 4",
+ "$505": "Macro Port 5",
+ "$506": "Macro Port 6",
+ "$507": "Macro Port 7",
+ "$508": "Macro Port 8",
+ "$509": "Macro Port 9",
+ "$510": "Spindle Enable 0",
+ "$511": "Spindle Enable 1",
+ "$512": "Spindle Enable 2",
+ "$513": "Spindle Enable 3",
+ "$514": "Spindle Enable 4",
+ "$515": "Spindle Enable 5",
+ "$516": "Spindle Enable 6",
+ "$517": "Spindle Enable 7",
+ "$519": "Encoder Spindle",
+ "$520": "Spindle Tool Start 0",
+ "$521": "Spindle Tool Start 1",
+ "$522": "Spindle Tool Start 2",
+ "$523": "Spindle Tool Start 3",
+ "$524": "Spindle Tool Start 4",
+ "$525": "Spindle Tool Start 5",
+ "$526": "Spindle Tool Start 6",
+ "$527": "Spindle Tool Start 7",
+ "$530": "MQTT Broker Ip Address",
+ "$531": "MQTT Broker Port",
+ "$532": "MQTT Broker User Name",
+ "$533": "MQTT Broker Password",
+ "$534": "NGC Debug Out",
+ "$535": "Network MAC",
+ "$536": "RGB Strip Length 0",
+ "$537": "RGB Strip Length 1",
+ "$538": "Rotary Wrap",
+ "$539": "Spindle Off Delay",
+ "$540": "Panel Spindle Speed",
+ "$541": "Panel Modbus Address",
+ "$542": "Panel Update Interval",
+ "$543": "Panel Jog Speed x1",
+ "$544": "Panel Jog Speed x10",
+ "$545": "Panel Jog Speed x100",
+ "$546": "Panel Jog Speed Keypad",
+ "$547": "Panel Jog Distance x1",
+ "$548": "Panel Jog Distance x10",
+ "$549": "Panel Jog Distance x100",
+ "$550": "Panel Jog Distance Keypad",
+ "$551": "Panel Jog Accel Ramp",
+ "$552": "Panel Encoder 0 Mode",
+ "$553": "Panel Encoder 0 Cpd",
+ "$554": "Panel Encoder 1 Mode",
+ "$555": "Panel Encoder 1 Cpd",
+ "$556": "Panel Encoder 2 Mode",
+ "$557": "Panel Encoder 2 Cpd",
+ "$558": "Panel Encoder 3 Mode",
+ "$559": "Panel Encoder 3 Cpd",
+ "$590": "Button Action 0",
+ "$591": "Button Action 1",
+ "$592": "Button Action 2",
+ "$593": "Button Action 3",
+ "$594": "Button Action 4",
+ "$595": "Button Action 5",
+ "$596": "Button Action 6",
+ "$597": "Button Action 7",
+ "$598": "Button Action 8",
+ "$599": "Button Action 9",
+ "$640": "Kinematics 0",
+ "$641": "Kinematics 1",
+ "$642": "Kinematics 2",
+ "$643": "Kinematics 3",
+ "$644": "Kinematics 4",
+ "$645": "Kinematics 5",
+ "$646": "Kinematics 6",
+ "$647": "Kinematics 7",
+ "$648": "Kinematics 8",
+ "$649": "Kinematics 9",
+ "$650": "FS Options",
+ "$651": "Stepper 1",
+ "$652": "Stepper 2",
+ "$653": "Stepper 3",
+ "$654": "Stepper 4",
+ "$655": "Stepper 5",
+ "$656": "Stepper 6",
+ "$657": "Stepper 7",
+ "$658": "Stepper 8",
+ "$659": "Stepper 9",
+ "$660": "Stepper 10",
+ "$661": "Stepper 11",
+ "$662": "Stepper 12",
+ "$663": "Stepper 13",
+ "$664": "Stepper 14",
+ "$665": "Stepper 15",
+ "$666": "Stepper 16",
+ "$667": "Stepper 17",
+ "$668": "Stepper 18",
+ "$669": "Stepper 19",
+ "$670": "Stepper 20",
+ "$671": "Home Pins Invert Mask",
+ "$673": "Coolant On Delay",
+ "$674": "THC Options",
+ "$675": "Macro ATC Options",
+ "$716": "Spindle Invert Mask 1",
+ "$730": "Rpm Max 1",
+ "$731": "Rpm Min 1",
+ "$732": "Mode 1",
+ "$733": "PWM Freq 1",
+ "$734": "PWM Off Value 1",
+ "$735": "PWM Min Value 1",
+ "$736": "PWM Max Value 1",
+ "$737": "Linear Spindle 1 Piece 1",
+ "$738": "Linear Spindle 1 Piece 2",
+ "$739": "Linear Spindle 1 Piece 3",
+ "$740": "Linear Spindle 1 Piece 4",
+ "$742": "Motor Warnings Enable",
+ "$743": "Motor Warnings Invert",
+ "$744": "Motor Faults Enable",
+ "$745": "Motor Faults Invert",
+ "$750": "Action 0",
+ "$751": "Action 1",
+ "$752": "Action 2",
+ "$753": "Action 3",
+ "$754": "Action 4",
+ "$755": "Action 5",
+ "$756": "Action 6",
+ "$757": "Action 7",
+ "$758": "Action 8",
+ "$759": "Action 9",
+ "$760": "Action Port 0",
+ "$761": "Action Port 1",
+ "$762": "Action Port 2",
+ "$763": "Action Port 3",
+ "$764": "Action Port 4",
+ "$765": "Action Port 5",
+ "$766": "Action Port 6",
+ "$767": "Action Port 7",
+ "$768": "Action Port 8",
+ "$769": "Action Port 9",
+ "$770": "Spindle Offset X",
+ "$771": "Spindle Offset Y",
"P15": "Quick Stop",
"P65": "Move X to",
"P66": "Move Y to",
"P75": "Move Z to"
-}
+}
\ No newline at end of file
diff --git a/src/targets/CNC/translations/en.json b/src/targets/CNC/translations/en.json
index 22cfeb4d..01dd0b62 100644
--- a/src/targets/CNC/translations/en.json
+++ b/src/targets/CNC/translations/en.json
@@ -137,49 +137,100 @@
"Door:1": "Machine stopped. Door still ajar. Can't resume until closed.",
"Door:2": "Door opened. Hold (or parking retract) in-progress. Reset will throw an alarm.",
"Door:3": "Door closed and resuming. Restoring from park, if applicable. Reset will throw an alarm.",
- "ALARM:1": "Hard limit has been triggered. Position lost. Re-homing is highly recommended.",
- "ALARM:2": "Soft limit alarm. Machine position retained. Alarm may be safely unlocked.",
- "ALARM:3": "Reset while in motion. Machine position is likely lost. Re-homing is highly recommended.",
- "ALARM:4": "Probe fail. Probe is not in the expected initial state before starting probe cycle.",
- "ALARM:5": "Probe fail. Probe did not contact the workpiece.",
+ "ALARM:1": "Hard limit has been triggered. Machine position is likely lost due to sudden halt. Re-homing is highly recommended.",
+ "ALARM:2": "Soft limit alarm. G-code motion target exceeds machine travel. Machine position retained. Alarm may be safely unlocked.",
+ "ALARM:3": "Reset while in motion. Machine position is likely lost due to sudden halt. Re-homing is highly recommended.",
+ "ALARM:4": "Probe fail. Probe is not in the expected initial state before starting probe cycle when G38.2 and G38.3 is not triggered and G38.4 and G38.5 is triggered.",
+ "ALARM:5": "Probe fail. Probe did not contact the workpiece within the programmed travel for G38.2 and G38.4.",
"ALARM:6": "Homing fail. The active homing cycle was reset.",
"ALARM:7": "Homing fail. Safety door was opened during homing cycle.",
- "ALARM:8": "Homing fail. Pull off travel failed to clear limit switch.",
- "ALARM:9": "Homing fail. Could not find limit switch within search distances.",
- "error:1": "GCode command letter was not found.",
- "error:2": "GCode command value invalid or missing.",
- "error:3": "Grbl '$' system command was not recognized or supported.",
+ "ALARM:8": "Homing fail. Pull off travel failed to clear limit switch. Try increasing pull-off setting or check wiring.",
+ "ALARM:9": "Homing fail. Could not find limit switch within search distances. Try increasing max travel, decreasing pull-off distance, or check wiring.",
+ "ALARM:10": "EStop asserted. Clear and reset",
+ "ALARM:11": "Homing required. Execute homing command ($H) to continue.",
+ "ALARM:12": "Limit switch engaged. Clear before continuing.",
+ "ALARM:13": "Probe protection triggered. Clear before continuing.",
+ "ALARM:14": "Spindle at speed timeout. Clear before continuing.",
+ "ALARM:15": "Homing fail. Could not find second limit switch for auto squared axis within search distances. Try increasing max travel, decreasing pull-off distance, or check wiring.",
+ "ALARM:16": "Power on selftest (POS) failed.",
+ "ALARM:17": "Motor fault.",
+ "ALARM:18": "Homing fail. Bad configuration.",
+ "error:1": "G-code words consist of a letter and a value. Letter was not found.",
+ "error:2": "Missing the expected G-code word value or numeric value format is not valid.",
+ "error:3": "'$' system command was not recognized or supported.",
"error:4": "Negative value received for an expected positive value.",
- "error:5": "Homing failed. Homing is not enabled in settings.",
- "error:6": "Minimum step pulse time must be greater than 3usec.",
- "error:7": "EEPROM read failed. Default values used.",
- "error:8": "Grbl '$' command only valid when Idle.",
+ "error:5": "Homing cycle failure. Homing is not configured via settings.",
+ "error:6": "Step pulse time must be greater or equal to 2 microseconds.",
+ "error:7": "A settings read failed. Auto-restoring affected settings to default values.",
+ "error:8": "'$' command cannot be used unless controller state is IDLE. Ensures smooth operation during a job.",
"error:9": "G-code commands are locked out during alarm or jog state.",
- "error:10": "Soft limits require homing to be enabled.",
- "error:11": "Max characters per line exceeded. Command ignored.",
- "error:12": "Grbl '$' setting exceeds the maximum step rate.",
+ "error:10": "Soft limits cannot be enabled without homing also enabled.",
+ "error:11": "Max characters per line exceeded. Received command line was not executed.",
+ "error:12": "'$' setting value cause the step rate to exceed the maximum supported.",
"error:13": "Safety door detected as opened and door state initiated.",
- "error:14": "Build info or startup line exceeded EEPROM line length limit.",
- "error:15": "Jog target exceeds machine travel. Command ignored.",
- "error:16": "Jog command has no '=' or contains prohibited GCode.",
+ "error:14": "Build info or startup line exceeded line length limit. Line not stored.",
+ "error:15": "Jog target exceeds machine travel. Jog command has been ignored.",
+ "error:16": "Jog command has no '=' or contains prohibited g-code.",
"error:17": "Laser mode requires PWM output.",
- "error:20": "Unsupported or invalid GCode command.",
- "error:21": "More than one GCode command from same modal group found in block.",
+ "error:18": "Reset asserted",
+ "error:19": "Non positive value",
+ "error:20": "Unsupported or invalid g-code command found in block.",
+ "error:21": "More than one g-code command from same modal group found in block.",
"error:22": "Feed rate has not yet been set or is undefined.",
- "error:23": "GCode command requires an integer value.",
- "error:24": "More than one GCode command using axis word found.",
- "error:25": "Repeated GCode word found in block.",
- "error:26": "No axis words found in command block.",
+ "error:23": "G-code command in block requires an integer value.",
+ "error:24": "More than one g-code command that requires axis words found in block.",
+ "error:25": "Repeated g-code word found in block.",
+ "error:26": "No axis words found in block for g-code command or current modal state which requires them.",
"error:27": "Line number value is invalid.",
- "error:28": "GCode command is missing a required value word.",
+ "error:28": "G-code command is missing a required value word.",
"error:29": "G59.x work coordinate systems are not supported.",
"error:30": "G53 only allowed with G0 and G1 motion modes.",
- "error:31": "Unneeded axis words found in block.",
+ "error:31": "Axis words found in block when no command or current modal state uses them.",
"error:32": "G2 and G3 arcs require at least one in-plane axis word.",
"error:33": "Motion command target is invalid.",
"error:34": "Arc radius value is invalid.",
"error:35": "G2 and G3 arcs require at least one in-plane offset word.",
"error:36": "Unused value words found in block.",
- "error:37": "G43.1 offset is not assigned to tool length axis.",
- "error:38": "Tool number greater than max supported value."
+ "error:37": "G43.1 dynamic tool length offset is not assigned to configured tool length axis.",
+ "error:38": "Tool number greater than max supported value or undefined tool selected.",
+ "error:39": "Value out of range.",
+ "error:40": "G-code command not allowed when tool change is pending.",
+ "error:41": "Spindle not running when motion commanded in CSS or spindle sync mode.",
+ "error:42": "Plane must be ZX for threading.",
+ "error:43": "Max. feed rate exceeded.",
+ "error:44": "RPM out of range.",
+ "error:45": "Only homing is allowed when a limit switch is engaged.",
+ "error:46": "Home machine to continue.",
+ "error:47": "ATC: current tool is not set. Set current tool with M61.",
+ "error:48": "Value word conflict.",
+ "error:49": "Power on self test failed. A hard reset is required.",
+ "error:50": "Emergency stop active.",
+ "error:51": "Motor fault.",
+ "error:52": "Setting value is out of range.",
+ "error:53": "Setting is not available, possibly due to limited driver support.",
+ "error:54": "Retract position is less than drill depth.",
+ "error:55": "Attempt to home two auto squared axes at the same time.",
+ "error:56": "Coordinate system is locked.",
+ "error:57": "Unexpected file demarcation.",
+ "error:60": "SD Mount Error",
+ "error:61": "SD Read Error",
+ "error:62": "SD Failed Open Directory",
+ "error:63": "SD Directory Not Found",
+ "error:64": "SD Not Mounted",
+ "error:70": "BT Init Error",
+ "error:71": "Unknown operation found in expression.",
+ "error:72": "Divide by zero in expression attempted.",
+ "error:73": "Too large or too small argrument provided.",
+ "error:74": "Argument is not valid for the operation",
+ "error:75": "Expression is not valid.",
+ "error:76": "Either NAN (not a number) or infinity was returned from expression.",
+ "error:77": "Authentication required.",
+ "error:78": "Access denied.",
+ "error:79": "Not allowed while critical event is active.",
+ "error:80": "Flow statement only allowed in filesystem macro.",
+ "error:81": "Unknown flow statement.",
+ "error:82": "Stack overflow while executing flow statement.",
+ "error:83": "Out of memory while executing flow statement.",
+ "error:84": "Could not open file.",
+ "error:253": "User defined error occured."
}