Monday, December 22, 2014

Holiday Packages

It's time for holiday packages!  Not the kind you put under the tree, but the packages you install on your Linux OS to provide new programs and features.

Thanks to the incredibly awesome Robert Nelson, just about everything needed to install and run Machinekit is now available in the default BeagleBone Debian package repositories.  This includes a few things back-ported from Jessie to Wheezy, some things that need to be built directly from source, and even a 3.14 Xenomai real-time kernel!  The actual Machinekit packages (and the buildbot infrastructure that builds them) remain on the private repository generously provided by John Morris at

MANY thanks to Robert for this great work, which frees up the Machinekit developers to keep improving things.

If you haven't worked with a package based Machinekit install yet, I suggest you try it out.  Using packages makes it much easier to stay current with updates and enhancements.  Instructions for installing Machinekit from packages can be found on the Machinekit website.  Packages are available for the BeagleBone (arm7), Raspberry Pi (arm6), and generic PCs (i686/amd64).  For real-time operation, you'll also need an appropriate real-time kernel (PREEMPT_RT, Xenomai, and RTAI are currently supported).

Saturday, December 20, 2014

Cool Tool Sandy Box CNC Control

Alexander Rössler and the folks at The Cool Tool have released the Sandy Box CNC controller just in time for the holidays.  If you are unfamiliar with The Cool Tool, they make small CNC machines for research, prototyping, hobby, and education.  While the Sandy Box is primarily intended to control their UNIMAT line of CNC machines, it's possible to use with most any CNC system currently driven by a PC parallel port.

Inside the box is a BeagleBone with a custom cape already setup to run Machinekit.  It should make a great controller for folks looking to upgrade or replace a dated DOS or Windows machine.  If you're interested in using the Sandy Box on your machine, or have any questions, head over to the Machinekit Google group where Alexander and others can answer your questions.

Tuesday, December 9, 2014

BeagleBone Encoder Support

Russell Gower has written a HAL driver for the hardware eQEP encoder inputs on the Beaglebone.  This makes it possible to do rigid tapping with an encoder on your spindle, and paves the way for eventually running high-speed servo systems on the 'Bone (which will likely also need support for hardware PWM, since the existing PRU based PWM isn't really fast enough for motor control).

The new code is merged and built, so you should be able to use apt (or your favorite package manager) to update if you've installed Machinekit from packages.  If not, you should consider doing so (instructions), since it makes it much easier to do updates.

Sunday, November 23, 2014


Recently jog-while-paused popped up again on the LinuxCNC mailing list (this happens a lot, check the archives), so it seems like a good time to point out that not only does Machinekit contain jog-while-paused functionality, this feature was added to LinuxCNC by Michael Haberler before there was a Machinekit project at all.  If you're unfamiliar with the jog-while-paused feature, it allows you to pause a running gcode program, move the machine (perhaps to take a measurement, inspect the cut, or perhaps replace a tool) then resume program operation.

Since so many folks seem to want the feature, but almost no one is using it, what is needed to get jog-while-paused working?  First, you need to have the jog-while-paused code in your build.  With Machinekit, the feature is in all current packages, but with LinuxCNC you'll need to dig around for the proper branches (check the dev-list archives around the date of the video above, Oct. 2013).  This adds new offset pins to motion that provides for the jog-while-paused functionality.

The next piece is some HAL logic to drive the new pins.  There's a simulation example provided with Machinekit (the sim.axis.jog-while-paused9 configuration) which includes some custom UI and HAL code to get jog-while-paused working.

So...what's really missing is just some real-machine example configurations and perhaps a bit of a HOWTO with instructions on getting everything working.  If you've been itching for this feature, why not try out the simulation config.  If you like how it works, merge the jog-while-paused changes into your machine setup.  Remember to take notes and share your results.  Once a few brave souls blaze the trail, I'm sure lots more will follow, and this is a great way non-programmers can help out with the project.

Monday, November 17, 2014

New QtQuickVcp Interfaces

Great news!  Alexander Rössler has released the first two new user interfaces for Machinekit based on QtQuickVcp:

These interfaces can be run on the same system that is running Machinekit, or they can be run remotely on a tablet, smart-phone, or standard desktop.  Since the interface is based on Qt, it can run virtually anywhere, including Windows, Mac, Linux, and mobile (Android and iOS).  Alexander posted a video walk-through if you want to see more than just the screen-shots:

