Sunday, June 2, 2013

BeagleBone + BeBoPr + LinuxCNC + MendelMax Printing

Video of my very first print using LinuxCNC running on a BeagleBone with the BeBoPr cape to control my MendeMax RepRap 3D printer.  The BeagleBone is running a Xenomai real-time kernel, but using the PRU (Programmable Realtime Unit, a 200 MHz deterministic microcontroller for off-loading time-critical tasks) to do step/dir and pwm generation.  The PRU code is fairly advanced, and supports a configurable task list with full control over the number and types of tasks (ie: make as few/many step/dir and/or pwm outputs as you want).  The PRU is currently running a 10 uS task loop, but can run faster or slower depending on how many tasks you want to run.  The 10 uS is easily handling 4 step/dir tasks plus a pwm task with 3 outputs and is only busy about 1.5 uS (so 85% idle).

The source for the PRU code and the LinuxCNC HAL driver to talk to it can be found here:;a=shortlog;h=refs/heads/arm335x-hal-pru-tasks

Look in the src/hal/drivers/hal_pru_generic directory.  The *.p files are for the PRU, and the *.c files are the Linux/LinuxCNC side driver for it.


  1. I like your printer a lot. Have made major changes since this post? Do you use slic3r or other slicing software or do you do this all in linuxcnc?

  2. I've switched to 1.75mm filament, but the printer is mostly the same. I use Slic3r (and occasionally Kisslicer or cura) to generate gcode, and use LinuxCNC to control the printer and actually make the parts. I've got pics of my latest prints on g+: