CNC Software Toolchain Using Only Open Source Software

For hobbyists, there are two types of machines that can make parts at home. The first type is matter-adding machines (3D printers) and the other is matter-subtracting machines (like CNC milling machines).  [Mario] recently tipped us about an article he made detailing which free software can be used to design and produce parts on CNC machines.

The first step of the process is obviously designing the part you want to make using a Computer-Aided Design (CAD) application. [Mario] suggests Heeks or Freecad for which you can find plenty of tutorials on YouTube. The next step consists in converting the part you just designed to machine tool paths using a Computer-Aided Manufacturing (CAM) application. Fortunately, Heeks can do both so it may be the best option for beginners. [Mario] also mentions the pcb2gcode  application, which allows you to manufacture printed circuit boards at home for the prototypes you may want to produce. Finally, the well known LinuxCNC (previously Linux EMC2) software is used to control the CNC machine using the GCode that the CAM software produced.

At Hackaday, we’d really like knowing what our readers currently use for their CNCs so don’t hesitate to leave us a comment below.

53 thoughts on “CNC Software Toolchain Using Only Open Source Software

        1. I’m looking to build a CNC, and have been looking for a program with flexibility. I’m thinking of wanting to router wood on a table so it uses X,Y & Z coordinates or on a turntable so it uses polar coordinates. What I’d like to also do is be able to vary the router’s angle (4th axis) to get the harder to reach spots. Is there software like that out there that can do any/all of this?

  1. I may be wrong, but I think that CNC covers more than just matter removing machines. By definition, “computer numerical control” applies to any machine which is controlled by a computer, so 3D printing would come under that.

  2. CNC stands for computer numerical control. It simply means some sort of machine is being controlled with a computer, your 3d printer, regular inkjet printer and several other devices are all CNC. A milling machine is what you guys should have been referring to which in this case is being CNC’ed.

  3. My recently finished cnc router is controlled by GRBL on an arduino.
    Since I haven’t got a dedicated cnc computer, installing linux or downgrading to 32bit windows for mach3 (and getting a parallel port) wasn’t really an option.
    However, GRBL is incredibly easy to use, and works very well with any gcode sending software. I personally use Universal GcodeSender. The CNC is jogged and controlled by an oldschool xbox controller, interfacing with gcodesender by an autohotkey script (and xpadder).

    For the parts-creation, I mostly use cambam (with illustrator/photoshop for image tracing if I’m doing engraving), the easiest to use for a beginner imho, though heeks is better for 3d parts.

    1. I’m trying to implement something similar with a microcontrolled CNC, but I don’t know much about the software end of things. How did you get GRBL to run on an arduino? Is it possible on other microcontroller brands?

    2. For what an arduino and a gshield cost, you can easily find an old computer w. a parallel port and get linuxCNC going. GRBL is very slick, but a far cry from the flexibility and motion control of software that can run a 9 axis machine (if you could find/afford cam software for 9 axis CNC! : o) )

      1. I’m curious about your assertion there… I can get a complete arduino + GRBL CNC shield kit (including stepper drivers!) for $18.50 (; given that it’s pretty much ready to go as-is, that seems like much less headache (and cost, especially when time is factored in) than trying to get LinuxCNC set up.

  4. If all you are doing is 2.5D, you could probably get away with a vector image and pstoedit, or, a bitmap image, potrace, then pstoedit.
    potrace converts bitmaps to vector images, and, pstoedit can convert vector images to dxf or even output LinuxCNC formatted gcode.

    1. I am very interested in this toolchain, can you possibly post an example set of the commands to go from bitmap to gcode? Can you specify different parameters for different layers? Like if one layer is pockets, and another is cut outs?

    while its not free its cheap and its pretty easy to use.
    again not free but cheap and he has a demo version that has tons of features. I bought it because his demo version is so strong. You know how sometimes you just want to support the good people that bring good products? Far and few between now days. Well with both of those purchases that was the case.

  6. I recommend HSMexpress for Solidworks. It’s not open source but it is a free download and great for 2.5D milling. You must also have Solidworks which is not free or open source, but there is a student option. For motion control I use LinuxCNC which is okay – my current setup suffers from latency issues every 30 mins or so which is dangerous, so I will probably get one of those cheap boards that buffers the step signal between the computer and motor drivers.

  7. Does anyone have any experience on the speed between something like pycam and Heeks vs. a paid package like VCarve? I’ve used VCarve and pycam and the speed difference is astounding. VCarve spits out the gcode in a fraction of the time. I’m not talking about simple 2D or 2.5D parts. I mean a complex curved surface, not a simple hole drilling problem. Maybe I’m doing something wrong, but the difference is very large in my experience.

    The CAM part of the equation is the weak link, IMHO. It’s easy to find software to design the part. It’s easy to set up something to run the gcode. Generating the tool path code is the difficult part.

  8. for my metal cutting laser ( I use Rhino -> LinuxCNC. But the tough part is making the tool path. For that I use a VB-based dump of the file out of rhino which specifies the parts and the cuts inside of those parts. I dont think I could give up Rhino, the software has too many features that I need for design.

    Then I wrote python code:

    that does a traveling-salesman-esque attempt at choosing the parts to be cut, and the path through the cuts for each part. I havent heard of any open source options for people doing plasma or laser cutting.

    It might sounds complicated but the advantage of this is the dump from Rhino is down with mouse click, and the conversion by my python code is a call done in linuxcnc. So to go from CAD to loaded in linuxcnc is two mouse clicks. This is very helpful when doing rapid part design at my laser.

  9. Does anyone mentioned “Only Open Source Software” toolchains?

    I use Kicad->Cyclone PCB Factory scripts->Printrun->Teacup firmware (-> and Gen7 hardware) to manufacture PB’s.

  10. So far I’ve been using Draftsight for design (though Inkscape is great for turning pdf’s into dwg’s to then open and edit in Draftsight),
    then dxf2gcode for conversion (though I can never get it to cut alongside the toolpath rather than on it).
    The ngc. file is put into a network folder, then I fire up an old motherboard running LinuxCNC which I control on my Android tablet using AndroidVNC. (While LinuxCNC’s Ubuntu has remote desktop out of the box, it does still require some extra work to get it to start without a monitor actually plugged in.) LinuxCNC finds the .ngc and sends the G-code to the mill.

    I’d be really interested in hearing from anyone what their open source toolchain would be for DLP 3d printing, as I am looking into retrofitting my old Sable CNC to this task.

  11. Really? No one here using MasterCAM or ArtCAM? Geeze! These together are so powerfull. I know they’re expensive but since when does a guy making personal non profit projects need to buy em?

  12. Is there a software package than can do both 3D Printing as well as milling/routing? I was thinking about a machine build that would accommodate both functions, addition and removal. Obviously at different times. Such a creature could use the same gantry/stepper framework, but would driver boards and other electronics work for both applications?

  13. for all my 2d and 2.5d i’m using Inkscape+gcodetools plugin, for 3d it’s FreeCAD to BlenderCAM for generating g-code. my setup = Raspberry PI 2 > GRBL on Arduino uno> g-540, I run g-code from inkscape or blender with the Universal Gcode Sender

  14. hola, construi una cnc con arduino uno y shield, drivers drv y controlado por universal gcodesender, quiero utilizar aspire 8.5 pq lo veo bueno, para hacer tallados, pero no logro dar con el postprocesador correcto alguin me podria ayudar

  15. Hi I built a homemade cnc, with Arduino one to shield cnc, with drv drivers, and for controlling universal use gcode sender, and I want to use the program aspire 8.5 for some carved 2.5 d, but so far I have been unable postprosesador not to use, I could help

  16. Homemade CNC, GRBL1.1, Inkscape for design. CarbideCreate for toolpaths/GCode creation. Chrome plugin gcode-sender to send gcode to the machine(I have used others for sending but intend to put bluetooth on the arduino to send gcode from Android app.

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.