What are the linux users using?

I’m currently setting up estlcam via wine, but was wondering if there is a decent pure linux alternative. I know I can run windows in a VM. The problem with that is that I have a 3 megabit DSL connection with a 50GB cap that makes running windows 10 even more painful that it already is.


I’ve been scouring the internet for alternatives but it’s kind of hard to discern what would actually be the most viable option.

CNC.js works in linux. It’s still a tad funky to get working, but once it is it seems solid. As for the Win10 thing, set your connection to a metered connection, it will stop windows update from downloading the upgrades. I think it will still do the critical OMG the world is coming to an end updates though. That should help.

1 Like
CNC.js works in linux

I’ve got cnc.js up and running. I was more wondering about generating gcode for the machine. So far I’ve installed inkskape and blender, and I’m going to setup the gcode/cam plugins after work.

Do you have any experience with pycam?

1 Like

Nope. I use windows for most of my stuff. Linux at work.

1 Like


I downloaded Pycam this evening and installed it on my LinuxMint box just to see what’s changed… I played with it several years ago. I loaded the crown.svg file and created a gcode file. Pycam’s gcode is primarily geared to LinuxCNC/EMC2 (what I originally started this CNC stuff with 7-8 years ago)… no other flavors are supported it seems. Commands like

G1 Z0.0000
X103.7850 Y79.6311
X104.5580 Y79.6017
X105.3250 Y79.5528

work fine with LinuxCNC… but not Marlin.

Snooping around I found an interesting site that described a Mendel 3D printer conversion to Dremel styrofoam cutter… called, appropriately, Mendrel (https://chmodux.wordpress.com/2012/07/13/g-code-mendrel/). The machine isn’t of interest, of course. but the fact that it was Marlin-based was. The guy (River Allen?) had written some Python code to convert Pycam’s gcode to Marlin compatible gcode.

I played with it this evening a bit. Took the Python gcode for the crown and “post-processed” with his converter… the code above now looks like

G1 Z0.0000
G1 X103.7850 Y79.6311
G1 X104.5580 Y79.6017
G1 X105.3250 Y79.5528

Sure enough, my little Mega/RAMPS/Marlin-based laser engraver barfs on the Pycam gcode… but seemed to work fine with the converted gcode… not the laser bit, of course, but it drove around in X and Y properly.

I’m not a Python programmer but know enough to run Python code on my LinuxMint and Ubuntu machines. Pycam seems pretty nice… especially if it can generate gcode that can be made to run on Marlin-based machines. I’ve also been playing with Inkscape/Gcodetools for a couple of days and am encouraged with what I’m seeing there as well… I use the JTech laser plugin alot. I plan to keep playing with these tools for a while, seeing what I can see.

Anyway, I found the gcode converter on


Maybe Jeff, or some of the other software folks here, can make enough sense of it to massage it and make it genuinely compatible in all respects.

Just a thought…




Have recently discovered Blender has a CAM interface that appears to be developed by a Vilem Novak. It’s not clear to me how much recent updating is going on, but I’ve gotten several tool paths out of it’s present release state and current Blender software using simpler geometry models. Since I’m just building the mpcnc, can’t give you any feedback yet on it’s quality of output. The Repetier-Host software accepts Blender-CAM’s output in one of the gCode styles available.

Blender will run on Linux {where I’m at}, as well as Windows and Mac.

I’ve now got the mpcnc machine far enough along to make some additional comments on the tool chain from Blender CAM to programmed machine movement.

Blender CAM requires a top and side surfaced volume closed with Blender faces to create a tool path. I.e., if the virtual tool will touch the item during machining, it should be created with faces without holes in the topology.

There are multiple ‘flavors’ of tool path output available. I’ve found the Gravos post processor option there creates a mostly usable output file, that Repetier-Host will read in. That output file happens to have an xx.nc file name format. From Repetier, you can re-save the file with traditional xx.gcode file names. The only issue I’ve run into so far with the Blender output file is inability of the Merlin control board to pick up the first machine move command {S12000 M03 G0 X0 Y0 Z9.999}. Changing that to {G0 Z9.999} takes care of the first move. There is good chance something earlier in that line is actually causing the issue. I’m doing simple 2D plotting so far. Gear creation is planned eventually for clock building.

Tool chains: Repetier-Host works fine on my Linux laptop running Debian 9. But it locks my laptop to the machine board via the USB cable. I tried to run Repetier-Host directly on a Raspberry with result of dependency complaint. Probably could have been resolved, but I was lazy. Another interface I’ve found that will provide manual machine move and init of jobs is OctoPrint on a Raspberry. The same control software is being used with my 3D printer. Once the Raspberry is configured with OctoPrint, I can use any device open to the Raspberry via web browser, including my smart phone. If the Raspberry is configured with a camera, you can visually monitor the CNC machine from remote at any time as well. Having the $35 Raspberry in the dirty shop where the CNC will run feels better than my $600 laptop.


I’ve been using the Gcodetools built-in extension on Inkscape for a couple of cuts and so far, so good, but I’m going to try switching to CNCjs for convenience.

OK… CNC.js is an interface with your machine controller, not a CAM program. The Gcodetools for Inkscape look like CAM tools. You would actually use the Gcodetools in Inkscape to create the gcode, then use CNC.js to connect to your MPCNC/LR and send the gcode over.

Re-reading your comment, you may not be saying this, but it looks like you’re saying that you’re going to try switching from the Gcodetools to CNC.js…

Aha, yes, I meant switching from Repetier-Host to CNC.js

The GCode is generated with Inkscape right now, but I’m open to alternatives!

There are instructions for an entire foss toolchain. Freecad, bCNC, but I think it only works with grbl. Maybe we should invest in a pp for bcnc…