SchmalzHaus logoEBB Commands

New Documentation

We have developed a new set of command documentation for the EBB. Everything on this page is now deprecated and is being left here just for historical purposes. PLEASE use the new document page - it is much easier to read, more accurate, and is kept up to date.

New EBB Command Document

Everything below is deprecated! Use the New EBB Command Document link above to get to the new command documentation.


The EBB firmware is based on the UBW firmware. The same basic command processing framework is used, so the same type of commands are used, and the same type of errors are returned. See the UBW command documentation for an introduction to these topics.

This command reference applies to EiBotBoard Firmware v1.8.0 and above. (Any differences between firmware versions are noted below and in release notes.)

Other Resources

Differences between 'standard' EggBot firmware version (2.0.1) and latest version (2.3.0)

There have been many changes in the code between the version that is currently (April 27th, 2014) shipping with EggBot (v2.0.1) and the latest version (v2.3.0). However, care has been taken to make the actual performance of the commands used by the EggBot Inkscape extension (and Water Color Bot) exactly the same as version 2.0.1 for compatibility's sake. At least until somebody discovers an incompatibility, and then we will fix it! (please send us e-mail or file an issue on GitHub :

All of the changes made between versions 2.0.1 and 2.3.0 (or above) should not affect EggBot or WaterColorBot operation in any way. The changes are there to support other uses of the EBB (lots of other folks use it as well for many different things). So if you are just using EggBot or WaterColorBot, there isn't a good reason to update your firmware to the latest.

EBB Command Reference

The "XM" Command (stepper motor move for mixed-axis geometries) - Added in version 2.3.0

The "QC" Command (Query Current) - Added in v2.0, broken up to v2.2.2. Works properly in v2.2.3 and above.

    This command only works properly on EBB hardware v1.3 and above. (The white boards from EMSL are v2.0, and all boards from SparkFun are v2.0 and above) The first value returned is the raw 10 bit analog level on the REF_RA0 input to the stepper driver chip. This voltage level sets the max current that the driver chips allow into the motor coils. The second value returned is the raw 10 bit analog level on the V+ input (i.e. the power coming into the board, but after the first diode), and is scaled so that the input voltage doesn't go above the 3.3V max analog input level for the MCU.

    For a v1.5 EBB, the following values were measured for the second returned parameter of the QC command:
Input (V+)    QC second parameter
0.0 449
5.0 513
9.0 574
12.0 604
24.0 775
    So one can use these two returned values to check for proper stepper motor driver current and proper power supply input voltage. You could also disable the motors, read the power input voltage, then enable the motors and check it again, giving an approximate reading of the level of voltage droop on the power supply when the motors are loading it down. Note that V+ is not measured directly, but rather after a diode and through a resistor divider. The diode will drop some voltage (dependent upon current) and there will be some tolerance in the voltage divider. Thus you can't rely upon the raw ADC value alone to give a precise measurement.

    Version History: This command was introduced in v2.0.0, but it had a bug where the upper byte of the result was no being displayed. Version 2.0.2 fixed this bug and the command now works properly. But then other problems were discovered. The whole analog sampling code was re-written for version 2.2.3 and this command now works.

The "ES" Command (E Stop) - Added in v2.2.7, updated in 2.2.9

The "SE" Command (Set Engraver) - Added in v2.1.0, updated in v2.4.1

The "NI" Command (Node count Increment) - Added in v1.9.5

The "ND" Command (Node count Decrement) - Added in v1.9.5

The "BL" Command (BootLoad) - Added in v1.9.5

The "SN" Command (Set Node count) - Brought back in v1.9.5

The "CN" Command (Clear Node count) - Added in v1.9.3, removed in 1.9.5 and above

The "SL" Command (Set Layer) - Added in v1.9.2

The "QL" Command (Query Layer) - Added in v1.9.2

The "QN" Command (Query Node count) - Added in v1.9.2

The "QB" Command (Query Button) - Added in v1.9.2

The "QP" Command (Query Pen) - Added in v1.9

The "TP" Command (Toggle Pen) - Added in v1.9

The "SM" Command (stepper motor move)

The "SP" Command (set pen state)

The "EM" Command (enable motors) for EBB v1.1

The "EM" Command (enable motors) for EBB v1.2 and above

The "SC" Command (stepper mode configure)

The "S2" Command (general RC servo output) - for versions prior to 2.2.0

The "S2" Command (general RC servo output) - for versions 2.2.0 and above

The "A" Command (Analog value get) - for versions 2.2.3 and above

The "AC" Command (Analog Configure) - for versions 2.2.3 and above

The "QM" Command (Query Motor) - for versions 2.2.6 and above

Questions? E-mail me at

Creative Commons License
EggBotBoard by Brian Schmalz is licensed under a Creative Commons Attribution 3.0 United States License.
Based on a work at
Permissions beyond the scope of this license may be available at