Firmware for Melzi and Sanguinololu RepRap electronics
C C++ Java Objective-C Python
Failed to load latest commit information.
Sprinter_Melzi M109 Melzi bug fixed Apr 1, 2012
Sprinter_Sanguinololu M109 bug fix Mar 31, 2012
README Updated README to point people at Marlin. Aug 13, 2012


This firmware repository is not current and is maintained for legacy purposes.

The current RepRapPro Firmware is Marlin.



Firmware for RepRapPro Huxley, based on

There are two slightly different configurations: 

   1. Sprinter_Melzi, which is configured for the Melzi electronics (
   2. Sprinter_Sanguinololu, which is configured for the Sanguinololu electronics (

The leading developers of Sprinter are currently Kliment and caru, though many others contribute with their patches.

This is a firmware for RAMPS and other reprap single-processor electronics setups. It supports printing from SD card, active heatbed control, and ATmega internal pullups.

This work is licensed under the GNU GPL v3 or (at the user's discretion) any later version.

It is based on Tonokips's firmware, which was licensed under GPL v2 or later.

WARNING: This version (April 19th, 2011) fixes a bug that caused speeds to be lower than what
    set in GCODE. So before attempting any print, you will have to check all
    your axis max speed, including the extruder retract speed. Not following
    this guidelines can seriously damage your printer.

The configuration file now has an option to set the wanted temperature table file. If you copy and paste a temperature file from older versions, make sure that the configuration is pointing to it. For example:
#include "ThermistorTable.h"

In addition, you can optionally use a different thermistor table for hot-end and bed. To do so, comment out the following lines in configuration.h:
#define bedtemptable temptable
Then add a line pointing to your second thermistor table, for example:
#include "BedThermistorTable.h"
Finally, make sure that the nozzle thermistor table, inside ThermistorTable.h in this case, is defined as "temptable" and that the bed thermistor table is defined as "bedtemptable", and that the number of temps is defined as NUMTEMPS for the heater and BNUMTEMPS for the bed.

There are examples of all these configurations in the configuration.h file. Please look at them before you change anything.

Complete beginners guide

From a fresh Ubuntu install how to update the firmware of your Prusa Mendel ?
(the specifics are for the Prusa Mendel built at the Bath RepRap masterclass.
This version uses the 
Some details may not fit your hardware, be sure to check what you are doing)

Steps 3,10,11 are hardware-specific to the Sanguinololu and Bath Prusa and should be skipped or modified accordingly for other hardware such as the Arduino Mega 2560

Software installation

1. Install the required packages (gcc-avr, avr-libc, etc.)
  sudo apt-get install arduino-core

2. Get the arduino software version 0018, uncompress it in a directory

3. Get the sanguino software, version 0018

follow the sanguino's readme so that your arduino hardware folder looks like 

4. Clone the Sprinter git repository. 
   git clone
Optionally, switch to the desired branch
  git branch -a
  git checkout THE_BRANCH_YOU_WANT
Firmware compilation and upload

5. Edit INSTALL_DIR inside Sprinter/Makefile (do not mind the default reference to arduino 0022)

6. Run make. If everything goes well Sprinter/applet/Sprinter.cpp should have been created.
You can safely ignore the error message mentioning arduino-0018/hardware/arduino/cores/arduino/WString.o

7. Connect your Sanguinololu to your computer

8. Launch arduino-0018/arduino, open Sprinter/Sprinter.pde

9. Go to Tools -> Serial Port, and select the relevant option

10. Go to Tools -> Board, select Sanguino

11. Go to the Configuration.h file and edit the following lines:
   #define MOTHERBOARD 62
62 indicates Sanguino 1.2 or superior

  float axis_steps_per_unit[] 

set values that match your hardware. For the special cast gears of the Bath Masterclass Prusa Mendel, these values are  
  float axis_steps_per_unit[] = {91.42857, 91.42857, 3200/1.25,700}; 

also for the mentioned hardware setup
  const bool ENDSTOPS_INVERTING = false; //set to true to invert the logic of the endstops
  // false because the switch SIG signal is linked to the ground
  // "no touch == closed circuit == SIG connects to GND"
  // see

12. Click on the "play" button to compile. If everything goes well you should see a "Binary sketch size: " message.

13. Click on "the arrow going to the right" button to upload (you had done steps 7,8,9 before, right ?). 
If everything goes well you should see the message "Done uploading".

Congratulations, you have just upgraded the firmware of your RepRap !

You can use to do some manual verifications by moving the printer's tip along 
the axes and verifying that the physical displacements match the ones indicated on the interface.