FAQ Mach3


Where do I learn more about Mach3 itself?

The best place is on the Mach Support website itself! 

  • They have a Product Manuals page that has these very useful manuals (Make sure to click on the Mach3 tab near the top):
    • Mach3 Installation and Configuration Guide
    • Usage Guide for Mach3 Mill/Plasma
    • Usage Guide for Mach3 Turn
    • Rich's Guide to Mach3 Threading
    • Tangential with Mach3
    • Mach3 CV Notes
    • Mach3 Macro Programmers Reference
    • Mach3 VBScript Command Reference
    • And more!
  • They have a Videos & Tutorials page, with lots of videos.
  • And they have a support forum too.


Backing Up Mach3

Once you have your system up and running, you should take a moment and crate a backup of your C:\Mach3\ folder and store it somewhere else.  You should also do this once you make changes or add new macros that change the way your system works.  This will preserve your license file, your profile(s) and save you a bunch of time, because you never know when:

  • Your computer or hard drive may die
  • Your computer could be lost to a fire or theft
  • Your Mach3 install may corrupt or accidentally get deleted
  • Your profile may corrupt or accidentally get modified or deleted

I recommend one of the following options (but there are certainly more). Make a zip file of your C:\Mach3\ folder and:

  • Copy it onto a USB stick and store it at at a nearby location away from your machine (At a relative's house, your house/work, or a trusted neighbor's).
  • Upload it to your personal Cloud account (DropBox, Google Drive, iCloud or your email)
  • You can also store an additional copy on your other PCs or Network Attached Storage.

To restore from a backup, you will need to:

  1.  First make sure that Mach3 has been installed on your PC
  2. Delete (or rename) the existing Mach3 folder on the PC
  3. Copy the Mach3 folder from your zip file backup onto your C:\ so the backup is now your C:\Mach3\
  4. Try it out and it should work the same way as the day you made the backup


Profile or Config File (XML) Corruption

Once in a while, we hear that a Mach3 install starts doing REALLY weird and strange things.  Sometimes this is caused by the user inadvertently changing settings somewhere in the profile, at other times, the XML file itself became corrupted.

I once had an XML file that created motion in the A and C axes when I commanded a move in the B axis. Since I was writing the plugin, I knew for sure that the incorrect motion data was coming from Mach and not from the plugin. It was 100% repeatable.  After recreating the XML from scratch, the motion behaved as commanded.

If something strange starts happening in a working profile, an easy thing to check is if the XML file corrupted.  You can either grab your working copy of your profile from your backup that you created here.  Alternatively, Mach3 creates and keeps backups of your profile(s) each time you run or modify it (there may be a limit on how far back these backups go).  You may find these backups in C:\Mach3\xmlbackup\   Instead of seeing MyEssProfile.xml you will see MyEssProfile.xb19 (or some other number).  You can sort the backups by date and the change the extension from .xb## to xml and place that in your C:\Mach3\ folder (you may want to rename your existing xml first).


How do I make Mach3 go full screen?

First, in Menu -> Config -> General Config… Make sure your Auto Screen Enlarge is checked

To make Mach3 go full screen:

  1. Then maximize the Mach screen so it takes up the whole screen.  You will see a lot of empty space, that is okay.
  2. Close Mach3, and then reopen it.  Since Mach3 will remember to open full screen, it will then fill the screen up correctly.

To make Mach3 show correctly in a mid-sized window:

  1. Adjust the Mach3 screen so it takes up the portion of the screen you desire.  A lot of the stuff inside the Mach window will be hidden, that is okay.
  2. Close Mach3, and then reopen it.  Since Mach3 will remember to open its window to the size used last time, it will then fill the screen up correctly.

Screen Control

Game Pad and/or Pendent Issues

The biggest issue with the Pendent or Game Pad is not working, is caused by not using the recommended version of Mach3.

If you jog, and the axis continues to move after you release the control, it is because Mach 3 is set to continuous mode.  When in incremental jog mode, you can hold down the Shift key on the keyboard, and then press the jog key, and it will jog continuously.   Your game pad might be emulating the press of the shift key or continuous mode may have been left on.   


      • Remember to press and hold the Shift key, and then hold the jog key.  When you are where you want to be release the jog key first, and then release the Shift key.  (Thank you Jeff Birt!)  If you release the Shift key before you release the jog key, it will keep running until you either repeat the process and release the Shift key last or you press the Reset or an E-Stop button!
      • In Mach3 press the Tab key and look to see if the Cont. button is yellow for Jog Mode in the MPG controller window.  Press Shift to disengage it if it is stuck on with Step Mode.