See Alexander's post on the Machinekit list if you want to try out one of these interfaces.

Thursday, September 11, 2014

Package Based Install

Alexander Rössler has put together a page showing how to create a Machinekit image for the BeagleBone based on Debian Packages.

The current packages still require absolute paths to the PRU code in your configuration files (sadly, a different path than is needed for the previous run-in-place builds).  I hope to have enough time to address that soon by embedding the PRU code directly into the HAL driver. This will also prevent any possible confusion caused by the HAL and PRU code versions not matching (which I can confirm is a nasty issue to track down if you're not looking for it!).

Package installs also make it much easier to update both Machinekit and the kernel, both of which are "difficult" to update on all of my currently available images.

If you feel up to the task, I strongly suggest switching to a package based install.  It should make it much easier to track ongoing progress with both Machinekit and newer kernels.

Saturday, August 9, 2014

Unexpected Help

While I haven't been doing a lot with Machinekit and the BeagleBone lately ("real" work, kids home from school all summer, family vacation, etc.), the beauty of open source is that anyone who wants to can help.  Out of the blue on Friday, I got emails from github with pull requests for two of my projects:

malcom2073 added details for the PMDX-432 board to my pinmux spreadsheet for the beaglebone

jstampfl added the missing cape-univ-hdmi I've been meaning to write to beaglebone-universal-io

A BIG THANKS to both of you for the help!  I'd also like to encourage anyone else thinking about making a change to an open source project (big or small) to go ahead and do it.  It's a great feeling to help out others, and it lets the owners of the project know people are interested and using the code.

Along those lines, even (especially) if you don't need to change anything but there's a project you're using that "just works", send a quick note of appreciation to the mailing list.  Most first posts are from folks having some sort of problem, so it's always refreshing to get thanks from someone who doesn't need anything else.  Knowing your code is being used and helping others is the sort of feedback that keeps developers happily volunteering their time to write and improve open-source code for everyone to use!

Wednesday, August 6, 2014

New Toy!

OK, "toy" might not be the right word (it's really a powerful tool), but it's just so much fun to play with!  :)

UPS delivered a new controller box for my Probotix Fireball Comet CNC router yesterday.  Unlike the PC version that came with the Comet, this one has a BeagleBone inside and will run stand-alone!

The PC configuration for the Comet is a great example of things you can do with HAL.  The Y axis gantry is is controlled by a single step/dir generator using some HAL logic to split the drive pulses into signals for two separate stepper motors with two independent home switches.  But this approach only works with software stepgen, so something else is needed for "outboard" stepgen that is not directly part of HAL (ie: hm2 drivers and the BeagleBone PRU driver).

I have written a gantry HAL component that mimics the behavior of the Probotix HAL file but works with outboard step generation and up to a seven joint gantry axis.  Testing this with a three-joint gantry axis (my linear-delta 3D printer, temporarily re-purposed as a test-bed) was a lot of fun, but I really look forward to getting this working with real hardware and making some chips.  Look for some example configurations using the gantry HAL component in the near future!

NOTE: In addition to working with standard gantry routers (Fireball, Shapeoko, etc), the gantry component will also work well for other multi-motor axis (like the two-motor Z axis found on many Mendel-style 3D printers) as long as each joint (motor) has it's own home switch.

Thursday, June 19, 2014

The Great Midwestern CNC Road Trip

What started as a simple plan to head up to Madison, WI for the first Machinekit meetup has grown into an epic road trip.

First I'll head off to St. Louis, MO to meet with Jon Elson of Pico Systems.  Jon and the Pico Systems folks will be building and selling assembled CRAMPS boards, which will hopefully be available for sale in the next couple weeks.

Then it's off to Peoria, IL and Probotix, makers of the excellent Fireball series of CNC routers (powerd by LinuxCNC).  They also sell a BeagleBone breakout board available, and I look forward to seeing what other projects are being cooked up in the R&D lab!

Chicago is the final stop before Madison, where I'll be attending a special meeting of the CNC build club to discus running Machinekit on a BeagleBone, the CRAMPS cape I designed, and where Machinekit is headed.

I should finally make it to the Tormach facility in Madison sometime Friday, where I look forward to an exciting weekend of discussions with everyone else who can make it.  A preliminary agenda was posted to the Machinekit list.  While the event is mostly informal, there are a few talks planned.  We will try to live-stream the video (or at least record something and post it online later) for those who cannot attend in person.  Monitor the list for updates or changes.

Wednesday, June 18, 2014

Packages (not tied up with strings)

If you don't monitor the Machinekit group (you should), over the weekend John Morris announced the availability of binary packages for Machinekit and it's required dependencies (at least the ones that are not already in the Debian archives).

If you're trying to build a minimal system (particularly helpful on the BealgeBone with it's limited eMMC rootfs), this is welcome news indeed!

