Hi,
I was recently given a brand new Arduino Uno rev 3 board for tests.
Note that, although I have some experience with a few MCUs (mostly from Microchip), this is my first time with Arduino.
At first, nothing worked at all, I did not even have the ttyACM0 device (I am a linux user) on the computer where the Arduino was plugged. In fact, the device identified itself as "ATmega16u2 DFU". I came to the conclusion that the ATmega16u2 chip came unprogrammed. So I used dfu-programmer to program it with the Arduino-usbserial-atmega16u2-Uno-Rev3.hex firmware I found at
Then I got the ttyACM0 device as expected, and the Arduino Uno board seemed to be seen as expected by the Arduino IDE. But when I try to upload a sketch (the Blink example), it fails with "avrdude: stk500_recv(): programmer is not responding". Investigating a bit, I read somewhere that the L led was supposed to blink a few times on startup, which did not happen. I thought that the atmega328p also came unprogrammed. So I found an AVRISP mkII programmer, to inject the arduino bootloader into the atmega328p chip, with "Tools/Burn Bootloader".
I now get the expected blinking, but I still cannot upload: I still get the same "avrdude: stk500_recv(): programmer is not responding" error.
I tried "Upload Using Programmer", and that works fine: I can upload sketches to the atmega328p through the AVRISP mkII programmer. So its seems to me that the atmega328p part is fine.
I followed the "Loop-Back Test Instructions", but did not get back the characters I typed. I plugged a scope to the loop between pins 0 and 1 and found out that, after the start bit (to logical level 0), only the first five bits (where first means least significant, as standard serial ports are LSB-first) get sent, instead of 8 bits... It looks to me that this would explain why the loopback test fails and why uploading fails.
Looking at the makefile in Arduino/makefile at 6e8e13d7b3679775dae70d9066f05e2f314fe1c1 · arduino/Arduino · GitHub it seems that something should be written to the EEPROM of the atmega16u2 chip, but I could not find that data anywhere. Is that true? Where can I find that data? Can this explain why the usb-serial interface does not work as expected?
Any help is highly welcome.