Abrupt stops in Circles or Arcs while in CV mode

Once you have motor tuning set up correctly for your hardware, the SmoothStepper will move your motors very smoothly.  You should not see abrupt jerks or harsh movements. 

However, there is one situation where we have seen jerky movement and abrupt stopping and starting, and that is on Arcs and Circles when feedrate override is being used.  When the feedrate override is turned back down to normal (to the rate commanded in the G-Code) everything is  smooth and continuous again.  

What is happening is that Mach3 is miscalculating the information (due to the feedrate override) and corrupting the movement.   If you adjust your G-Code file to use your new desired feedrate, with no feedrate override, you should be able to cut your parts smoothly at the faster speed.


Jogging Issue: It keeps jogging and doesn't want to stop

If you jog, and the axis continues to move after you release the control, it is because Mach 3 is set to continuous mode.  When in incremental jog mode, you can hold down the Shift key on the keyboard, and then press the jog key, and it will jog continuously.


      • Remember to press and hold the Shift key, and then hold the jog key.  When you are where you want to be release the jog key first, and then release the Shift key.  (Thank you Jeff Birt!)  If you release the Shift key before you release the jog key, it will keep running until you either repeat the process and release the Shift key last or you press the Reset or an E-Stop button!
      • In Mach3 press the Tab key to see the MPG Mode window.  Look to see if the Cont. button is yellow for Jog Mode.  If it is your Game Pad or pendant is activating it.

MPG Mode



In Motor Tuning (and Setup), what does the 'Step Pulse' and 'Direction Pulse' field do?

Mach3's Menu -> Config -> Motor Tuning (and Setup).

The Step Pulse and Direction Pulse fields are used for a Parallel Port connection from your computer to your hardware.  Since you are using an external motion controller, a SmoothStepper, they are unused and may be ignored.

The Steps per Unit, Velocity (Units per Minute) and Acceleration fields are critical for tuning your motors.  The Steps per Unit is determined by your hardware for each axis.  The velocity is the maximum speed you want your axis to move.  The acceleration is the maximum acceleration rate your motors should run at (to prevent stalling or missed steps).  This needs to be done for each of your axes.

 How do you calculate your steps per unit?  Try this Excel spreadsheet made by RICH.

Step and Dir Pulse



In Port Setup and Axis Selection, what does the 'Kernel Speed' do?

Mach3's Menu -> Config -> Ports & Pins -> Port Setup and Axis Selection.

This Kernel Speed field controls the timing setting for a Parallel Port connection from your computer to your hardware.  Since you are using an external motion controller, a SmoothStepper, this can be ignored for the most part.  Some older versions of Mach3 had internal timing issues at speeds other than 25 kHz.  So it is best to just leave it at 25 kHz all the time when connected to a SmoothStepper.

The Port #1 and Port #2 fields are also only for Parallel Port connections, and you should ignore them when using the SmoothStepper.

Kernel Speed



In the ESS Config, how do I change the direction for Pins 2 through 9 on ports 2 and 3??

Mach3's Menu -> Plugin Control -> Main Config: ESS-M3-version

General Config Pin 2 Through 9 Direction

You may choose to assign the bidirectional Pins 2 through 9 on Port 2 to be all inputs or all outputs.

You may choose to assign the bidirectional Pins 2 through 9 on Port 3 to be all inputs or all outputs.

Here is a schematic of the ESS input and outputs per port.





In ESS Config, what does the 'Controller Frequency' Frequency' do?

Mach3's Menu -> Plugin Control -> Main Config: ESS-M3-version

General Config Controller Frequency


