last update: 2012

This page is old and is here for the archives. If you want some cool bleeding edge stuff I would definitely recommend checking out developments on the BeagleBoard platform.

This is a build of a CNC control box using a mini-itx VIA Epia EK 10000G main board and a kit from Probotix. Many times there are CNC boxes sold containing only the motor drivers and their power supplies, yet with no computer to handle the operation of the machine. This project was a testing ground to implement a truly complete solution in one box. These are my trials and tribulations.


control box


The box came out pretty good, yet it's stuffed to the max. I could improve air flow through the unit. It doesn't get that hot after a half hour milling task. All the fuses for the motor driver boards are located on the front of the unit for easy access, and I also wired in some panel mount LEDs to show everything is powered.

I wired one main power switch on the right, a momentary push button switch for the main board on the left, and an emergency stop switch for the motor control.


The 24 volt DC power supply that came with the Probotix kit allowed me to directly wire the DC-DC power converter of the main board. I used the PicoPSU 60W wide input range DC-DC power converter for the main board. The main board maxes at about 22 watts.

I went for a slim SATA hard drive because I didn't want a huge obnoxious IDE cable in the box, plus most of the hard drives I own now are SATA anyway. I could probably neaten and route all the cables in the box better.

Overall the unit is pretty slim. I did have to alter the main board slightly. I had to slim the height of the audio port which jutted out of the box. That didn't matter much because I could care less about having audio from the box.

machine side software

I had no problems setting up the bios for the main board, just had to check that the parallel port was configured correctly. The VGA display setting in the bios for VIA Epia EK 10000G main board does not offer a wide selection of resolutions. Unfortunately, the monitor I have paired with this main board does not particularly like this.

I installed Ubuntu and EMC2 onto the main board from a boot disc I had created. No problems. Next I ran a latency test for the main board and found it to be around 35,000 nano-seconds under heavy processing.

Motherboard:VIA EPIA-EK10000G
CPU:1 GHz Via Luke
OS:Ubuntu 10.04 (Lucid Lynx)
Max Interval (1.0 ms servo thread):1028656 ns
Max Jitter (1.0 ms servo thread):35096 ns
Max Interval (25.0 us base thread):57195 ns
Max Jitter (25.0 us base thread):32356 ns

See this extensive list for a comparison of other setups.

Setting up EMC2 with the configuration wizard was easy enough, although I did have to invert a couple of pins on the parallel port. I set up the steppers to run at eighth step. The wizard is extremely annoying when you want to edit a couple of variables because it overwrites your entire .ini config file.

Right now I am using the AXIS interface for my mill tasks. I also setup the EMC2 .ini config file for image-to-gcode, which translates .png or .gif files to G-code. The AXIS user interface is fair and could be drastically improved. I would really love larger control buttons, the ability to change the layout colors and fonts, as well as a resizable display for the g-code. It would also be nice to edit the g-code right in the display and save it, instead of opening gedit, making changes, then re-loading the file in AXIS. Re-homing is annoying due to the nagging pop-up window. The message display is crufty and should be better integrated. Compared to the other interfaces that come with EMC2, it is the easiest to use and free.

I had some display issues with the AXIS 3d display. This was due to the crappy onboard video of the S3 Unichrome Pro VGA Adapter. From the EMC2 troubleshooting doc, it says to either try out a VESA driver, or install a software based OpenGL rendering package. I first tried the VESA driver route and found that it does not play well with my widescreen monitor (1440 x 900). I then installed the suggested OpenGL package, which fixed my issue.

- -

I am using Samba for file sharing on the Ubuntu CNC box to be able to mount the networked drive in OS X. This allows me to drag and drop files onto the Ubuntu CNC box's drive, ready for machining.

I set up Ubuntu to launch EMC2 on startup with Axis fullscreen. To launch Axis fullscreen you have to create in your home directory the file:

And place this in it and save:

This is the kind of thing I really dislike about using Linux. Why is this not hard-coded into the application as a setting? So now I have a another file I have to manage sitting invisibly on the system where I will never discover it. I guess I'll do it myself...

I have tried running EMC2 over ssh using X11 on a Mac. It does work but the delay in controlling the machine is much too painful. Maybe the encryption taking place over the ssh connection is causing the delay. Just some food for thought.

The terminal command I used for this is:

design side software

Currently, most of my CAD work is being done in the pre-release of Rhino for OS X. As with any software still in development, it has its issues. Yet, it is very easy to use, native to the Mac, and can import and export a variety of file formats. Rhino on a Mac will only will work with 10.5 and up.

I have written a python script for use with Rhino for Mac, that outputs G-code. I need to add a tool path optimization routine. Check the Rhino.Python forums for how to install and use iron python with Rhino on Mac OS 10.8.

I can now sit down at my OS X machine and design away, then dump the NC files across the network onto the dedicated Ubuntu CNC box.


other workflow possibilities

There is the extremely obnoxious and painful route of using Blender with a G-Code generating python script. Bleecch. This would mean exporting a DXF file from a CAD application, importing via Blender, running the python script, then lastly, saving the NC file. I just can not stand to use Blender due to its horribly confusing user interface, non-native feel, and overall bloat.

I think there may be a plug-in for Google Sketchup to export G-code but I have not looked into this.


I have upgraded my CNC computer to the SolidLogic Atom JT01 Fanless System, which is based on the now discontinued Intel Johnstown main board. This board has an on-board parallel port pin header which I had to route out of the box to connect up. Compared to my last mini-itx board, this one blows it out the water. Super compact, durable, and boots super fast with a solid state drive.

all media, unless noted, © 2017 mikelow.