LinuxCNC Basics


LinuxCNC is a realtime machine controller. The setup of a machine can be a little bit complicated but the good thing is that you don’t have to do it yourself.

The attached files are for a BZT PF-600P with ST 44.2 Controller connected via the parallel port. It’s a pity that the parallel port is getting less common day by day. Since it’s basically just a bunch of 5V GPIOs it’s perfectly suited for realtime applications like cnc controlling. There are only two problems: Window, Mac, … can’t do hard realtime and the support of parallel ports is getting less every year because in a typical home environment the former Useless Serial Bus (USB nickname in the 90s) eventually became universal after all and made the parallel port useless.

The ST44.2 Controller looks the same beside the sticker…

Nowadays producers tend to use USB or even Ethernet for cnc controlling as well. This is pretty much nuts because both are not at all designed for realtime environments. The only way to make this work is to use a microcontroller who receives information on where toolhead should go to and then produces the signals for the amps. So basically all the Gcode is pushed to a cheapo Microcontroller and our fancy PC is degraded to act as a mere display. The real bummer though is that you have to use the software the software supplied with the USB “connector”. So if you fancy to run your CNC via USB you buy two computers to the price of three or more and the powerful one is idling to death while the tiny one is struggling to keep up to act more or less like a realtime system (which it isn’t) and you are struck with the stock software.

So instead of paying at least 170€ more for the USB option my advise would be to buy a cheap mini itx board with a Intel Atom and run LinuxCNC. With a little tinkering (and a solid state disk) you can pretty easily build a dustproof unit without moving parts.

There are two far more important advantages with LinuxCNC:

First, there is no separation between the realtime unit and the frontend which is very important for enhancing the controller in setups which are more complicated than just three stepper powered axis.

Second, if you need more GPIOs than parallel ports offer and/or the hard realtime still is not enough realtime you can buy FPGA Cards from Mesanet. For the same money as the USB option you can easily get 48 GPIOs including proper breakout boards (got a hole range with optocouplers, mosfets, … ) as a parallel port extension or if you chip in a little bit more get the 72 GPIO PCI Card. I’m not sure where the limit for the possible GPIO count is but it’s at least a couple of hundreds, so probably enough…

If you have bought a controller with integrated USB and without a parallel port, chances are good that you don’t have to be crying right now. Many USB Control Boards connect via a parallel port plug to a second board which connects to end switches, MPG and so forth. And even if you cant downgrade by just opening the case you can still just disconnect the USB Board and connect the amps, end switches, leds, … directly to the mesanet breakout boards. Or you can buy a controller board for the parallel port (which is almost the same price as the mesa stuff but allows you to use Mach3 and other windows software with your mill).

Leave a Reply