You chose the installation for the T-D 3-axis Engraver driver shown below. First it must be noted that the only difference between all 3 different configuration is in the wiring and connectors. The Beagleboard and LinuxCNC firmware is identical.

Installation Instructions:

First let's dissect the driver chassis box and take note of its contents before doing a swap out with our Linux CNC beaglebone. First it must be noted that our replacement driver board derives its main power from a 7-28VDC connector. So we will need to reroute this to our LinuxCNC driver the 24VDC power. Our driver/beagleboard combination derives its main supply from a absolute maximum voltage of 28VDC input and then steps that down to the 5V/3.3V to drive the beagleboard. We therefore recommend that the pre-existing voltage on the chassis power supply be tested with a DVM (digital voltage meter) to make sure it sets below this maximum 28VDC threshold before applying it to our driver replacement! Please take note of the X, Y, and Z stepper motor cables, these will interface with the mating connectors on our BeagleBoard LinuxCNC driver board.

Likewise we see all the connections that must be made to our ready to go beagleboard with its stacked motor driver boards in the picture below. We provide the wires, power terminal blocks, and mating connector (not shown in the stackup picture below but still comes with it) to the already 24VDC supply jumper cable, you'll need to disconnect this power from the driver board in the chassis and then reconnect to our beagleboard as shown above. Always make sure that the polarity of + (red wires) and negatives (black wires) as shown below are observed properly if you decide to make your own power wiring harness.

We provide and up close of the power terminal connectors coming from the 24VDC chassis supply, one can also see the network cable coming in from the opening where the parallel port input used to reside. Polarity must be observed when connecting the Driver to the external power supply voltage. If the wrong polarity is put into the terminal blocks you'll destroy both the beagle controller as well as the motor driver board!!!

Use our provided wire nuts to connect the chassis emergency stop switch to the LinuxCNC emergency stop input wires.

Don't forget to mention adding Kapton Tape over connectors!

Standoffs for mounting are provided with the LinuxCNC beagleboard and driver board stackup solution. In this picture we drilled and threaded the two M3 screw (also included with the kit) through the top sheet metal of the chassis, so that our beaglebone sits close to the exhaust fan and upside down in the chassis. You can also mount on the bottom and remove the existing driver board to make room for the LinuxCNC driver. Obviously be very cautious when drilling you don't get metal shavings that can short out electronics in either the power supply or our LinuxCNC controller boards.

Usage and Troubleshooting:

Using your LinuxCNC Beagleboard plus stepper motor cape board stackup is as simple as plugging in the network cable. Turning on the power to the board stack, possibly needing to press a reset button on the motor driver board if their is a power on race problem. And logging into the VNC network with a remote desktop viewer. You can also move the files across from your local computer's hard drive files such a .ngc (gerber code) or .gcode to the beagleboard's folders by using a SSH (Secure Shell) client. These programs are readily available for free on gpl repositories. Your Desktop/Laptop OS will determine the correct binary download to obtain the free softwares to communicate with your beagleboard LinuxCNC OS, more on that later.

Before beginning on the communication and networking, we strongly recommend that you shut off your computer's firewall before trying any of the network commands below. A firewall blocking communication on a network is often times one of the biggest problems of failed networking and communications. By default the IP assigned to your beagleboard OS (Operating System) will be static address This must match your local subnet and not conflict with another device/computer that might have the same static IP address. You can verify the correct subnet of your computer on a LAN ethernet by opening a command/terminal window. For linux/mac you would type "ifconfig -a" without the quotes and hit enter, for windows you would type "ipconfig /a". The results will show your computers IP address such as or say or maybe Your subnet for that lan connection would then be the first 3 numbers between the dots if the subnet mask was Our first example being reported back by ipconfig would have also be the same subnet 192.168.1.X where X is don't care and thus see our default beagleboard as being on the same local subnet which by default is In either windows, mac, or linux you should then be able to type ping 192.168.15 from say your computer and a reply should come back with a ping of the beagleboard not timing out if it sees the board and is on the same subnet as the ethernet network. If you see your subnet is 10.0.0.X for example you need to tell us this so that we can personally configure your beagleboard at configuration to say instead. In fact we can set your beagleboard to any ip you wish to specify but please let us know when you buy it if you don't want the default subnet 192.168.1.X and fixed address of


