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