The ESS has a fixed amount of memory, and the controller frequency is a setting for how many motion positions per second there are, or how many times each second the velocity is sent from Mach 3 to the ESS.  Having it output data faster means that if can buffer less data.  If your system is running out of data, try slowing this down to a slower frequency so  the SmoothStepper can go for longer periods of times between updates from the PC/Mach3.

      • 4 kHz gives a buffer of 250 ms or 1/4 second:  This provides a faster response to commands like feed hold, since it uses only a quarter second buffer.  This also becomes more necessary when you have very high step frequencies, like you would if you use servos with a high encoder count.  However, your PC needs to be able to supply the data transmissions to the SmoothStepper fast enough (newer PCs that are not low end, and that are running properly, can handle this).  While this provides for a snappier response, it will not be reliable for all machines and you may experience run out of data errors.  
      • 2 kHz gives a buffer of 500 ms or 1/2 seconds.
      • 1 kHz gives a buffer of 1000 ms or 1 seconds:  This is the default value most machines should use, and works well for most users.
      • 500 Hz gives a buffer of 2000 ms or 2 seconds.
      • 250 Hz gives a buffer of 4000 ms or 4 seconds: Slow PCs can run this speed, and with a 4 second data buffer, it will make it hard for them to run out of data.  This setting will have the slowest change in velocities out of all the settings, but should still work just fine for most applications.

Most systems run well at 1 kHz for the Controller Frequency and that is what we recommend you set your system up with.  Once you have it running well you can try 2 kHz if you want a little less delay when using FRO or Feed Hold.  At 2 kHz you will have twice as many points per second, but with the same amount of memory the buffer will be half as long in seconds.  At 4 kHz the buffer is so short that you could run out of data in the middle of a move.  Windows isn't all that reliable (at ensuring it gives Mach3 highest priority and the Network channel the data flows over), and as a result the plugin doesn't always communicate on a timely basis (causing "Ran out of Data" messages).

In ESS Config, what does the 'Max Step Frequency' do?

Mach3's Menu -> Plugin Control -> Main Config: ESS-M3-version

General Config Max Step Frequency

The Max Step Frequency allows you to control the frequency of the generated pulses for a particular axis.  The next image shows you how to calculate the MINIMUM Steps per Second for your particular axis (we recommend derating it by 15% as shown in our table).  Your axis will function properly if you set the Max Step Frequency to our recommended value. 

If you use a Max Step Frequency below the minimum value recommended for your axis, it will cause that axis to not operate correctly.

Once you have your system up and running, and you are tweaking your hardware to optimize it you may choose higher Max Step Frequencies.  They may result in smoother cuts, but it will depend on your particular hardware.  As the Max Step Frequency increases, at some point it will reduces the step pulse resolution for that axis and may cause poorer cut quality and undesired movement quality for that axis.  So use the recommended values to start with. 


When your Max Step Frequency should be set at 32 kHz or 64 kHz, but are instead set to 1 MHz or 2 MHz, a few things may happen:

  1. Everything may work just fine, especially if you are using good motor drivers.  Once you have things working at the calculated Step Frequency, feel free to try and set it higher.  Sometimes performance may become smoother.
  2. You may not notice any difference in performance. 
  3. Things may perform poorly. This scenario becomes more likely with poorer quality motor drivers.  In this case, you will want to use the calculated Max Step Frequency. The symptoms you will notice when using too high of a Max Step frequency include:
  • Jerky movement of the steppers or axes
  • Hearing the steppers change sound between each line of G-Code
  • Pauses between lines of G-Code (this one is arguable that it may be a symptom of other problems, but has been observed here a couple of times)


You will find your Steps/Unit and Units/Minute values in the Motor Tuning page: Menu -> Config -> Motor Tuning. 

To calculate the Max Step Frequency setting for yourself, you can download the Excel spreadsheet.

 General Config Max Step Frequency Calculation


Here is a good article on how to calculate your Steps/Unit based on Degrees/Step of your motor, Micro Stepping, Gear Reduction, and lead screw.  It was created and posted by RICH.


What is the difference between Step Frequency and Pulse Width?

Step frequency is not the same same thing as pulse width; lets use some easy numbers for math:

  • You have a 1 kHz pulse frequency, which means you have 1000 pulse occurring per second, or one every ms
  • If the pulse had a 50% duty cycle (on half the time off half the time) it would be on for 0.5ms or 500 us for its pulse width.
  • If the pulse had a 1% duty cycle, it would have a pulse with of 10 us and then be off for 990 us.
  • If the pulse had a 90% duty cycle, it would have a pulse with of 900 us and then be off for 100us.

Step frequency is how often the pulses are being generated. Pulse Width is how long each pulse is on before it turns off to await for the next pulse to be generated.


How do I set up the Spindle?

This section has moved to here.


How do I set up debounced input signals?

Go to Mach3's Menu -> Plugin Control -> Main Config: ESS-M3-version

Enter values in microseconds (us) that a signal has to be stable for before it has been considered changed.  This is very useful in situations where there is a lot of noise that can corrupt signals (like a plasma system), especially for things like limit or home switches, probe signals, EStop, etc...




How do I set up homing?

First, make sure you have your Motor Outputs assigned correctly (Menu -> Config -> Ports & Pins -> Motor Outputs).

Motor Outputs


Second, make sure that you have your home switches assigned correctly (Menu -> Config -> Ports & Pins -> Input Signals).  While you could use a single input for your X, Y, Z, and A  homes, it is much better to have them as separate inputs! The SmoothStepper has plenty of inputs available and it allows Mach to home all of your axes at the same time if you wish (although you typically have your Z axis home after the rest of your axes so you don't crash your head).

Home Inputs


Third, make sure you have your Motors Tuned correctly (Menu -> Config -> Motor Tuning).


Fourth, assign the slave axes to the master axes, as appropriate for your system.  You may not have any slave axes.  (Menu -> Config -> Slave Axis).  In this example, I am assigning the A axis as a slave to the X axis.

Slave Axis selection


Now we need to work with the SmoothStepper's Homing Config (Menu -> Plugin Control -> Homing Config).

Homing Config

For all of your normal axes and master axes, assign Approach and Backoff Speeds.  This is how fast you will approach your homing switch, and how fast you will back off of your homing switch.  For very precise homing, you will need to go slower.  Do not set anything for your slave axes, just leave them with 0s.  Do not set anything for unused axes, just leave them with 0s.


If you are using a rotational axis, you may have index pins, if so configure the index port, pin and active low settings as appropriate.  Otherwise, leave those sections blank.

The Final Position is if you want your axis to move to a specific location after it completes homing.  Enter the value you desire.

Slave Misalignment allows you to compensate for the Master home switch and the Slave home switch being located at different positions on the axis (due to hardware restrictions or just not being able to physically locate both of them at 0.0000).   If so, you can enter the difference so that it can be compensated for.


If you have separate home switches for your Master and Slave axes, and you want to remove any rack from your axis, then you will need to specify how closely you want the two sides to align with the Max Master/Slave Separation.  You can't go smaller than the step size of your axis.


Finally, there is an option in General config that says "Home slave with Master Axis". Make sure to UN-check it if you want to home the slave with a separate homing switch from the master.   If you want to use just a single homing switch for the axis, then you can check that option.

Home Slave With Master


Don't try to be fancy and use a script that has "while moving" statements. Just home each master axis. Mach3 won't move to the next axis until the current one is finished. There is no need to specify the slave, since the ESS and Mach already know how slaves are assigned in the previously completed steps.


How do I set up Soft Limits?

Soft limits are limits you set on axis travel inside the Mach3 software.  They rely upon the current value of the DROs (in Machine Coordinates) to determine whether the G-Code or Jogging commands should be allowed. 

To configure Soft Limits, go to Mach3's Menu -> Config -> Homing/Limits.

All values will be in the same units the rest of your system is set with (mm or inches). Make sure that a slaved axis the same settings as the master axis it is paired with. 

  • Reversed should be checked if your axis is reversed.
  • Set the Soft Max and Soft Min position for each of your axes. 
  • Slow Zone is small zone just before your Soft Limit (max or min), where the jogging command will slow down, so you can approach your limit without blowing past it. 
  • Home Offset is self explanatory.
  • Home Negative is self explanatory.
  • Auto Zero is normally checked.
  • Speed is normally set to 20% but you can modify it if needed.

Soft Limits Window


As you are approaching the limits, the jogging commands will slow you down and keep you just short of the limit.  

A GCode command will stop at the limit and issue a "Soft Limit Exceeded" message from Mach3. 

For instance a command of "F200 G1 Y500" (entered in the MDI window's Input line) will stop at 401 with the settings shown above.  Why?  Well the F2000 is the feed rate command saying to move with a velocity of 2000 mm/s.  The G1 command says to do a linear move to Y500 which would mean position 500 mm on the Y axis.   Your DROs (and machine) should start to move.  You would think it would stop at 405 mm since that is the Y axis soft limit, but instead it stops at 401 mm, why?  Well, that is because I left off the fact that the A axis is slaved to the Y axis :-)  When 2 axes are slaved together, Mach3 will limit you to the smallest limit of those two axes.

In order for Soft Limits to work, you must also have the Soft Limits button checked on the (Program) main screen of Mach3 (it will have a green border when active). 

Soft Limits Button



Reading an encoder index pulse

The index pulse is very narrow.  For the signal to show up in Mach on the diagnostic page, you would need to position the shaft precisely on the index.  The SmoothStepper has no problems catching very narrow pulses.  

Assign the pins for the encoders in Mach's Ports and Pins on the Encoder MPG's tab.  On the ESS's Data Monitoring dialog, you can observe the encoder values on the left hand side, but there isn't a correlation between the encoder number and the Encoder numbers in Mach3 (In Mach4 there will be an encoder very each motor, plus 3 auxiliary encoders that can be used for MPGs or anything else).  Below the encoders you will see a box for the Spindle Timer.  If the index is connected to the Index input on Mach's Ports and Pins, every time the index pulse is asserted you should see the timer latched with a value.  I believe the units are 29.74358974 ns.  500 RPM = 8.33333 RPS.  1/8.33333 = 0.12 seconds between index pulses.  Therefore it should count to 4034483 each time.  

The pulse needs to be clean.  If you test it out with a mechanical switch, you will probably get some small numbers due to it triggering on lots of quick bounces.  But an encoder's index pulse should be clean, especially when driven by a motor.  You should see the RPM on the 1024.set screen set. 


Backlash Compensation


Homing is required for backlash comp because the action of homing takes up the backlash, and then the plugin knows which side of the backlash it is on.  The last step of homing is to move off of the switch.  In doing so, the machine's backlash is removed before the machine will start moving again.  The plugin knows which direction it was moving when the switch opened up, so it can initialize the backlash comp variables at that time.

Backlash is not cumulative.  Let's say you started out on the opposite side of the backlash, the DRO reads 0.000, and the backlash amount is 0.002.  If you move +0.010, the machine will only move to 0.008, but the DRO will read 0.010.  If your next move is -0.010, the machine will move back to 0.000 (and the DRO will read 0.000), even though it started out at 0.008. 

For critical moves such as drilling a pattern of holes that need to be the right distance from each other, I would approach each hole from the same direction before drilling it.  Moving back and forth is when you need backlash comp. 

Backlash compensation is not a silver bullet.  When milling, your tool can tug at the workpiece and move the table.  When that happens, the plugin is unaware and cannot compensate for it!  Backlash can accumulate if the tool only tugs on the workpiece in one direction.  This makes it possible for backlash comp to actually produce inferior results compared to no backlash comp at all.  This is also why people often say that you need to fix the machine (eliminate the backlash from a hardware standpoint), not compensate for the backlash. 

When you have backlash and you want to compensate for it, it is better if your lead screws have more friction.  Ball screws would be more likely to allow the table to move when the tool tugs on the workpiece.  You should also look into adding some anti-backlash nuts to remove the backlash mechanically https://www.google.com/?gws_rd=ssl#q=anti-backlash+nut

With this being said, to use a software approach for Backlash Compensation, go to Mach's menu -> Config -> Backlash.  In the Backlash Values window enter in the amount of compensation each axis requires.  Keep in mind, that the value may be positive or negative, and it may not exactly match up with the value you measure (it may need to be larger or smaller than the measured value).  It will take some tweaking to achieve the desired results. 

Common values would be in the .033mm (or  .0013"), but would vary significantly and be totally hardware dependent.



Common Backlash Compensation issues we have seen are:

  • Forgetting to home after the machine is powered up or after the EStop is pressed or after limits are triggered (I might be mistaken on the last one).
  • Relying on the DROs only. If you need precision, you need a Dial Test Indicator (DTI) on the machine so you actually measure how far you are off (if there is backlash you will be off). 
  • Using a negative backlash compensation value when it should be positive or vice versa.
  • Having your velocity and acceleration set to high for the axis, and missing steps as a result.


Feed Hold

There are two modes for feed hold. One is where the ESS does it in the device, and the other is where Mach does it. If you use the feed hold that is performed by the ESS, then there is data in the buffer when you press Stop. However, in the case of Mach doing the feed hold, the data should be cleared out one it has stopped moving.

The control for this option is on the ESS's config, Menu -> Plugin Control -> Main Config: ESS-M3-version

Feed Hold

The advantage of doing it in the ESS is that feed hold is nearly instantaneous, but the disadvantage is that you really can't stop, move around, and go back to where it was and resume the G-Code. But if you press Stop, then it should clear out the buffers and either feed hold should work OK.

The ESS plugin source code clears all movement data in the ESS when Mach issues the myNotify(EX_STOP) (or EX_ESTOP or a -1) command.


If you use the ESS Feed Hold, all motion will be frozen. You can't jog or anything. But you can resume right from there. However, if you press Stop at this point, all data will be lost.

If you are using Mach's Feed Hold, Mach will decelerate to a stop at an acceptable way point, in Mach's trajectory planning, and then stop sending data to the ESS. The ESS will then consume all of the data in its buffer. You can then jog around or whatever, and Mach will know how to get back to that way point. If you press resume, Mach will generate a start up trajectory from its ending way point (it will move back to there if you jogged).


What is Spindle PWM Proportional to X-Y Feed Rate?

So this was added to support lasers in Mach3. The faster the X and/or Y axis velocity is, the higher the laser output needs to be in order to maintain a uniform cut. Here is the Excel file that will allow you to create the Mapping function file name.

It only outputs PWM in this mode, with 8 bits of resolution.  Details on how to use it in Constant, Linear or Logarithmic mode are given on the first page of the spreadsheet.   The PWM signal is automatically output on the pin that you set for your Spindle PWM output (Spindle Step) in Menu->Config->Ports and Pins->Motor Outputs.

This could work with milling, but the issue becomes that if you move too slow, the spindle RPM could become insufficient.

 Menu -> Plugin Control -> Main Config: ESS-M3-version

Spindle PWM Proportional to XY Feed Rate

The excel file at the beginning of this topic has instructions on the read me tab (it has all of the specific instructions, I am just including a subset of them here).  It then has 3 sample tabs for a linear, constant and logarithmic example.   You will save your mapping to a text (.txt) file in "C:\Mach3\Plugins\" with whatever name you want.  You will then enter that name into the Mapping Function file name.  For example "MappingFunction.txt".

In your text file there should be EXACTLY 256 lines, and each line must have a value from 0 to 255.  There should be no letters, symbols, words or other information in it.







DROs are a direct reflection of the step pulses generated by the ESS, and sent to Mach from the ESS. There are counters in the FPGA that count the step pulses, and this is the data sent back for populating the DROs.

If you don't have backlash compensation, the DROs will be exactly what the ESS has generated. If you are using Backlash compensation then the DROs will not be updated due to the extra moves to pick up the backlash.

EM issues will not corrupt the data of the DROs.

DROs can loose sync with the mechanical head under the following conditions:

  • Mechanical Backlash (Fixing the hardware is the best solution!)
  • Incorrectly configured Software Backlash Compensation settings
  • Pressing the physical EStop button while motion is in progress
  • Pressing the Mach software Stop button while motion is in progress
  • Improperly tuned acceleration or velocity settings that cause slippage on an axis
  • Power was removed from the motor drivers, allowing the axes to drift or move

If the DROs are not in sync with the mechanical head, you will need to Home the system to get back in sync.




What is X-Y PWM Velocity Output?

This is used with THC (Torch Height Control)

 Menu -> Plugin Control -> Main Config: ESS-M3-version

XY PWM Velocity Output



My ESS had a Watchdog Message in Mach3

If you are getting Watchdog messages, that means that Mach3 and your PC were not able to communicate with your ESS in the required amount of time. 

One cause of this is that the ESS should be powered for 5 to 10 seconds before starting Mach3. This allows the ESS enough time to boot up and be ready for an incoming connection.

Another cause can be the ESS's watchdog value.  Go to Mach3's Menu -> Plugin Control -> Main Config: ESS-M3-version.   If your Watchdog value is less than 2.0 seconds, we would strongly recommend increasing it to at least 2.0.  If it is already at 2.0, it is okay to set it to 3.0 and it will prevent needless messages from popping up.

When trying to solve Watchdog messages, a few systems may start getting "Ran out of Data" messages.



 My ESS had a Ran Out of Data Message in Mach3

If you are getting "Ran out of Data" messages, that means your ESS is using up its data faster than Mach3 and your PC are sending data to the ESS. 

This section has recommended software steps listed first, followed by recommended hardware steps.

Here are the following software steps that you should take:

1) Make sure that you are running Mach3  3.043.062

2) Make sure that you are using the current ESS plugin for Mach3.

3) Disable unused network protocols, since this eliminates needless data going out of your Ethernet Adapter.

4) Optimize your PC.  This can make a huge difference, since it eliminates other things that your computer may be trying to do instead of running Mach3.  Some of the biggest impacts are:

  • Don't switch screens or applications while running GCode
  • Don't refresh your tool path while running GCode
  • Make sure your GCode is running from your PC's hard drive.
  • Make sure your PC is disconnected from the internet.
  • Close all other software when running Mach3 (so they won't consume RAM or CPU time)
  • Make sure that there are not any flash memory sticks in your PC, since they can sometimes cause this issue too.
  • Disable your antivirus software's ability to scan the hard drive, since this can have a very negative impact on system performance.
  • Disable power saving (not allowing sleep mode) for these components:

            * Hard Drives
            * Ethernet adapters
            * Monitors
            * The PC itself

5) Optimize Windows, so it can run as fast as possible:

6) Run Mach3 at a higher priority level.


For the following items, only change one setting at a time and then try air cutting a GCode file to see how it affects your performance.  We do not recommend that you change everything below here at once.

7) Your Controller Frequency affects how many seconds worth of data is present on the ESS.  Make sure that your Controller Frequency is set to a reasonable value. Go to Mach3's Menu -> Plugin Control -> Main Config: ESS-M3-version:

  • If the controller frequency is at 4 kHz or 2 kHz, reduce it to 1 kHz (this will give the ESS a 1 second data buffer).
  • If the controller frequency is at 1 kHz, reduce it to 500 Hz (this will give the ESS a 2 second data buffer).  Or you can even reduce it to 250 Hz (this will give the ESS a 4 second data buffer).