You actually need two packages of software to communicate with your LinuxCNC beagleboard over the ethernet. One you need a VNC remote desktop viewer, I use the gpl free vinagre in linux mint. The remote desktop viewer will give you a window/viewer as if the Beagleboard remote operating system had a hardware monitor piped into your PC/laptop. Your PC/laptop acting as a dummy terminal/display for the remote LinuxCNC beagleboard. In other words you will be remotely connected on your desktop/laptop with a VNC connection to see an X window (virtual monitor) of the LinuxCNC server. Anyone who has used a virtual host or X window to another operating system will get the drift of what we are trying to say here on being remotely logged on and viewing another computer (in this case the beagleboard) through the ethernet. The second piece of software that will be required to move data files to and from your remotely connected LinuxCNC beagleboard will be a SSH (secure shell) client. In linux and these case examples I use the SSH client present in nemo/nautilus of my Linux Mint Desktop computer, which allows a file system very similar to the host directory file system . There are also standalone SSH clients like Putty, as well as Vinagre also supporting ssh servers. At the end of my elaboration I will try to give sources on the internet where you can download various SSH clients and compatible remote desktop viewers for Macs, Windows, and Linux.

Let's start with my case example of my work ethernet. The IP address of the LinuxCNC driver is at the default and the work network has a router at local ip address with a subnet 192.168.1.X and subnet mask obviously at The first operation is to connect the device into the ethernet through a patch cable. Power on the milling/LinuxCNC controller box. Do a warm reset after power comes up by pressing the reset button on the driver board as shown below:

Then open up a command/terminal and ping, until the ping shows a reply. If there is no reply then your computer is not seeing the beagleboard.

The first time we start vinagre/VNCviewer we need to specify VNC as the desktop viewer type, we also need to enter the IP address as shown below. If its the first time to start a connection to the LinuxCNC beagleboard your viewer might ask for a username and password. Use both "machinekit" without quotes for any username or password prompt.

Start the Linux CNC application.

We need to choose CRAMPS if its the first time we started LinuxCNC application, thereafter just click on OK.

After clicking OK wait about 1 minute for the linuxCNC package to start. At this point you will see the main application. You'll want to Enable the Mill as shown in the photo below.

To open CAM files for milling obviously we need to take the exported .ngc/gcode file and move it from our PC/laptop to the beagleboard Ubuntu OS file system. Then Open with the File->Open menu system of axis LinuxCNC application. To move the files over from the remote computer to the LinuxCNC host we will use SSH. This example uses nemo/nautilus in Linux Mint/Ubuntu however free software for Linux/Mac/Windows, such as Putty can also be used to SSH.

First time login will require that you verify the certificate by login anyway.

Afterwards we can just copy and paste or move the CAM files as shown below by dragging and dropping into the nautilus/nemo file system application folder. Notice we first descended down the folder hierachy of /home/macinekit/Desktop, you can place your machine files anywhere but we do this for convenience as the VNC window will automatically show the file show up on Desktop after the file is moved with the SSH transfer.

The VNC viewer shows the SSH file copied onto the Beaglebone Desktop.

A list of other SSH packages and VNC free viewers for Windows, Mac and Linux are provided below:

Free SSH Use the standard Nemo/Nautilus File Manager, Already part of GNOME, Non GNOME base Linux use FOSS/linux community to determine best alternate solution.
TightVNC free VNC viewer (java version OS independent)

Linux (As shown in these examples):
Free SSH Use the standard Nemo/Nautilus File Manager, Already part of GNOME, Non GNOME base Linux use FOSS/linux community to determine best alternate solution
Free VNC software for Linux. Many great choices available to FOSS, but we have had good results with Vinagre which is what is used in this manual. Also TightVNC is hardware/OS indifferent platform.

MAC (As shown in these examples):
Free SSH Use FUGU or
TightVNC free VNC viewer (java version is OS independent)

Other Adjustments and Configuration of your LinuxCNC beaglebone

