Hello and thank you for reading! (attached pictures at the end)
I spent several hours over 3 days before asking here. I made a 6 button footswitch with an Arduino Uno R3. It looked to be working fine, but I wanted to make a change on how a button worked. Long story short IDE verified it, but when I tried to upload (it took about 2-3 times longer than usual compared to few other times I had uploaded code to my boards) it failed and said something about access being denied in relation to rights and privileges. I didn't think to save the message at the time.
After this point the Arduino Uno wouldn't connect anymore with the PC. It does power up, the L lighting up slowly, then shutting off and repeat, but it says "USB not recognized" and it shows as Unknown USB Device (Invalid Device Descriptor).
At this point I connected my other (new, still unopened) Arduino Uno R3 and uploaded the original code (not the code I had recently changed) and that went well, and it works as intended. So this means it's not a driver issue, even though I went through all the steps to revert to an earlier FTDI driver. Still, the first Arduino powers up but doesn't communicate with PC (or the footswitch I was using it for at first), while the second Arduino works as it should.
Now, there is something else to, when I pressed one of the buttons, its pins (one connected to a digital pin and the other to 5v) had made contact multiple times with the top part of the Crystal 16 without me realising at the time. The top part of the Crystal has a few small scratches now. This specific button's pins were considerably lower than the rest. I finally understood this was going on when I connected my second Arduino to the footswitch, because it would restart when I pressed that damnable button and it would show the Usb Device Not Recognized message. I felt quite stupid as you might imagine.
Thankfully it didn't mess up the second Arduino, as maybe I can use that to help fix the first one? I was unsure if I should burn a bootloader into the first one, as I wasn't sure if it would help or change anything and I didn't want to make things worse.
I've also tried connecting the Reset Pin to the GND Pin and Tx to Rx (both at once and separately).
If you need me to post pictures with better angels or other info, please tell me.
Should I go ahead and try this?
My two cents
I suspect that you have damaged the hardware in some way but from your description I'm not sure which part; I'm not talking about the scratches on the crystal.
If it's not recognised, the problem relates to the 16U2 USB-to-TTL chip (near the usb connector) or circuitry around it (e.g power). So updating the boot loader will not help.
Updating FTDI drivers will not help as the USB-to-TTL chip is an Atmel and not a FTDI.
I would not try to fix it. There might be more damage than you originally found and that can result in an unreliable Uno which will give you gray hairs during debugging or at run-time.
Honestly, I thought so. I just didn't want to admit defeat, especially after doing something stupid like that.
Oh, well. Thanks for your reply.
I can confirm that burning the bootloader to the target Arduino through another Arduino as ISP changed nothing. The same error message appeared: Unknown USB Device (Invalid Device Descriptor) when I plug the faulty one as usual via USB.
Have you tried reprogramming the USB to serial chip? You would do that using an ISP programmer or another Arduino as ISP.
If you follow this guide for making your posts that have pictures, you will get help from more people, because they will see your pictures without having to download them to their computer.
I will try to "reprogramming the USB to serial chip" (off to Google to learn what it is and how I can do it). Also, I will follow the guide in the future. People might consider it annoying if I ask again about the same thing.
I was able to upload Blink.ino to the faulty Arduino using the other one. I made sure, I connected it via power jack and it blinked each second. Then I connected the good Arduino and uploaded Blink again, but this time with 500 time and 500 delay. Connected both of them, and they blinked at different intervals. I guess this is something.
Yes, so the broken Uno is not completely useless. And you've learned ISP programming method. When you do the burn bootloader step, you will notice the IDE shows you the avrdude command it is running, and the results. You can just do the avrdude command on the command line, changing the line as needed to upload a different hex file to a different target, such as the ATmega16u2. This article (link below) has the info. It is geared toward making the process repeatable and uses a custom boards.txt entry and the burn bootloader function of the IDE, but really you could shortcut all that and just do the wiring and do the avrdude command from the command line to upload Arduino-COMBINED-dfu-usbserial-atmega16u2-Uno-Rev3.hex.
A lot to unpack there, it's going to be a busy afternoon tomorrow! Cheers!
I did feel good about the new things I learned, as it's almost worth busting my Arduino, haha.
Maybe I should've mentioned that at first the ISP thing failed. But then I tried supplying the target Arduino with power jack (except the usual connections), and it worked.