I will be updating my build scripts and the resulting images to use the pre-built packages soon, meaning you'll be able to simply "apt-get update" and "apt-get upgrade" to get the latest official Machinekit release.  Until then, feel free to add the pre-built packages to your existing install, the run-in-place development version and the installed packages should work side-by-side and should not interfere with each other.  Instructions can be found at the package repository website.

If you run into any problems, let us know on the Machinekit list.

Thursday, June 5, 2014

CRAMPS Kits Available!

I am pleased to announce that I have a limited number of CRAMPS V2.1 DIY Kits available for sale.  This includes a PCB and all the parts required to build a functioning board.  Assembly details are on the RepRap wiki, and the design files are on github.  Please review the known issues, and be sure that you are comfortable soldering 0603 surface-mount chip components prior to ordering a kit.

I apologize in advance for the somewhat clunky shopping cart, but it is the best open-source solution I could find that dynamically calculates shipping rates based on destination (which is required, since the rates for international package shipments vary dramatically).  Yes, you will have to create yet another web account you will likely never use again, but it keeps me from having to charge everyone some obscene amount like $25 for shipping.

I currently have about 20 kits available, and I do not expect to make any more (it is a LOT of work!), so act quickly if you want one.  Also, I am doing this to help with the adoption of the CRAMPS design, so there is a one-kit-per-person limit.

Wednesday, May 21, 2014

Updated Machinekit Images

After receiving a BeagleBone RevC with 4GB on-board eMMC, I noticed the latest images have grown to the point they are essentially unusable on a 4GB device.

I have updated the Machinekit images to exclude the previously required documentation build dependencies, which saves over 1GB of space on the images!  There is still a lot more room to be recovered once ARM binary packages become available, but for now the space savings means you can comfortably run Machinekit on a 4GB uSD card or the built-in 4GB eMMC on a RevC 'Bone.

Thursday, May 15, 2014


The CRAMPS V2.1 circuit boards are fabricated and heading my way.  I am planning to sell the bare boards for a nominal cost (under $5), but I may get motivated and sell some DIY kits that include all the parts needed to assemble your board.  The kit would probably be around $50-60, which is pretty much my cost for the parts in low volume, and I'd only be able to make about 10-20 kits total (before I run out of circuit boards).

So a quick informal poll:  If you are interested in buying a bare PCB or a DIY kit for the new CRAMPS board, send me a direct email and if I get enough interest kits I'll try to put some together.  Sending me an email places you under no obligation to actually buy anything, nor does it guarantee you'll actually get a kit should I decide to make some.

I am also working on getting someone to build and sell assembled boards, but that is a process that will likely take another couple months.  The kits would probably be available in 2-4 weeks, depending on how long it takes the PCBs to arrive and if I find any problems with the first prototypes.

Saturday, May 10, 2014

Velocity Driven Extrusion

Bas de Bruijn has been working on controlling his 3D printer with Machinekit, and has implemented a unique way to control the extruder.  Rather than make the extruder a fourth axis as is done in most setups, Bas is modeling the extruder behavior and automatically controlling the extruder motor velocity based on the movement of the conventional XYZ axis.

The problem with using a traditional 4-axis coordinated move for extruding plastic is the extruder behavior is non-linear.  Typically not enough plastic is extruded at the start of the move while pressure builds in the extruder and too much is extruded at the end of the move.  This problem is made worse by any changes in velocity along the move, as may be required by the acceleration constraints of the machine.  The retract and precharge settings in most slicer programs help with this issue to some extent, but cannot truly match the extruder behavior.

By dynamically controlling the extruder velocity, Bas can start with a simple linear mapping of movement speed to extruder speed (how a standard 4-axis coordinated move would work), and enhance that by adding terms to compensate for changes in speed and acceleration.  Changing the model used to drive the encoder only requires changes to the HAL file for the machine, allowing complex control theories to be tested quickly and easily without writing code.  Based on the print results Bas is already achieving, it looks like this approach is already working pretty well, and there is still much room for improvement.

Keep watching Bas' blog for updates, and let me know if you are doing anything unique with Machinekit!

Friday, May 9, 2014

Machinekit BeagleBone Debian Images Released

After what has been far too long, I am please to announce a new official release of the Machinekit image for the BeagleBone.  The release of the RevC BeagleBone Black with it's 4GB eMMC and switch to Debian makes the BeagleBone an even better choice for machine control!

There are lots of significant changes with this release, so I recommend everyone using Machinekit updates when practical.  The biggest change is the switch from my "enhanced" version of Robert Nelson's minimal Debian build to generating images based on the official BeagleBone Debian.  That means all the BeagleBone specific features like node.js, USB networking, etc. should work just like they would on a factory BeagleBone.  Of course there are a LOT of changes included with this, like switching from xfce to lxde, changing from sysvinit to systemd, and many others.  On the plus side, the Machinekit images are now very similar to the shipping BeagleBone release, so it should be easier to find documentation and ask for help.

The other really big change is a switch from LinuxCNC to the Machinekit project.  Machinekit enables LinuxCNC's real-time core to operate on a wide variety of platforms, making it possible to run on the BeagleBone.  I had been hoping the required real-time changes would become part of mainline LinuxCNC (and they still might), but they have been passed over for the upcoming 2.6 release.

If you are lucky enough to have a BeagleBone RevC, there is an (untested) eMMC flasher image available as well.  If you would like a tested and verified working eMMC flasher image, feel free to FedEx me your RevC 'Bone!  Otherwise, you'll have to wait until one of the two I've ordered actually arrives for me to test.  ;-)

Thursday, May 8, 2014


I finally got around to finishing the updated version of the CRAMPS board.  This version focused on simplifying the design as much as possible, and I really like the end result.  It feels much closer to the original RAMPS for the Arduino Mega in spirit than the previous 1.0 version and the RAMPS-FD.

Changes in this version include:

  • No fine-pitch surface mount parts, so the board is much easier to hand assemble
  • No servo outputs
  • SPI expansion header changed to allow use as extra GPIO if needed
  • Expansion headers modified to support an additional 3-axis add-on board (the CRAMP3)
The design files remain on github, and the home page for the design is still the CRAMPS page on the RepRap wiki.  A BOM file including Mouser and Digi-Key part numbers is also available via Google docs.  The boards  have been ordered, and should arrive before the end of May.

While the design is fully open, not everyone wants to build their own boards from scratch.  I am working on getting someone to build and sell completed boards, so stay tuned for updates!

UPDATE: 2014.05.12 - The first batch of 20 boards has shipped, now the 0-30 day wait for a "registered air parcel" begins.

Tuesday, April 22, 2014

Machinekit BeagleBone Debian Images

If you've been following developments around the BeagleBone, you know the new RevC boards with 4Gig eMMC are coming soon, and these boards will ship with Debian instead of Angstrom. I have been working to get my Machinekit binary images tracking the new BeagleBone Debian vs. the generic minimal Debian install used previously.  This means you can run Machinekit without loosing any of the BeagleBone specific add-ons like node.js, and switching between the Machinekit image and the official BeagleBone software should be fairly painless.

I am pleased to announce the first public Machinekit test image based on the new BeagleBone Debian release.  Download the image file, then check the md5sum.  This is a raw image file, so just uncompress it and dd it straight onto a 4 GB or larger uSD card, pop it into your BeagleBone, and boot.  If you need help writing the uSD card, follow the BeagleBone instructions, just use the image file above instead of the official BeagleBone files.

If you encounter any problems, please report them via the Machinekit issue tracker on github, or on the Machinekit Mailing list.  While this is the first public release, there have been several test images for limited release (check the Machinekit list to keep updated!), and it looks like things are pretty solid.  As soon as there is a final BeagleBone Debian build, I'll make a matching Machinekit version and post it on the Machinekit page.  There will even be an eMMC flasher version for those of you lucky enough to get a RevC board.  I've got mine on order, and am hoping that I'm near the front of the line!

Tuesday, March 25, 2014


