Software Advice For Anyone Thinking About A CNC Router

Excellent results can come from a small CNC router, but don’t forget the software!

CNC tools, whatever their flavor, can greatly enhance your “making” or DIY ability. My current tool of choice is a CNC router. Being familiar with a manual milling machine, the concept seemed similar, and the price of these is quite reasonable when compared to some other tools. As described in this post, my machine is a Zen Toolworks model, but there are certainly other options to visit like this Probotix V90 model noted recently in this post.

Although any number of CNC router models look great in videos and pictures, rest assured that even the best machines require some patience to get one running satisfactorily. Setting up the machine can be a challenge, as well as figuring out what your machine is capable of, but one thing that might slip peoples’ minds is the software involved. Read on to find out all you need to know the basics of what goes on behind the scenes to “magically” produce interesting parts.

With a CNC router run by a computer (as opposed to a dedicated controller), you have three parts in your tool chain: Computer aided design (CAD), computer aided manufacturing (CAM), and a machine controller package. There are free and paid versions of each of these.

Design Your Part

Design courtesy of ESTLcam
Design courtesy of ESTLcam and my idea to shrink the knife block to make a “warrior dart holder.”

The first step is to draw your part. To generate my part drawings, I’ve experimented with Inkscape, a vector graphics editor, and Draftsight, which is more or less free AutoCAD. Inkscape is a really cool program for generating more artistic pieces, like this random tree that I cut a while ago. If you want to do something more dimensionally-driven, my preferred tool is Draftsight. I’m very familiar with AutoCAD, and it’s available for Linux, Mac and Windows.

If you want to get into 3D design, Sketchup seems to be more-or less the standard for casual makers/hackers/etc. Perhaps I’ve been spoiled or brainwashed by quite a few years of working with Pro/E, and Solidworks to a much smaller extent, because I found Sketchup frustrating. I find Pro/E (now Creo) frustrating as well at times, but I’m paid for that frustration.

Regardless of what style or design program you choose, if you’re not familiar with the format, plan to spend a decent amount of time figuring out how to generate your parts.

Generate Gcode

Mehcam screen per my review
Meshcam screen per my review

G-Code, unlike what some mid 90’s rappers would have you believe, stands for General Code, and is what directly controls a CNC machine. You can write G-Code by hand, and for very simple circles or lines, this might be practical. For most circumstances, however, G-Code is much easier to produce using a CAM program to translate your CAD model into this format.  I’ve tried out several packages, and all have their advantages and disadvantages:

  • Gcodetools for Inkscape – Free, great for art generated on Inkscape. Somewhat limited in capability, and the documentation may take a little time to figure out.
  • ESTLCam – Inexpensive at $35, and it has a good-looking interface. More of a 2D environment, and you can draw your parts on this program if you like.
  • CAMBam – Reasonably priced at $149, with a very good free trial period. I primarily use this CAM program.
  • MeshCAM – Really excellent looking user interface, and it has some neat features. Along with this polish, it is more expensive than some at $250. It’s geared more toward 3D users, so it wasn’t a great fit for my Draftsight-centric CAD style.
  • Custom CAM routine – If you’re a programmer (or pretend to be), it’s possible that you could write your own Gcode generating script.  I’ve linked to a post on my “pixel machining” Python routine if you’d like to see an example.

Along with actually learning the software, you’ll need to consider what kind of speed your machine can actually handle, and what to do so you don’t “crash” your machine. Your CAM program is where you set up your feeds, speeds, depth of cut, and other parameters.

Control Your Router

Mach3 to control your router

Once your CAM program spits out possibly several thousand lines of G-Code, your machine control software is what gets everything moving. I use Mach3, which seems to be a common program for hobby machine control. Like everything else, it has a learning curve, but overall I’m quite happy with how it performs.

One weakness I ran into with this (and that is probably true of other programs) is that you need an actual parallel port for it to work properly (not a USB-parallel adapter), and it’s not supposed to be run on a notebook because of possible power management issues. I’m sure there are workarounds, but in the interest of saving time, it might be a good idea to just dust off (or purchase) an old computer to run it on. It will run comfortably on slightly antiquated machines, so for $150 or so, you can have a computer that will run your router.

Another option would be LinuxCNC. When I started leaning CNC, I was almost entirely unfamiliar with Linux. The challenge of leaning a new OS along with a new router seemed like too steep of a learning curve, so I haven’t tried this option. As I use Ubuntu quite a bit now, I might take a different track today. If you have worked extensively with LinuxCNC please share you experiences by leaving a comment below.

To wrap things up, here’s two CNC videos that I’ve made.  The first is me engraving a Tiger Paw, whereas the second video is a tutorial I did on how to engrave a logo using Inkscape.  A CNC machine is a great addition to any shop, but as I hope I’ve pointed out here, not without its challenges!

Please note that separate from this post, I have received special pricing and/or samples in order to try out products from the companies representative of Zen Toolworks, Mach3, ESTLcam, and MeshCAM.

Jeremy Cook is a Mechanical Engineer with a degree from Clemson University, and works in manufacturing and process automation. Additionally, Jeremy is an avid maker and former Hackaday staff writer. When he’s not at work or in the garage, you can find him on Twitter @JeremySCook, his projects blog, or on his photography-related blog