We set the driver current to the stepper motors to the near maximum provided. If the current were set too low the chances increase of missed step, so on the error of caution (especially when our customer's first use the board) we went with the maximum. This of course can overheat the motors, so we suggest that you touch the motors in a long operation. If the motors are warm to the touch or very hot and hard to touch for longer then seconds but does not burn, then the current will probably be ok. On the other hand if you feel the motors in operation are getting near burning temperature you can cut back the current drive by using a jewelers to adjust the following potentiometers. NOTE: The potentiometers roll back to the same value in a full rotation, so its possible to adust by just 1 degree and actually go from a Maximum drive to the absolute minimum current drive to the motors.

Another configuration that may be necessary later is to change subnets or static IP of the router, one can set up a temporary network of the old subnet or use a crossover network ethernet cable and/or set your local router ip network to 192.168.1.X subnet initially. Then login to the beagleboard VNC remote server on that network. Then start a terminal (XTERM Desktop icon - right mouse click open) and open inside the beagleboard's LinuxCNC ubunutu OS, when at the terminal entry type in "sudo leafpad /etc/network/interfaces" followed by enter key. After the leafpad editor starts scroll down to the section:

auto eth0
iface eth0 inet static
iface eth1 inet dhcp

You can then set the address, network, netmask and gateway to whatever your new network will operate on. Then make sure to save the file and you have custom set the IP of your LinuxCNC to any address. Of course as stated earlier, we will request for the ip you'd like after purchase if the default ip address is not usable on your network then please let us know a new ip address that you want the LinuxCNC to reside.

The LinuxCNC configuration files:

You can find the configuration files by descending down the directory structure using left corner beaglebone window start, then choose the file Accessories->File Manager. Descend down the folder structure to /home/machinekit/machinekit-dev/configs/ARM/BeagleBone/CRAMPS. The two files that most of the LinuxCNC configuration are based on is CRAMP.ini and CRAMPS.hal. These files are already setup as default to work for your mill, you may want or need to change them for more specific changes. The two easiest ways to edit them is to open a XTERM window and type "leafpad /home/machinekit/machinekit-dev/configs/ARM/BeagleBone/CRAMPS/CRAMP.ini" and/or "leafpad /home/machinekit/machinekit-dev/configs/ARM/BeagleBone/CRAMPS/CRAMP.hal" without the quotes and the enter key. If for some reason you make a mistake on a configuration file and want to go back to factory default configuration, you can copy the default back over by running in a XTERM window "cd /home/machinekit/machinekit-dev/configs/ARM/BeagleBone/CRAMPS" followed by enter. Then type in the XTERM "cp CRAMPS.ini.bak CRAMPS.ini" followed by enter then another command of "cp CRAMPS.hal.bak CRAMPS.hal" and again followed by an enter. Now when you close and restart LinuxCNC will be back at default. The linuxCNC must be closed and re-opened for the changes to take effect.

Calibrating the axis length x, width y, and height z:

The device was default configured assuming a type of mill we have access to here. Your mill may or may not have the same amount of steps/mm. So we present the easiest way to find out if you need further calibration correction for the x, y, and z axis. Let's proceed as in the pictures below to see if the x-axis is calibrated and of course you'd have to do similar measurement techniques for the y and z axis as well.

Our steps will be to mark the first position of the mill with white tape, then issue the g0 x100 command to move the x-axis to position x=100mm (as shown in the superposition picture before/after below). Then calipers are used to measure the distance in mm from the beginning to end position. Hopefully this value reads 100 mm on the calipers, if it does not then we need to calibrate by correcting the SCALE entry in the CRAMP.ini file. There are 3 entries of a SCALE value, one for each axis x, y, and z. So be sure that the value you modify is the correct one when calibrating by changing the SCALE value. The x SCALE member will be located below the "[AXIS_0]", whereas the y SCALE will be under "[AXIS_1]", and the z scale value will be under the "[AXIS_2]. Generally speaking the x SCALE of your default CRAMPS.ini is set to 158.12, which basically is saying that LinuxCNC thinks there should be 158.12 steps/mm of the x motor. Now since I issue a command as shown below to move in the x axis by 100mm. If instead the calipers read say 150mm, then I would take 100 and divide by 150 and multiply by the previous SCALE=158.12 which means that the corrected SCALE would be 105.41. This would mean I should change the x axis scale to 105.41 from 158.12, and save the CRAMPS.ini, shutdown and restart the LinuxCNC application for it to take effect. The formula for newly corrected SCALE is thus =Expected (divided by) Measured (multiplied by) Old SCALE value

Conclusive Information about this Product

This product comes ready to install and replace a standard parallel port controlled mill driver. It's entirely OS (operating system) platform independent, as the host beaglebone acts as a minicomputer with its own local OS and linuxCNC application. Communication from your PC/laptop to the Beaglebone is via LAN ethernet cable of your local subnet. You will be expected to perform some electrical connections and some modifications to the configuration files as shown in this manual, but as one can see the usage and installation is actually quite easy for most with technical background. Total Installation time about 30 minutes. No expensive Mach3 or additional hardware is required, and no bulky old computer with parallel cables is needed as most LinuxCNC solutions require. Obviously the dedicated and fast beaglebone ARM processor gives extremely fast driver response times. The entire firmware is OpenSource and provided online as CRAMPS images and source. Further details of locations of these sources will be provided upon request if desired. Thank you all of the opensource community for this extremely economical and excellent product.

Common Troubleshooting and Issues

Symptom 1: Skipping, grinding, and/or gritty Noise when a servo motor turns
Cause 1: The driver motor current is either two low (see above screw adjustment) of a current output for motors, and/or the speed of the motor is too fast.
Solution 1: First check and adjust the motor driver current if set too low. Second, you may want to adjust speed of motor you need to open up the CRAMPS.ini files as listed above and search for the string STEPGEN_MAX_VEL, these should be lowered in value just until the eccentric servo sounds disappear. PLEASE NOTE that each axis x, y, and z should have a separate entry for STEP_MAX_VEL. X axis will be under AXIS_0, y axis will be defined under AXIS_1, and z under AXIS_2. Change only the STEP_MAX_VEL on the motors that are skipping.

Symptom 2: Milling mostly OK but sometimes it chatters or loses its X-Y position, often smaller bits will break all of a sudden even though prior cutting was good
Cause 2: Same as Cause 1. The driver motor current is either two low (see above screw adjustment) of a current output for motors, and/or the speed of the motor is too fast. In particular you should really be diligent on this problem on the z axis current adjustment or CRAMPS.ini AXIS_2 velocity settings.
Solution 2: Same as Solution 1. First check and adjust the motor driver current if set too low, especially on the Z-axis motor in a quick plunge rate but sometimes the X-Y axis as well can slip under cutting loads. Second, you may want to adjust speed of motor you need to open up the CRAMPS.ini files as listed above and search for the string STEPGEN_MAX_VEL, these should be lowered in value just until the eccentric servo sounds disappear. PLEASE NOTE that each axis x, y, and z should have a separate entry for STEP_MAX_VEL. X axis will be under AXIS_0, y axis will be defined under AXIS_1, and z under AXIS_2. Change only the STEP_MAX_VEL on the motors that are skipping.

Symptom 3: The X, Y, and/or Z axis move in the wrong direction, + direction is actually moving negative and vice versa.
Cause 3: The stepper gain in CRAMP.ini is negated to the correct magnitude of sign
Solution 3:Take note of the axis as we will need to find the correct location in the the CRAMPS.ini file and change the magnitude of the SCALE value for that axis. If the axis is moving opposite direction of expected on the X you will search for SCALE under entry "[AXIS_0]", if y axis then under entry "[AXIS_1]", and if z axis motion is backwards under entry "[AXIS_2]". After finding the correct SCALE value observe what it is equal to. If the SCALE value/number has a negative sign then change to a positive sign or remove the negative "-" in front of the number. On the other hand if the number is clearly positive as in missing a "-" or having a + then if course invert that numbers magnitude to a "-" in front. Save the CRAMP.ini setting and shutdown and restart the linuxCNC application windows inside the remote beaglebone host.