I have been building up the second CRAMPS board to verify the low-cost PCBs from off-shore really work as expected.  Since I'm doing another build anyway, I have been documenting the process with pictures and have created a CRAMPS 1.0 page with assembly details, ECOs, and other board details on the RepRap Wiki.  Follow along there if you're interested in tracking progress or are building your own board.  If you are interested in building up a board and can hand-solder the six fine-pitch SMT parts, send me an email and I'll try to get you a bare PCB.

Meanwhile, work is progressing on the next version of the CRAMPS board thanks to Murry Lindeblom.  Murry has been doing some great with KiCAD getting the schematic whipped into shape while I've been busy with other projects.  The main changes are to simplify the design, reducing parts count and making the board cheaper to produce.  See the list of ECOs on the RepRap Wiki for hints about the next version.

Monday, March 24, 2014

tBone Cape

The tBone 3D printer / CNC cape has been announced for the BeagleBone.  It looks like an interesting board with some unique features.  I like the use of more sophisticated stepper driver chips from Trinamic, and the support for higher-current stepper motors.  This board seems to have an Arduino on-board to handle real-time, so it will likely take a bit of coding to get it working with MachineKit which is expecting to control real-time motion with the PRU.

For more details, see the tBone website and their Indiegogo campaign.

Wednesday, March 19, 2014

MRRF Report

by Charles Steinkuehler

I feel the Midwest RepRap Festival was a great success.  My primary goal was to increase awareness of using LinuxCNC and the BeagleBone to control a 3D printer.  I was interviewed by Hackaday, talked so long to many key people in the RepRap world that my throat was sore, and have been requested to write an article on using the BeagleBone for a major publication (stay tuned for details!).  It was great to meet and talk to Josef Prusa, see Nicholas Seward again, meet Drew Fustini and Jason Kridner in person, and talk to everyone else at the Festival.

From the many discussions I had with folks looking for something more than an AVR based Arduino to use for machine control, several key tasks became apparent.  Look for these to be implemented soon, and feel free to help out if you can!

  • Debian Packages:  With the BeagleBone soon to ship with Debian installed by default, it is important to have packages available so LinuxCNC can be easily installed without having to build from source.
  • Custom interfaces and/or an interface API.  No one likes current interfaces available with LinuxCNC for 3D printing (myself included).  There needs to be a simpler interface geared towards 3D printing, and many folks were interested in running headless or with a custom simplified interface (think small text LCD or OLED panel vs. Linux desktop).
  • Example configurations:  Ease of use is critical, and besides being put-off by the LinuxCNC interfaces, most people were further discouraged by the complexity of configuring a machine.  This needs to be made a lot simpler.  Part of the power of LinuxCNC is it's flexibility, but that makes for complex configuration files.  Most of this can be hidden for standard machines (Cartesian 3D printer, linear-delta printer, gantry desktop mill, etc), leaving users to simply adjust machine specific details like axis gain.
There are some other big news items and projects I learned about at the Festival, but can't talk about publicly yet.  Stay tuned, watch for news from the Beagle Board folks, and you might want to keep an eye on what Josef Prusa is up to.

Wednesday, March 12, 2014

Crunch Time (MidWest RepRap Festival)

by Charles Steinkuehler

At the last minute, I got permission from my wife to attend the Midwest RepRap Festival in Goshen, Indiana this weekend (March 14-16).  That means I am now in serious crunch mode (along with the rest of the folks working on MachineKit) to get some demos working for the event.  I am working on finishing my Wally beta build so I can get it printing using real-time kinematics powered by LinuxCNC.  Michael Haberler and Alexander Rossler are working on a networked HAL demo that will show some of what is possible using the new real-time foundation at the heart of MachineKit.  Everyone else is helping with marketing materials, website updates, and all the other tasks that need to get done.

If you're going to the festival, look me up.  In addition to demos, I plan on bringing what is likely the largest assortment of hardware CNC capes for the BeagleBone ever in one place for show and tell  I will have what is currently the worlds only working CRAMPS board, one of a very few K9 boards in existence, as well as several others.

Stay tuned for updates and pictures/video from the Festival!

Sunday, March 2, 2014

CRAMPS Board Working

I have the first CRAMPS board assembled and mostly checked out.  There are a few minor glitches (see the ToDo file on github), but so far no serious problems or anything that makes the current PCB design useless.  I have an example LinuxCNC configuration available if you want to try things out on your own.  The configuration requires you install my new Universal BeagleBone I/O Overlay, which can be used to switch between most "interesting" hardware options for the various I/O pins without having to load multiple overlays or possibly merge several incompatible overlay files by hand.

