# MCodes

<table><thead><tr><th width="102">MCode</th><th width="270">Function</th><th>Example</th><th>Example Response</th><th data-type="checkbox">Community FW Only</th></tr></thead><tbody><tr><td><a href="optional-stop-mode#m1-optional-stop">M1</a></td><td>optional stop. If M333 is enabled, the program will pause upon reaching this command. If M334 is set instead, no pause will occur</td><td></td><td></td><td>true</td></tr><tr><td>M2</td><td>end program, stop spindle and air</td><td></td><td></td><td>false</td></tr><tr><td>M3</td><td>Starts the spindle. The S parameter sets the speed in rotations per minute</td><td>M3 S5000</td><td>turns on spindle at 5000 rpm</td><td>false</td></tr><tr><td>M5</td><td>Stops the spindle</td><td>M5</td><td></td><td>false</td></tr><tr><td>M6</td><td>Auto tool change, T0 indicates wireless probe, T-1 indicates None</td><td>M6 T1</td><td>changes to tool 1 and sets TLO</td><td>false</td></tr><tr><td>M7</td><td>Starts the airflow</td><td>M7</td><td></td><td>false</td></tr><tr><td>M9</td><td>Stops the airflow</td><td>M9</td><td></td><td>false</td></tr><tr><td>M17</td><td>turn all enable pins on</td><td>Debug Only</td><td></td><td>false</td></tr><tr><td>M18</td><td>this allows individual motors to be turned off, no parameters falls through to turn all off</td><td>Debug Only</td><td></td><td>false</td></tr><tr><td>M20</td><td>list files at root of sd card. will not show subfolders</td><td>Debug Only</td><td></td><td>false</td></tr><tr><td>M21</td><td>code for octoprint for 3d printers, does nothing</td><td>Do not use</td><td></td><td>false</td></tr><tr><td>M23</td><td>select a file</td><td>M23 gcodes/test.cnc</td><td></td><td>false</td></tr><tr><td>M24</td><td>start playing current file</td><td>do not use</td><td></td><td>false</td></tr><tr><td>M25</td><td>pause currently playing file (use M600 for pauses)</td><td>do not use</td><td></td><td>false</td></tr><tr><td>M26</td><td>reset current file ready to start over</td><td>do not use</td><td></td><td>false</td></tr><tr><td>M27</td><td>report current progress (useful to sync the controller display to the current line)</td><td></td><td></td><td>false</td></tr><tr><td>M30</td><td>End of the program, no action on the Carvera. See M26</td><td>M30</td><td></td><td>false</td></tr><tr><td>M32</td><td>select a file and start playing. For macros see M98</td><td>M32 gcodes/test.cnc</td><td></td><td>false</td></tr><tr><td>M82</td><td>e_absolute_mode on</td><td>Debug Only</td><td></td><td>false</td></tr><tr><td>M83</td><td>e_absolute_mode off</td><td>Debug Only</td><td></td><td>false</td></tr><tr><td>M84</td><td>turn all enable pins off</td><td>Debug Only</td><td></td><td>false</td></tr><tr><td>M92</td><td>set steps per mm</td><td>M98 X12</td><td>sets the xsteps per mm to 12</td><td>false</td></tr><tr><td><a href="macros#m98-call-macro">M97</a></td><td>jump to particular line in gcode</td><td>M97 P14</td><td>goto line 14 in current file</td><td>true</td></tr><tr><td><a href="macros#m98-call-macro">M98</a></td><td>open a sub program inside the current running gcode, often reffered to as a macro. return to the main program when done Parameter P is a number that references a file in the gcodes/macros folder with a name ####.cnc Optional L parameter loops the subprogram a set number of times</td><td>M98 P1001 L4</td><td></td><td>true</td></tr><tr><td><a href="macros#m98.1-call-macro">M98.1</a></td><td>open subprogram by path, return to the main program when done. otherwise the same as above. the optional L command must come before the path</td><td>M98 L2 {gcodes/test.cnc}</td><td></td><td>true</td></tr><tr><td><a href="macros#m99-return-from-macro">M99</a></td><td>return from a subprogram to the main program</td><td>M99</td><td></td><td>true</td></tr><tr><td>M105</td><td>Read the current spindle temperature</td><td>M105</td><td></td><td>false</td></tr><tr><td>M112</td><td>emergency stop</td><td>Debug Only</td><td></td><td>false</td></tr><tr><td>M114</td><td>print current WCS for each axis to console</td><td></td><td></td><td>false</td></tr><tr><td>M115</td><td>report firmware version and capabilities</td><td>M115</td><td>FIRMWARE_NAME:Smoothieware, FIRMWARE_URL:http%3A//smoothieware.org, X-SOURCE_CODE_URL:https://github.com/Smoothieware/Smoothieware, FIRMWARE_VERSION:master-811c4f62, X-FIRMWARE_BUILD_DATE:Oct 30 2024 15:14:06, X-SYSTEM_CLOCK:100MHz, X-AXES:5, X-GRBL_MODE:1, X-CNC:1, X-MSD:1, X-WARNING:deprecated_MCU</td><td>false</td></tr><tr><td>M117</td><td>a special non compliant Gcode as it allows arbitrary text on the line following the command. Prints to available display panel</td><td>Use 118 instead</td><td></td><td>false</td></tr><tr><td><a href="printing-text#m118-print-message">M118</a></td><td>print remainder of line to console</td><td></td><td></td><td>true</td></tr><tr><td><a href="printing-text#m118.1-p-print-parameter-value">M118.1 P#</a></td><td>Writes the evaluated line to the serial port.</td><td>M118.1 P[2+2]</td><td>prints 4 to the console</td><td>true</td></tr><tr><td>M119</td><td>report current probe information</td><td></td><td>X_max:0 Y_max:0 Z_max:0 pins- (XL)P0.24:0 (XL)P0.25:0 (YL)P1.1:0 (YL)P1.4:0 (ZL)P1.8:0 Probe: 0</td><td>false</td></tr><tr><td>M120</td><td>push state</td><td>Debug Only</td><td></td><td>false</td></tr><tr><td>M121</td><td>pop state</td><td>Debug Only</td><td></td><td>false</td></tr><tr><td>M143</td><td>3d printer specific code</td><td>Do Not Use</td><td></td><td>false</td></tr><tr><td>M203</td><td>set maximum feedrate in mm/sec</td><td>M203 X100</td><td></td><td>false</td></tr><tr><td>M203.1</td><td>set maxiumum actutor feedrates</td><td></td><td></td><td>false</td></tr><tr><td>M204</td><td>M204 Snnn - set default acceleration to nnn, Xnnn Ynnn Znnn sets axis specific acceleration</td><td></td><td></td><td>false</td></tr><tr><td>M205</td><td>M205 Xnnn - set junction deviation, Z - set Z junction deviation, Snnn - Set minimum planner speed</td><td></td><td></td><td>false</td></tr><tr><td>M206</td><td>set homing offset</td><td>M206 X15 Y15 Z15</td><td>sets homing offset to 15,15,15</td><td>false</td></tr><tr><td>M220</td><td>S&#x3C;factor in percent>- set feed speed factor override percentage</td><td>M220 S50</td><td></td><td>false</td></tr><tr><td>M221</td><td>Turn on/off soft endstops</td><td>M221 S0</td><td>turns off soft endstops. M221 S1 turns them on</td><td>false</td></tr><tr><td>M223</td><td>S&#x3C;factor in percent>- set spindle speed factor override percentage</td><td>M223 S80</td><td></td><td>false</td></tr><tr><td>M301</td><td>3d printer specific</td><td>Do not Use</td><td></td><td>false</td></tr><tr><td>M303-305</td><td>Used by the PID autotuner for temperature control of a 3d printer hotend. No function on the carvera</td><td>Do Not Use</td><td></td><td>false</td></tr><tr><td>M306</td><td>set homing offset based on current position</td><td></td><td></td><td>false</td></tr><tr><td>M321</td><td>Enter the laser mode, The machine will drop the current tool automatically and calibrate the spindle Collet (to set the laser offset to the working surface)</td><td>M321</td><td></td><td>false</td></tr><tr><td>M322</td><td>Exit the laser mode</td><td>M322</td><td></td><td>false</td></tr><tr><td>M323</td><td>Enter the laser test mode, the laser module will be supplied a very low power, usually used for re-focusing the laser</td><td>M323</td><td></td><td>false</td></tr><tr><td>M324</td><td>Exit the laser test mode</td><td>M324</td><td></td><td>false</td></tr><tr><td>M325</td><td>S&#x3C;factor in percent>- set laser power factor override percentage</td><td>M325 S50</td><td></td><td>false</td></tr><tr><td>M331</td><td>Turn on the auto vacuum mode, if on, the vacuum will be turned on automatically when the spindle is running and turned off when the spindle is not running</td><td>M331</td><td></td><td>false</td></tr><tr><td>M332</td><td>Turn off the auto vacuum mode</td><td>M332</td><td></td><td>false</td></tr><tr><td><a href="optional-stop-mode#m333-disable-optional-stop-mode">M333</a></td><td>Turn off optional stop mode. See M01</td><td></td><td></td><td>true</td></tr><tr><td><a href="optional-stop-mode#m334-enable-optional-stop-mode">M334</a></td><td>Turn on optional stop mode. See M01</td><td></td><td></td><td>true</td></tr><tr><td><a href="line-by-line-execution-mode#m335-disable-line-by-line-execution-mode">M335</a></td><td>Turn off Line By Line Execution Mode.</td><td></td><td></td><td>true</td></tr><tr><td><a href="line-by-line-execution-mode#m336-enable-line-by-line-execution-mode">M336</a></td><td>Turn on Line By Line Execution Mode. Pauses after each line. Does not pause on empty lines, or lines starting with ; or (</td><td></td><td></td><td>true</td></tr><tr><td>M370</td><td>Clears the auto bed levelling data and disabled the compensation until G32 is run again</td><td>M370</td><td></td><td>false</td></tr><tr><td>M374</td><td>save the autoleveling grid to sd card.</td><td></td><td></td><td>true</td></tr><tr><td>M374.1</td><td>delete the autoleveling grid from SD</td><td></td><td></td><td>true</td></tr><tr><td>M375</td><td>load the grid from the sd card</td><td></td><td></td><td>true</td></tr><tr><td>M375.1</td><td>Display the current bed levelling grid data in the MDI window</td><td>M375.1</td><td></td><td>false</td></tr><tr><td><a href="../../features/flex-compensation-system#deactivate-flex-compensation-m380">M380</a></td><td>Deactivate flex compensation</td><td></td><td></td><td>false</td></tr><tr><td><a href="../../features/flex-compensation-system#print-flex-compensation-m380.1">M380.1</a></td><td>Print flex compensation</td><td></td><td></td><td>false</td></tr><tr><td><a href="../../features/flex-compensation-system#save-compensation-data-m380.2">M380.2</a></td><td>Save flex compensation data to SD</td><td></td><td></td><td>false</td></tr><tr><td><a href="../../features/flex-compensation-system#load-compensation-data-m380.3">M380.3</a></td><td>Load compensation data from SD</td><td></td><td></td><td>false</td></tr><tr><td>M400</td><td>wait for all moves are done up until this point</td><td></td><td></td><td>false</td></tr><tr><td><a href="probing#m460-probe-calibration">M460 / M460.1</a></td><td>calibrate probe tip using round bore of known size</td><td>M460 X25 L3</td><td>start centered inside bore. Will calibrate based off a 25mm bore, averaging the value over 3 tests. This will save the value to variable #150. Use config-set sd zprobe.probe_tip_diameter # to store this value for resets. All parameters from M461 except T,S are implemented</td><td>true</td></tr><tr><td><a href="probing#m460-probe-calibration">M460.2</a></td><td>calibrate probe tip using boss of known size</td><td>M460.2 X15 L3</td><td>start centered over boss . Requires X or Y but not both. The value for X or Y is the measured dimention of the boss. L is the number of times to probe and average over. All paremeters from M462 except T,S are implemented</td><td>true</td></tr><tr><td><a href="probing#m460-probe-calibration">M460.3</a></td><td>calibrate probe tip using anchor 2</td><td>M460.3</td><td>will move to the correct position by clearance Z, move xy, probe down in z. Position is based on config position for anchor 2 and the saved anchor width. Measure and set the anchor width first.</td><td>true</td></tr><tr><td><a href="probing#m461-probe-bore-rectangular-pocket">M461</a></td><td>probe bore</td><td>M461 X25 Y30 D2.5 H10 C2 Q15 L2 R1.8 S1 F100 K200</td><td>Start at roughly the center of the bore, the macro starts with a z probe, moving (H)10mm down. If the tool hits the surface it will retract by (C)2. If not, it will continue from the new low position. If H is not given or 0, the macro will probe from the starting height. Then probe (X)25mm in the X direction rotated by (Q)15 degrees until the tool hits a surface. Retract off the surface by (R)1.8mm back toward center, then reprobe at a much slower rate. Move back to center and repeat for the -x rotated direction. Repeat the X steps for the Y direction, probing (Y) 30. Repeat the X and Y probes (L)2 times. All normal probe moves happen at (F)100 mm/sec, moving between probe starts happens at the rapid rate (K)200. When complete the program will have saved the distance along the X axis as #151, the distance along the Y axis as #152, the center point in MCS as #154,#155. Since S is set to 1 the program will set the current WCS (usually G54 unless overridden) as the center of the bore. If S is not set the probe macro will not effect the WCS. (D) is used to calculate the distance between points and represtents the tool tip diameter. All paremeters are optional but you must have 1 of X or Y, if you supply only 1 of them it will only probe in that direction.</td><td>true</td></tr><tr><td><a href="probing#m462-probe-boss-rectangular-block">M462</a></td><td>probe boss</td><td>M461 X25 Y25 E12</td><td>All parameters from M461 work. Starting from the rough center of the rectangular block/boss the probe will move (X) 25 mm in the positive X direction, then probe down by the -(C+E) to get to the side of the block. It will then double tap probe toward the center of the block to find point 1. It will return to the clearance position, then the center position, then repeat the x probe for the negative direction and both y directions. The output variables are the same as M461. If S1 is set the center of the boss will be the new xy origin. If S2 is set and a probing height (H) was given, the z origin is set to the probed surface</td><td>true</td></tr><tr><td><a href="probing#m463-probe-inside-corner">M463</a></td><td>probe inside corner</td><td>M462 X-15 Y-15</td><td>Implements D, H, C, Q, F, K, L, R, S from M461. Probes a bottom left inside corner (the direction of X and Y determine the direction the probe moves, in this case left and toward the front of the machine). Saves the center position to #151 and #152</td><td>true</td></tr><tr><td><a href="probing#m464-probe-outside-corner">M464</a></td><td>probe outside corner</td><td>M463 X15Y15</td><td>Implements D, H, C, Q, F, K, L, R, S from M461. Implements E from M462 and follows a similar progress for 2 points instead of 4. Probes a bottom left outside corner (the direction of X and Y determine the direction the probe moves, in this case left and toward the front of the machine). Saves the center position to #151 and #152. S works the same as in M462</td><td>true</td></tr><tr><td><a href="probing#m465-probe-axis-angle">M465</a></td><td>probe axis and angle</td><td>M464 X10 E10 V10</td><td>Implements H,C,X,Y,Q,F,K,L,R from M461. Will only take 1 axis value (X or Y). From the starting position: double tap probe with distance (E)10 perpindicular to the axis given until a surface is hit. Sign of E determines probing direction. Return to the starting position. Move along the given axis by (X)10 and repeat the probe. Return to the starting position. Since V is set the probe will move along the same angle as the probe surface by (V)10. Stores the angle as degrees in #153</td><td>true</td></tr><tr><td><a href="probing#m465.1-probe-4th-axis-a-axis-stock">M465.1</a></td><td>Probe 4th Axis (A-Axis) Stock</td><td>M465.1 Y15 E30 F200 K600 L2</td><td></td><td>true</td></tr><tr><td><a href="probing#m465.2-probe-4th-axis-a-axis-stock-with-machine-offset">M465.2</a></td><td>Probe 4th Axis (A-Axis) Stock with Machine Offset</td><td>M465.2 X10 Y15 R1 F200 K600</td><td></td><td>true</td></tr><tr><td><a href="probing#m466-single-axis-probe-double-tap">M466</a></td><td>straight probe with double tap</td><td>M466 X{dist} Y{dist} Z{dist} D{tip diameter} Q{angle} L{repeats} R{retract} S{save as xy, if only 1 axis is given with no q, then will only save that axis as zero} F{feed rate} I{invert for NC}</td><td></td><td>true</td></tr><tr><td><a href="probing#m466.1-rectangle-probe">M466.1</a></td><td>Rectangle probe</td><td>M466.1 X{dist] Y{dist} H{depth}</td><td></td><td>true</td></tr><tr><td>M469 / M469.0</td><td>Future: home machine with true 3 axis probe on user defined pin</td><td>not implemented</td><td>M469.0 I{invert}</td><td>true</td></tr><tr><td><a href="self-calibration#m469.1-calibrate-anchor-1">M469.1</a></td><td>calibrate anchor 1 with true 3 axis probe</td><td>M469.1</td><td>M469.1 I{invert}</td><td>true</td></tr><tr><td><a href="self-calibration#m469.2-calibrate-anchor-2">M469.2</a></td><td>calibrate anchor 2 with true 3 axis probe</td><td>M469.2</td><td>M469.2 I{invert}</td><td>true</td></tr><tr><td>M469.3</td><td>Future: calibrate atc tool position with true 3 axis probe</td><td>not implemented</td><td></td><td>true</td></tr><tr><td><a href="self-calibration#m469.4-calibrate-a-axis-headstock">M469.4</a></td><td>calibrate 4tha axis headstock with true 3 axis probe</td><td>M469.4</td><td>M469.4 I{invert} Y{headstock width} H{how far down to probe}</td><td>true</td></tr><tr><td><a href="self-calibration#m469.5-calibrate-a-axis-height">M469.5</a></td><td>calibrate 4th axis height offset with probe</td><td>M469.5</td><td>M469.5 R{Pin diameter} X{Distance from 1st probe position to probe} H{Max distance down to probe}</td><td>true</td></tr><tr><td>M469.6</td><td>report and set machine offsets (machine only code)</td><td>Debug Only</td><td>X - original X pos Y- original y pos, Z - orig z pos, P-probe set type. 1 is for anchor 1,2 is anchor 2, 3 is atc tool pos, etc</td><td>true</td></tr><tr><td>M470</td><td>set the wireless probe address</td><td>M470 S2020</td><td></td><td>false</td></tr><tr><td>M471</td><td>set the wireless probe into pairing mode</td><td>M471</td><td></td><td>false</td></tr><tr><td>M472</td><td>turn on the wireless probe laser</td><td>M472</td><td></td><td>false</td></tr><tr><td>M481-489</td><td>wifi specific gcodes that are better done via the console commands</td><td>Do Not Use</td><td></td><td>false</td></tr><tr><td>M490</td><td>Execute the ATC homing process, homing will be executed automatically when issuing M490.1 or M490.2 if needed</td><td>M490</td><td></td><td>false</td></tr><tr><td>M490.1</td><td>Tightens the spindle collect to secure a new tool in the spindle</td><td>M490.1</td><td></td><td>false</td></tr><tr><td>M490.2</td><td>Loosens the spindle collet and drops the current milling bit</td><td>M490.2</td><td></td><td>false</td></tr><tr><td>M491</td><td>Execute a calibration, and the TLO (tool length offset) for the current tool will be reset</td><td>M491</td><td></td><td>false</td></tr><tr><td><a href="tool-offset-management#m491.1-tool-break-check">M491.1</a></td><td>performs a tool break check by calibrating the current tool and comparing its length to a previously stored tool length offset (TLO).</td><td>M491.1 H0.05</td><td>If a difference greater than 0.05 than halt machine</td><td>true</td></tr><tr><td>M492</td><td>internal command to determine if toolrack is empty.</td><td>Debug Only</td><td></td><td>false</td></tr><tr><td><a href="tool-offset-management#m493-tool-length-offset-tlo-management">M493/M493.1</a></td><td>save tool offset when it has triggered the TLO probe. Use M493.3 to set the TLO to a particular value</td><td>Debug Only</td><td></td><td>true</td></tr><tr><td><a href="tool-offset-management#m493.2-set-new-tool">M493.2</a></td><td>new tool to T parameter. T-1 is empty. T0 is probe</td><td>M493.2 T5</td><td></td><td>true</td></tr><tr><td><a href="tool-offset-management#m493.3-set-current-tool-offset-manually">M493.3 Z{new value}</a></td><td>save tool length offset to value. use Z for a completely new value.</td><td>M493.3 Z-15</td><td>sets the TLO to -15</td><td>true</td></tr><tr><td><a href="tool-offset-management#m493.3-set-current-tool-offset-manually">M493.3 H{offset}</a></td><td>Sets TLO from current WCS position with an offset H.</td><td>M493.3 H10</td><td>start with the tool 10mm above WCS Z, using the gague pin or paper trick. This will calculate the proper TLO to match the current WCS</td><td>true</td></tr><tr><td><a href="tool-offset-management#m493.4-report-current-tlo">M493.4</a></td><td>report current tool length offset</td><td></td><td></td><td>true</td></tr><tr><td>M493.5</td><td>Future: ATC pause</td><td></td><td></td><td>true</td></tr><tr><td>M494 / M494.1</td><td>turn on probe laser</td><td>M494.1</td><td></td><td>false</td></tr><tr><td>M494.2</td><td>turn off probe laser</td><td>M494.2</td><td></td><td>false</td></tr><tr><td>M495</td><td>Do Margin, ZProbe, Auto Leveling based on parameters, change probe tool if needed. X and Y are Margin start. C and D are margin extents. O and F are Z Probe Offsets. A, B are the extents of the autolevel, I and J are the number of points across each axis to probe, H is autolevel probe height P1 will goto origin</td><td></td><td></td><td>false</td></tr><tr><td>M495.3</td><td>does a 3 axis z probe along the -z, -x, and -y. See G38 for other probing functions. D sets probe tip diameter, H is the thickness of the stock 3 axis probe metal piece</td><td>M495.3 D3.175 H9</td><td></td><td>false</td></tr><tr><td>M496.2</td><td>goto work origin. X and Y parameters set position in relation to anchor 1</td><td>M496.2 X30Y0</td><td></td><td>false</td></tr><tr><td>M496.3</td><td>goto anchor 1</td><td></td><td></td><td>false</td></tr><tr><td>M496.4</td><td>goto anchor 2 position</td><td></td><td></td><td>false</td></tr><tr><td>M496.5</td><td>goto position. X and Y parameters set position in relation to anchor 1</td><td>M496.5 X30Y0</td><td></td><td>false</td></tr><tr><td>M497</td><td>wait for queue to empty. Usually an internal command</td><td>Debug Only</td><td></td><td>false</td></tr><tr><td>M498 / M498.1</td><td>report eeprom data. Will print current tool number, TLO, toolmz, refmz, and WCS offsets to the console</td><td></td><td></td><td>false</td></tr><tr><td>M498.2</td><td>erase EEProm data. Do not run</td><td>Do not use</td><td></td><td>false</td></tr><tr><td>M499/M499.1</td><td>prints current tool information to the console</td><td></td><td></td><td>false</td></tr><tr><td>M499.2</td><td>prints all atc tool location data to the console</td><td></td><td></td><td>false</td></tr><tr><td>M500</td><td>save changes to config file to sd card</td><td></td><td></td><td>false</td></tr><tr><td>M501</td><td>// load config override</td><td>Debug Only</td><td>not implemented</td><td>false</td></tr><tr><td>M502</td><td>M502 deletes config-override so everything defaults to what is in config</td><td>Debug Only</td><td></td><td>false</td></tr><tr><td>M503</td><td>print config file values to console</td><td></td><td></td><td>false</td></tr><tr><td>M504</td><td>save to specific config override file</td><td>M504 "/sd/config-override"</td><td></td><td>false</td></tr><tr><td>M561</td><td>Clears the auto bed levelling data and disabled the compensation until G32 is run again. Same as M370</td><td></td><td></td><td>false</td></tr><tr><td>M565</td><td>sets zprobe offsets. Investigate at a later date</td><td></td><td></td><td>false</td></tr><tr><td>M600</td><td>pause the current file (use this to add pauses)\</td><td></td><td></td><td>false</td></tr><tr><td>M601</td><td>resume the current file - usually run from MDI console</td><td></td><td></td><td>false</td></tr><tr><td>M665</td><td>M665 set optional arm solution variables based on arm solution.</td><td></td><td>unsure of function</td><td>false</td></tr><tr><td>M670</td><td>set probe default info until next reset. S - slow feedrate, K - fast feedrate, R - return feedrate, Z- max z depth to probe, H - distance to probe, I - probe inversion status, D - dwell before probing</td><td></td><td></td><td>false</td></tr><tr><td>M801</td><td>Turn on the internal vacuum (Carvera). The S parameter sets the power of the vacuum (S100 = 100%)<br><br>Turns on the PSU fan on Carvera Air</td><td>M801 S100</td><td></td><td>false</td></tr><tr><td>M802</td><td>Turn off the vacuum on Carvera, and turns off PSU fan on Carvera Air</td><td>M802</td><td></td><td>false</td></tr><tr><td>M811</td><td>Turn on the spindle cooling fan. The S parameter sets the power of the fan</td><td>M811 S100</td><td></td><td>false</td></tr><tr><td>M812</td><td>Turn off the spindle cooling fan</td><td>M812</td><td></td><td>false</td></tr><tr><td>M821</td><td>Turn on the light</td><td>M821</td><td></td><td>false</td></tr><tr><td>M822</td><td>Turn off the light</td><td>M822</td><td></td><td>false</td></tr><tr><td>M831</td><td>Turn on the tool detector sensor laser</td><td>M831</td><td></td><td>false</td></tr><tr><td>M832</td><td>Turn off the tool detector sensor laser</td><td>M832</td><td></td><td>false</td></tr><tr><td>M841</td><td>Turn on the wireless probe charging power</td><td>M841</td><td></td><td>false</td></tr><tr><td>M842</td><td>Turn off the wireless probe charging power</td><td>M842</td><td></td><td>false</td></tr><tr><td>M851</td><td>Turn on the extended port power. The S parameter sets the PWM output of the port</td><td>M851</td><td></td><td>false</td></tr><tr><td>M852</td><td>Turn off the extended port power</td><td>M852</td><td></td><td>false</td></tr><tr><td>M881</td><td>Set 2.4G Channel to: the S parameter and start transmitting</td><td>M881 SwifiNetworkName</td><td></td><td>false</td></tr><tr><td>M882</td><td>turn off wifi network</td><td>M882</td><td></td><td>false</td></tr><tr><td>M885</td><td>turn off hard endstops (reverts to on on power cycle, ignored when homing)</td><td></td><td></td><td>true</td></tr><tr><td>M886</td><td>turn on hard endstops</td><td></td><td></td><td>true</td></tr><tr><td>M887</td><td>turn off home check</td><td></td><td></td><td>true</td></tr><tr><td>M888</td><td>turn on home check</td><td></td><td></td><td>true</td></tr><tr><td>M889</td><td>report current tool slot configuration</td><td></td><td></td><td>true</td></tr><tr><td>]</td><td>report spindle speed</td><td></td><td></td><td>false</td></tr><tr><td>M957</td><td>current spindle speed and status</td><td></td><td>State: on, Current RPM: 15086 Target RPM: 15000 PWM value: 0.699</td><td>false</td></tr><tr><td>M958</td><td>set spindle PID parameters, parameters P, I, D</td><td></td><td></td><td>false</td></tr><tr><td>M1000</td><td>M1000 is a special command that will pass thru the raw lowercased command to the simpleshell (for hosts that do not allow such things)</td><td></td><td></td><td>false</td></tr></tbody></table>