128 thoughts on “Software Advice For Anyone Thinking About A CNC Router

    1. I’m not sure if there’s an “official” definition but I’d use router to describe a machine that’s suited to cutting shapes from large sheets of plywood or MDF and mill for something that works on chunks of metal. Obviously there’s a fair amount of overlap there.

    2. CNC mill is a generic term that covers several classes of machines. A CNC router is technically a CNC mill too. But saying a machine is a CNC router is specifically designating what the spindle mechanism is. Some other assumptions can be made about CNC routers as well that are generally true too.

    3. Routers tend to have high speed spindles and work with large sheets. Often wood and plastic but I have seen commercial machines designed for handling aluminum all day long.

      Mills are derived from manual milling machines with controls stuck on them. Modern cnc mills have very little resemblance to their ancestors. They will do any material you can think of, pretty much. Though most people avoid wood.

    4. Traditionally a mill would move the workpiece, allowing the spindle to stay still, whereas the spindle on a router moves and the workpiece stays still. Also, a mill is generally meant for metal cutting, where a router is meant for wood/plastic. The effect is similar, and there’s definitely some shared capabilities, but it’s a different means to an end.

      At least that’s my thinking on it.

      As macona alluded to, the line gets blurred a bit with modern CNC machine tools. Even my little ZTW hobby router is kind of a hybrid; the bed moves in the Y direction, where the spindle moves in the X and Z direction.

    5. Sorry, I don’t think others understood your question. A CNC router takes a flat sheet of material and cuts it out in either 2D or 3D shapes (think sign making, guitar bodies or cabinetry parts). See YouTube for lots of examples. A CNC mill, on the other hand, turns stock. (Think turning wood on a lathe – though mills generally are used for making metal parts.)

      1. In addition, there are various designs for routers. Some have designs where the work piece stays stationary and the router moves on a gantry. Others the work piece moves on a table and the router head stays stationary (less popular). Both mills and routers can cut many materials from wood, metals, plastics, etc. with the proper bits though cutting harder metals is very difficult for a router head. Routers might be…well, ran by actual wood routers or some people have upgraded and opted to put spindles on their machine (nearly identical setup but the motor is designed to run for long periods of time without damage. Some are even liquid cooled.)

        In short, to clarify from what others are saying the type of material or how it cuts the material isn’t what differentiates between router and mill. It is the setup (mainly) and their capabilities. Router – flat stock lying down (unless we are talking 5 Access routers – then think automated sculpture carving capabilities) and mill – turning parts.

      2. You are confusing the issue here. With a CNC Mill, the part is stationary while the cutter is moving, except in the case of 4/5 Axis machining centers, where the part is moving as well in relation to the cutter.

        CNC lathe, the part is rotating while the cutting tool is mostly stationary.

        I know it is nickpicking, but, I was in CNC machining for 20 years.

        1. That is the way it was explained to me at school. No one ever said the zed could only go up and down. We just got our 3d by useing 5 axis. Theory is the same tool spins not the part. MILL, Part turns not the tool. LATHE , CNC Computer Numeric Control.

  1. @John: Perhaps, CNC router is just for wood, while CNC mill could cut any materials?

    Inkscape is great, but there is some learning curve if you want to design in it.
    If you have just a black-and-white image, and need to cut out the shape, Inkscape will easily generate smooth g-code for you,

    LinuxCNC is great and much easier to use than Mach3.
    Also, LinuxCNC/EMC2 can mill bitmaps (for example, png files) using pixel brightness as a Z axis.

    Also, there is Heeks CNC, which produces G code. It has limitations, and occasionally crashes, but still quite usable.

  2. I am a hobby CNC explorer. Yes, there is a learning curve, but half the fun is learning, so I enjoy, rather than despise this part.

    My CAD/CAM solution is BobCAD. It’s tricky to learn, but does the job for both CAD and CAM. I bought a used version from eBay and it works fine. It has both 2D and 3D options for either engraving or full 3D cutting.

    Mach3 is ok, but my PC crashes every once in a while, even after eliminating most of the causes.

    My CNC machines are modified Sieg (3D) and Enco (2D) knee mills. You could buy something form Zenbot to Tormach, depending upon your needs and your budget.

    Unless you are into the engineering aspect, I would recommend buying something off-the-shelf, or something from Craigslist that meets your buget, then upgrade or build one your self later on. Tackling on the CAD, CAM, integration, PC, CNC building all at once can be daunting.

    This hobby can be handy: I just carved out of aluminum some quadcopter legs that are no longer made.

    good luck.

    Hackaday rocks.

  3. How is this a hack? While I do see the value for having guides like this available on the internet, this is not why I come to hackaday. I have been seeing a lot more posts like this lately. I am not saying that they are not good material, but this is not why I come here.

      1. Yep, I’ve noticed the difference. I like it. There are still lots of interesting projects, but the mix is different. Since what I’m looking for is inspiration for my own projects and a chance to learn new (to me) stuff, I’m very happy with it. For others, perhaps a “just the hacks” filter would be a good thing? Sounds like a straightforward hack! ;)

  4. Anyone considering using Mach3 should get some of the story straight from the horse’s mouth so to speak. Search for “Mach3 Plug-In Writers Bible by Art Fenerty” to see what a load of horse pucky that stuff really is. Finding out exactly what happened to Mr. Art Fenerty might be an interesting exercise too. Some say he retired, others say he disappeared like a thief in the night. His departure was a rather abrupt thing, that’s for sure.

    Something’s rotten in all of this. Anyhow, also be aware that both Mach3, and LinuxCNC are based off the same NIST code base. Just one guy went one way with it, and another team went another.

    Now if after all of this you’re still seriously considering using an application on Windows for mission critical machine control you should seek professional psychological help. Because you’re nuts!

    1. Mach3’s problem is not that it runs on Windows. The problem is – alternative free software (EMC2) is much easier to configure and use. I have got Mach3 on a CD that came with motor controller. I gave up with it despite the instructions and screenshots that came with the controller. Then I installed LinuxCNC with EMC2, configured it and started using with no problems.

      I disagree about Windows. I do control multi-million-dollars hardware from Windows 7 PC at work, and it runs for weeks with no problems. Yes, Windows 95 was unreliable, but that was long time ago.

      1. Don’t forget the realtime aspect of it. I’m not all that familiar with Mach3, but Windows and realtime aren’t the best friends. I think people have worked some expensive things out for industrial solutions which offloads stuff onto a dedicated controller with some brains.

        But for the average person with Mach3 on a desktop… I think the lack of realtime is a major disadvantage compared to LinuxCNC. In that sense, the problem IS that it runs on Windows which does not have comparable realtime add-ons like RTAI, Xenomai or even RT-PREEMPT.

        1. The realtime stuff is becoming less important as motion controllers become more common.

          These run the g-code; not mach3 or LinuxCNC etc; and are connected to PC via USB or ethernet. Realtime is only for the parallel port, which may finally vanish one day.

          1. Motion controllers will never be as common as surplus PCs are now. Your parallel port assertions are incorrect for several reasons too. First you can put a parallel port into any PC with an open slot. You can also use other kinds of IO boards for real time output.

      1. Is the machine itself running Windows? I know we have Windows 7 running on our shop computers, but they just DNC the program over to the machine’s Mazatrol controller, which doesn’t run Windows.

        1. Yes, they run windows. Makino Mag 1 and two Makino A82s, Amada EM2510 and a Bystronic BySpeed 3015. All run windows as the control software.

          I used to service CNC Plasma cutting equipment for Airgas and Hypertherm used Windows XP on their CNC controls too.

          There are real time extensions for windows that will do the same thing as the real time kernal in Linux.

          1. Yep, it uses some tricks to grab the parallel port directly from what I understand. There is more info out there but I never have bothered since it really does not matter as long as it works. It has never been the pulsing that has given me real trouble, it has been other software glitches.

          2. From looking at the documentation, they put up a Windows-like interface on the controller. There’s no way there aren’t PLC’s saving your bacon behind the scenes.

          3. I came across a post a few years ago that discussed this problem.
            The solution was to use a older VBX file from Visual C++ 6.0. It turns out that that particular parallel port tool allows the program to take real time control of the parallel port.

      2. Might be running an embedded version of Windows. Same code-base as ordinary Windows for desktops and laptops but has a system that does extreme customization of the install so it has only the components absolutely required for the system it will be used on. XP Embedded is still very commonly used, though Microsoft did an update in 2009 which was still pretty much XP based before they released the next version which is (IIRC) Windows 7 based.

        AFAIK, the only time Windows embedded has been used on a consumer PC was Dell Media Direct (through version 3.5) on some of their laptops. Through version 2.0 it was installed in Host Protected Area though it could also be installed in a normal hidden partition on non-original equipment hard drives. DMD 3.0 through 3.5 used the reinstall partition scheme of earlier versions by default. After 3.5, Dell abandoned the special partition and Windows Embedded, making Media Direct simply a multimedia program running in normal Windows.

        Windows Embedded allowed for a faster loading version of Windows and the ability to run normal Windows multimedia software, unlike the similar scheme used by Hewlett Packard that ran a custom build of Linux for their fast booting CD and DVD playing mode.

        On a CNC machine it would be possible to create a special install of Windows embedded that has no extra baggage, and has special drivers for realtime control of machine control hardware.

        Mach 3 has its own parallel port driver, which I assume does some tricks like that. Contrary to popular belief, it is possible to do anything with the parallel port that was possible with Windows 9x or DOS. Mustek was one of the first companies to prove it when they released Windows 2000 (and later XP) drivers for most of the parallel port scanners they’d made, including many discontinued models.

        Meanwhile, UMAX dropped support for all their parallel port scanners, claiming it was “impossible” to use a parallel port for scanning in Windows 2000 and XP. A while after Mustek went and did the “impossible”, UMAX released 2000 and XP drivers for some of their parallel port scanners.

        Claiming something is “impossible” to do in Windows just means you either can’t figure out how to do it or just don’t want to try.

          1. In fact prototrak can run realtime on any version of windows. Including x64 versions from 9x to 10. There are runtimes to take realtime ownership of com ports and parallel ports in win32 and 64 that have been around for years.

            Why is this discussion so off topic?

  5. My background is graphic design. When I first started looking into CNC drawing programs, I made the connection that Adobe Illustrator can export .DXF and .DWG files. For me, Illustrator is the fastest/easiest program to create complex shapes, align multiple shapes, and nest parts.

    I am also a big fan of V-Carve Pro. It’s expensive, but I find that it is a profoundly powerful piece of software that really helps take the edge from the learning curve.

      1. I own a legal copy of vcarve pro but was kicked off their forum without warning when I made a post asking about tool path issues. They don’t like users posting about “bugs”. Especially if supporting documentation is included in the posting.

  6. +1 for LinuxCNC
    There is a lot of LinuxCNC vs Mach debate. I once wrote 6 pages of arguments in favor of LinuxCNC. The only reason for Mach is that it runs on OS that is familiar to majority of potential users.

    1. How does LInuxCNC work with modern machines? In other words, Mach III is limited to Windows XP, won’t work (very well) with newer operating systems/machines. Mainly because modern hardware treats the parallel port differently than older machines.

      1. Your question is a bit tricky to answer because LinuxCNC is an open source project. Being such there is no single cut and dried, here you go, this is the latest code you can have answer really. You can build the RTAI kernel extensions on a very up to date kernel version and run that with the LinuxCNC code.

        Admittedly the LinuxCNC ISO image is pretty stale today. Personally I don’t use it. I did my last build on Debian Squeeze, but I was looking for something supported, not necessarily the latest, or the greatest, I could have. Plus Ubuntu just makes me want to puke, but that is another matter entirely.

        The strength of free open source is the freedom it gives you. I take full advantage of that too with LinuxCNC. I almost got LinuxCNC to work on Gentoo, but managing to do that is a real bitch. Knowing what I know today if I gave it another try I could probably do it. I had one obscure problem that I’ve since found the answer to that stopped me the last time.

        I was getting some pretty insane latency scores on Gentoo. Like 1750 nanoseconds. I was only using an old X2 AMD CPU too.

      2. The key to compatibility is to stick with the same bit version of the OS. Some 32 bit programs will not work on Win7 x64. I found this to be the case with Epson’s scanning software. It will not connect to the scanner over the USB port on the Win7 x64 but works fine on Win7 32bit.

        So if you want to avoid issues with your 32bit hardware, stick with the 32bit version of Windows.

    2. Another +1 for LinuxCNC. In response to “will it run [insert thing here]” the answer is yes it will run anything, including complex articulations like delta robots, SCARAs and Stewart platforms, with caveats. The onus is placed on the user to learn the system and then reconfigure the INI and HAL (and perhaps ClassicLadder if that’s your chosen route) for their application.

      LinuxCNC is an insanely robust and underutilized platform, IMHO, and its potential is completely wasted by the fact that what little documentation does exist is arcane in the extreme. That said, I bothered to learn Linux just to be able to use LinuxCNC effectively…

      Check my webpage for some example HAL and INI files

          1. And you sir are equal in ignorance.

            The proper way to suggest a website is to place a link to the website within the post with the website URL itself shown as the text.


            No one will intuitively think that if I just click on the guys name, I will be taken to his website. Most people will assume that clicking on the guys name will take you to his profile page on the website where his comment is posted and is typical of websites.

  7. Another option for CAD and CAM is TurboCNC with the CAM add on, you can get older versions for less that $100 on ebay and it is actually a pretty good package. We taught and used it at TechShop when we were still there.

    I am using LinuxCNC for the first time on my current project, a 400W laser welder. I need it because I need to control a massive amount of IO to control the laser. Getting some things to work right in linux has been a PITA.

      1. It is as simple as getting the ISO image and booting it. You don’t even need to install LinuxCNC in order to run it. LinuxCNC runs live. You can plug LinuxCNC in and go. The best LinuxCNC installs don’t use hard drives at all really. Because shop environments can be harsh many choose to run off a CF card. But to run a live session you can use a USB flash drive.

        Oddly I can’t find good instructions on the net for how to do this. If it were me I’d download the ISO then use unetbootin to write the image to the flash drive. The LinuxCNC ISO is based on Ubuntu, but it isn’t exactly Ubuntu so generic Ubuntu instructions wouldn’t quite work. Choose the ISO image option in unetbootin. I just checked and LinuxCNC isn’t a menu item.

        Some LinuxCNC users and devs hang out in #linuxcnc on You can ask them if you get real stuck.

        1. I’ve heard P4s aren’t particularly good at real time latency. I have one but I never benchmarked it. For a little while I was using a P3, and it is kind of crappy. I run about 18,500ns with it. Now I have a 2.5GHz AMD X2 and it can score about 7,500ns. Which isn’t too shabby considering that I only paid $5 for it. If I were to buy new I’d go with an Intel Atom. They’re the best bang for the buck.

          Latency scores are a funny thing. The highest performing PCs aren’t always the lowest latency machines. Real time latency isn’t something computer users generally have any grasp of. It isn’t a spec Tom’s hardware is really publishing.

          Here’s a chart that needs to be taken with a grain of salt because many there don’t know how to configure the software optimally. Knowing what one is doing can make a lot of difference.

          But it may give some an idea of what hardware can do what. The second time column is the important one for steppers. Lower is better of course.

        2. Wow, if you found that easy at 18, you’re doing better than me :). It is nice how you can use old systems with the CNC projects. My first PC eventually crapped out on me, but considering what I paid for it, I wasn’t too angry.

          1. LinuxCNC can run on old systems but you may suffer a performance penalty. I was only able to achieve 18,500 ns latency on a 1GHz P3 I have LinuxCNC on, which isn’t exactly stellar. That machine can’t run the Axis front end due to the graphics adapter in it either. Something with that video card and any GL program would cause terrible latency spikes.

            Later I was able to procure a 2.5GHz AMD X2 and it performs much better.

  8. I have mini mill that came w/ a presetup computer w/ mach3 that I used for about 2 months. I then tried out linuxcnc and have been using it for maybe 4months. Since I used both pieces of software let me start this writeup with a bulleted list.

    * Nice well written plugins (called wizards) for simple functions, but most cost money. Worth it as they aren’t super expensive, but they are not free (newfangled solutions has a really nice suite of em)
    * Wizards don’tseem to be the easiest thing to write yourself
    * Lots of buttons on the screen, so if you know what they mean it is very informative, but super non-intuitive
    * Depends on windows running in a real time capacity, which is non-trivial
    * Costs money
    * Setup/config is spread thru several different screens and menus, which can accidently hide the one you need, or don’t realize you need
    * Uses standard g-code so you don’t need to worry too much about how it is generated

    LinuxCNC, formerly known as EMC2
    * Free and open source so easy to customize
    * currently runs on a RTversion of ubuntu which you can download as a pre-rolled package so SUPER easy install even if you don’t know what ubuntu is.
    * Linux is good for old computers, and yyou need a parallel port, so it’s a happy combo
    * Intimidating if you need to dig in deep and configure it, BUT
    * Popular enough there are pre-configurd setups for most common machines so you can often use a default config and be good-to-go
    * configuration is nice and centeralized to 2 text files you can manage easily AND copy paste into the forums for help lol
    * uses standard g-code so most generators will work for it.
    * NGCGUI is a graphical tool for AXIS, the GUI, that makes plugins (similar to mach3 wizards) easy to write, also there are a few free ones out there on the web, and probably soon to bea TON more with these things getting more and more popular
    * GUI is pretty bare, which actually made it better for me than Mach3, seee why below

    My mill came with a pc with Mach3 all setup on it for me to use, but I had a lot of issues with it. I am pretty sure the problems came from windows, not mach3, as the glitches were computer wide, not just in mach3. I decided to try linuxCNC rather than fix the windows install as in my experience linux can do wondres for old machiens and I was right! on the same computer Linuxcnc made all my hardware issues go away, and I was up and running in an afternoon. Now I say the more bare GUI(graphical user interface, the screen you see with all the buttons when you open a program) was better for me than Mach3 because I had to look for or add functions I wanted to use them, and ones I was not using were not shown/hidden from me. In Mach3, there are MANY buttons, and some have misleading names. I occasionaly discover buttons do not do what I thought they did, or that settings taht are on are actually off since I thought something about the button (color, shading etc) meant it was on but it really wasn’t. In linuxCNC since I would need to setup such a thing, I would be forced to learn a little more about it and avoid making stupid assumptions. casual Idiot proofing if you will. Not really a shortcoming of Mach3, but a shortcoming of me, but hey this is an opinion piece! Also the linuxcnc forums are full of some really smart folks that helped me out massivly. one user made a magical free tool that will take exported Mach3 setttings and convert them to linuxCNC settings that can be imported, making teh switch over that much easier. I also like that the linuxCNC g-code use etc seems to be much better documented and easier to understand than Mach3, there seems to be a lot more info out on the web for the casual reader to dig thru and figure out how to do what it is you want to do.

    Now to use your machine a good CAD package is a huge plus.. I grew up with Solidworks and Inventor, so it is so so so so hard to look at the free offerings and pretend they even arethe same type of software…. Everything free is rubbish (relativly), BUT yougotta do what you gotta do.
    FREECAD is a good starting point, make sure you use the latest version, 0.13 is latest and there is a 0.14beta available. Ubuntu may try to install 0.12 or older and holy god is it buggy, stick to latest releases! Lack of parametic modeling (or my inability to figure out how to do it…) is a huge huge huge – in my book.
    OpenSCAD is second since if you can’t model parametically, might as well sketch it on paper. It is a bit tricky to learn, but as far as programming languages go it is very very simple, if a little quirky, so you can probably pick it up pretty fast. Very worth it to as not needing to start from scratch to tweak a design is a big time saver.
    Eagle is another option, but only for making PCBs. However eagle or any other tool that can make a file for getttinga pcb etched will work, as there is a tool called PCB-gcode that will take your pcb design and generate gcode for either piece of software
    variCAD – Here is an interesting one. A cad package that runs in linux windows and mac. I never heard of it untill a few monthsago, despite looknig for such a thing many times. It won’t blow your socks off, but it does seem to work quiet well. not the best user support, but it does exist, and compared to most other non-free software it is VERY affordable. userinterface reminds me of CADKEY circa 2000 or whenver it was I used it all those year ago. Deffinitly worth a try tho, if you want to stay all linux, it is probably worth it to learn this.
    Alibre/geomagick – windows only, but the only other contender for the title of “good afordable CAD software” that I have tried. They have a cheap personal version available. I tried it briefly (like 3 hours) but need to give it another shot. The big huge plus for me with this one is if you upgrade to a higher quality package, you get version control, which is THE BEST THING EVER. I do cad for a living now and appreciate its beauty. of course I have no idea how good alibre’s version control is, but it exists, and is not 15k like the next cheapest software package would be.
    Draftsight – Go try this out. 2d only, but I bet if that is all you need,it is better than anything above. Let the record show I am aboutto try it out for the first time, untill recently I have just had access to all the expensive software I needed to do my CAD stuff, or I would have tried this out earlier. Coming from a repu
    Blender – another free i think option, supposedly better for organic design, but not ideal for engineer/parts design, I have 0 personal experience with it, just feel like it is too popular to leave off the list.

    CAM software in my dictionary is the stuff that takes a digital model of something in some form and spits out g-code for your machine to use. There are many options to choose from, and they are generally expensive and do some CAD (the design of your part) stuff as well. masterCAM is the big dog in that field as I understand it for the modestly priced software, but still far from cheap.
    PyCAM is option 1. It takes a 3dmodel and generates g-code for you. It has trouble with certain versions of python, so read up if youget an estimated 4 days to process yoru file like I did! so far however it is the most promising free tool I found, ther is not much outthere. They have an easy to find website w/ some basic info on how to use it. It is far from complete tho
    REALIZE is an option for 2d stuff, and despite what you think, when you get a mill you are going to be doing a LOT more “simple” 2d stuff than 3d for a while while yo uget the hang of everythign and realize that a Mill or router is not the same as a 3d printer and much more limited in the geometery it can do. You can find it up on github or the dude’s original website, it seems like it is unlikely to be updated anytime soon tho.
    Hand written – your own g-code generator is far far far from asimple task, however hand written g-code is actually not too hard. A calculator will let you figure out a lot of things, and if you throw in some variables you can take a common part you make and paramtize it pretty easy to quickly change things. I did not realize this untill after I had had my mill for a month or two, but g-code can use FOR and WHILE loops among a few other basic progamming whiz-bang features, so it is actually VERY possible you are best off doing a quick doodle on a sheet of paper and then hand-coding the tool paths, rather than fight to make it in CAD, fight to import it into CAM, then massage the CAM into happy output and make sure the output is good for your machine. LinuxCNC very easily supports your own functions, and I would assume mach3 does as well but I haven’t checked. You can simply save a snippet of gcode in your custom function folder, tell linuxCNC where that folder is and use it over and over and over for simple shapes or even a common feature you make, say a company logo or bolt pattern or whatever!
    Skienforge – I remember when I started using skienforge for 3d printing it had a mill option. I have never used it but it does exist and it is free, so those two qualifications make it on my list of things to try. The fact it is maturing so well w/ the reprap crowd makes it that much more promising to me, vs the millions of abandoned projects on the web, and in fact I have no clue as to the status of the pycam community, and I am pretty sure REALIZE is not about to be updated anytime soon.

    well this post got out of hand, but I once I started writing i realized just how much I would have loved it if I had known some of this earlier on, so I felt the need to keep writing. I started “needing” to konw about g-code when I started usign 3d pritners about 3 years ago (built 2 so far!) although in 3d printing you kinda go straight from model to print, you ~never really look at or think about the g-code, jsut the gcode generator. I have been operating my CNC MIll for a few months now andlove it, but I already need a bigger better faster one. Mostly just biggger tho. For the record I am a mechanical engineer and a machinest, I have not been compensated by anyone for this post and have 0 affiliation aside from being a user of most of the software above. However hack-a-day is plenty welcome to send me a check for this info. I have plenty more if they want a follow up ;>)

    1. Oh I guess I should make a quick blurb on hardware, even tho this is a software post. You actually DON’T need a fast modern pc to do all the stuff needed to run your machine. It will help for the CAD stuff, as CAD packages can really work out a computer, but for the actual execution of the G-code almost any speed processor will do, even a PII I have heard of as working fine. IT is not PC speed that matters, but “latency” which is a very specific way of measuring speed. It is VERY HARD/IMPOSSIBLE to predict the latency of a computer based on its specs. The good news is you can check your latency using a LiveCD of Ubuntu with linuxCNC pre-installed on it. Plenty of info on that on the web for you. You do however need a real parallel port on your computer. The easiest way however is to ask online/search the forums for what computers other people are using already and just copy what they ahve. There was an Atom mobo/cpu combo that is no longermade but folks still have in stock that was a popular cheap choice, again the info is out there. A big tip I got is get a graphics card, ANY graphics card adn your latency may improve massivly, so my 12+ year old PC is now happily running my mill. Another option is beagleboard. I would have bought one immediatly if I had known waht it was back when I bought 2 raspis to learn on.(remember I am a mechanical guy, pcs are tools to me, not toys) Since CNC stuff is mostly industrial mfring up untill recently, hardware moves very slowly in that world so parallel ports are still god, lots of stuff runs thru them, or purpose built PCI/PCIe cards (check out mesa, but even having used CNC stuff for a while now, browsing thier site I still can’t make heads or tails of what I am looking at…) so it is very easy to expand it seems. HOWEVER don’t get tricked like I did, I thought “hey my repraps use arduinos, i bet in the future I could ditch the PC and just have an arduino and raspi hidden udnder my workbench” but nope. I guess CNC machinging utilizes the full power of g-code a bit more than a reprap currently does, and will stress a raspi to its limits and an arduino just isn’t up for it. But with most of you nerds back room full of at least 20 machines “too old to do anything useful” why worry, you probably already have the box you need for a CNC. Save that money and speand it on a touch screen monitor.

  9. I have tried a lot of CAD programs but the learning curve always gave me trouble, I found Delta Cad over at and found it easier then most CAD programs, I also found Cut2D over at easy to use to convert the CAD files to GCode.

  10. It troubles me that the writer of the article doesn’t understand why a parallel port is so critical (or some sort of real hardware connection…like a Mesa card). It’s latency!!!!!! You can’t run a real time process through USB. Let alone through a PP-to-USB adapter. This tells me the writer hasn’t build one of these machine before and doesn’t understand the underlying concepts.

    I have used MeshCAM. At first, the interface seemed great. After messing with it for a while, I found it lacking features and with bugs. You end up editing a lot of gcode before it’s really usable. But it’s only $250 and I am need of features of the $1,000-2000 CAM packages. So, it’s a different set of expectations and resulting features.

    LinuxCNC is THE way to go. I have one LinuxCNC 3 axis mill. I am just getting started on a larger mill. The basic configs are easy to setup, but once you get into modifications and customizations, the learning curve becomes very steep. But LinuxCNC is so insanely powerful. I believe some OEMs use LinuxCNC and just dress up the interface.

  11. I started out 3 years ago on a chinese cnc router with very crappy software to run it. You’d lose your origin all the time and had no way to use the machine homing switches correctly. I quickly converted that over to linuxCNC (10.04 back then) which gives a much more reliable control. Too bad the axis interface is a little complicated, esp. two buttons next to each other, one (home) only used when initialising the machine, the other (touch-off) doing conceptually nearly the same, but for each workpiece. it is quite easy for new users to press the wrong button, ignore the warning and ruin their workpiece.
    For gcode I am moderately happy with deskproto. Very well suited to 3D milling, but a lot less nice for 2.5D, which you tend to do a lot with a 130x245x9 machine…
    To everyone swearing by mach3: it is a piece of crap compared to linuxCNC

    1. Your experience with keys on linuxcnc sounds exactly like the sort of thing you should be able to customize in the package. Changing keybindings should be pretty basic.

      That said, you are lucky. I am trapped in proprietary land with a Next Wave Automation cnc shark. I would love to customize basic features – the software works well but the UI is very crude. The usb control box only works with their very limited control software. And the control software requires a registration key despite the fact that it only works with their hardware. They say that is to protect against stolen machines being used, but it makes no sense. In years to come I fully expect the machine will be a brick due to no registration keys. They are unwilling to allow mach3 or any alternatives. The user must be controlled!

  12. CATIA is about 20 times the CAD program it’s little brother solidworks is, and it can do CAM as well. While the full commercial copy will set you back $30000 a seat the last time I looked, student edition is less than £90. Model in 3D then export 2D views as dxf from draft mode.

    I’m assuming AutoCAD has changed somewhat, it used to horrendous for anything other than 2D.

    1. That’s been my experience with AutoCAD in 3D as well (although I haven’t tried extruding anything using it in quite some time). For most of the stuff I do at home though, a 2D drawing works fine.

      I’ve never used CATIA, or really even been exposed to it. I hear rumors of other engineers working with it, but most of the stuff I come in contact with is done with ProE, Solidworks, or AutoCAD.

  13. About three years ago I pulled a computer out of the dumpster to fiddle around with it. It had two problems. 1: One of the cooling fan mounts was broke. the addition of a zip tie and that problem was solved. 2. The CD drive was stuck closed which was quickly resolved with a paper clip. It had a cd game in it to boot.

    The next thing I did was to install Windows 7 32 bit. Once I had my bluuMax setup, I installed Mach3 and ran some tests. Once I had the wiring and everything properly seated, Mach3 worked just fine.

    Then I installed LinuxCNC in a dual boot setup. LinuxCNC runs just fine.

    Based on the problems people posted here, I must have lucked out with my setup.

    1. I am running my desktop CNC thingie (can’t call it neither a mill nor router) on Sanguinololu + grbl. After some fiddling to allow non-standard pin assignments in grbl (see:, it does work fine.
      However, standalone operation is kind of a moot point- you still need a computer to send g-code to grbl (and it’s quite easy to interrupt communication with controller, e.g. by accidentaly rebooting the box to install the latest kernel a few hours into a milling job).

      I’m looking forward to controllers like smoothieboard/4pi- totally autonomous after you’ve started the milling job (send the file over by USB/Ethernet and it’s saved on SD card). But it’s an order of magnitude more expensive and not rock solid at this point.

  14. Please help… I can only install BobCAD-CAM onto one device and save a copy to a portable hard drive. My (plasma) CNC is all hooked up with its own antiquated computer out in the shop. I’d much rather work in BobCAD on my laptop. Is it possible to get the Gcodes from BobCAD on my laptop to my CNC out in the shop with a flash drive, disc, or email? Or do I have to install BobCAD onto the computer which my CNC is connected to?

    Thanks a ton!

    Curious Ag Teacher

    1. As long as the computer in the shop supports a flash drive you can do that easily.
      If the two computers are on a network you can do it by sharing a folder from the
      old computer and copying the files over to it.

      I just looked at the website and felt like I was going to hit my head on the banner at the top of the page and that is not talking about the text that is so close to the bottom of the banner and runs up under it that I feel like they are hiding something from me. Then there is this annoying support link that is positioned in a place were it is right on top of text and this again made me feel like they were hiding something.

      Are you using BobCad as the controller?
      From the above post, I am assuming that if you put your single license on your laptop, you will need to use your laptop as the controller unless you install LinuxCNC on it, then it won’t matter.

      This is the biggest problem with single computer apps that have multiple functions. One computer is better as a controller while the other is better for processing the CAD files and generating the g-code. The shop setup may not be as comfortable as the setup you have in your office.

      You could try and install BobCad to an external drive such as you would do with PortableApps. Then you can move the drive back and forth. Design on your laptop, move the drive to the shop and run the CNC.

      It really depends on what your shop computer is. If it is running WinXP, then you should be able to do it.

  15. You don’t have to learn linux in order to use Linux CNC. Just follow their install instructions (you must have a good CDROM or else you will throw away your PC). Finish install, reboot and wait to show the desktop. Then you start the program. If you wish to make milled PCBs, read this and go play with linuxcnc.

    The most important part in configuring LinuxCNC is to match its parameters with the instruction (and schematic) manual of your CNC: pinouts of the LPT port (what does each pin do? Input? output? which proximity sensor goes where? how many steps per milimeter has each axis motor? see the CNC manual). Save your configuration as “My Mill” or whatever.

    I am running my CNC – High-Z S/1000T without proximity sensors enabled and without automatic on/off control of the spindle. I adjust everything manually like in the Pleistocene era of the CNCs: X and Y homed to zero after I move the tool using just my eyes and a strong flash light as a reference.

    The Z axis I calibrate by lowering the step motor speed to 12mm/minute, and use a small piece of newspaper between the milling tool and the PCB surface. When the piece of newspaper sheet can barely move, then the tool is ready to work.

    I use CadSoft Eagle with its “run pcb-gcode-setup” command. There I set the milling depth to be -0.075mm and the maximum Z-down also to -0.075mm. The rest of the adjustments are the tool size (usually 0.1mm for SMD parts), maximum speed on all three axes… and that would be all.

    1. I agree with the LinuxCNC approach, as MS Windows is not, nor ever have been, a Real-Time operating system. Only UNIX, Linux, and BSD fall into the category of Real-Time operating system.

      If you are involved with CNC, Linux should not be all that difficult for you to use.

      1. Everything was made before CNC. The guy can use CNC to make a pipe if he wants. IF you don’t know the answer then don’t be a D!CK and feed him some B. S. You are a jerk.

  16. I must say that mach3 is just steaming pile of sh*. It is so amazing buggy software that destroying things day after day just because it’s bugs drive you to heart attack. Example last time when I had to pause my work it change next start point several millimeters. After that it bustr feed rate from 200 to 2500. etc etc. Last 4 days it had destroyed things about 10 times because of this kind bugs.

  17. Hi guys, I have been reading all of your posts and am grateful for all the info. I don’t have any equipment yet but am looking at getting a small desktop type router or mill. I can buy different machines ready to go without the controller and software.
    For someone looking at doing this as a hobby, should I go with Mach 3? I don’t really understand how LinuxCNC would work if it is not a program. Or maybe I just missed that part completely. I looked at the Oliver Intellicarve 1013. That’s what I would like to do. I just think I can build or buy a bigger machine and add the controller and software.

    What do I need for software, controller and machine?

  18. Suppose the only drawings I have are several PDF pages but they are to scale. Do any of these CAD systems or software convert sections of PDF to drawings that can be used as patterns? If so, what are some?

  19. Hi Guys
    I`am looking at a CNC Router but they are very expensive. Was thinking on bying a cheap 4 axes Engraver machine instead and build a new casing to give it a bigger work surface for cutting bigger things, wouldn`t that be possible?
    The engraver use windows software to. Any thoughts?
    All comments are welcome. Thanks Xzar

  20. im designing a cnc router x,y,z axis machine to carve wood and engrave brass sheet,the machine will be powered by arduino uno using grbl,im an electronics technician,not a computer programmer,and this type of thing for me was optional ,as i never enjoyed programming in the first place,i now find myself needing to learn “C” language,which is fine but my cnc cant wait that long,will any of the reccomended software work /generate gcode,im looking to make 2.5D ,flat on one side and curved on the other,guitar body and neck profiles,plus some other basic woodworking,that would normaly take days or weeks to do by hand,like i say im a newbie to this,i use cadcam for pcb processing ,but this is quite different in the design of ,than the file types used.
    reasonably good to excellent for beginner cheapish or free software to run,i’ve still to upload the grbl to the uno,i am happier using a calculator and soldering iron,but i want to bring this to fruition if possible.

    1. may be more trouble than it’s worth. I have a PC running Mach3 which is real joy to use The cards in the PC that interface to the CNC are reasonably priced.
      Unless you are very determined and willing to go throngh a lot of engineering and fabrication and calibration, I suggest this routeThe pcdoesnot mud to be new. Parallel port is a must.

  21. Hey everyone, have access to numerous weekes and thinking of maybe even investing in one. But, before making that leap, the #1 question I have is. What are the laws when it comes to using already written programs to make a product for profit???? I can’t find a clear answer. I know there are alot floating around out there, I just bought 15,000 dxf files for $20. But the legality of it, can anyone tell me?

    1. Your cad file will output g code which can work straight on the Cnc machine. You may need to do some setup to determine zero location and other things relevant to the materials, bits used, fees rates and so on
      Fusion 360 has some good training videos as do other cd program providees

  22. I tried Mach 3 on a router, many years ago. It worked well, but would often crash half way through the run, ruining the project.

    LinuxCNC works very well, and can be highly customised, if you don’t mind spending some time to learn.

  23. Centroid aye? Might check them out if i get time thanks. Looking to rebuild my Shark soon. Problem is I use it every day and my old brain can’t learn as fast these days. The good thing about cnc is change comes very slowly so makes it easier to keep up.
    Casting from my Android to Sony however will fail for sure with the next update!

    By the way, you’re all a bunch of nerds.
    Get a life.
    Says me who just read it all.

  24. I have bought a cheap 3018 CNC off ebay and am using estlcam to both import/export designs and control the board/CNC. I have chosen the MACH 3 machine preset to flash to the board and it’s operating the CNC but the designs are coming out skewed, i.e. too wide, not tall enough, etc… I’m wondering if another preset would be better aimed for the el cheapo board I have. Or is there another board I could get that’d better run the CNC? Truly anything you can tell me concerning all this would be helpful!

  25. SImple CNC is a easy to use g-Code program that makes, circels, retangles, Drill Patterns, Polygon shapes.
    Simple Art convertes images like jpg, gif, png, bmp, tif, … into g-code
    Simple Engrave adds text engraving to you project, you select a font and type in the text you want, creates the g-code
    Simple DXF 2 Gcode converts DXF files to g-code

Leave a Reply

Please be kind and respectful to help make the comments section excellent. (Comment Policy)

This site uses Akismet to reduce spam. Learn how your comment data is processed.