How to Burn The Firmware And Bootloader

This page discusses how to load the bootloader on the gen3 boards. If you just want to update the firmware on a board that already has a bootloader, see Motherboard Firmware Updates.

When new motherboards and extruder boards arrive at Makerbot Industries, the microcontrollers are blank. We install bootloaders and firmware on each and every board before we ship it out the door. Here's our process.

Loading an image on to the board

Get the images

The simplest way is to pull down the G3Firmware tree from Git. Install Git, start a terminal, and enter the commands:

git clone git://github.com/makerbot/G3Firmware.git

Then switch to the correct directory. For motherboards:

cd G3Firmware/dist/SanguinoMaster

For extruder boards:

cd G3Firmware/dist/ArduinoSlaveExtruder

Connect the USBTinyISP

Plug in the USBTinyISP and connect the 6-pin ISP header to the board. Do not use the 10-pin header. The 10-pin connector on the extruder is for the quadrature encoder, not burning firmware!
Note: It is one maker's experience that the motherboard must be powered for the upload to work. Removed all the cables except the power molex and the programmer cable.

If there is an SD card in the motherboard, remove it now.

Run the burn.sh script

Run the script:

./burn.sh

The script will prompt you to hit ENTER when you're ready to burn the firmware. After the firmware has been uploaded, it will prompt you to hit ENTER again. At this point, disconnect the board you've just programmed and connect the next board. Hit ENTER again.

Type CTRL-C to exit the script, or close the window it's running in.

Linux Ubuntu users may wish to run this script as root for AVRdude to have the permissions it needs to load the firmware. The code would then be:

sudo ./burn.sh

And you would be prompted for your root password.

Troubleshooting

Creating combined firmware/bootloader images

Combined Firmware Creation (once per firmware release):
1. Burn normal bootloader with Arduino (Tools -> Burn Bootloader -> w/USBtinyISP)
2. Upload latest firmware to board (Slave or Master)
3. Download now-combined firmware from board to computer
4. Move firmware to MakerBot subversion (or your own place)

Command line snippets for downloading firmware to computer:

Extruder Controller v2.x/v3.x:

hardware/tools/avr/bin/avrdude -C hardware/tools/avr/etc/avrdude.conf -v -p m168 -c usbtiny -U flash:r:ArduinoSlave.hex:i

RepRap Motherboard v1.x:

hardware/tools/avr/bin/avrdude -C hardware/tools/avr/etc/avrdude.conf -v -p m644p -c usbtiny -U flash:r:SanguinoMaster.hex:i

MakerBot Motherboard v2.x:

avrdude  -v -p m1280 -cstk500v1 -b57600 -U flash:r:mb24.hex:i -P/dev/ttyUSB0
Unless otherwise stated, the content of this page is licensed under GNU Free Documentation License.