Some of the bootloaders for the RUMBA have been exhibiting psychoses - i.e. not working randomly. Luckily, you can fix this - all you need is an Arduino! And some wires. And this guide. And maybe a sandwich? I mean, it doesn't take that long, but you're probably a bit peckish.

The RUMBA uses two Atmega microcontrollers - the main one is the ATMega2560, and the subsidiary is an FTDI chip based on the ATMega16u4 - it controls the USB serial connection.

The symptom of this issue is the inability to upload a sketch to your Arduino - i.e. not being able to program it. I am 80% sure that the problem is on the Mega. In my attempts to fix, however, I uploaded the bootloaders of both the ATMega2560 and the ATMega16u4, and also flashed firmware onto the ATMega2560.

I don't know exactly which one or combination worked. So let's do all three!

**Update**

On two separate boards, the Atmega2560 bootloader has been faulty - possibly just an older version of the bootloader, I found some information on odd issues that they had. So, you should try to upload the Arduino Bootloader as described below :-) In fact, it's not a bad idea for everyone to update/reflash their bootloader.

Much of my knowledge was collected via forum post: http://forum.arduino.cc/index.php?topic=163152.0 It's never a bad idea to peruse the source.

Turning your Arduino into a Programmer: ArduinoISP

Here's a tutorial on ArduinoISP - the software driving this endeavor.

And this: make-arduino-isp-programmer is the guide I actually followed.

Something to note - I was only able to do this from a Windows machine - my Linux laptop refused to see the Arduino as an ISP programmer - attempting to use it would simply re-flash the arduino, not pass the code onto the RUMBA.

Arduino Bootloader

The Arduino Bootloader is what lets you upload sketches over USB, without using the programmer you just made :-) You can also upload your printer's firmware directly to the Arduino, thus bypassing the USB chip entirely - useful if you ripped your USB connector off. You won't be able to connect your printer to a computer to print, but you can use the LCD and SD card easily enough.

So first, let's flash the most up-to-date bootloader onto the RUMBA.

Using an Arduino as an ISP (In System Programmer)

I used the Arduino bootloader directly through the Arduino environment.

  • Arduino 1.6.5 environment
  • Arduino Mega with ArduinoISP loaded (see above)
  • Connect your computer to your programmer Arduino, then your programmer Arduino to the RUMBA
  • In the Tools menu, make sure you select the 'programmer' as 'Arduino as ISP'
  • Run Tools → Burn Bootloader

Using an AVR ISP mkII

You can also use an actual programmer, but only a few can program the ATmega2560 - for instance, the USBTinyISP can't handle it.

  • Arduino 1.6.5 environment
  • AVR ISP MkII - I used the WaveShare model specifically.
  • The AVR ISP MkII doesn't supply power to the board - so you'll need two USB cables
    • USB A to USB B
      • connects computer to programmer (comes with programmer)
    • USB A to USB Mini B
      • connectrs RUMBA to computer, or any +5v source
      • You can also run the RUMBA off of your power supply, just make sure the jumper is set correctly.
  • In the Tools menu, make sure you select the 'programmer' as 'AVRISP mkII'
  • Run Tools → Burn Bootloader

Using avrdude

You can find the official bootloader on the Rumba page of the RepRap Wiki, and use AVRdude from the command line as well, with either of the above programming methods.

Loading Marlin directly

Next step is to load Marlin onto the board directly.

You'll need the same ArduinoISP programmer setup as above

  • Arduino 1.6.5 environment
  • Arduino Mega with ArduinoISP loaded (see above)
  • Load Marlin Firmware into the environment
    • check that your config is correct :-)
  • In the Tools menu, make sure you select the 'programmer' as 'Arduino as ISP'
  • And upload the firmware just like you normally would :-)

Burning the FTDI / ATMega16u4

When you burn to the ATMega16u4, there's no difference between the bootloader and the program - it's all one big hex file. This means you'll need to use avrdude instead of the Arduino environment.

avrdude sounds friendly. http://www.nongnu.org/avrdude/ It's sort of not. There are Windows versions, but they're out of date; I resorted to my native Linux, where you can just ask the package manager for it, and it will be provided.

sudo apt-get install avrdude

This line of code is what I like about linux. There's alot not to like, sure, but give me a proper package manager and I'll use your OS. But I digress.

Once you have avrdude, you'll need the code: http://reprap.org/wiki/File:RRD-RUMBA_ATmega16U2_USB2Serial.hex.zip avrdude uploads hex files. It's literally hexadecimal, go ahead, open it up. I like using notepad++ with the hex-editor plugin.

avrdude upload

  • Once you're done screwing around, you'll need to wire up your programmer - instead of connecting your make-shift ISP cable to the ATMega2560, though, you'll need to connect to the six-pin header down near the USB cable.

Do it in the command line, yeah.

  • avrdude installed in some arcane form
  • Arduino Mega with ArduinoISP loaded (see above)
  • avrdude -c arduino -p m16u2 -F -U flash:r:RRD-RUMBA_ATmega16U2_USB2Serial.hex:i

Boom. Done. avrdude's output is actually really helpful, so do read it to see what went wrong how well it worked.

3d_printer_build_group_7_instructions/flashing_rumba_bootloader.txt · Last modified: 2015/12/21 21:04 by paenian
 
Except where otherwise noted, content on this wiki is licensed under the following license: CC Attribution-Share Alike 3.0 Unported
Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki