As of October 4, 2016, RiceCNC is making the complete firmware source code available in the hope of picking up support from open source authors. However, it is being released under GNU GPLv3 license such that bug fixes and additions will remain public domain.

RiceCNC is an integrated hardware and software/firmware solution for controlling Computer Numeric Controlled (CNC) machines using a Macintosh desktop computer running OS X 10.8 or later. The desktop application includes both the host software and embedded motion control firmware for the TI LaunchPad series micro-controller (MCU) boards.

The MCU cards can interface easily with many existing motor driver cards, many with the addition of a Centronics compatible cable with DB-25F connector. This document provides details for adding this type of cable to the selected MCU board. Several signaling methods are supported in addition to the standard step & direction method. Serial Peripheral Interface SPI connection is also supported for the ST Microelectronics L6470 fully integrated motor driver ICs.

Control software is based upon the RS-274 file format standard. RS-274 is the intermediate file format often used to control and coordinated motion in high end milling machines. Because the language is used for several machine types, only a basic set of commands can be expected to have similar results on all machines. The interpretation of other commands will vary depending on the machine type or manufacturer. Thus several dialects of the language exist and the language defies further standardization.

More recent low-cost solutions to machine control utilize PC software not only to help to generate RS-274 code, but also to interpret the code translating it to pulse trains for direct stepper or servo motor driver control. Higher level Computer Aided Manufacture (CAM) software packages can perform complex tasks while also ameliorating RS-274 dialect problems. However, these software packages tend to be too expensive for the typical hobbyist.

Because RS-274 is mostly used only as an intermediate file format, the specification has little support for program control and is cryptic using single letter codes. Many entry level software packages, including this one, use RS-274 as the basis for a programming language by expanding it to add variables and program control.

This system supports a common subset of the RS-274 (G-Code) commands, including drill cycles, but adds some unique features including cubic bezier curve interpolation, string substitutions to improve readability. Cubic bezier interpolation enable complex motions in multi-dimensional space whereas RS-274 supports only circular arcs constrained to one of three orthogonal planes.

Note: Beware that some systems claiming to use a motion control micro-controller board actually use a serially connected interface board. These boards merely carry host pulse trains over a USB cable. The interface must maintain a high data rate as the ┬ÁP board cannot respond well to a data interruption.