Mega 2560 Firmware Upgrade

Hi, Guys,

I'm new to Arduino and this is my first post here. I just bought a Mega 2560 a couple of days ago, and was looking on another website and it said that I might need a firmware upgrade. Sure enough, I checked, and mine has an older version of firmware. I'd like to do the upgrade, but the trouble is, I don't have a clue how to do it. Can someone explain to me how to? Thanks, Lew

What version do you have now?

No matter what, you will need a tool to update it.
That tool is an AVR ISP Programmer, such as Atmel AVR ISP MKii ($36 at mouser.com) or another Arduino with a sketch downloaded so it acts like a programmer:
http://www.gammon.com.au/forum/?id=11635

Or do you just mean an IDE upgrade? Current version is 1.0.5.
Check Download above for occasional updates.

1 Like

Hi, Crossroads,

I don't remember what version I have, but when I went to a website about the board, it told me to check the version of firmware that was in it, and when I checked, it said that some boards shipped before july 2013, I think, were shipped with the old firmware. Sure enough I checked, and mine has the old version. Then it told me to go to the Atmel website and download the new firmware, and then it said to go to another site, Github, and get the code from there. Like I said. I'm new to all this, and just don't know how to do what I need to do to get the upgrade done. Lew

mrmagoolew:
Hi, Guys,

I'm new to Arduino and this is my first post here. I just bought a Mega 2560 a couple of days ago, and was looking on another website and it said that I might need a firmware upgrade. Sure enough, I checked, and mine has an older version of firmware. I'd like to do the upgrade, but the trouble is, I don't have a clue how to do it. Can someone explain to me how to? Thanks, Lew

By "firmware" do you mean the IDE (programming environment that you download from the Internet) or do you mean the bootloader code internal to the MEGA that allows you to send programs you write INTO the board?

If you want the new programming environment, simply download it: [u]**http://arduino.cc/en/Main/Software**[/u].

The IDE also has the latest bootloader code for all the Arduino boards.

If you want to update the BOOTLOADER, you need an In System Programmer (ISP) which is a little box that connects to USB on your PC side and to the Arduino via a 6 pin ribbon cable (which plugs into the 3X2 pin header near the reset button on your MEGA).

The ISP can be purchased from Atmel (the people who make the AVR chips) or you can build one using another Arduino.

The Atmel programmer (recommended): [u]**Electronic Components and Parts Search | DigiKey Electronics

--- or ---

A "shield" (little board you plug into another Arduino to make it into an ISP): [u]**https://www.sparkfun.com/products/11168**[/u] Note that the shield is a kit (very easy to build) but you do have to do a bit of soldering. If you build your own programmer using a blank shield and parts, you still have to solder.

The Atmel programmer costs more $$$, but it's rock solid, it always works flawlessly. The software version (made with another Arduino) does work well, but it has limitations. It's slower, it can't program as large of a memory area as the Atmel unit can and sometimes it acts up and won't program a board.

Of course, all the bootloader really does is allow you to load code into your board. It doesn't matter if you have an older bootloader or the newest one... the CODE you write and eventually upload to the board is exactly the same.

So, basically, unless you REALLY need an ISP programer or simply WANT one, don't bother with it. There is even the chance that you could accidentally program some fuses (internal chip settings) wrong and lock yourself out of the board with no way to get back in other than a "high voltage parallel" programmer (that's happened to me a few times!).

Lastly, if you're interested, I have a nice version of the MEGA bootloader with all the "junk" stripped out of it so that it only uses 2K of flash memory instead of 8K. Not that I needed the extra room, but I just couldn't bear to have 6K of memory wasted by a "monitor" program that most people don't even know is in there and most people never use.

Hope this info clears some things up.

-- Roger

Hi, Roger,

Thanks for your response. I think what the other website was showing me was that the bootloader code was an older version. I don't think it had to do with the IDE. It said something about the Atmel chip itself. I should have bookmarked the page, but didn't, and I'm not able to find it now. It did say about a firmware upgrade though. Like you said, I may not really need to do the upgrade though, and it might work fine. I don't know. I found a cheaper ISP at sunroom.com for $23. I don't know how well that would work. If you think it would work, let me know. I guess you get what you pay for these days. Maybe I'll play with my board for a while, then decide what to do. Lew

It said something about the Atmel chip itself.

The chip doesn't have firmware, unless you count the bootloader. How did you find you had the "old firmware"? In what way is it old?

I would try to use it, if it works, then leave well enough alone. There are some subtle issues with old bootloaders which might affect you if you are using the watchdog timer, or uploading code with "!!!" in it, but other than that it should work fine.

Hi, Nick,

I was on a website that told me to check the firmware version, as they said that before July 2013 that the boards were shipped with "old firmware". I wish I had bookmarked the site, so that I could direct you and others to it, but I didn't. I did what it said on that website about going into device manager and such, and that's how I found out about the old firmware version. I'm really new to all this Arduino stuff, as I just got my 2560 board a couple of days ago, but when I saw the article about the firmware and the upgrade, I thought I would do it because I though it might make my board run better. I'm only going by what that website said. I'll try to find that website, but it'll be like looking for a needle in a haystack. If I find it, I'll let you know. Lew

It might refer to the USB chip device driver.

Anyway, if it works, it works.

mrmagoolew:
Hi, Roger,

Thanks for your response. I think what the other website was showing me was that the bootloader code was an older version. I don't think it had to do with the IDE. It said something about the Atmel chip itself. I should have bookmarked the page, but didn't, and I'm not able to find it now. It did say about a firmware upgrade though. Like you said, I may not really need to do the upgrade though, and it might work fine. I don't know. I found a cheaper ISP at sunroom.com for $23. I don't know how well that would work. If you think it would work, let me know. I guess you get what you pay for these days. Maybe I'll play with my board for a while, then decide what to do. Lew

The AVR chips don't have any "firmware" in them at all from the factory. What we use is an AVR chip with a small block of code installed in it called the bootloader.

On smaller Arduino boards, the bootloader only uses 512 bytes of flash (out of 32K). The larger boards like the MEGA have an 8K bootloader (trivial since you've got 256K of flash). The MEGA bootloader has a huge "monitor" program in it which allows a user to look at memory, flip bits, etc... 99.4% useless. When removed, the 8K bootloader can be reduced to 2K (I've done it on all my MEGA boards).

All the bootloader does is, when the Arduino is reset, the bootloader looks for serial port activity for a short time, asking "does he want to upload anything to me today?". After the timeout, the bootloader jumps to the pre-defined start address, hopefully running a program that had been previously installed.

The bootloader "stays out of the way". It doesn't use any resources (other than the tiny bit of flash it's installed into) and it only adds a short delay between reset and program start (while it's checking for a new program).

The bootloader makes it easy to load, test, reload, test, etc.... your code over and over again without having to plug in an ISP programmer each time.

If you had an ISP, and if you wanted to, you COULD get rid of your bootloader altogether and program the chip with the ISP. Then, at reset, instead of checking for new code, it would just jump directly to your program. Of course, the Arduino board would then need to be re-programmed with the ISP each time you wanted to update your program (or you could re-install the bootloader!) :slight_smile:

Last bit... unless you plan to build your own ISP, don't even THINK of buying any programmer other than the Atmel. Believe me, all the other ones out there are just basically copies of the original "Arduino as ISP" circuit and as I mentioned before it's not 100% stable. The Atmel programmer ALWAYS works 100%.

The AVRISPMKII (Atmel programmer) is only around $30 to $35 USD... there's no good reason to buy anything else (IMHO).

So, as I said before, unless you are going to really "get into" programming or if you have PROBLEMS with your bootloader and NEED the newer one, leave it alone. It's not going to affect your CODE at all.

Good luck!

Which web page is suggesting that you should "update the firmware"?