What is FabBSD?
FabBSD driving a PCB drilling machine

FabBSD is an open-source, 4.4BSD-based UNIX-like operating system designed specifically for machine controllers. Using low-cost computer hardware, FabBSD can be used in a variety of applications, such as:

  • Machine tools: CNC milling machines, lathes, routers, lasers
  • Automation: Manipulators, power supplies, relays, valves, heaters
  • Instrumentation: Optical encoders, thickness gauges, sensors

The typical FabBSD-based control system uses a fanless, headless System-on-a-Chip board (network appliance boards with general-purpose I/O ports such as the Soekris are ideal), fitted with application-specific controls such as manual-pulse generator handwheels, and interfaced over the network. FabBSD runs on a number of different hardware architecture.

FabBSD's kernel regulates system interrupts and handles process scheduling, context switching and FPU management differently from a general-purpose kernel, such that real-time tasks can be performed without sacrificing the convenience of a fully functional Unix system. Canonical machine control functions are built into FabBSD's native executable format. This provides user-mode applications (e.g., ngc, move, boltpattern, gerbdrill) with an efficient interface to the hardware. The ngc interpreter can execute standard machining programs in RS-274/NGC v3 format.

A common task of FabBSD systems is the coordinated motion of machine axes, whether driven by steppers, servo-motors or cylinders (with or without software-based closed-loop control). FabBSD uses a kernel-mode trajectory planner to generate stable motion control signals (using blended S-curve velocity profiles) at high frequencies with minimal hardware requirements. A simple 133MHz 486-class processor is sufficient for FabBSD to control multiple microstepping motor drives (such as the popular Geckodrives), at their maximum working frequency.

FabBSD is a derivative of OpenBSD (while FabBSD is distributed as a stand-alone system, most machine-control components are standard BSD kernel devices that can be ported back to OpenBSD, NetBSD or FreeBSD with minimal patching to other parts of the kernel). The base distribution includes OpenSSH, Sudo, Binutils, GCC and GDB. The installation process is straightforward (via CD-ROM, FTP, floppies or tapes).

FabBSD is under active development and is currently aimed at developers and beta testers. Source code is available via Subversion. Binary snapshots are also available from FTP. Testers, please join #FabBSD.

News
05/15/2010 The "jog" function is now implemented in user-land. For the jog(1) command to work after updating, users of manual pulse generator handwheels on existing installations should use:
cd /dev && sh MAKEDEV mpg0
04/08/2009 New FTP site: ftp://ftp.FabBSD.org/pub/FabBSD/ (Montreal, QC)
03/26/2009 This project is now known as "FabBSD". A new Subversion repository has been created. While the former "machctl" code was in the form of patches and kernel extensions specific to CAM (and limited to interpreted programs), FabBSD becomes a stand-alone operating system dedicated to CAM and general automation applications.
12/10/2008 Added documentation wiki.
03/02/2008 New mailing list / forum created: machctl@. Also created machctl-commits@ mailing list for automated commit notifications of the machctl source code exlusively.
06/10/2007 New development version: machctl-06102007.tar.gz
Related projects: Edacious, cadtools

Support machctl

Hosted on multiple redundant OpenBSD servers at Csoft.net.
2014 Hypertriton, Inc. Opposed to software patents and DRM-encumbered devices!
Hosted by Csoft.net Eliminate DRM!