At 250 Hz, the downside here is that a Mach3 commanded feedhold would take up to 4 seconds to occur.  However, an ESS commanded feed hold can occur much faster.

Look Ahead

8) Increase the number of Data Points that Mach should pre-calculate.  This defaults to 1023 and you may increase it to 1500 or up to 2000.  Going above 2000 may negatively affect system performance.  Go to Mach3's Menu -> Plugin Control -> Main Config: ESS-M3-version.

Pre Calculate

9)  Adjust the Look Ahead value, which is normally 20 lines of code.  Try increasing this to 100 lines of code.   Go to Mach3's Menu -> Config -> General Config... 

 Look Ahead


Here are the recommended hardware steps you should take:

1) Check your Ethernet cable to make sure it is securely connected at both ends.  Try replacing the Ethernet cable with a new one, since we have seen "Ran out of Data" messages caused by bad Ethernet cables.

2) Try air cutting your GCode file with your VFD/spindle shut off, and also your vacuum system shut off.  If you can run your GCode without the "Ran out of Data" messages and these devices are off, then it is likely that electronic noise or ground loops from these devices may be causing the problem.

3) PC RAM.  If you don't have enough RAM, your PC is forced to swap data between the RAM and the hard drive using page files, which can cause significant delays, especially when using mechanical hard drives.  These delays can easily cause 'Ran out of Data' messages.  Recommended amounts of RAM for different versions of Windows are as follows  (32 bit Windows will limit you to 4GB of RAM, 64 bit Windows will allow more than 4 GB of RAM):

  • XP: Minimum 1GB to 2 GB; preferred 3 GB or 4 GB.
  • Windows 7: Minimum 4GB (you will need to make sure all other programs are closed); preferred 8 GB.
  • Windows 8: Minimum 4GB (you will need to make sure all other programs are closed); preferred 8 GB.
  • Windows 10: Minimum 4GB (you will need to make sure all other programs are closed and you will need to disable Cortana); preferred 8 GB to 12 GB.


I am getting the ESS error:  Error reported by SS. Halting. Flags Register

If you are seeing this error:

SS Halting Flags Register

It is very likely that you have very little RAM on your PC (1 GB or less) and also likely that you are running windows XP.  You will need to add more RAM to your PC, or you can try to optimize your PC first.


Was does the default Plasma screen THC button not work?

THC Button

The THC Button will ONLY work with a valid Mach3 license.

It has also been noted on a one user profile, that he could only get the THC button to turn on after restarting Mach3 but before pressing the lower left RED "Reset" button the first time.  After the lower left RED "Reset" button was pressed, the THC button would not change state.  This may have been due to a corrupted XML file or a licensing issue though.


What is the Macro Pump?

 The macro pump is a special macro that executes about 5 times per second. Here is a video by Art Fenerty that describes it in detail.


How do I optimize my PC?

This article moved to here.



How do I set Up THC?

This article moved to here.


Go to top