If you're a fan of scary movies, I even made a video:

Thursday, February 20, 2014

Linear Delta Printing with LinuxCNC

Reviewing my posts, it looks like I somehow missed sharing Brandon Heller's incredibly awesome video of his Kossel linear-delta printing parts for a GUS Simpson (a grounded delta).  I printed up a few sets of the GUS Parts on my MendelMax and will vouch for how hard they are to print.  I've gotten my Kossel based printer to move via LinuxCNC, but it's no where near as far along as Branon's.  Great work!

Friday, February 14, 2014

The King Is Dead

Long Live the King!

...which is a round-about way of saying this blog has a new address!

When linking to anything on this blog, please use the new domain.  Of course any URLs you have stashed in bookmarks or web pages will still work thanks to the wonders of modern networking.  :-)

Over the next several weeks, look for more additions to the network family, including a main website and some more technical posts on how the new architecture differs from the existing LinuxCNC, what bits-and-pieces are available, and how to build useful machines that work in hard real-time without spending man-years writing code.

Lots more details coming soon, as well as lots of handy usable software.  I'll be releasing a major update to the PRU code which will support encoders (for full servo systems w/o an FPGA) and a consistent pin numbering system you won't have to be a programmer to understand.

What is MachineKit, I thought it was a BeagleBone uSD image?!?

What is MachineKit?  I like to think of it as a "Robot Army Construction Set", but something like "controlling movable things" is probably better.  Give us a bit to work up a good slogan...we're all engineering types here and marketing taglines are hard.  :-)

But yes, the work I've done to get LinuxCNC running on the BeagleBone does have a downloadable image named MachineKit.  However there is more to MachineKit than just an SD card image.  MachineKit is Michael Haberler's vision for LinuxCNC being worked on by a small (but very talented and busy) group of folks.  The idea is to take the "guts" of LinuxCNC back to it's modular roots and into the future by providing an assortment of pre-built, ready-to-use drivers, routines, and interfaces for machine control.  Think something sort-of like Lab View, but with hard-real time performance and the ability to (safely) control anything from room-sized CNC machines to desktop 3D printers to self-balancing robots and autonomous quad-copter drones (hmm...did I mention Robot Army Construction Set?).

Background and dry technical overview to help you sleep tonight

One of the first major features of the new MachineKit code was porting LinuxCNC to run on a variety of real-time kernels.  LinuxCNC used to support several real-time options but recently had degenerated to only working with RTAI.  With the introduction of several new RTOS options (including Xenomai and RT_PREEMPT), it became possible to run LinuxCNC on the BeagleBone.

Other enhancements being worked on include a completely new messaging scheme to communicate between various components of the LinuxCNC/MachineKit world.  This not only simplifies several existing use cases, but opens up many new exciting possibilities.  Real-time and user-interface components will be able to be distributed across multiple platforms (ie: different physical CPUs connected via networking, shared memory, or some other means).  The simple version of this is running the user interface on something like a tablet or desktop PC, while a BeagleBone or other embedded processor runs the real-time code.  But even more is possible.  The new scheme has been designed to allow multiple CPUs to participate in real-time operations, so you could potentially run floating-point real-time motion path generation on the ARM of the BeagleBone, use the PRUs as "first-class HAL citizens" (rather than the pseudo-hardware interface they are currently), and even something like an AVR or ARM CortexM to off-load various other bits of HAL code.

The vision of MachineKit is to return LinuxCNC to it's modular roots (you can theoretically swap out the motion planner, gcode processor, and other core parts of LinuxCNC, not that anyone does these's code left over from the old times) and be able to more easily mix-and-match different pieces, potentially even having more than one component that performs the same or similar function.  As a simple example, perhaps you have a linear delta 3D printer (Rostock or mini-Kossel).  Usually, you want the motion controlled by the gcode processor for printing a part.  But sometimes you may want a complex program directly communicating with the motion planner to do things like non-trivial homing and auto-calibration (auto-probe a bunch of points on the bed and do a bit of linear algebra magic to determine the real physical characteristics of your machine, like arm length and tower offset, rather than trying to measure everything to sub-millimeter accuracy).  MachineKit intends to make this (and much more) not only possible, but easy to implement.

