LinuxCNC (Formerly called EMC2)
LinuxCNC is a free and open source real time machine controller and it is intended to run Mills, Lathes and other machines. I used LinuxCNC to control my original home built JGRO CNC router and I use it to control my current KRMx01 CNC Router. LinuxCNC is a powerful program and can do a great many things, but because it can do these things it can be hard for someone just getting into the CNC hobby to wrap their mind around. I am by any stretch of imagination a LinuxCNC expert, or even a CNC expert as far as that goes, but I have learned a few things about it.
On these pages of the website, I hope to share some information and videos that will possible help you get your feet wet. Does this mean I have done everything correct? Well, I am not sure, but I will try to present the information as accurately as I possibly can. If you have questions, feel free to use the Contact Us menu entry above, and I will do my best to help you. Keep in mind that the Documentation, Wiki, Forums and IRC Chat channels are a great place to pose questions and help work through issues. The folks who hang out there have been a huge help to me. Of all these resources available, giving the documentation manuals and man pages will take you a long way to success.
I hope you find the information I add to these pages helpful.
— Joe Hildreth
This area is for links to tutorials that I have written. Simply click on the title to read a tutorial or, alternatively, you can click the PDF icon to the left to download a copy of the tutorial.
This tutorial will give you some tips on how to wire your CNC machine to prevent things like noise injection on your signal wires, ground loops and other common mistakes when that can happen when you wire your first machine.
This tutorial will show you how you can compile a realtime kernel on your favorite distribution of linux to run LinuxCNC. The tutorial will show you the required software, where to get the kernel and preempt source code, how to configure the kernel, compile it and install the new kernel.
LinuxCNC for the Hobbyist is intended to be a series of tutorials targeted towards the new LinuxCNC user. As the tutorial progress, they will cover more and more topics. Hopefully over time there will be something here for every LinuxCNC user. So, if your interested, grab a beverage of your choice and learn how to use and setup LinuxCNC in your home shop. To watch any of the video tutorials, you can click on the episode title or the image to the left of the episode title.
LinuxCNC for the Hobbyist explores different aspects of setting up a CNC machine from the Hobbyist's perspective. This episode talks about what NC and CNC means and introduces the heart of any CNC machine, the controller.
In this episode I show you how to download LinuxCNC using the Ubuntu Linux Operating System. I demonstrate how to calculate checksums with both md5 and sha256. I show the alternate method of download using the zsync software which can recover from a failed download and do the checksums for you. Finally I explain and show how the downloaded LinuxCNC controller software can be burned to a DVD or alternatively create a bootable thumb drive.
In this episode I show you how to download LinuxCNC using the Windows Operating System. (All software links are listed below.) I demonstrate how to calculate the md5 checksums. I show the alternate method of download using the zsync software which can recover from a failed download and do the checksums for you. Finally I explain and show how the downloaded LinuxCNC controller software can be burned to a DVD or alternatively create a bootable thumb drive.
In this episode I discuss the minimum computer hardware requirements to install and run LinuxCNC. Additionally I briefly talk about video adapters and other hardware that can run the LinuxCNC controller. The Hardware requirements links that I mention in the video are listed below for your convenience.
In this episode of LinuxCNC for the Home Hobbyist I install the software on the controller computer. I also discuss the effects of changing hardware on a computer to possibly make it work for LinuxCNC.
In this episode I cover two ways to do updates to the LinuxCNC Controller Computer. I also address an issue I have with the default PDF viewing software.
In this episode we give the computer running LinuxCNC a stress test to see how the Real Time system is impacted. I give an overview of the Real Time system along with what Jitter is and how it impacts the computer. I cover the tools that come with LinuxCNC to measure Jitter, graph the threads and the plotter which allows you to see the threads running visually over time.
I/O, I/O, it's how it works you know! This episode discusses some of the I/O (Input/Output) options that are available for LinuxCNC to use to attach hardware like motors and switches from the outside world.
In this episode I discuss more about the parallel port including the registers, adding ports to the computer and how they are brought out to the outside world.
In this episode I give a general introduction to stepper motors. There are two recommended videos I suggest you watch in addition to this video. These are linked below. Working principles of several stepper motors (bipolar, unipolar, reluctance and can-stack)) - https://www.youtube.com/watch?v=Qc8zcst2blU How does a Stepper Motor work? - https://www.youtube.com/watch?v=eyqwLiowZiU
In this video I talk a little about stepper motor drivers, the inputs and outputs and timing specification. I also touch briefly on power supply units. I also mention that you should have watched the video links posted in the last episode. For those of you that did not, I have repeated the links below. Working principles of several stepper motors (bipolar, unipolar, reluctance and can-stack)) - https://www.youtube.com/watch?v=Qc8zcst2blU How does a Stepper Motor work? - https://www.youtube.com/watch?v=eyqwLiowZiU
In this episode I talk about linear motion using leadscrews and rack and pinion. I also discuss gear reduction methods.
In this episode i show you how to calculate the steps per machine unit for both imperial and metric, including imperial and metric leadscrews and gear reductions.
In this episode I discuss some gear theory explaining the difference between Diametral Pitch and Module gears. I give formulas and explain how to calculate their Diametral Pitch or Module value. Additionally, I explain how to calculate the steps per machine unit for both Diamteral and Module gears both with and without gear reductions.
In this episode I give an overview of setting up a stepper driven system using the parallel port with the Stepconf utility. While much information is given about Stepconf, I remind the viewer it is considered and overview because some details like spindle control and home and linit switches will require more detail. These topics plus other concerning Stepconf will be covered in future videos.
In this episode I show you how to compile a Realtime Kernel using the PREEMPT_RT kernel patch. I show you where to download the patch, the kernel source code, how to apply the patch, configure the kernel to use it. Next I show you how to compile the kernel and modules and finally install the kernel. I also show you a quick edit to the GRUB boot loader config file to force the grub menu to show on boot up, so if you do have problems you can boot back into your original kernel. A written tutorial is available at the top of this page in the Written Tutorial section for those who wish to have a version they can download for offline use.
Other LinuxCNC Related Information
I have gathered here some other things that you may find helpful to learning about the LinuxCNC controller. To view any of these pages click the title of the page in the list.
I discovered while writing tutorials about LinuxCNC that not all parallel port cards are equal. Some are actually seial devices while ofthers have problems supporting EPP mode properly that is required for proper operation of some FPGA cards.
*** Please Note the page structure of this area is likely to change over time.