Monday, September 2, 2013

New MachineKit Image Available

I am pleased to announce that a new MachineKit image for running LinuxCNC on the BeagleBone is now available!  This image took a while to put together and there are a lot of things that changed:

Kernel version -bone26.1

This is the latest BeagleBone kernel available via RCN's kernel build scripts (it is identical to the just committed -bone27 kernel except for the version ID of 26.1).  There are lots of updates to this kernel so HDMI and USB should hopefully work a lot better.

Xenomai Updates

I have forked RCN's kernel build scripts and and added the ability to pull in the Xenomai patches directly from the Xenomai git repository.  The provided kernel was built with the absolute latest available version of the arm Xenomai code, which is soon to become the next Xenomai stable release (waiting mostly for updates to stabilize 3.10).  This means you can now build the Xenomai patched kernel used in the MachineKit image completely from the latest source pulled directly from git using a few simple commands.

LinuxCNC Unified Build Candidate

This is the really big change.  The LinuxCNC folks are working towards a 2.6 release, which is slated to include something called the "unified build".  No, not that one!  :)  This unified build allows the same LinuxCNC binary code to run on top of different RTOS systems using a DLL layer to hide the gory details of interfacing to Xenomai, RTAI, RT_PREEMPT, or plain old Posix threads.

The current MachineKit branch of LinuxCNC is based on the 2.5 LinuxCNC code-base, and it is virtually impossible (with a reasonable amount of effort) to merge the unified build code into LinuxCNC 2.5.

Not to worry, the hard work has been done already, mostly by John Morris and Michael Haberler (THANKS!!), but the change does mean there is no easy "fast-forward" merge and the git setup is now fundamentally different.  The alternate Xenomai RTOS work the MachineKit branch has been built on was happening outside the official LinuxCNC repository on a private git server run by Michael Haberler.  The new unified build code is slated for inclusion into LinuxCNC 2.6, and can be found in the official LinuxCNC git repository.  The official repo is also available on github, where I have cloned it and added a MachineKit-ubc branch. This branch will track the unified build branch (and the LinuxCNC 2.6 branch as it comes together) but make sure the code builds and runs on the BeagleBone.  There may also be a few configuration changes specific to the arm or BeagleBone platform.

I will be keeping the MachineKit and MachineKit-ubc branches in my previous github repository up to date for a while, but these should generally be considered deprecated.  If you are not using my pre-built images, please switch to using the new linuxcnc repo as soon as you can.


  1. How can I configure the machinekit setup to make something else than single steps and how is the configuration done?

  2. Alexander and myself converted his MendelMax to LinuxCNC with Charles' latest image this weekend:

  3. Thank you very much for all this work.

    I'm attempting to configure the MachineKit on a BBB with a prototype cape to run a CNC milling machine. I built a microSD and plugged it in, and it loads and runs.

    When booting without holding down the "boot" (i.e. boot from the SD card) button, it appears to be using the uEnv.txt from the eMMC: that is, the three virtual capes are present, even though i thought I had suppressed them in the uEnv.txt file on the SD card. Am I doing something wrong?

    1. Please see "Support", above, rather than ask questions in the comments section. The BeagleBoard list would be a good place for this question.

      That said, make sure you are editing /boot/uboot/uEnv.txt and make sure you are properly interpreting the capes file. The unloaded capes will still be listed, but they won't have the "L" that indicates they are actually loaded.