Basic Instructions for setting up the Ethernet Smooth Stepper:


You will not need a special Ethernet cable.  Since the microcontroller on the ESS has Auto-MDIX (, a crossover or straight cable will work fine.  The cable may be shielded or not.  Since cables are so inexpensive, I would personally use a shielded CAT6 cable, but I believe an unshielded CAT5 cable would work fine.  The SmoothStepper may be connected to an Ethernet switch or you may directly connect it to the Ethernet port of the PC.  I would recommend keeping the SmoothStepper on its own private network, but it would probably work OK with light Internet traffic on the same net.  Personally, I would not risk the operation of my machine by combining the two.  If my computer had only one Ethernet port, I would purchase a USB to Ethernet adapter and run the Internet on the USB port.  That way all of the machine control would be on its own private network.

I would make a copy of your current XML (profile) file, just in case something goes wrong.  The XML files are located in the c:\Mach3 directory and have extensions ending in ".xml".  If you are launching Mach from a shortcut on your desktop, the profile is specified in the shortcut.

The SmoothStepper has certain parameters of its own that are unique to it.  The plugin creates a new section in the XML using the name of the device.  In the case of the USB SmoothStepper, the name is "SmoothStepper".  For the Ethernet SmoothStepper, the name is "ESS".  This is a problem for people that are upgrading.  I need to add a feature that will allow the special tags to be copied from one section to the other if they are migrating from the USB SS to the ESS.  The tags I am speaking of would be things like the Max Step Frequencies, port direction setting, etc..

Here is a link to the latest Ethernet SS plugin.  Open the zip file and double-click the m3p file.  It should copy it to the c:\Mach3\Plugins folder and rename it with a dll extension.

This one does not have the Mach Revision limitation that the other one did.  But if the user tries to use the M10 or M11 commands it will let the user know and will not proceed.  If they try to use THC, it won't work very well.  I should add some software to let them know that there is an issue.  I'll add that to my list of things to do.
Here are the instructions for configuring your computer's Ethernet port and running the plugin.

1. The computer's Ethernet port needs to be configured with a static IP address.  Usually Ethernet ports are set up for DHCP, which allows a cable or DSL router to assign a unique address to a device that is requesting an address for the local network.  The best way to describe this is to point you to a website that shows it in pictures.  Please go to this site:

Scroll down to the operating system you are using.

When you get to the part where you click the radio button that says "Use the following IP address", please type in the following:

IP address: (or anything in the 10.9.9.x range, but not because that is the address of the board)
Subnet mask:

By default it will show a Subnet mask of after you type in  It must be changed to

The Default Gateway may be left blank, as well as the Preferred and Alternate DNS servers.

That is all you need to do for the static IP address.

2. You can try running Mach at this point, but you might need to disable the firewall if it doesn't communicate.  When you run Mach, a firewall warning might pop up that says an application is trying to access the Internet.  Give it permission to do so.  I believe it needs to be valid for Public networks and not just Home or work (private) networks.  That way you won't need to disable the Firewall because you are creating an exception for Mach.

Depending upon whether or not the user has previously checked off the box that says "Don't ask me again" when you select a motion control device, you might need to reset that.  In order to do that you will need to have Mach running (which means you will need to be pretending to be running another device such as the parallel port).  Choose the pull-down menu "Function Cfg's".  Then choose the option "Reset Device Sel...".  The next time you run Mach it will ask you which motion control device you want to run.

When you run the Ethernet SmoothStepper plugin, it will try to contact the board.  If this is the first time you are using this XML (profile) file, the IP address will not be set properly.  I am working on a better user interface for this so that it flows nicely.  You will be presented with a semi-cryptic message that says:

CTftp::WakeupClient Board does not reply.
Select YES to retry
No to config
Cancel to quit

Click No, and then you will be allowed to enter the Static IP address of the SmoothStepper board (  You will only need to do this once, since the next time Mach runs, it will find it in the XML file when it starts.

If you are not able to make a connection, you might need to turn off the computer's firewall temporarily.  To disable the firewall, try one of the following links:

3. You only need steps 1 and 2 to get it running for the first time.  However the board does not need to have a static IP address of  I only chose that number to start out with.  It can be any address you want to give it.  Your PC does not need a static IP address either.  You can configure your PC to use DHCP, but the board will need a static IP address on the same subnet as the PC (  I wrote a configuration tool that will allow you to change the static IP address.  Here is a link to it:

I call it the Configurator.  It will allow you to connect to the board in the BOOTP mode (BOOTP is the predecessor to DHCP).  You will need to attach a shorting jumper to the header pins that are right next to the external 5V screw terminals.  When the board powers up it will be in BOOTP mode, looking for an IP address.  The green LED next to the Ethernet jack will blink with "long on, long off" when it is in this mode.  In static IP mode it will blink "two short blinks, long off".  The Configurator will listen for the BOOTP Request and assign an IP address to it.  The PC becomes a BOOTP server, but it should only be assigning IPs to Ethernet SS boards.  This would be problematic in a normal network environment, since there should only be one DHCP server assigning IP addresses to devices/computers.  If there is more than one DHCP server, then there should be some coordination between them.  That is why I made an effort to use static IP addresses.  Much better way than dynamic addresses. 

Another issue with Ethernet is that you can operate any Ethernet SmoothStepper from any computer if you connect the SS to a network that is connected to other computers.  Probably not a good thing.  To prevent against unintended operation, you can use the Configurator to configure the SmoothStepper so that it will only communicate with a specific computer.  It does this by looking at the Ethernet MAC address.  In the Configurator, if you set the server's MAC address to FF-FF-FF-FF-FF-FF, then the board will work with any computer that addresses it on its IP address.  But if that MAC address is anything other than FF-FF-FF-FF-FF-FF, then it will only respond to Ethernet packets from that MAC address.  That way you can't accidentally operate the wrong CNC machine, unless you move the Ethernet SmoothStepper board to another machine and don't reset this parameter on the ESS.  It can always be reset by going into BOOTP mode and running the Configurator.  The Configurator should display the current contents of the config data, but it doesn't.  I need to do that.

The Configurator downloads a program to the ESS (Ethernet SmoothStepper) that will allow it to feed the parameters to be programmed in the flash memory of the microcontroller (IP address, Nickname, and Server's MAC Address).  You can specify a nickname for the board, but I'm not doing anything with it right now.  When I do use it I will splash the name up on the screen while it is loading, so that the user can see what they're connecting to.

Remember to remove the jumper when you are finished with the Configurator program.  The Mach plugin will not be able to communicate with the board otherwise.

Troubleshooting guide: