What is ICSP2 for ?

I am trying to understand how to fix Uno R3 board USB upload failures.
With my USBtinyISP programmer, I am able to successfully upload sketches via ICSP1.
It is a good workaround as it shows the Uno is still alive.
I wonder, would ICSP2 offer a way to repair USB uploads?
And if so, how to attempt it?

It's the ICSP header for the ATmega16U2 USB chip on the board. You would use it to flash a firmware to the ATmega16U2 microcontroller. That microcontroller also has a "DFU" capability you can use to flash it over the USB cable using the Atmel Flip software:
https://www.arduino.cc/en/Hacking/DFUProgramming8U2

It's very unusual to mess with that chip at all (though occasionally people will replace it with a custom firmware, not as a fix, but to add enhanced capabilities to the Uno). Most likely if the chip stops working then it is physically damaged, which will not be fixed by replacing the firmware. I suppose that under rare circumstances the flash memory might be corrupted without physical damage.

Very interesting.
So the conclusion is that a broken USB upload cannot be fixed under any circumstances?
I am not ready to believe this.

A bit of background: I am teaching a high school Arduino course. A student connected a potentiometer to pin 0, instead of A0. This resulted in being unable to upload via USB, as expected.
Is there not a way to fix the USB chip?
It would be really cool, if there was a way to heal the USB upload function for my student.

21za2323rzcvzxcv:
So the conclusion is that a broken USB upload cannot be fixed under any circumstances?

Anything can be fixed if you have the tools and skill and time to replace the damaged components. Most of us are short on those things though, and so find that repair is not feasible.

As I said before, there might be some rare occasions where replacing the firmware will recover the board, but you can never fix physical damage with software. The magic smoke simply can't be put back in the chip once it was released. But it's fun to play around with burn bootloaders, flashing the firmware, DFU, etc., and that can be useful knowledge to gain even if it doesn't happen to bring the board back to life. So by all means go for it!

21za2323rzcvzxcv:
A bit of background: I am teaching a high school Arduino course. A student connected a potentiometer to pin 0, instead of A0. This resulted in being unable to upload via USB, as expected.

Also expected would be that as soon as you remove the connections to pin 0 the upload starts working again. If not, then it's likely there was a short circuit that did physical damage.


One thing to note is that when you upload to the ATmega328P on the Uno with the USBtinyISP, it erases the bootloader. That means you can no longer upload normally over USB even if the ATmega16U2 is working perfectly. So make sure that doesn't cause you confusion.

You may have damaged the atmega328p chip if the potentiometer shorted pin 0. Unlikely you damaged the 16u2 because there is a 1k resistor between that chip and pin 0.

Have you done a loop-back test, but instead of holding the atmega328p in RESET, remove it from the socket, because a shorted pin will cause the test to fail.

Since you have an ICSP programmer, you can purchase a new atmega328p chip and load the bootloader yourself, or you can purchase the chip with the bootloader pre-installed. In an educational setting, it would probably be good to have a few spares anyway, that is a primary reason the chip is socketed on the official Arduino UNO.

Also note that when you use an ICSP programmer to load a sketch, the bootloader gets erased, so you need to burn the bootloader again to load sketches over the USB interface.

If your UNO does not have a socketed atmega328p, then it would require quite a bit of equipment to repair.

This topic was automatically closed 120 days after the last reply. New replies are no longer allowed.