Monday, February 10, 2014


I have finished the design for the first version of the CRAMPS 3D print controller board for the BeagleBone. This "new" design is a rework of the RAMPS-FD board for the Arduino Due, which in turn is a rework of the RAMPS board for the Arduino Mega (isn't open-source great!). The PCB files are queued at OSH Park meaning I will hopefully have boards around the end of February.

Features & Details:
  • 12-24V operation
  • 6 Pololu drivers
  • 15A driver for heated bed, with dedicated power
  • 3 high-current drivers for extruder heaters
  • 2 medium-current drivers for fans/lights, always 12V
  • 4 Thermistor inputs
  • 6 Limit switches (5V tolerant)
  • 4 Servo outputs
  • SPI and I2C expansion headers (5V tolerant)
  • Flexible power options for the BeagleBone (use 'Bone 5V jack, 5V screw terminals, or add a regulator to generate 5V from 12-24V system power)
  • Hardware ESTOP chain
  • Stack-through design allows for expansion
If you like living on the edge I've shared the board at OSH Park so you can order your own. Design files are on github, and I've started a thread on the RepRap forums if you have any questions.

Currently the BOM pretty much doesn't exist, and please don't judge me by the lack of assembly drawings in the PCB files.  KiCAD apparently doesn't have assembly layers or allow creating arbitrary mechanical layers so I can't make assembly drawings the way I'm used to for the last 15 years.  I'll get it all sorted out, and add a full BOM once I've sourced and ordered all the bits and pieces needed to build the board.

Saturday, February 1, 2014

New -bone39 Kernel Available

I've been building a lot of kernels lately, testing various options recommended by the Xenomai folks to improve latency.  Nothing has been a "magic silver bullet", but the overall combination of options has dramatically reduced typical latency, even though worst-case values haven't dropped much.

Also, some folks testing with recent kernels noticed the CPU wasn't running at full speed.  I have re-enabled the frequency scaling support in the kernel (the Xenomai folks recommend disabling this), which has restored the expected 1 GHz operation.  Tests so far show no impact on latency figures, since the CPU frequency isn't actually changing (only the performance scheduler is compiled into the kernel, which keeps the CPU running at the highest possible speed and doesn't try to throttle the CPU to save power).  AFAIK, the latency hit is from the CPU shutting down while the PLLs relock to a new frequency, so if the CPU never changes it's operating frequency there shouldn't be any issues.

You can download the new kernels here.  If you try it out, please let me know how it works for you.  I'll probably try to make new images with just the kernel update soon, but I'm in the middle of a bunch of other coding and updates, so pester me if you really want a new image and it hasn't shown up on the MachineKit page.

In other news, work is in progress to develop interfaces geared towards the BeagleBone (lower resolution screens with less 3D intensive "eye candy"), I've started work on the CRAMPS 3D Printer interface board, and I hope to have encoder support (both hardware and PRU software based) working  soon.  Rigid tapping could be coming soon to a 'Bone near you!  :-)

I am making good progress on the CRAMPS and encoder tasks.  If you would like to assist with interface design for the 'Bone, please post on the LinuxCNC developer list.  I don't do well designing GUI interfaces, and am looking for as much help as I can get to provide usable and attractive interfaces for the BeagleBone, for both CNC machining and for 3D printing.  Thanks!

Friday, January 24, 2014

Replicape Available

The Replicape, winner of the BeagleBone cape design contest, is now available for purchase from Thing-Printer.  Congrats to Elias for his cape contest win, and especially for having the follow-through to get the product designed and built!

The Replicape looks like a good board to use for 3D printing, but won't immediately work with the LinuxCNC/MachineKit images currently available.  SPI and I2C setup is required, which means some coding is needed to get everything working properly.  I have a board ordered, and I am currently reworking the PRU code (to make pin numbering hopefully understandable).  I hope to add Replicape support to the next release of my images, but if you're willing to try and tackle any of the SPI or I2C configuration tasks, please let me know.  The setup routines can probably be done as user-mode HAL modules written in Python, so it shouldn't be too hard (unless you're like me, and grok assembly language better than things like Python and Ruby!).

Don't forget there is an ever-growing list of capes to do CNC and 3D printing with the BeagleBone.  Choice is a good thing, and I'm excited the Replicape is finally shipping, adding another great choice to the list of available boards.  I can't wait until mine arrives!